1.网络层概述

主要任务:实现网络互连,实现数据包在各网络间的传输
需要解决的主要问题:

  1. 网络层向运输层提供怎样的服务(“可靠传输” or “不可靠传输”)
  2. 网络层寻址问题
  3. 路由选择问题

Internet 使用TCP/IP协议栈,且在网络层中常使用网际协议IP,故又称网络层为网际层
image.png

2.网络层提供的两种服务

2.1 面向连接的虚电路服务

可靠通信由网络保证,故必须建立网络层的连接——虚电路VC(Virtual Circuit)
通信双方沿着已建立的虚电路发送分组,除首次发送外,之后每次发送分组的首部只需添加虚电路的编号即可完成通信,通信结束后需要释放虚电路

2.2 无连接的数据报服务

可靠通信由用户主机保证
不需要建立网络层连接,每个分组可走不同路径,且分组首部必须携带目的主机的完整地址。
容易出现分组丢失,误码,失序等现象。

3. IPv4地址

3.1 概述

IPv4地址:每一台主机(或路由器)的每一个接口在全世界范围内的唯一的32比特的标识符
采用点分十进制表示方法:32比特按8个一组进行划分,每组转换为十进制数,以点 . 相连

重点:二进制和十进制的相互转换
二进制->十进制:8位二进制数与对应位的权值相乘的和
result=i=172i1numi,numi是从右边第一位开始,每一位的值result=\sum_{i=1}^{7}2^{i-1}*num_i,num_i是从右边第一位开始,每一位的值
如:(10101010)2=(127+026+125+024+123+022+121+020)10(10101010)_2=(1*2^7+0*2^6+1*2^5+0*2^4+1*2^3+0*2^2+1*2^1+0*2^0)_{10} 下标分别表示n进制

十进制->二进制:除2取余法
对一个十进制数不断除2,记录每一次除法的余数,最后一项除法余数作为二进制数的首位,自下而上组成一个二进制数
对于(130)10=(10000010)2(130)_{10}=(10000010)_2有:

除式 余数 位置关系
130/2=65 0 末位
65/2=32 1
32/2=16 0
16/2=8 0
8/2=4 0
4/2=2 0
2/2=1 0
1/2=0 1 首位

3.2 分类编址的IPv4地址

image.png
image.png

A类地址

最高位固定为0 ,即0xxxxxxx
最小网络号0,不可指派;
可指派的最小网络号为1,即00000001,其网络地址为1.0.0.0
最大网络号127,本地环回测试地址,不可指派
则可指派网络数为2(81)2=1262^{(8-1)}-2=126
网络中的最大主机数:2242=167772142^{24}-2=16777214

B类地址

最高两位固定为10,即10xxx……xxx
最小网络号:128.0,网络地址:128.0.0.0
最大网络号:191.255,网络地址:191.255.0.0
则可指派网络号为2(162)=163842^{(16-2)}=16384
网络中的最大主机数:2162=655342^{16}-2=65534

C类地址

最高三位固定为110,即110xx……xxx
最小网络号:192.0.0,网络地址:192.0.0.0.0
最大网络号:223.255.255,网络地址:223.255.255.0
可指派的网络数为2(243)=20971522^{(24-3)}=2097152
网络中的最大主机数:282=2542^8-2=254

3.3 划分子网的IPv4地址

出现原因:网络需求的增加,但新增网络申请新网络号会有如下弊端
1. 需要等待时间和花费更多费用
2. 会增加其他路由器中路由表记录的数量
3. 浪费原有网络号中剩余的大量IP地址
故产生从主机号中借用一部分比特作为子网号
如何判断网络地址或主机IP地址中的子网号部分:使用子网掩码

32比特的子网掩码可表明分类IP地址的主机号部分被借用了几个比特作为子网号

  1. 连续的1对应网络号和子网号
  2. 连续的0对应主机号
  3. 划分子网的IPv4地址与子网掩码按位逻辑与运算,可得到所在子网的网络地址
    做题思路:
    1. 判断IP地址属于哪一个类别(A,B or C),从而可以知道前8/16/24位是网络号
    2. 而后针对不是255的部分进行二进制转换,可以知道子网号占几个比特
    3. 逻辑与运算后,网络号,子网号不变,其他部分转变为0,得出所在子网的网络地址

给定一个分类的IP地址和相应的子网掩码,可知子网划分的细节:

  1. 划分出的子网数量
  2. 每个子网可分配的IP数量
  3. 每个子网的网络地址和广播地址(得到网络地址后,非网络号,子网号部分全转换为1)
  4. 每个子网可分配的最小和最大地址

默认子网掩码

  1. A类:255.0.0.0
  2. B类:255.255.0.0
  3. C类:255.255.255.0

3.4 无分类编址的IPv4地址

数量巨大的C类网地址空间太小且没得到充分使用,IPv4地址空间面临全部耗尽的威胁
1993年IETF 发布无分类域间路由选择CIDR

方法:斜线记法/CIDR记法
在IPv4地址后加上“/”+网络前缀所占比特数,将网络前缀相同的连续的IP地址组成一个“CIDR地址块”

已知CIDR地址块中的任一地址,即可知道该地址块的全部细节:

  • 最小,最大地址
  • 地址块中的地址数量
  • 聚合某类网络的数量
  • 子网掩码
  • 示例:请给出128.14.35.7/20的全部细节(最小,最大地址,地址数量,聚合C类网数量,子网掩码)
    由于网络前缀为20,则可忽略128.14,对35.7进行二进制转换
    有00100011.00000111,可由20-16知前4位仍是网络前缀
    则得出128.14.32.0为最小地址,128.14.47.255为最大地址(将网络前缀以后的比特置1)
    地址数量:2(3220)2^{(32-20)} ;聚合C类网的数量:2(3220)/28(28是因为一个C类网络号有28个地址)2^{(32-20)}/2^8(除2^8是因为一个C类网络号有2^8个地址)
    子网掩码:11111111.11111111.11110000.0000000

路由聚合:找共同前缀

  • 示例:某路由表中有转发接口相同的4条路由表项,其目的网络地址分别为35.230.32.0/21,35.230.40.0/21,35.230.48.0/21和35.230.56.0/21,4条路由聚合后的目的网络地址:
    1. 已知4条路由的共同前缀为35.230,对后两个字节进行二进制转换
      1. 32.0:00100000.00000000
      2. 40.0:00101000.00000000
      3. 48.0:00110000.00000000
      4. 56.0:00111000.00000000
    2. 通过比较四个比特串可知在第三个字节,001为四个比特串的共同前缀
    3. 所以聚合后的目的网络地址为35.230.00100000.00000000,即35.230.32.0/19

网络前缀越长,地址块越小,路由越具体
最长前缀匹配:路由器查表转发分组时有多条路由可选,则选前缀最长的
计算主机数记得减去网络地址和广播地址

3.5 IPv4的应用规划

  • 定长的子网掩码FLSM(对应3.3)
    • 使用同一个子网掩码划分子网
    • 只能划分出2n2^n个子网(n是从主机号部分借用作为网络号的比特数量)
    • 分配的IP地址数量相同,容易造成浪费
  • 变成的子网掩码VLSM(对应3.4)
    • 使用不同的子网掩码进行划分
    • 可按需分配
    • 分配IP地址数量不同,尽可能减少对IP地址的浪费

4.IP数据报的发送和转发

  • 主机发送IP数据报
    • 判断目的主机是否与自己处于同一网络
      • 判断方法:将源主机和目的主机的IP地址与子网掩码相与,判断是否相等
      • 若在,则直接交付
      • 若不在,传输给主机所在网络的默认网关(路由器),由默认网关帮忙转发
  • 路由器转发IP数据报
    1. 检查IP数据报首部是否出错:
      1. 若出错,则直接丢弃该IP数据报并通告源主机
      2. 若没有出错则转发
    2. 根据IP数据报的目的地址在路由表中查找匹配的条目
      查找方法:IP数据报首部中包含的目的地址与路由表中的子网掩码相与,判断结果是否等于相应的目的网络地址
      1. 若找到,则转发给条目中指示下一跳
      2. 若找不到,则丢弃该IP数据报并通告源主机

5.静态路由配置及可能产生的路由环路问题

概念:用户或网络管理员给路由器人工配置路由表
可能引发路由环路的错误:

  1. 配置错误
    image.png
  2. 聚合了不存在的网络
    image.png
  3. 网络故障
    image.png
  4. 生存时间TTL,IP数据报进入路由器后,TTL-1次,若TTL!=0,路由器则继续转发

路由条目 的类型:

  1. 直连网络
  2. 静态路由(人工配置)
    特殊的静态路由条目:
    1. 默认路由(目的网络为0.0.0.0,子网掩码为0.0.0.0)
    2. 特定主机路由(目的网络为特定主机的IP地址,子网掩码为255.255.255.255)
    3. 黑洞路由(下一跳为null0)
  3. 动态路由(路由选择协议)

6.路由选择协议

6.1 概述

Internet采用的路由选择协议的特点

  1. 自适应:能较好适应网络状态变化
  2. 分布式:路由器之间交换路由信息
  3. 分层次:Internet被划分为较小的自治系统AS
    image.png
    常见的路由选择协议
    image.png

路由器的基本结构
image.png

6.2 路由信息协议RIP的基本工作原理

封装协议:UDP(端口号:520,协议字段:17)
RIP用跳数衡量到达目的网络的距离
1. 路由器到直连网络的距离定义为1
2. 到非直连网络的距离定义为所经过路由器数+1
3. “距离”=16时为不可达
4. 好路由 == 经过路由数量最少的路由
5. 到达同一目的网络有多条“距离相等”的路由,可进行等价负载均衡

RIP的工作要点:

  1. 和谁交换信息:仅和相邻路由器交换信息,即中间没有其他路由器
  2. 交换什么信息:路由器记录的路由表
  3. 何时交换信息:周期性交换

RIP的基本工作过程

  1. 路由器刚开始只知道自己到直连网络的距离为1
  2. 每个路由器和相邻路由器周期性交换并更新路由信息
  3. 若干次交换和更新后,每个路由器都知道到达本AS内各网络的最短距离和下一跳地址,称为收敛

RIP路由条目更新规则

  • 发现新网络,添加
  • 到达目的网络,相同下一跳,最新消息,更新
  • 到达目的网络,不同下一跳,新路由有优势,更新
  • 到达目的网络,不同下一跳,等价负载均衡,更新
  • 到达目的网络,不同下一跳,新路由劣势,不更新

RIP存在“坏消息传播得慢”问题
又称路由环路or距离无穷计数
解决方法:
1. 限制最大路径距离为15
2. 实现路由表变化即发送更新报文(“触发更新”)
3. 让路由器记录收到某特定路由信息的接口,而不让同一路由信息再通过此接口向反方向传送

6.3 开放最短路径优先OSPF的基本工作原理

封装协议:IP(协议字段:89)
特点:

  1. 基于链路状态
    1. 链路状态:本路由器和哪些路由器相邻,及相应链路的“代价”
  2. 使用SPF算法(最短路径优先),不会产生环路
  3. 不限制网络规模,收敛速度快

工作流程:

  1. 使用OSPF的路由器会产生链路状态通告LSA
    内容包括:
    1.直连网络的链路状态信息;
    2.邻居路由器的链路状态信息。
  2. LSA被封装在链路状态更新分组LSU中,洪泛发送
  3. 路由器有一个链路状态数据库LSDB,用于存储LSA
  4. 通过各路由器洪泛发送,所有的LSDB最终归于一致
  5. 各路由器基于LSDB进行最短路径优先计算,从而构建出到达其他路由的最短路径和路由表

OSPF的分组类型:

  1. 问候分组
  2. 数据库描述分组
  3. 链路状态请求分组
  4. 链路状态更新分组
  5. 链路状态确认组分

OSPF在多点接入网络中路由器邻居关系的建立:

  1. 选举指定路由器DR和备用指定路由器BDR
  2. 所有非DR/BDR只与DR/BDR建立邻居关系
  3. 非DR/BDR之间通过DR/BDR交换信息
    image.png

为了使OSPF能用于规模很大的网络,OSPF将一个AS划分若干更小范围,称区域(Area)
优点:利用洪泛发交换链路状态信息的范围局限于每一个区域而不是一个AS
image.png

6.4 边界网关协议BGP的基本工作原理

封装协议:TCP (端口号:179,协议字段:6)
产生的原因:

  1. 不同AS之间,度量路由的“代价”不同,不利于最佳路由的寻找
  2. AS间的路由选择需要考虑相关策略(政治,经济,安全)
    BGP力求寻找一条能到达目的网络且较好的路由,而非最佳路由

工作原理:

  1. 配置BGP时,AS的管理员需要设置一台路由器作为“BGP发言人”
  2. 不同AS的BGP发言人交换信息时需要建立TCP连接,端口号179:
    1. 在TCP连接基础上发送BGP报文以建立BGP会话
    2. 利用BGP会话交换路由信息(如:新增路由,撤销路由,报错信息)
    3. 使用TCP连接交换路由信息的两个BGP发言人称为对方的邻站or对等站
  3. BGP发言人除了运行BGP,还得运行AS中的内部网关协议
  4. BGP发言人交换网络可达性的信息
  5. 信息交换完毕后,BGP发言人可根据采用的策略找出到达各AS较好的路由,即构造出树形结构,不存在回路的AS连通图

BGP适用于多级结构的Internet
BGP-4的报文类型:

  1. OPEN报文:用来与相邻的BGP发言人建立关系,初始化通信
  2. UPDATE报文:通告某一路由信息及列出要撤销的多条路由
  3. KEEPALIVE(保活)报文:周期性验证邻站的连通性
  4. NOTIFICATION(通知)报文:发送检测到的差错

7. IPv4数据报的首部格式

image.png

  1. 版本:占4比特,表示IP协议的版本,传输双方所使用版本要一致
  2. 首部长度:占4比特,表示IP数据报首部的长度,取值以4字节为单位
    1. 最小十进制取值为5,表示首部只有20字节固定部分
    2. 最大十进制取值为15,表示首部有20字节固定部分和40字节可变部分
  3. 可选字段:长度从1个字节到40个字节不等,用来支持排错,测量及安全等错失
    1. 增加了IP数据报的功能,使首部长度成为可变的,增加开销
  4. 填充字段:确保首部长度为4字节的整数值,使用全0填充
  5. 区分服务:占8比特
  6. 总长度:占16比特,表示数据报的总长度(首部+数据载荷),最大取值为65535字节
  7. 标识:16比特,同一数据报的分片标识相同
  8. 标志:3比特
    1. DF位:1表示不许分片,0表示可分片
    2. MF位:1表示“后面还有分片”,0表示“最后一个分片”
    3. 保留位:必须为0
  9. 片偏移:占13比特,指出分片数据报的数据载荷部分偏移其在原数据报的位置有多少个单位。单位:8字节
    1. 一般片偏移量等于 比特/8 (字节)
  10. TTL:占8比特,以跳数为单位,每经过一个路由,TTL-1
  11. 协议:占8比特,指明IP数据报的数据载荷是什么协议数据单元
    • 各协议的协议字段:
    • ICMP:1;IGMP:2;TCP:6;UDP:17;IPv6:41;OSPF:89
  12. 首部检验和:占16比特,用来检测首部传输过程中是否出现差错
    1. 每经过一次路由器要重新计算一次,因为TTL,标志,片偏移等可能发生变化
  13. 源IP地址和目的IP地址:各占32比特

8.网际控制报文协议ICMP

为更有效控制转发IP数据报和提高交付成功的机会,在网际层使用网际控制报文协议
主机或路由器使用ICMP来发送差错报告报文询问报文
ICMP差错报告报文的类型:
1. 终点不可达
路由器或主机不能交付数据报时发送,可细分为目的网络不可达、目的主机不可达、目的协议不可达、目的端口不可达等等
2. 源点抑制
路由器或主机因拥塞而丢弃数据报时发送
3. 时间超过
数据报还未发送到目的主机,TTL就为0时发送
在预先规定的时间没有收到一个数据报的全部数据报片
4. 参数问题
路由器或目的主机收到的IP数据报根据首部检验和字段发现首部出现误码
5. 改变路由(重定向)
路由器将改变路由报文发送给主机,让主机知道下次应发送数据报给最佳路由
ICMP询问报文的类型:
1. 回送请求和回答
测试目的站是否可达
2. 时间戳请求和回答
进行时间同步和测量时间

ICMP报文被封装到IP数据报发送

不应发送ICMP差错报告报文的情况

  1. 对ICMP差错报告报文
  2. 对第一个分片的数据报片的所有后续数据报片
  3. 对具有多播地址的数据报
  4. 对具有特殊地址(如127.0.0.0 or 0.0.0.0)的数据报

ICMP的应用:

  1. 分组网间探测PING
  2. 跟踪路由traceroute

9.虚拟专用网VPN和网络地址转换NAT

9.1 虚拟专用网VPN

概念:利用公用的Internet作为本机构各专用网间的通信载体,这样的专用网又称虚拟专用网
类型:

  1. 内联网VPN:同一机构不同部门的内部网络构成的VPN
  2. 外联网VPN:有外部机构参与的VPN
  3. 远程接入VPN:在外地通过VPN软件访问公司主机
    VPN为保证传输的安全性,会对内部数据进行加密

9.2 网络地址转换NAT

因为IP地址紧缺,故虚拟专用网中各主机所分配的地址应是本机构可自由分配的私有地址
image.png
NAT:将大量使用内部专用地址的专用网络用户共享少量外部全球地址
即使用内部网络想访问公用Internet上的主机时,主机的内部IP地址经过NAT路由器的转换,会被临时赋予一个全球地址,此时源IP地址发生改变
NAPT:网络地址与端口号转换
因为绝大多数网络应用采用TCP/UDP传送,可利用运输层端口号和IP地址一起转换,这样,一个全球IP地址可使多个拥有本地地址的主机同时和Internet上的主机通信

对于一些P2P应用,需要外网主机主动与内网主机通信,此时需要特殊的NAT穿越技术帮忙
NAT对外网屏蔽了内网主机的网络地址,提供一定的安全保护