第 5章 IP协议因特网的核心协议是 IP和 TCP两大协议。
作用,IP协议是 TCP/IP协议簇中的 核心协议,提供 数据传输的最基本服务,是 实现网络互联的基本协议 。
位置,IP协议 位于网络层,位于同一层次的协议还有下面的 ARP和 RARP以及上面的因特网控制报文协议
ICMP和因特网组管理协议 IGMP。 ( P44)
关系,ARP和 RARP报文不被封装在 IP数据报中,而
ICMP和 IGMP的数据则要 封装 在 IP数据报中进行传输。
由于 IP协议在网络层中具有重要的地位,人们又将
TCP/IP协议的网络层称为 IP层 。
IP是不可靠的 无连接数据报协议,提供 尽力而为 的传输服务。
正因为 IP协议采用了尽力传输的思想,所以使得 IP协议的 效率非常高,实现起来也较 简单 。
IP层通过 IP地址 实现了物理地址的统一 ;
通过 IP数据报 实现了物理数据帧的统一 。
IP层通过对以上两个方面的统一达到了 向上屏蔽底层差异 的目的。
重点讨论 IP数据报的格式 和 无连接数据报的传输 机制。
第 5章 IP协议
5.1 IP数据报格式
5.2 无连接数据报传输
5.3 IP数据报选项
5.4 IP模块的结构
5.1 IP数据报格式
IP协议所处理的数据单元称为 IP数据报。
数 据 报 总 长 度 服务类型( T O S )
数 据
0
8 16
4 31
版 本标 识 片 偏 移源 IP 地 址
IP 选 项 (可 选、变 长)
首部长度标志生存时间 ( TTL ) 协 议 首 部 校 验 和目 的 IP 地 址首部数据
20
字节图 5 - 1 IP 数据报格式
19
IP数据报 =首部 +数据
IP数据报 首部 分为 定长部分 和 变长部分 。
( 1) 版本 (4位 )表示数据报的 IP协议版本,
版本号规定了数据报的格式。 IPv4=4
( 2) 首部长度 (4位 )指出数据报首部长度
(32位为单位 )。
( 3) 服务类型 (8位 )规定对本数据报的处理方式。服务类型的含义如图 1-2所示。
TOS 协议 D,T,R,C
0000 ICMP,BOOTP,DNS(TCP) Normal
0001 NNTP C
0010 IGP,SNMP R
0100 FTP(数据 ),SMTP (数据 ) T
1000 Telnet,FTP(控制 ),TFTP D
服务类型
随着因特网应用的迅速发展,多媒体数据传输和实时应用对 TCP/IP的服务类型提出了更高的要求,为此,因特网工程任务组 IETF将 IP数据报的服务类型字段改成了 区分业务字段 。 区分业务字段仍然是 8位,
最后两位保留未用,前面 6位为,码点,。 6位码点可以提供 64种不同的编码,对应不同的业务。
0 0 0
图 5 - 3 I P 数据报的区分业务字段优 先 级 保 留保 留
1 6
码 点( C o de po i nt )
X X 0 保 留 X X X
X 1 1 保 留 X X X
X 0 1 保 留 X X X
与原服务类型兼容
I E T F 指定本地机构指定用于临时使用或实验目的
( 4) 数据报总长度 指示整个 IP数据报的长度。
数据长度 =数据报总长度-首部长度 × 4
( 5) 标识 (16位 )由信源机赋给 IP数据报,每个 IP数据报有一个本地惟一的标识符。数据报的标识由信源机产生,每次自动加 1后分配给要发送的数据报。
( 6) 标志 (3位 )用于表示该 IP数据报是否允许分片和是否是最后的一片。
( 7) 片偏移 (13位 )表示本片数据在它所属的原始数据报数据区中的偏移量(以 8字节为单位)。
( 8) 生存时间 TTL(8位 )控制 IP数据报在网络中的传输时间。
( 9) 协议 (8位 )指明被 IP数据报封装的协议。( P83)
( 10) 首部校验和 (16位 )用于保证首部数据的完整性。
( 11) 源地址 表示本 IP数据报的最初发送者的
IP地址; 目的地址 一般表示本 IP数据报最终接收者的 IP地址。
( 12) IP选项 用于 控制 数据在网络中的传输路径,记录 数据报走过的路由器以及 获取 数据报所途径经过的路由器的时间戳。
( 13) 数据 字段用于携带上层数据,长度受数据报总长度限制 (≤65535-首部长度 × 4)。
返回
5.2 无连接数据报传输
IP数据报传输是 IP层要解决的重要问题之一,
是影响数据传输效率的一个重要因素。
IP数据报在经过路由器进行转发时一般要进行三个方面 的处理:
– 首部校验
– 路由选择
– 数据分片这一节将讨论通常首部校验和数据分片问题。
5.2.1 首部校验
IP层 不对数据进行校验 。原因:上层传输层是端到端的协议,进行端到端的校验比进行点到点的校验开销 小得多,在通信线路较好的情况下尤其如此。
另外,上层协议可以根据对于数据可靠性的要求,
选择 进行校验或不进行校验,甚至可以考虑采用不同的校验方法,这给系统带来很大的 灵活性 。
IP协议对 IP数据报 首部进行校验 。原因:
– IP首部 属于 IP层协议 的内容,不可能由上层协议处理。
– IP首部中的部分字段在点到点的传递过程中是不断 变化 的,只能在每个中间点 重新形成校验数据,在相邻点之间完成校验。
两个层次的校验 如图所示。
IP数据报的首部通过 校验和
( Checksum)来保证其正确性。
图 5 - 4 I P 层对 IP 数据报首部进行点到点校验,传输层对数据进行端到端校验信源信宿路由器 1
网络路由器 2
网络路由器 n
网络?
传输层进行端到端的数据校验(可选)
IP 层进行点到点数据报首部校验
IP 层进行点到点数据报首部校验
IP 层进行点到点数据报首部校验校验并形成新校验和 校验 形成校验和 校验并形成新校验和 校验并形成新校验和
计算首部校验和,
– 发送方将 IP数据报的首部按顺序分为多个 16比特的小数据块
– 首部校验和字段的初始值被设置为 0
– 用 1的补码算法对 16比特小数据块进行求和
– 最后再对结果求补
将经过计算得到的首部校验和 填回 到数据报的首部校验和字段,封装成帧 后发给通往信宿的下一跳设备。
校验,下一跳设备作为接收方将收到的 IP数据报的首部再 分 为多个 16比特的小数据块,
用 1的补码算法对 16位小数据块进行 求和,最后再对结果 求补,若得到的 结果为 0,就验证了数据报首部的正确性。
发送方用 1的补码计算和数时,首部校验和字段被设置为 0,等于没有参加计算,求补后的 校验和与和数各位正好相反 。
接收方用 1的补码计算和数时,新的首部校验和字段已经被加入,正确情况下所得的和数应该为 0xffff,
因此,求补后的结果应该为 0x0000。
图 5 - 5 校验和的生成与校验第 1 块
IP 数据报首部第 2 块校验和
0 x 0 0 0 0
第 n 块和数第 1 块第 2 块校验和
第 n 块校验和求补第 1 块第 2 块校验和
第 n 块和数校验和求补
0 x 0 0 0 0
接收方 发送方传输
例子:本例中没有 IP选项,所以首部长度为 5,数据总长度为 128字节,数据报的标识为 1,未分片,TTL值为 4,封装的是 TCP协议数据,源地址和目的地址分别为,192.168.20.86
和 192.168.21.20。
计算中要注意加上进位。生成的校验和为 3005。
标识图 5 - 6 生成 IP 数据报首部校验和
4 5 0
12 8
1
0 0
4 6
0
192 168
20 86
192 168
21 20
数据报总长度版本、首部长度,
服务类型标志、片偏移
TTL,协议首部校验和源 IP 地址目的 IP 地址
01000101 00000000
00000000 10000000
0000 000 0 00 000 001
00000000 00000000
00000100 00000110
00000000 00000000
11000000 10101000
00010100 01010110
11000000 10101000
00010101 00010100
11110100 01000001
1
11110100 01000010
00001011 10111101
加进位和数求补得校验和
4 5 0
12 8
1
0 0
4 6
30 0 5
192 168
20 86
192 168
21 20
加入校验和前的数据报首部 加入校验和后的数据报首部计算校验和
3005
接收方对同一数据报首部进行 校验,求补后得到的校验和值为 0,表明 IP数据报首部在传输过程中没有出现差错。
标识图 5 - 7 接收方进行 IP 数据报首部校验
4 5 0
12 8
1
0 0
4 6
3005
192 168
20 86
192 168
21 20
数据报总长度版本、首部长度,
服务类型标志、片偏移
TTL,协议首部校验和源 IP 地址目的 IP 地址
01000101 00000000
00000000 10000000
00000000 00000001
00000000 00000000
00000100 00000110
00001011 10111101
11000000 10101000
00010100 01 010110
11000000 10101000
00010101 00010100
11111111 11111110
1
11111111 11111111
00000000 00000000
加进位和数求补得校验和计算校验和
5.2.2 数据分片与重组
IP数据报在从信源到信宿的传输过程中要穿过多个不同的网络。由于各种物理网络存在着差异,对帧的最大长度有不同的规定,因此,各个物理网络的 最大传输单元 MTU可能不同。
物理网络的 MTU是由硬件决定的。
通常,网络的速度越高,MTU也就越大。
TCP/IP协议的 封装,
– 将数据报以从信源到信宿路径上的最小 MTU进行封装 (IPv6)
– 将数据报先以信源网络的 MTU进行封装,在传输过程中再根据需要对数据报进行动态分片 (IPv4)
1.数据报分片
当数据报被分片时,每个分片都会得到一个首部。 分片首部 的大部分内容和原数据报 相同,如 IP地址、版本号、协议和数据报标识等,所 不同 的是标志字段、数据报总长度和片偏移。分片既可以带也可以不带原数据报的选项,
在 IP数据报中 与分片相关的字段 是标识字段、
标志字段和片偏移字段。
1)数据报标识 是分片 所属数据报 的关键信息,
是分片重组的依据。
2)标志 字段由 3位构成,低两位有效,最高位未用; D位表示 是否允许该数据报分片 ; M
位表示该片 是否是分片的最后一片 。
3)片偏移 字段指出本片数据在原始数据报数据区中的偏移量。由于各分片独立传输,
其到达信宿机的顺序无法保证,需要片偏移 为重组提供顺序信息 。
标志 D M
图 5 - 8 IP 数据报标志字段
D,不分片
1,不允许分片
0,允许分片
M,片未完
1,非最后一片
0,最后一片未用
一个例子图 5 - 9 IP 数据报分片示例第一次分片
4 5 0 1620
29571 0 0 0
17
192,168.20.86
192.168.21.20
数据( 0 - 15 99 )
4 5 0 1420
29571 0 1 0
17
192,168.20.86
192.168.21.20
数据( 0 - 1399 )
4 5 0 220
29571 0 0 175
17
192,168.20.86
192.168.21.20
数据( 1400 - 1599 )
4 5 0 820
29571 0 1 0
17
192,168.20.86
192.168.21.20
数据( 0 - 799 )
4 5 0 620
29571 0 1 100
17
192,168.20.86
192.168.21.20
数据( 800 - 1399 )
第二次分片
该例子中数据报首部长度为 20个字节,数据区长度为 1600个字节,进入 MTU为 1420字节的物理网络时进行第一次分片。第一次分片后,形成一个 1400字节的分片和一个 200字节的分片。第一片的片偏移为
0( 0/8),片未完标志为 1;第二片的片偏移为 175
( 1400/8),片未完标志为 0,表示该片是数据报的最后一片。当第一个分片进入 MTU为 820字节的物理网络时再次进行分片。第二次分片后,又形成了一个 800字节的分片和一个 600字节的分片。前者的 片偏移为 0( 0/8),片未完标志为 1;后者的 片偏移为
100( 800/8),片未完标志也为 1。
分片必须满足两个条件:
各片尽可能大,但必须能为帧所封装,
片中数据的大小必须为 8字节的整数倍,否则 IP无法表达其偏移量。
2.分片的重组
分片可以在信源机或传输路径上的任何一台路由器上进行,而分片的 重组只能在信宿机上进行 。
信宿机在进行分片的重组时,采用了一组 重组定时器 。开始重组时,启动定时器,如果重组定时器超时时,仍然未能完成重组(由于某些分片未及时到达信宿机),信宿机的 IP层将丢弃该数据报,并产生一个超时错误,报告给信源机。
片重组的控制主要根据数据报首部中的 标识、标志和片偏移字段 。
数据报的分片和重组操作对用户和应用程序的编程人员都是 透明 的,分片和重组操作由网络 操作系统自动完成 。
返回
5.3 IP数据报选项
IP选项是 IP数据报首部中的 变长 部分
用于网络 控制和测试 目的 (如源路由、记录路由、时间戳等 )。
IP选项的 最大长度 不能超过 40字节。
IP选项在使用时是 可选 的,但在 TCP/IP
软件的 实现 中却是必须有的,也就是说所有的 IP协议都具有 IP选项的处理功能。
5.3.1 选项格式
IP选项的格式如图 5-10所示。选项由 三个部分 组成:
– 选项码 (Option Code)
– 选项长度
– 选项数据。
选项码图 5 - 1 0 I P 选项格式
1 字节选项长度 选项数据
1 字节 字节数由长度决定复制位 选项类 选项号
0 1 2 3 4 5 6 7
选项码 由 8位构成,分为复制位 (COPY)、选项类和选项号 3个子字段。
– 复制位 占一比特,用于控制分片时是否将选项复制到各个分片。复制位为,1”时,表示将原数据报所带的选项复制到所有的分片中,复制位为,0”
时,表示仅将选项复制到第一个分片中。
– 选项类 占 2比特,用于定义选项的一般作用。
– 选项号 占 5比特,用于定义选项的具体类型。选项类区别选项的一般目的,而选项号则对同一类选项进行进一步的细化。
选项长度 为 8位,用于定义选项的长度。长度信息除 包括 选项数据部分的长度外还包括选项码和长度字段本身。 有些选项不含长度字段 。
选项数据 不定长,用于定义选项请求。选项是单方向 发送的请求,不需要信宿机进行响应。
5.3.2 选项类型
两位 IP选项类定义了 四种选项类型,00用于 IP数据报路径的控制和测试; 10用于时间戳的测试;
01类和 11类未用。
每一选项类又 由选项号进行细分,其中 00类中常用的有 5个选项号,10类中只有 1个选项号在用。
选项类 选项号 长度 含义
00 00000 无 选项结束
00 00001 无 无操作 (作为填充数据 )
00 00011 变长 宽松源路由
00 00111 变长 记录路径
00 01001 变长 严格源路由
10 00100 变长 时间戳
1.单字节选项
表中的前面两个选项为单字节选项,负责 标识
IP选项的结束和对 IP数据报首部进行填充。当
IP数据报首部中选用了 IP选项时,选项不定长,
而数据报要求首部是 32位的整数倍,若不是,
则需要进行填充。
填充由,无操作,( No Operation)符和 选项结束 符( End of Option)组成。当需要一个以上的字节对选项进行填充时,先用多个,无操作,符进行填充,最后用选项结束符结束整个选项。
2.源路由选项
作用,通常 IP数据报在传输时,由路由器自动为其选择路由。但网络管理人员为了使数据报绕开出错网络,或者为了对某特定网络的吞吐率进行测试,需要在信源机控制 IP数据报的传输路径。源路由 (Source Route)就是为了满足这一要求而设计的选项。
方法,源路由指由信源机上的发送者规定本数据报穿越网络的路径。
种类,源路由选项分为两种。
– 严格源路由
– 宽松源路由
( 1)严格源路由
严格源路由选项要求信源机上的 发送者指定数据报必须经过的每一个路由器 。也就是说,数据报必须严格按照发送方规定的路径穿过每一个路由器。严格源路由选项的格式如图所示。
图 5 - 11 严格源路由选项格式选项码,137
1 00 01001
选项长度 指 针第一个 IP 地址第二个 IP 地址
最后一个 IP 地址
1 字节 1 字节 1 字节
选项码 137的含义是:复制位为,1”(严格源路由分片时选项要复制到各个分片 ),选项类为,00”,选项号为,01001”,即 128+0+9=137。
指针字段的含义:
– 当设备(信源机或路由器) 发出 带该选项的数据报时,指针指的是该设备的 下下跳路由器的入口 IP地址 。
– 当一个路由器 收到 数据报时,指针指的是该路由器的 下一跳 IP地址,路由器转发数据报前要将指针值加 4,这样发出去的数据报的指针又指向了它的下下跳路由器的入口 IP
地址。
这里要注意的是,源路由对于数据报中目的 IP地址的处理和一般情况下有所不同。在 源路由传输过程中数据报的目的 IP地址会不断变化,而且选项中的
IP地址表也会发生变化 。
信源机从上层收到源路由 IP地址表后,将第一个 IP地址从列表中去掉(将该 IP地址作为当前数据报的目的地址),再将剩余的表项前移,然后将最终要去的目的地址写入到选项地址表的最后。结果如图 5-12中的 A选项表所示。
图 5 - 12 严格源路由传输时 IP 地址变化的一个例子
137 15 4
192,168,2 0,44
192,168,3 0,66
192,168,4 0,88
19 2.1 68,10,0
192,1 68,20,0 19 2.1 68,30,0
19 2.1 68,40,0
19 2.1 68,10,11
19 2.1 68,10,22
19 2.1 68,20,33 19 2.1 68,20,44 19 2.1 68,30,55 19 2.1 68,30,66
1 9 2.1 68,40,77
19 2.1 68,40,88
源 IP,19 2.1 68,10,11
目的 IP,192,168.40,88
源 IP,19 2.1 68,10,11
目的 IP,192,168,1 0,22
137 15 8
192,168.10.22
192,168,3 0,66
192,168,4 0,88
137 15 12
192,168.10.22
192,168.20.44
192,168,4 0,88
137 15 16
192,168.10.22
192,168.20.44
192,168.30.66
源 IP,19 2.1 68,10,11
目的 IP,192,168,20,44
源 IP,19 2.1 68,10,11
目的 IP,192,168,30,66
源 IP,19 2.1 68,10,11
目的 IP,192,168.40,88
A
( 2)宽松源路由
宽松源路由 IP选项的格式与严格源路由相同,如图所示。所不同的是,宽松源路由在选项的 IP地址表中并不给出一条完备的路径,而是只给出路径中的 某些关键点,关键点之间无直接物理连接时,通过路由器的自动 路由选择 功能进行补充。
图 5 - 13 宽松源路由选项格式选项码,131
1 00 00011
选项长度 指 针第一个 IP 地址第二个 IP 地址
最后一个 IP 地址
1 字节 1 字节 1 字节
3.记录路由
记录路由选项用于 记录 IP数据报从信源机到信宿机 所经过路径上各路由器的 IP地址 。记录路由选项格式与源路由选项格式相同,如图所示。
图 5 - 14 记录路由选项格式选项码,7
0 00 00111
选项长度 指 针第一个 IP 地址(开始时为空)
第二个 IP 地址(开始时为空)
最后一个 IP 地址(开始时为空)
1 字节 1 字节 1 字节
地址区域 的大小由源机预先分配 (根据对所需记录的地址数的估计 )并初始化。
指针域 指向地址区域中下一个可存放地址的位置。
假如预先分配的地址区域大小不足以记录下全部路径,IP软件将放弃记录余下地址的尝试。
4.时间戳
时间戳选项 用于 记录 IP数据报经过各路由器时的当地时间,根据时间戳可以估算 IP数据报从一个路由器到另一个路由器所花费的时间,从而帮助分析网络的吞吐率和负载情况。 时间戳选项格式 与源路由选项格式类似,如图 5-15所示。 (0+64(10)+4=68)
图 5 - 1 5 时间戳选项格式选项码,68
0 1 0 0 0 1 0 0
选项长度 指 针 溢出 标志第一个 IP 地址第一个时间戳第二个 IP 地址第二个时间戳
1 字节 1 字节 4 位 4 位 1 字节
溢出域 记录因信源机分配的数据空间不够而未能记录下来的时戳个数。
标志域 用于控制时戳选项格式。其意义如下:
标志值 意 义
0 只记录时间,不记录 IP地址
1 时间、地址同时记录
3 地址由源机指定,只记录指定地址处的时间
时戳中的时间采用世界时间 (universal time)表示,以千分之一秒为单位。
注意,1) 假如采用标志值为,1”的时戳,该选项可以用于替代 记录路径 选项。
2)由于互联网中各网关时钟并不严格同步,
时戳只能作为 参考 。 返回
5.4 IP模块的结构
IP协议的 主要功能 包括将上层传来的数据封装成 IP数据报,
对数据报进行分片和重组,处理数据环回,IP选项、校验码和 TTL值,进行路由选择等。
图 5 - 16 IP 协议对数据的封装和处理
路由表
ICM P
T CP
路由选择
UDP
转发数据报处理模块,
处理 IP 选项,
环回 / 目的机和 TTL 等
IP
IP 层传输层网络接口
O S P F
重定向 队列添加 IP 数据报首部分片处理分片重组队列队列队列 队列队列
队列本章要点
IP是 不可靠 的 无连接数据报 协议,提供 尽力而为 的传输服务。
IP层通过 IP地址实现了 物理地址的统一,通过 IP数据报实现了 物理数据帧的统一 。 IP层通过这两个方面的统一屏蔽了底层的差异,向上层提供了统一的服务。
IP数据报 由首部和数据两部分构成。首部分为定长部分和变长部分。选项是数据报首部的变长部分。定长部分 20字节,选项不超过 40字节。
IP数据报中首部长度以 32位 字为单位,数据报总长度以 字节 为单位,片偏移以 8字节 ( 64比特)为单位。
数据报中的数据长度 =数据报总长度-首部长度 × 4。
IP协议支持 动态分片,控制分片和重组的字段是标识、标志和片偏移,影响分片的因素是网络的最大传输单元 MTU,MTU是物理网络帧可以封装的最大数据字节数。通常不同协议的物理网络具有不同的
MTU。分片的 重组 只能在信宿机进行。
生存时间 TTL是 IP数据报在网络上传输时可以生存的最大时间,每经过一个路由器,数据报的 TTL值减 1。
IP数据报只 对首部进行校验,不对数据进行校验。
IP选项 用于网络控制和测试,重要包括严格源路由、
宽松源路由、记录路由和时间戳。
IP协议的主要 功能 包括封装 IP数据报,对数据报进行分片和重组,处理数据环回,IP选项、校验码和
TTL值,进行路由选择等。
返回