目录
本章目标
- 了解网络层背后的服务原理
- 网络层服务模型
- 路由和转发(routing forwarding)
- 路由器如何工作
- 路由选择(路径选择)
- 处理规模(scale)
- 高级主题:IPV6,移动性
- 实例化(instantiation),在Internet上的实现
3.1介绍
- 从发送主机向目的主机发送报文段(segment)
- 在发送端将报文段封装到数据报中(datagram)
- 在接收端,交付报文段给传输层
- 网络层协议在每一个主机和路由器当中
- 路由器检查穿过他的每一个IP数据报的头字段(header fields )
3.1.1关键的网络层功能
- 转发: 将数据报从路由器的输入移动到适当的路由器输出,几纳秒,硬件实现
- 路由: 确定数据包从源到目的的路线(路由算法),几秒,软件实现
3.1.2数据平面与控制平面
数据平面(data plane):
- 本地的,每一个单独路由器的功能
- 决定一个数据报如何从路由器的输入端口到合适的输出端口
- 转发功能
控制平面(control plane):
- 网络范围的逻辑
- 决定从源主机到目的主机端到端的路径中路由器之间的路由方式
- 两种控制层方法:
- 传统路由选择算法:在路由器中实现
- 软件定义网络software-defined networking (SDN):在远程服务器实现
per-router 控制层:
每个路由器中的各个路由算法组件在控制平面中相互作用
逻辑集中控制层:
独立(通常是远程)控制器与本地控制代理(CAs)交互
3.1.3网络服务模型
网络层提供的服务:
- 确保交付:确保分组将最终到达目的地
- 具有时延上限的确保交付:在特定的主机到主机时延上限(例如100ms内)确保分组将最终到达目的地
- 有序分组交付:确保分组以它们发送的顺序到达目的地
- 确保最小带宽:模仿在发送和接受主机之间一条特定比特率链路,只要发送端主机以低于特定比特率的速率传输比特,则所有分组最终会交付到目的主机
- 安全性:网络层在源加密所有数据报,并在目的地解密这些分组,从而对所有运输层报文提供机密性
- 尽力而为服务
3.2虚电路和数字报网络
3.2.1网络层连接和无连接服务
- 数据报网络提供网络层无连接服务
- 虚拟电路网络提供网络层连接服务
- 类似于传输层服务,但是:
- 服务:主机到主机
- 没有选择:网络只能提供其中一种
- 实现:在核心
无连接服务: 不事先为分组的传输确定传输路径,每个分组独立确定传输路径,不同分组传输路径可能不同
连接服务: 首先为分组的传输确定传输路径(建立连接),然后沿该路径(连接)传输系列分组,系列分组传输路径相同,传输结束后拆除连接
3.2.2虚电路Virtual circuits
虚电路是面向连接的数据传输,工作过程类似电路交换,不同之处在于此时的电路是虚拟的
- 路径上所有点维持虚电路的建立,都维持一张虚电路表,每一项记录了一个打开的虚电路信息
- 先建立连接,源主机发送“呼叫请求”分组,目的主机接收到后发送“呼应回答”分组。
- 数据传输,全双工
- 释放连接,源主机发送“释放请求”
- 分组和每条链路都有一个虚电路号
- 分组形式转发,融合数据报网路
3.2.3数据报网络Datagram networks
数据报是无连接的数据传输,工作过程类似分组交换。采用数据报方式传输时,被传输的分组称为数据报
- 因特网正在使用
- 无连接服务
- 每个分组携带源地址和目的地址
- 路由器根据分组的目的地地址转发分组:基于路由协议/算法构建转发表;检索转发表;每个分组独立选路。
3.2.4数据报VS虚电路
3.3路由器里有什么
3.3.1大体结构
3.3.2输入端口功能
最左边:终结入物理链路的物理层功能,物理层
中间:与链路层交互实现链路层功能,链路层
最右边:排队、查找功能,通过查询转发表决定输出端口
转发表:
最长前缀匹配longest prefix matching:
在查找转发表项时,使用与目的地址匹配的最长地址前缀。
- 当我们学习寻址时,我们很快就会看到为什么使用最长前缀匹配
- 最长前缀匹配:通常使用三态内容可寻址存储器(TCAMs)执行
3.3.3三种交换结构
- 将数据包从输入缓冲区传输到适当的输出缓冲区
- 交换速率:数据包从输入传输到输出的速率
3.3.3.1内存交换
第一代路由器:
- 传统计算机在CPU的直接控制下进行切换
- 分组复制到系统内存
- 受内存带宽限制的速度(每个数据报跨越2个总线)
3.3.3.2总线交换
- 数据报通过共享总线从输入端口缓存传输到输出端口缓存
- 总线争用:受总线带宽限制的交换速度
- 32gbps总线,Cisco 5600:足够的速度用于接入和企业路由器(非区域或骨干)
3.3.3.3通过内联网络交换
- 克服总线带宽限制
- 榕树网络,其他互联网络最初开发用于连接多处理器中的处理器
- 高级设计:将数据报分割成固定长度的单元,通过fabric交换单元。
- Cisco 12000:通过互连网络交换60gbps
- 并行转发多个分组
- 非阻塞
3.3.3排队
3.3.3.1输入排队
线路前部阻塞Head-of-the-Line (HOL)
两个不同输入队列的分组发往同一个输出队列,必须有一个等待,该分组被阻塞,并且该分组后的分组也将被阻塞,即使这个分组目的地无竞争。
3.3.3.2输出排队
缓存吸收流量负载变动,多少缓存?
书211页
3.3.4输出端口
最左边:储存从交换结构出来的分组
中间:实现链路层功能
最右边:连接物理层
3.3.5调度机制
调度:选择在链路上发送的下一个分组
先进先出(FIFO)调度:按到达顺序发送到队列
如果缓存区满了丢弃谁?
- 后来的丢弃
- 根据优先级丢弃
- 随机丢弃
3.3.5.1调度策略:优先级
优先权排队
循环排队Round Robin (RR) scheduling:
- 多种类型的
- 循环扫描类队列,从每个类发送一个完整的包(如果可用)
加权公平排队Weighted Fair Queuing WFQ: - 广义的循环
- 每个类别在每个周期中得到加权的服务量
3.4 IP:Internet Protocol
- IP为穿越网络的数据报提供路由功能
- 每个数据报都有源地址和目标地址
- IP确定数据报是否已经到达目的地,或者是否必须转发
- 如果必须转发,则IP决定下一跳
- IP不提供可靠性保证,不能保证数据包将到达其指定的目的地
- IP还负责数据报的分片( fragmentation)
- 一个数据报不能超过它正在传输的网络的最大大小,这在创建时是未知的
- 太大的数据报必须被分割成片段
- 每个片段必须包含重组原始数据报所需的信息
- 标明长度和偏移量
- 标明长度和偏移量
3.4.1 IPv4 Datagram format
IPV4:
- 32比特数
- 点分十进制
- 40亿(4 billion)个不同的主机地址
IPV6:
- 128位比特数
- 16进制
- 160亿(16 billion billion)个网络地址
3.4.1.1IPV4数据报格式
IPV4一般有20字节的首部20x8=160位,前5行32位,5x32
3.4.1.2IPV4分片和重组
最大传送单元(Maximum Transmission Unit,MTU):
链路层帧所能承载的最大数据量(因协议而异)
- 将大的数据报分为小的数据报------片(fragment)
- 重组工作(reassembled)放到端系统
- 为了确定收到的数据报是否是更大的数据报,以及是否全部接收,将标识、标志、片偏移字段放到数据报首部
16位标识(16-bit identifier)
发送主机发送的每个数据报标识号都会加一,同一数据报标识号相同,接收主机根据标识号确定是否是同一数据报
3位标志(flags)
IP提供不可靠服务,接收段无法确认数据报是否接收全,所以把最后一个片标志记为0,剩余的片标志记为1
13位偏移字段(13-bit frag offset)
指定该片应该放在初始数据报的哪个部分
例如:
- 4000字节的数据报
- MTU = 1500 字节
4000字节数据报就有3980字节的有效数据
MTU1500字节,就能承载1480字节有效数据
3980/1480=3
分为3段
注意这里的offset(偏移量)要除以8
3.4.1.3检验和![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/bfa94c439f5800fd476025ca9a45559d.png#pic_center)
3.4.2 IPv4 addressing 寻址
3.4.2.1介绍
- IP地址:32位标识符给主机,路由器接口
- 接口:主机/路由器与物理链路之间的连接
- 主机一个接口,路由器好几个
- IP地址关联接口不是关联主机和路由器
3.4.2.2IP地址种类
3.4.2.3分配IP地址
- 因为每个接口都必须有唯一的IP地址,所以必须有一个中央机构来分配号码
- 这个机构就是互联网网络信息中心,简称InterNIC
- InterNIC只分配网络id,主机id的分配由系统管理员决定
3.4.2.4IP 层转发分组的流程
- 有四个 A 类网络通过三个路由器连接在一起。每一个网络上都可能有成千上万个主机
- 可以想像,若按目的主机号来制作路由表,则所得出的路由表就会过于庞大
- 表但若按主机所在的网络地址来制作路由表,那么每一个路由器中的路由就只包含 4 个项目。这样就可使路由表大大简化
3.4.2.5查找路由表
根据目的网络地址就能确定下一跳路由器,这样做的结果是:
- IP 数据报最终一定可以找到目的主机所在目的网络上的路由器(可能要通过多次的间接交付)
- 只有到达最后一个路由器时,才试图向目的主机进行直接交付
特定主机路由
- 这种路由是为特定的目的主机指明一个路由
- 采用特定主机路由可使网络管理人员能更方便地控制网络和测试网络,同时也可在需要考虑某种安全问题时采用这种特定主机路由。
默认路由(default route)
-
路由器还可采用默认路由以减少路由表所占用的空间和搜索路由表所用的时间
-
这种转发方式在一个网络只有很少的对外连接时是很有用的
-
默认路由在主机发送 IP 数据报时往往更能显示出它的好处
-
如果一个主机连接在一个小网络上,而这个网络只用一个路由器和因特网连接,那么在这种情况下使用默认路由是非常合适的
必须强调指出 -
IP 数据报的首部中没有地方可以用来指明“下一跳路由器的 IP 地址”
-
当路由器收到待转发的数据报,不是将下一跳路由器的 IP 地址填入 IP 数据报,而是送交下层的网络接口软件
-
网络接口软件使用 ARP 负责将下一跳路由器的 IP 地址转换成硬件地址,并将此硬件地址放在链路层的 MAC 帧的首部,然后根据这个硬件地址找到下一跳路由器
3.4.3IP子网编址
本地IP地址由3部分组成:
- 网络ID
- 子网ID
- 主机ID
3.4.3.1子网和子网掩码
- 一旦决定使用子网,本地管理员必须决定为子网ID分配多少位
- 普遍的划分方法,在B类地址里16位主机ID使用8位边界
- 子网掩码用来划分网络部分和主机部分
- 子网有效的向外部路由器隐藏了子网内布细节
- 223.1.1.0/24指定了32比特中最左侧24位比特定义了子网地址
子网掩码是一个重要属性
- 子网掩码是一个网络或一个子网的重要属性
- 路由器在和相邻路由器交换路由信息时,必须把自己所在网络(或子网)的子网掩码告诉相邻路由器
- 路由器的路由表中的每一个项目,除了要给出目的网络地址外,还必须同时给出该网络的子网掩码
- 若一个路由器连接在两个子网上就拥有两个网络地址和两个子网掩码
3.4.3.2子网划分
- 所有与网络ID对应的位都设置为1
- 主机ID对应的所有位都设置为0
- TCP/IP网络中的每台主机都需要一个子网掩码,即使是在一个单独的网段中
- 子网掩码常用点分十进制表示
- 表示子网掩码的快捷方式是使用网络前缀表示法:/<#比特>来表示将网络ID定义为网络前缀的位数
例:
- c类网络210.93.45.0
- 划分位至少5个子网
2^3 - 2 = 6 个子网>5
一个子网有2^(8-3)-2=30台主机
所以最后8位的前三位是子网地址,后五位是主机地址
- b类网络185.75.0.0
- 每个子网最少126台主机
2^7-2=126>=126
所以最后16位中的后7位是主机地址,前九位是子网地址
所以可以分为2^9-2=510个子网
什么是 “magic number?”
在上面c类网络例子中,子网掩码是255.255.255.224,224是最后一个非零八位字节,magic number就是256-224=32
要记住上面的表
划分子网后分组如何转发?
3.4.3.3 DHCP动态主机配置协议
DHCP 动态主机配置协议常用于给主机动态分配IP地址:
- 即插即用
- 应用层协议
- UDP传输
- 客户/服务器方式
- 广播
- 允许地址重用
- 允许在用地址续租
如何得到:
- 主机向DHCP服务器发送广播报文(DHCP discover)
- 源地址0.0.0.0目的地址255.255.255.255
- 广播报文只有DHCP服务器回应
- DHCP服务器先从其数据库中查找该计算机的配置信息,若找到就返回找到的信息,找不到就在服务器的IP地址池里取一个地址分配给该计算机
- DHCP服务器的回答报文叫做提供报文(DHCP offer)
- 主机广播DHCP请求报文
- DHCP服务器广播DHCP确认报文
3.4.4 ICMP 网间控制报文协议(Internet Control Messages Protocol)
主机发送数据报时可能发送错误信息,检测出错误的主机和路由器发送ICMP报文给主机,主机可以确定出错类型
- ICMP报文分为ICMP差错报告报文和ICMP询问报文
- ICMP差错报文:
- 终点不可达:无法向上层交付
- 源点抑制(基本不用):由于阻塞丢弃数据报,让源主机降低发送速率
- 时间超过:数据报生存时间TTL为0
- 参数问题
- 改变路由
3.4.4.1可变长度子网掩码(VLSM)
3.4.4.2无类别域间路由选择(CIDR)
层次编址允许高效的路由信息通告:
使用单个网络前缀通告多个网络的能力称为地址聚合或路由聚合或路由摘要
其他路由器路由转发分组时,使用最长前缀匹配法则,找到正确路由。
3.4.4.3网络地址转换(NAT)
网络地址转换(NAT): 在专用网连接到互联网的路由器上安装NAT软件,称为NAT路由器,至少有一个有效的外部全球IP地址
实现:NAT转换表
IP地址+端口号
3.4.5 IPv6
动机:
- 32位地址空间即将被完全分配
- 改进首部格式
- 使数据报不可分
- 支持QoS(服务质量)
CIDR,NAT只是延缓地址用光时间,治标不治本
3.4.5.1数据报格式
- ver-版本:总为6
- priority-优先级:识别流中数据报之间的优先级
- flow label-流标签:同一个流的数据报拥有同样的流标签
- payload len-有效载荷长度
- Next header-下一个首部:识别数据的上层协议或扩展首部
- hop limit-跳数限制:同TTL
3.4.5.2二者区别
- 地址从32位(4字节)扩大到128位(16字节)
- 将IPV4校验和字段彻底移除,减少每一跳的处理时间
- 将IPV4的可选字段移除首部,变成扩展首部,路由器不对扩展首部检查,大大提高效率
- 即插即用(自动配置),不需要DHCP
- IPV6首部是8字节的整数倍,IPV4是4字节的整数倍
- IPV6只能在主机处分片,IPV4可以在路由器和主机分片
- ICMPv6:附加报文类型:分组过大
- IPV6支持资源预分配,保证一定带宽和时延
- IPV6取消协议字段改为下一个首部字段
- IPV6取消总长度字段,改为有效载荷长度字段
- IPV6取消服务类型字段
3.4.5.3IPV6地址表示形式
一般形式 冒号十六进制记法: 8组
压缩形式:四个连续的0变成一个0,每组
零压缩:
3.4.5.4IPV6基本地址类型
- 单播
- 多播
- 任播
3.4.5.5IPV6向IPV4过渡的策略
- 双栈协议:在一台设备上同时启用IPV4协议栈和IPV6协议栈
- 隧道技术Tunneling:IPv6作为有效载荷在IPv4路由器之间传输
装成IPV4数据报