第五章 网络层——基于IP 5.1 网络层概述 ISO 定义 5.1 网络层概述 ISO 定义 网络层为一个网络连接的两个传送实体间交换网络服务数据单元提供功能和规程的方法,它使传送实体独立于路由选择和交换的方式。 网络层是处理端到端传输的最低层。 网络层要解决的关键问题是了解通信子网的拓扑结构,选择路由。 网络层还要解决在网络环境传输的问题——如拥塞等。
网络层的地位 位于数据链路层和传输层之间,使用数据链路层提供的服务,为传输层提供服务; 通信子网的最高层; 处理端到端传输的最低层。 网络层的作用 屏蔽各种不同类型网络之间的差异,实现互连 了解通信子网的拓扑结构,选择路由,实现报文的网络传输
为传输层提供服务 面向连接服务 传统电信的观点:通信子网应该提供可靠的、面向连接的服务。 将复杂的功能放在网络层(通信子网)。 无连接服务 Internet的观点:通信子网无论怎么设计都是不可靠的,因此网络层只需提供无连接服务。将复杂的功能放在传输层。
虚电路(virtual circuit) 数据报(datagram) 提供面向连接的服务 要先发送虚呼叫分组,一方面通知目的主机要求建立连接,另一方面寻找一条合适的路由。 若目标主机同意通信,则发应答,然后双方使用虚呼叫时建立的虚电路进行数据交换。 通信结束后,释放虚电路。 数据报(datagram) 提供无连接的服务 主机有数据可随时发送 每个分组携带完整的目的地址,独立进行路由选择
当虚电路建好时,路由就已确定,所有分组都经过此路由 如果有足够的缓冲区分配给已经建立的每条虚电路,则容易控制 数据报 虚电路 电路设置 不需要 需要 地址 每个分组都有源和目的端的完整地址 每个分组都有一个短的虚电路号 状态信息 子网不存储状态信息 建立好的每条虚电路都要求占用子网表空间 路由选择 对每个分组独立进行 当虚电路建好时,路由就已确定,所有分组都经过此路由 路由器失败 的影响 除了在崩溃时丢失分组外,无其它影响 所有经过失效路由器的虚电路都要被终止 拥塞控制 难 如果有足够的缓冲区分配给已经建立的每条虚电路,则容易控制
路由器内存空间与带宽的权衡 虚电路方式,路由器需要维护虚电路的状态信息; 数据报方式,每个数据报都携带完整的目的/源地址,浪费带宽 连接建立时间与地址查找时间的权衡 虚电路需要在建立连接时花费时间 数据报则在每次路由时过程复杂 服务质量QoS(Quality of Service) 虚电路方式很容易保证服务质量QoS,适用于实时操作,但比较脆弱。 数据报不太容易保证服务质量,但是对于通信线路的故障,适应性很强。
子网采用数据报方式,每个包都要做路由选择; 子网采用虚电路方式,只需在建立连接时做一次路由选择。 路由——是网络层的功能部分 子网采用数据报方式,每个包都要做路由选择; 子网采用虚电路方式,只需在建立连接时做一次路由选择。 拥塞控制——是网络层需要解决的问题 确保通信子网能够承载用户提交的通信量,是一个全局性问题,涉及主机、路由器等很多因素; ——网络上有太多的包时,性能会下降,这种情况称为拥塞。
——便宜高速的局域网受地域限定;远距离的广域网不能提供低成本的本地通信 5.2 IP——网际协议 网络互联的前提 没有一种单一网络技术可以满足所有约束 ——便宜高速的局域网受地域限定;远距离的广域网不能提供低成本的本地通信 用户期待通用互联 网络互联技术的目标 网络技术的独立性。基于分组交换,独立于任何厂家硬件。 通用互联。普遍可识别地址,中间交换计算机用目的选择路由。 端对端确认。即使源、目的不在同一物理网络中。 应用协议标准。
互联的层次 物理层——集线器,不理解传输的数据含义 链路层——以太网交换机,不能实现非以太网网络的互联 应用层——高度复杂 网络层——第三层交换;IP层交换;路由器;
各种应用层协议 应用层 (TELNET, FTP, SMTP 等) 运输层 TCP, UDP ICMP IGMP 网际层 IP RARP ARP 与各种网络接口 网络接口层 物理硬件
128.211.6.115 路由器 128.10.0.1 192.5.48.85 10.0.0.37
不同类型的网络——如何互相理解、识别、互通? 复杂的网络结构——如何通过恰当的路径达到目的? 变化的负载——网络如何有效的承担传输?
5.2.1 IP地址 统一编址——使网络各节点可以互相识别 IP地址(IP Address) 网络号 主机号 32位的地址 统一互通网络
net-id 24 bit 16 bit host-id B 类地址 C 类地址 1 8 bit D 类地址 1 1 1 0 多 播 地 址 E 类地址 保 留 为 今 后 使 用 1 1 1 1 0 A 类地址
网络号+主机号——便于路由 A类地址适用于大型网络,反之C类地址用于为数众多的小型网络 特殊的IP 广播地址— 主机地址全为“1”,向某个网络所有主机发送报文。 有限广播— 32位全为“1”,向本网络所有主机发送报文。 0地址 — 网络号为“0”,向本网络某主机发送报文。“0”—“本” 回送地址— 用于测试 IP的分配目前由INTERNET名字和编号分配协会(ICNN)管理 地址一般采用点分隔的十进制表示法,如166.111.68.3
需要注意的 1.路由器和一些主机可以有多个IP地址。IP实质上是对应一个节点的物理连接。(类似现实中一个单位有2个门牌)。故IP不是节点的唯一性标识。 2.当一个单位有2个门牌时,从A门出和B门出可能有不同的效果。若A门不通时,而B门因其他节点不知道而无法访问A。
5.2.2 IP数据报 一个 IP 数据报由首部和数据两部分组成。 首部的前一部分是固定长度,共 20 字节,是所有 IP 数据报必须具有的。 在首部的固定部分的后面是一些可选字段,其长度是可变的。
固 定 部 分 可变 部分 4 8 16 19 24 31 版 本 标志 生 存 时 间 协 议 标 识 服 务 类 型 总 长 度 片 偏 移 填 充 首 部 检 验 和 源 地 址 目 的 地 址 可 选 字 段 (长 度 可 变) 首部长度 1 2 3 5 6 7 D T R C 未用 优 先 级 数 据 部 分 比特 首 部 传送 IP 数据报 首
版本(Version)——占 4 bit,指IP协议的版本 。目前的 IP 协议版本号为 4 (即 IPv4) 首部长度(IHL)——占 4 bit,可表示的最大数值 ,是 15 个单位(一个单位为 4 字节) ,因此 IP 的首部长度的最大值是60字节。 服务类型(Type of Service)——占 8 bit,用来获得更好的服务。 优先级 — 0~7,一般~网络控制优先权。 D — 低延迟 Delay T — 高吞吐率 Thoughtout R — 高可靠性 Reliability
总长度(Total length)——占 16 bit,指首部和数据之和的长度,单位为字节,因此数据报的最大长度为 65535 字节。 总长度必须不超过最大传送单元 MTU。 标识(identification)—— 16 bit,它是一个计数器,用来产生数据报的标识。 标志(Flag)——3bit DF—Don’t Fragment(不能分片) MF—More Fragment =1 还有分片 ;=0 最后一个 片偏移(12 bit)——较长的分组在分片后,某片在原分组中的相对位置。 片偏移以 8 个字节为偏移单位。
偏移 = 0/8 = 0 偏移 = 0/8 = 0 偏移 = 1400/8 = 175 偏移 = 2800/8 = 350 1400 2800 3799 2799 1399 需分片的 数据报 数据报片 1 首部 数据部分共 3800 字节 首部 1 首部 2 首部 3 字节 0 数据报片 2 数据报片 3
ID =x offset =0 fragflag =1 length =1500 =1480 =2960 =1040
生存期(Time to live)——单位为秒,实际实现中,IP包每经过一个路由器TTL减1,为0则丢弃,并给源主机发送一个告警包。 协议域(Protocol)——上层为哪种传输协议,TCP、UDP… 头校验和(Header checksum)——只对IP包头做校验; 算法:每16位求反,循环相加(进位加在末尾),和再求反。 源地址(Source address) 目的地址(Destination address
发送端 接收端 16 bit 字 1 字 2 置为全 0 检验和 字 n 反码算术 运算求和 … 取反码 数 据 报 首 部 IP 数据报 结果 数据部分 若结果为 0, 则保留; 否则,丢弃该数据报 不参与检验和的计算
5.2.3 Ip数据报的传送 gw netb bsdi SLIP SUN 以太 140.252.1.4 140.252.104.2 140.252.13.35 140.252.13.33 SUN gw 140.252.1.4 140.252.104.2 D M netb 目的192.48.96.9 以太 SLIP 140.252.1.183
从层次上来看数据的流动 局域网 广域网 主机 H1 主机 H2 路由器 R1 路由器 R2 路由器 R3 电话网 链路层 应用层 运输层 网络层 物理层 R1 R2 R3 H1 H2 从层次上来看数据的流动
IP数据报传输处理描述 源端 根据IP协议形成IP数据报,将路由器地址和IP数据报交给网络接口软件,后者调用ARP,找到路由器的物理地址,然后把IP数据报传输到路由器。 传输中,每经过一路由器,该路由器将IP报的目的地址与本地地址比较。判定是否到达目的;计算头部校验,递减生存值;错误和TTL为0则丢弃;若继续转发,可能还要根据MTU重新分片。 继续转发,路由器象源一样选择下一传输站点,直到到达目的。
IP数据报传输实现示意
输入处理—ipintr函数 (1) 对到达分组验证; (2) 选项处理及转发; (3) 分组重装; (4) 分用。
版本检查 头部选项检查 头部校验和检查
转发
转发—ip_forward函数 不能转发 递减生存时间
rtalloc为当前分组的目的地找一个新路由 无法找到新路径
输出处理—ip_output函数 建立头部 rtalloc找一个新路由
小结 IP数据报在主机或路由器中,是通过协议处理软件完成接收、验证、转发的。 通过软件阅读,可望对IP数据报传输原理的理解有帮助
5.2.4 ARP和RARP 网络层是通过IP地址互相识别的。 网络层的报文要通过低层传输。 网络层的报文发、收,存在低层的地址与IP地址的映射关系。 比如发送时,源站点要知道周围目的站点(如转发站点)的物理地址。 网络、站点可能是动态变化的。
X A Y B Z 我是209.0.0.5,硬件地址是00-00-C0-15-AD-18 我想知道209.0.0.6的硬件地址 ARP请求 我是209.0.0.6,硬件地址是08-00-2B-00-EE-0A
ARP协议报文格式 硬件类型 协议类型 地址长度 协议长度 操作 发送方硬件地址0-3 发送方硬件地址4-5 发送方IP0-1 目标硬件地址0-1 目标硬件地址2-5 目标IP0-3 ARP协议报文格式