网络层概述
网络层的主要任务是实现网络互连,进而实现数据包在各网络之间的传输。
要实现网络层任务,需要解决以下主要问题:
-
网络层向运输层提供怎样的服务(“可靠传输”还是“不可靠传输”)
-
网络层寻址问题
-
路由选择问题
因特网(Internet)是目前全世界用户数量最多的互联网,它使用TCP/IP协议栈。
由于TCP/IP协议栈的网络层使用网际协议IP,它是整个协议栈的核心协议,因此在TCP/IP协议栈中网络层常称为网际层。
综上所述,我们通过学习TCP/IP协议栈的网际层来学习网络层的理论知识和实践技术。
IPv4数据报的首部格式
首部长度
占4比特,表示IP数据报首部的长度。该字段的取值以4字节为单位。
最小十进制取值为5,表示IP数据报首部只有20字节固定部分;
最大十进制取值为15,表示IP数据报首部包含20字节固定部分和最大40字节可变部分; 可选字段
-
长度从1个字节到40个字节不等。用来支持排错、测量及安全等措施。
-
可选字段增加了IP数据报的功能,但这同时也使得IP数据报的首部长度成为可变的。这就增加了每一个路由器处理IP数据报的开销。实际上可选字段很少被使用。
填充字段
- 确保首部长度为4字节的整数倍。使用全0进行填充。
区分服务
-
占8比特,用来获得更好的服务。
-
该字段在旧标准中叫作服务类型,但实际上一直没有被使用过。1998年,因特网工程任务组IETF把这个字段改名为区分服务。利用该字段的不同数值可提供不同等级的服务质量。
-
只有在使用区分服务时,该字段才起作用。一般情况下都不使用该字段。
总长度
-
占16比特,表示IP数据报的总长度(首部+数据载荷)。
-
最大取值为十进制的65535,以字节为单位。
举例:()为二进制 首部长度=(0101) x 4 = 5 x 4 = 20(字节)
总长度=(0000001111111100) = 1020(字节)
数据载荷长度=总长度-首部长度=1020 - 20 = 1000(字节)
标识
-
占16比特,属于同一个数据报的各分片数据报应该具有相同的标识。
-
IP软件维持一个计数器,每产生一个数据报,计数器值加1,并将此值赋给标识字段。
标志
占3比特,各比特含义如下:
-
DF位:1表示不允许分片;0表示允许分片
-
MF位:1表示“后面还有分片”;0表示“这是最后一个分片”
-
保留位:必须为0
片偏移
-
占13比特,指出分片数据报的数据载荷部分偏移其在原数据报的位置有多少个单位。
-
片偏移以8个字节为单位。
举例:对IPv4数据报进行分片
片偏移除8是因为片偏移是以字节做单位。
生存时间TTL
-
占8比特,最初以秒为单位,最大生存周期为255秒;路由器转发IP数据报时,将IP数据报首部中的该字段的值减去IP数据报在本路由器上所耗费的时间,若不为0就转发,否则就丢弃。
-
现在以“跳数”为单位,路由器转发IP数据报时,将IP数据报首部中的该字段的值减1,若不为0就转发,否则就丢弃。
-
防止IP数据报在网络中永久兜圈。(前面有提到)
协议
- 占8比特,指明IPv4数据报的数据部分是何种协议数据单元。常用的一些协议和相应的协议字段值如下。
协议名称 | ICMP | IGMP | TCP | UDP | lPv6 | OSPF |
---|---|---|---|---|---|---|
协议字段值 | 1 | 2 | 6 | 17 | 41 | 89 |
首部检验和
-
占16比特,用来检测首部在传输过程中是否出现差错。比CRC检验码简单,称为因特网检验和.
-
IP数据报每经过一个路由器,路由器都要重新计算首部检验和,因为某些字段(生存时间、标志、片偏移等)的取值可能发生变化。
-
由于IP层本身并不提供可靠传输的服务,并且计算首部校验和是一项耗时的操作,因此在IPv6中,路由器不再计算首部校验和,从而更快转发IP数据报。
源lP地址和目的IP地址
- 各占32比特,用来填写发送该IP数据报的源主机的IP地址和接收该IP数据报的目的主机的IP地址。
例题:某公司网络下图所示。IP地址空间192.168.1.0/24被均分给销售部和技术部两个子网,并已分别为部分主机和路由器接口分配了IP地址,销售部子网的MTU=1500B,技术部子网的MTU=800 B.
(2)假设主机192.168.1.1向主机192.168.1.208发送一个总长度为150OB的IP分组,IP分组的头部长度为20B,路由器在通过接口F1转发该IP分组时进行了分片。若分片时尽可能分为最大片,则一个最大IP分片封装数据的字节数是多少?至少需要分为几个分片?每个分片的片偏移量是多少?
解析:
这么分是错的,因为片偏移量必须为整数。
应该取小于780且能被8整除的数,为776。
例题:题47-a图是网络拓扑,题47-b图是主机进行Web请求的1个以太网数据帧前80个字节的十六进制及ASCII码内容。(1) Web服务器的IP地址是什么?该主机的默认网关的MAC地址是什么? (4)该帧所封装的IP分组经过路由器R转发时,需修改IP分组头中的哪些字段。
解析:
同理,该主机的默认网关的MAC地址是前6给字节,也就是00-21-27-21-51-ee
IP分组经过路由器R时,生存时间字段被减1;
首部检验和会被重新计算;
若IP分组总长度大于MTU,则需要进行分片,此时总长度字段、标志字段片偏移字段都需要修改。