通过IP进行通信时,需要在数据的前面加入IP首部信息。
IP首部中包含着用于IP协议进行发包控制时所必有的必要信息。
由4比特构成,表示标识IP首部的版本号。
IPv4的版本号即为4,因此在这个字段上的值也是“4”。
由4比特构成,表明IP首部的大小,单位为4字节(32比特)。
对于没有可选项的IP包,首部长度则设置为"5"。即当没有可选项时,IP首部的长度为20字节(4x5=20)。
由8比特构成,用来表明服务质量。
这个值常由应用制定,实现TOS控制极其复杂,导致TOS整个互联网几乎就没有被投入使用。
DSCP(差分服务代码点)是TOS的一部分。现在统称为DiffServ, 用来进行质量控制。
如果3-5位的值为0,0-2位则被称作类别选择代码点。这样就可以像TOS的优先度那样提供8种类型的质量控级别。
果第5位为1,表示实验或本地使用的意思。
ECN (显式拥塞通告)用来报告网络拥堵情况,由两个比特构成。
第6位的ECT用以通告上层TCP层协议是否处理ECN 。
当路由器在转发ECN为1的包的过程中,如果出现网络拥堵的情况,就将CE位设置为1
表示IP首部与数据部分合起来的总字节数。该字段长16比特。 因此IP包的最大长度为65535字节。
由16比特构成,用于分片重组。
同一个分片的标识值相同,不同分片的标识值不同。
通常,每发送一个IP包,它的值也逐渐递增。
即使ID相同,如果目标地址、源地址或协议不同的话,也会被认为是不同的分片。
由13比特构成,用来标识被分片的每一个分段相对于原始数据的位置。
第一个分片对应的值为0。
由于FO域占13位,因此最多可以表示8192个相对位置。
单位为8字节,因此最大可表示原始数据8x8192=65536字节的位置。
由8比特构成,它最初的意思是以秒为单位记录当前包在网络上应该生存的期限。
在实际中它是指可以中转多少个路由器的意思。每经过一个路由器,TTL会减少1, 直到变成0则丢弃该包。
由16比特构成,也叫IP首部校验和。
该字段只校验数据报的首部,不校验数据部分。确保IP数据报不被破坏。
校验和的计算过程:
1.首先要将该校验和的所有位置设置为0
2.以16比特为单位划分IP首部
3.并用1补数计算所有16位字的和
4.最后将所得到这个和的1补数赋给首部校验和字段。
由32比特构成,表示发送端IP地址。
由32比特构成,表示接收端IP地址。
长度可变,通常只在进行实验或诊断时使用。该字段包含如下几点信息:
1.安全级别
2.源路径
3.路径记录
4.时间戳
也称作填补物。在有可选项的情况下,首部长度可能不是32比特的整数倍。为此,通过向字段填充0, 调整为32比特的整数倍。
存入数据。将IP上层协议的首部也作为数据进行处理。
IPv6中为了减轻路由器的负担,省略了首部校验和字段,路由器不再需要计算校验和,从而也提高了包的转发效率。
分片处理所用的识别码成为可选项。
IPv6的首部及可选项都由8字节构成。
与IPv4一样,由4比特构成。IPv6其版本号为6,因此在这个字段上的值为"6" 。
相当于IPv4的TOS字段,也由8比特构成。
由20比特构成,准备用于服务质量控制(QoS)。
在进行服务质量控制时,将流标号设置为一个随机数;
然后利用一种可以设置流的协议RSVP在路由器上进行QoS设置。
流标号、源地址以及目标地址三项完全一致时,才被认为是一个流。
有效载荷是指包的数据部分。
IPv4的TL是指包括首部在内的所有长度。然而IPv6中的这个Playload Length不包括首部,只表示数据部分的长度。
由于IPv6的可选项是指连接IPv6首部的数据,因此当 有可选项时,此处包含可选项数据的所有长度就是Playload Length。
相当于IPv4中的协议字段。由8比特构成。
通常表示IP的上一层协议是TCP或UDP。
在有IPv6扩展首部的情况下,该字段表示后面第一个扩展首部的协议类型。
由8比特构成。与 IPv4中的TTL意思相同。
数据每经过一次路由器就减1, 减到0则丢弃数据。
由128比特构成。表示发送端IP地址。
由128比特构成。表示接收端IP地址。
IPv6的首部长度固定,无法将可选项加入其中。取而代之的是通过扩展首部对功能进行了有效扩展。
扩展首部通常介于IPv6首部与TCP/UDP首部中间。
IPv6的扩展首部可以是任意长度。
扩展首部当中还可以包含扩展首部协议以及下一个扩展首部字段。
IPv6首部中没有标识以及标志字段,在需要对IP数据报进行分片时,可以使用扩展首部。
当需要对IPv6的数据报进行分片时,可以设置为扩展域为44 (Fragemant Header)。
使用IPsec时,可以使用50、 51的ESP、AH。
Mobile IPv6的情况下可以采用60与135的目标地址选项与移动首部。