简说IPv6
上QQ阅读APP看书,第一时间看更新

1.2.3 IPv4报头结构

IP报文是在网络层传输的数据单元,也叫IP数据报版本。IPv4报头结构如图1-12所示。不带选项字段的IP头为20B,和IPv6的头结构相比要复杂一些,包含较多的字段。

图1-12 IPv4报头结构

首部长度:IP报头的长度,是固定部分的长度(20B)和可变部分的长度之和,共占4位。最大为1111,即十进制的15,代表IP报头的最大长度可以为15个32b(4B),也就是最长可为15×4=60B,除去固定部分的长度20B,可变部分的长度最大为40B。

区分服务:Type of Service。

总长度:IP报文的总长度。报头的长度和数据部分的长度之和。

标识:唯一地标识主机发送的每一份数据报。通常每发送一个报文,它的值加1。当IP报文长度超过传输网络的MTU(最大传输单元)时必须分片,这个标识字段的值被复制到所有数据分片的标识字段中,使得这些分片在达到最终目的地时可以依照标识字段的内容重新组成原先的数据。

标志:R、DF、MF三位。目前只有后两位有效。DF位:为1表示不分片;为0表示分片。MF位:为1表示“更多的片”;为0表示这是最后一片。

片偏移:本分片在原先数据报文中相对首位的偏移位(需要再乘以8)。

生存时间:IP报文所允许通过路由器的最大数量。每经过一个路由器,TTL减1,当为0时,路由器将该数据报丢弃。TTL字段是由发送端初始设置一个8 b长的字段,推荐的初始值由分配数字RFC指定,当前值为64。发送ICMP回显应答时经常把TTL设为最大值255。

协议:指出IP报文携带的数据使用的是哪种协议,以便目的主机的IP层能知道要将数据报上交到哪个进程(不同的协议有专门不同的进程处理)。和端口号类似,此处采用协议号,TCP的协议号为6,UDP的协议号为17,ICMP的协议号为1,IGMP的协议号为2。

首部检验和:计算IP头部的校验和,检查IP报头的完整性。

源地址:标识IP数据报的源端地址。

目的地址:标识IP数据报的目的地址。

限于篇幅,这里不能展开对每个字段进行详细讲解,需要了解这部分内容的读者可以参考专门讲解IPv4的书籍。