ip协议的格式及各字段的语义
IP协议格式
IP数据报由首部和数据两部分组成,首部的前一部分是固定长度,共20字节,是所有IP数据报必须具有的。在首部的固定部分的后面是一些可选字段,其长度是可变的。
固定首部字段
1.版本(Version):占4位,指IP协议的版本。目前广泛使用的是IPv4,值为4。IPv6则值为6。不同版本的IP协议在功能、地址空间等方面有较大差异。
2.首部长度(InternetHeaderLength,IHL):占4位,可表示的最大十进制数是15。单位是32位字(4字节),因此首部长度的最大值是15×4=60字节。首部长度指出了首部一共有多少个4字节单元,当没有可选字段时,首部长度为5(即20字节)。
3.区分服务(DifferentiatedServices,DS):占8位,最初称为服务类型(TypeofService,TOS)。前6位为区分服务代码点(DSCP),后2位为显式拥塞通知(ECN)。DSCP用于指定IP数据包的优先级和服务质量,不同的代码点对应不同的服务级别。ECN用于在网络拥塞时进行拥塞通知。
4.总长度(TotalLength):占16位,指首部和数据之和的长度,单位为字节。最大长度为2^16-1=65535字节。由于数据链路层的MTU(最大传输单元)限制,实际中很少达到这么大的值。在数据传输过程中,如果IP数据报长度超过了数据链路层的MTU,就需要进行分片。
5.标识(Identification):占16位。IP软件在存储器中维持一个计数器,每产生一个数据报,计数器就加1,并将此值赋给标识字段。当数据报需要分片时,所有分片都使用同一个标识值,目的是使分片后的各数据报片在目的主机能够正确地重装成原来的数据报。
6.标志(Flags):占3位,目前只有前2位有意义。MF(MoreFragments)位表示“更多分片”,MF=1表示后面还有分片,MF=0表示这是最后一个分片。DF(DontFragment)位表示“禁止分片”,DF=1时,路由器不能对数据报进行分片,如果数据报长度超过了数据链路层的MTU,路由器会丢弃该数据报并向源主机发送ICMP差错报告。
7.片偏移(FragmentOffset):占13位,指出本片数据在原数据报中的相对位置,以8字节为偏移单位。由于13位能够表示的最大数为2^13-1=8191,所以最大偏移是8191×8=65528字节。片偏移用于在目的主机将分片后的数据报片重新组装成完整的数据报。
8.生存时间(Time-to-Live,TTL):占8位,最初的设想是每经过一个路由器,TTL就减1,当TTL为0时,数据报就被丢弃,并向源主机发送ICMP超时差错报告。现在TTL主要用于防止数据报在网络中无限循环转发,不同的操作系统初始设置的TTL值有所不同,常见的有64、128等。
9.协议(Protocol):占8位,指出此数据报携带的数据使用何种协议,以便目的主机的IP层将数据部分上交给正确的协议处理程序。例如,值为6表示TCP协议,值为17表示UDP协议等。
10.首部检验和(HeaderChecksum):占16位,用于检验IP数据报首部在传输过程中是否出现差错。它只检验首部,不检验数据部分。计算方法是将首部中的每16位数据相加,然后将和的二进制反码作为首部检验和的值。在接收端,重新计算首部检验和,如果计算结果与接收到的首部检验和字段的值相同,则认为首部在传输过程中没有出错;否则认为首部有差错,会丢弃该数据报。
11.源IP地址(SourceIPAddress):占32位,是发送该数据报的源主机的IP地址。
12.目的IP地址(DestinationIPAddress):占32位,是该数据报要到达的目的主机的IP地址。
可选字段
IP首部的可选字段长度可变,最多可达40字节。可选字段提供了一些额外的功能,如记录路由、时间戳等。虽然不是所有IP数据报都包含可选字段,但它为网络管理员和网络研究人员提供了一些有用的工具。
1.选项类型(OptionType):每个选项都有一个字节的选项类型,用于标识该选项的功能。选项类型又进一步分为3个字段:复制位(Copied)、选项类(OptionClass)和选项号(OptionNumber)。复制位用于决定该选项是否要被复制到所有的分片数据报片中;选项类分为控制类和调试类等;