ip header

ip_header

IP数据报由首部和数据两部分组成,首部又分为定长部分和变长部分。

简要说明

版本(VER):4位,表示数据报的IP协议版本,

当前的IP协议版本号为4,即IPv4;

下一代网络协议IPv6,版本号为6.

首部长度(HLEN):4位,表示以字长(4字节)为单位的数据报首部长度。

服务类型(SERVICE TYPE): 8位,规定本数据报的处理方式。

前三位是优先级,0-7,0表示最低,7最高(最重要),但目前的IPv4没有使用优先级。

后4位是TOS,表示本数据报在传输过程中所希望得到的服务,

D--最小延迟(minimize delay);T--最大吞吐率(maximize throughout);

R--最高可靠性(maximize reliability);C--最低成本(minimize cost)。

值得注意的有2点:

  • 服务类型代表用户的希望,并不具有强制性,目前许多设备TCP/IP中不支持服务类型特性。
  • 在D、T、R、C这4个参数中只能设置其中一个。

数据报总长度: 在IP数据报封装到以太网帧中进行传输时很有用.

标识(IDENTIFICATION):16位每个IP数据报都有一个本地唯一的标识符,它由信源机赋予IP数据报。每次自动加1.

标志(FLAGS):3位,表示该IP数据报是否允许分片以及是否最后一片。

片偏移(FRAGMENTATION OFFSET):表示本片数据在他所属原始数据报数据区的偏移量。

生存时间(time to live,TTL): 8位,

协议(PROTOCOL):8位,指明被IP数据报封装的协议:

ICMP=1,IGMP=2,TCP=6,EGP=8,UDP=17,OSPF=89.

首部校验和(HEADER CHECKSUM):16位,保证首部数据完整性。

源IP地址(SOURCE ADDRESS):32位(IPv4中),发送方源地址。

目的地址(DESTINATION ADDRESS): 32位(IPv4中),最总接收方IP地址。

IP选项(IP OPTIONS):变长字段,传输数据报时的附加功能。

详细说明

首部长度(报头长度)指的是首部占32 bit字的数目,包括任何选项。由于它是一个4比特字段,因此首部最长为60个字节。15x32/8=60字节.

IP首部始终是32 bit的整数倍.IP数据报报头的最小长度为20个字(不含填充字段和IP选项字段的IP报头是最常见的IP报头,为20个字节)

总长度字段是指整个IP数据报的长度,以字节为单位.由于该字段长16比特,

所以IP数据报最长可达65535字节(64KB).总长度字段是IP首部中必要的内容。数据长度=总长-报头长度。

标识符长16比特。标志位长度为3比特,用于分段控制:

第0位为预留位,第1位表示可否分段。当该位的值为0时,表示数据报不可分段,值为1时,表示数据报可被分段。

第2位为段是否结束位,当该位的值为0时,表示该段是原数据报的最后一段,值为1时,表示后面不有更多的分段。

当网络设备要发送的数据报长度比所在网络的最大传输单元(MTU,Max Transfer United)大,

并且标志位的第1位设置为不能分段(0)时,网络设备会向发送方返回一个因特网控制消息协议ICMP错误消息,

并丢弃该数据报。除了最后一个分段外,其余分段的第2位均设置为1。

段偏移13比特长度,用于指定分段在原始数据报中的位置,以8个字节为单位.

生存时间TTL长度为8比特,用于指定数据报允许保留在网络上的时间。

协议字段长度为8比特,用于指定数据报数据区中携带的消息是由哪种高级协议建立的。

ICMP为1,TCP为6,UDP为17。 协议号分配RFC790.

报头校验和16比特,仅用于IP报头校验和。

源IP地址及目的IP地址。

选项,填充字段用于确保将选项字段填充为最少32个比特位,以保证IP报头以32位结束。

分段:分段是将一个大的IP数据报分解成几个较小的数据报段的过程。

当IP模块需要通过一个具有较小MTU的网络传送较大的数据包时,就必须将其分段。