IP协议总结

特点:

无状态 无连接 不可靠

IPv4头部结构:

4位版本号4位头部长度8 位 服 务 类型16位总长度
16位标识3位标志/ 13位片偏移
8位生存时间(TTL)8位协议16位头部校验和
32 位源端IP地址
32位目的端IP地址
选项 最多四十字节

a. 4位版本号,IPV4的版本号为4,其他IP协议的扩展协议(SIP和PIP协议)都有不同的版本号。

b. 4位头部长度,表示头部有多少个32bit(4字节),最大为15个32bit,所以IPV4协议的头部最大为60字节。

c. 8位服务类型,前3位是优先权字段,接下来4位是TOS字段,每个位分别代表最小延时、最大吞吐量、最高可靠性和最小费用。最多只能一个为1。最后一位是保留字段。

d. 16位总长度,代表该IP数据包的总大小,单位是字节,所以以此可以得到IP数据包的大小最大为2的16次方 – 1,65535字节。

e. 16位标识,唯一标识主机所发的每一个数据报,初始值由系统生成,没发送一个就加一,同一个数据报的不同分片具有相同的标识。

f. 3位标志,第一位保留,第二位(DF)表示禁止分片,如果设置了该标志位,数据报就不会分片,如果长度超过了MTU,那么IP模块就会丢弃该数据报,然后返回一个ICMP擦错报文。第三位表示更多分片,除了IP分片的最后一个,其他分片的该标志位都置为1。

g. 13位片偏移,是指分片相对于该数据报开始位置的位移。实际上的值都是该值向左移三位之后的值,因为除了最后一个分片,每一个分片数据部分的大小都保证是8的倍数。

h. 8位生存时间(TTL),初始值由源端设置,一般为64,每经过一个路由就会减一,减为0时就会丢弃该数据报并且返回一个ICMP差错报文。TTL保证了数据报不会陷入路由循环。

i. 8位协议,用来区分上层协议。/etc/protocols中定义了所有上层协议对应的protocol字段的值。其中ICMP是1,TCP是6,UDP是7.

g. 16位头部校验和由发送端填充,接收端进行CRC算法以检验IP头部数据的完整性。

h. 32位源端IP地址和32位目的端IP地址用来标识数据报的发送和接受端。

k.可变长的可选信息,最长40个字节。选项内容包括:

(1) 记录路由,告诉数据报途径的所有路由器都将自己的IP地址填入到IP头部的选项部分,这样我们可以跟踪数据报的传递路径。

(2) 时间戳,告诉每个路由器都将数据报被转发的时间(或者时间和IP地址对)填入选项部分,我们可以跟踪数据传递的时间。

(3) 松散源路由选择,指定一个路由器IP地址列表,数据发送过程必须经过这些路由。

(4) 严格源路由选择,数据报只能经过被指定得路由器。

IPv6固定头部结构

4位版本号8位通信类型20位流标签
16位净荷长度8位下一个包头8位跳数限制
128位源端IP地址
128位目的端IP地址

a.
4位版本号,IPv6的版本号是6。

b. 8位通信类型,和IPv4中的8位服务类型类似,表示数据通信类型和优先权,TOS字段。

c. 20位流标签,是IPv6新增加的字段,用于对连接的服务质量有特殊要求的通信,比如音频、视频等实时数据传输。

d. 16位净荷长度,表示IPv6的扩展头部和数据长度之和,不包括固定头部长度。

e. 8位下一个包头,指出紧跟固定包头后的包头类型,如扩展包头或者上层协议头。类似于IPv4的8位协议字段,且相同取值有相同意义。

f. 8位跳数限制,和IPv4的TTL含义相同。

g. 128位源端IP地址和128位目的端地址,和IPv4的32位IP地址相同,只不过IP地址的表示方法不同。

    原文作者:you_De
    原文地址: https://segmentfault.com/a/1190000014883058
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞