推荐文章:
IP数据报格式
网络层(IP数据报)
前言
计算机网络的主要作用:
计算机网络最基本、最重要的作用就是数据通信,实现互联网计算机之间的信息传递。此外计算机网络的功能还包括资源共享、负载均衡、分布式处理以及提高可靠性。
一、IP数据包
IP数据包由IP首部和数据两部分组成,首部又包含了固定部分和可变部分,其中前面的固定部分长度占20Byte不变,是所有IP数据包必须有的。在首部固定部分的后面是一些可选字段,称为可变部分,最大长度不超过40Byte.
IP数据包首部格式能够说明IP协议都具有什么功能。
二、主要字段的含义与应用
1.固定部分
(1)版本号:占4位(1Byte),声明IP协议的版本,目前有两个版本IPv4和IPv6,其版本号分别对应二进制表示的4和6,即IPv4 = 0100,IPv6 = 0110.
(2)首部长度:占4位(1Byte),声明首部的长度,以4B(32位)长度为单位(即首部长度一定是4的倍数),IP首部的最大长度为60字节,对应首部长度字段 = 1111(10进制的15,因此0001代表4字节)。计算方法:实际首部长度 = 首部长度字段 × 4B。
(3)服务类型:占8位(2Byte),用来 获取更好的服务,计算机给特定应用程序的数据添加一个标志,然后再配置网络中的路由器优先转发这些带标志的数据包,在网络带宽比较紧张的情况下,也能确保这种应用的带宽有保障。
(4)总长度:占16位,声明IP首部和数据之和的长度,也就是数据包的长度,单位为Byte。所以数据包的最长长度为 2^16 - 1 = 65535 Byte = 64KB。
(5)标识:占16位,用来让目的主机判断新收到的分段属于哪个分组(分割段)。IP软件在存储器中维持一个计数器,每产生一个数据包,计数器就加1,并将此值赋给标识字段。但这个标识并不是序号,因为IP是无连接服务,数据包不存在按序接受的问题。当数据包由于长度超过网络的MTU( 最大传输单元 )时,需要分片。同一个数据包被分成多个片段,这些片段的标识相同,相同的标识字段的值使得分片后的各个数据包片最后能正确地重装成为原来地数据包。
(6)标志:占3位,用来标志所有分段是否都已到达。目前只有两位有意义。标志字段中的最低为记为MF(一般也记为 Fragflag)。MF=1即表示后面还有分片的数据包。MF=0表示自己是若干数据包片中的最后一个。标志字段中间的一位记为DF,意思是不能分片。只有当DF=0是才允许分片。
(7)分段偏移(offset):占13位,表示较长的分组在分片后,某片在原分组中的相对位置。也就是说相对于用户数据字段的起点,该片从何处开始。偏移以8个字节为偏移单位。也就是说每个分片的长度一定是8字节的整数倍。
(8)生命期:占8位,记为TTL(Time To Live),表示数据包在网络中的寿命,单位为秒,最长为255秒,每过一个路由节点递减,为0时分组丢弃。有时也指跳数限制,例如在无向图中有跳数限制的求最短路径。
(9)用户协议:占8位,指出此数据包携带的数据是使用何种协议,以便目的主机的网络层将数据部分上交给哪个处理过程。
(10)报头检验和:占16位,只检验数据包的首部,不包括数据部分。因为数据包每经过一个路由器,路由器都要重新计算一下报头检验和,不检验数据部分可以减少计算量。
(11)源地址:占32位,源主机的 IP 地址。
(12)目的地址:占32位,目标主机的 IP 地址。
2.可变部分
可变部分的选择项主要用于网络测试或调试,包括安全性、严格的路由选择、松散的源路由选择、记录路由、时间标记等。
补充
1.IP数据报的封装
2.IP数据报的分片
数据报的总长度(即报头加上数据部分)不能超过网络的数据链路层协议的MTU值。MTU称为最大传输单元,为帧格式中的数据字段的最大长度。不同数据链路层协议的MTU值如下: