计算机网络——第四章:网络层(数据平面)

参考书目《计算机网络:自顶向下方法(第七版)》

网络层概述

转发和路由选择:数据平面和控制平面

  • 网络层能够分解为两个相互作用的部分:数据平面控制平面
  • 转发:当一个分组到达某路由器的一条输入链路时,该路由器必须将该分组移动到适当的输出链路

    • 转发是在数据平面中实现的唯一功能
    • 转发(forwarding)是指将分组从一个输入链路接口转移到适当的输出链路接口的路由器本地动作
    • 转发发生的时间尺度很短(通常为几纳秒),因此常用硬件来实现
  • 路由选择:当分组从发送方流向接收方时,网络层必须决定这些分组所采用的路由或路径

    • 计算这些路径的算法被称为路由选择算法
    • 路由选择(routing)是指确定分组从源到目的地所采取的端到端路径的网络范围处理过程
    • 路由选择发生的时间尺度很长(通常为几秒),因此常用软件来实现

网络服务模型

  • 因特网的网络层提供了单一的服务模型,称为尽力而为服务(best-effort service)
  • ATM网络体系结构是面向连接的网络层协议,它提供了确保按序时延、有界时延和确保最小带宽

路由器工作原理

  • 路由器四个组件:输入端口(input port)、交换结构(switch fabric)、输出端口(output port)、路由选择处理器(routing processor)

输入端口

  • 输入端口在路由器中执行终结入物理链路的物理层功能
  • 输入端口还要与位于入链路远端的数据链路层交互来执行数据链路层功能
  • 更为重要的是,它还在输入端口值行查找功能,正是在这里路由器通过查询转发表决定路由器的输出端口
  • 在转发表中匹配时使用最长前缀匹配规则

交换结构

  • 交换结构将路由器的输入端口连接到它的输出端口
  • 交换结构可以有多种形式
    • 经内存交换:当报文到达时中断路由选择处理器,之后被依次复制到处理器内存和输出端口,完成交换
    • 经总线交换:输入端口经一根共享总线将分组直接传送到输出端口
    • 经互联网络交换(纵横式):纵横式交换机是非阻塞的,并且可以并行处理到不同输出端口的分组

输出端口

输出端口存储从交换结构接受的分组,并通过执行必要的链路层和物理层功能在输出链路上传送这些分组

路由选择处理器

路由选择处理器执行控制平面功能:

  • 在传统的路由器中,它执行路由选择协议
  • 在SDN路由器中,它负责与远程控制器通信

分组调度

  • 先进先出(FIFO)
  • 优先队列
  • 循环排队
  • 加权公平排队(WFQ)

IPv4

IPv4数据报格式

  • 版本号(4 bit);规定了数据报的IP协议版本
  • 首部长度(4 bit);由于可变选项,首部长度用来确定数据报中载荷实际开始的位置,一般IP数据报具有20字节首部
  • 服务类型TOS(8 bit);使不同类型的IP数据报能相互区别开
  • 数据报长度(16 bit);表示IP数据报的总长度(首部加上数据),以字节计
  • 标识(16 bit)、标志(1 bit)、片偏移(15 bit):用于IP分片
  • TTL(8 bit);每经过一个路由器TTL减1,当TTL为0时,路由器丢弃该数据报。用于防止路由回路
  • 上层协议(8 bit);当数据报到达目的地时才起到作用,该字段用于指明IP数据报的数据部分用于交给哪个特定的运输层协议(值为6表示给TCP,为17给UDP),协议号是将网络层与运输层绑定到一起的粘合剂,类似于端口号粘合运输层和应用层
  • 首部检验和(16 bit);帮助路由器监测收到的IP数据报中的比特错误。
    • 为什么TCP?IP在运输层和网络层都执行差错检测?
    • (1)IP层只对IP首部计算了检验和,而TCP/UDP检验和是对整个TCP/UDP报文段进行
    • (2)TCP/UDP与IP不一定必须属于同一个协议栈。例如TCP可以运行在ATM上,IP也不一定要携带传给TCP/UDP的数据(ICMP报文)
  • 源和目的IP地址(32 bit);发送端和接收端的IP地址

IPv4分片

  • 一个链路层帧能够承载的最大数据量叫最大传输单元(MTU),MTU严格的限制着IP数据报的长度
  • 源和目的地之间的路径上可能存在不同的MTU,有时需要将过大IP数据报分成小的来通过链路,并且片的重新组装是端系统的任务
  • 形成的所有片的标识号都与原数据报一致
  • 为使目的主机确定初始数据报的最后一片已到达,最后一个片的标志比特被设为0,其余的标志比特都为1
  • 为了重组原数据报,使用片偏移指定当前片在初始IP数据报中的偏移位置(以字节为单位做偏移)

IPv4编址

IP地址分为两个部分:网络号和主机号

IP地址的种类:

  • A类:0 + 网络号(7位)+ 主机号(24位)
  • B类:10 + 网络号(6+8位)+ 主机号(16位)
  • C类:110+ 网络号(5+8+8位)+ 主机号(8位)
  • D类:1110 + 组播地址(28位)
  • E类:11110保留为今后用

私有网络地址(RFC 1918):

  • A类:10.0.0.0至10.255.255.255
  • B类:172.16.0.0至172.31.255.255
  • C类:192.168.0.0至192.168.255.255

子网划分方法:

  • 典型的子网划分(RFC 950)
  • 一般子网划分(可变长子网掩码,VLSM)
  • 无类别域间路由(CIDR)

CIDR的形式:a.b.c.d/x,x指示了地址中网络号的比特数。一个地址的剩余32 - x比特可认为是用于区分该组织内部设备的,其中所有的设备具有相同的网络前缀,当组织内部的路由器转发分组时,才会考虑这些比特
使用单个网络前缀通告多个网咯的能力通常称为地址聚合,或称为路由聚合路由摘要
在寻址中使用最长前缀匹配


IPv6

IPv6报文格式

  • 版本;标识IP版本号,IPv6将该字段设置为6
  • 流量类型;和IPv4的TOS字段含义相似
  • 流标签;用于标识一条数据报的流,能够对一条流中的某些数据报给出优先权
  • 有效载荷长度;给出有效载荷的字节数量
  • 下一个首部;与IPv4首部中协议字段相同,用于标识数据应该交付给哪个协议
  • 跳限制;IPv4中的TTL

IPv6引入的重要的变化有:

  • 扩大的地址容量;IPv6将地址长度扩充到128比特。IPv6还引入了一种称为任播地址的新型地址,这种地址可以使数据报交付给一组主机中的任意一个
  • 简化高效的40字节首部(定长);允许路由器更快的处理IP数据报
  • 流标签;用于区分不同的流

IPv6相对于IPv4删除的字段:

  • 分片/重新组装;IPv6不允许在中间路由器上进行分片与重新组装。分片与重新组装是一个耗时的操作,将该功能从路由器中删除可以加快IP转发速度
  • 首部检验和;因特网的运输层和数据链路层都执行了检验操作,设计者可能觉得在网络层实现该功能实属多余,所以将其删除。再次强调,快速处理IP分组是关注的重点,由于IPv4中的TTL字段,所以在每台路由器上都需要重新计算IPv4首部检验和,这也是一项耗时的操作
  • 选项;不再是标准IP首部的一部分,但并没有消失,而是可能出现在“下一个首部”字段中。删除它使得IP首部成为定长的40字节

动态主机配置协议DHCP(Dynamic Host Configuration)

  • DHCP允许主机自动获取(被分配)一个IP地址(或临时的IP地址)
  • DHCP还允许主机得知其他信息,如它的子网掩码、它的第一跳路由器地址(通常称为默认网关)与它的本地DNS服务器地址

DHCP分为4个步骤

  1. DHCP服务器发现;新到达的主机广播DHCP发现报文(使用UDP分组向67端口发送该报文)来与DHCP服务器交互,广播IP地址为255.255.255.255,源IP地址为0.0.0.0
  2. DHCP服务器提供;DHCP服务器广播DHCP提供报文(包含IP地址租用期)回复发送主机,仍使用IP广播地址255.255.255.255
  3. DHCP请求;新到达的主机从一个或多个服务器提供中选择一个DHCP服务器,并向选中的DHCP服务器回复DHCP请求报文进行响应
  4. DHCP ACK;DHCP服务器用DHCP ACK报文对DHCP请求报文进行响应

网络地址转换NAT(Network Address Translation)

NAT路由器对外界的行为就如同一个具有单一IP地址的单一设备,本质上讲,NAT使能路由器对外界隐藏了私有网络的内部细节
NAT路由器通过维护NAT转换表重写经过它的数据报的目的IP地址端口号,从而完成内网到外网的IP地址和端口转换(因为端口号字段长度为16比特,从而NAT协议可支持超过60000个并行使用路由器广域网一侧单个IP地址的连接)

NAT违反了主机应当直接彼此对话这个原则,并且变相利用端口号用于主机寻址


因特网控制报文协议ICMP(Internet Control Message Protocol)

  • ICMP定义于RFC 792,被主机和路由器用来彼此沟通网络层的信息
  • ICMP最典型的用途是差错报告
  • ICMP从体系结构上讲位于IP之上,因为ICMP报文是承载在IP分组中的,从而可以看成是一个运输层协议
  • ICMP报文有一个类型字段和一个编码字段,并且包含引起该ICMP报文首次生成的IP数据报的首部和前8个字节
ICMP类型 编码 描述
0 0 回显回答(对ping的回答)
3 0 目的网络不可达
3 1 目的主机不可达
3 2 目的协议不可达
3 3 目的端口不可达
3 6 目的网络未知
3 7 目的主机未知
4 0 源抑制(拥塞控制)
8 0 回显请求
9 0 路由器通告
10 0 路由器发现
11 0 TTL过期
12 0 IP首部损坏