IP数据报由首部和数据两部分组成,首部由固定的20个字节和可变部分组成(不超过40字节)。看看ip数据报首部的图解
IP数据报首部固定字段解释
版本:占4位,指IP协议版本
首部长度:占4位,可表示的最大十进制数为15,单位是32位字(4个字节),首部最小长度(二进制0101)5,相当于5*4=20个字节,最大长度(二进制1111),相当于15*4=60个字节。
区分服务:占8位,用来获得更好的服务
总长度:占16位,首部和数据之和,最长是2的16次方减去1即65535字节。数据链路层协议规定的一个数据帧中数据字段的最大长度,即最大传输单元MTU,当一个IP数据报封装成数据链路帧时,此数据报总长度一定不能超过下面链路层的MTU最常用的以太网的MTU是1500字节。
标识:占3位,但目前只有两位有意义,标志字段中最后一位记为MF(more fragment)。MF=1表示后面有分片,MF=0表示这已是若干数据报中的最后一个。标志字段的中间一位记为DF(do not fragment),不能分片,只有当DF=0时才能分片。
片偏移:占13位,指出较长分组在分片后,某片在分组中相对的位置。也就是说 ,相对于用户数据的起点,该片是从何处开始。以8个字节为偏移单位,每个分片的长度是8字节的整数倍。
生成时间:占8位,生成时间TTL(time to live) ,路由器在转发数据报之前把TTL减1,若TTL减小到0,就丢弃这个数据报,不在转发。现在的TTL表示跳数。TTL指明数据报在因特网中至多可经过多少个路由器。显然最大能经过255个。
协议:占8位,协议字段能指出此数据报应该携带的数据使用的何种协议。以便使得目的主机的ip层知道应该将数据部分交给哪个处理过程。如下图
首部校验和:占16位,只校验数据报的首部,ip首部检验和不采用负载的CRC校验码,校验过程如下:
1.在发送方,先把IP数据报首部划分为许多16位字的序列,并把校验和字段置0.‘
2.用反码算术运算把所有16位字相加后,将得到的和的反码写入校验和字段。
3.接收方收到数据后,将首部的所有16位字再使用反码算术运算相加一次。将得到和取反码,即得出接受方校验和的计算结果。
4.若首部没有发送变化,则此结果必为0,于是就保留这个数据报,否则就丢弃错误数据报。
源地址:占32位
目的地址:占32位