网际协议 IP

2017年8月29日11:21:06 发表评论 65

IP 数据报的格式

网际协议 IP

版本:4 位,4 代表 IPv4

首部长度:4位,范围[5-15],单位4字节,即首部最短20字节,最长60字节。首部长度不是4字节整数倍时,必须利用最后的填充字段填充,因此数据部分永远在4字节的整数倍开始

区分服务:(服务类型)8位,用来获得更好的服务,一般不使用

总长度:16位,首部和数据的总长度,单位字节。因此数据报的最大长度为 2^16-1 = 65535 字节。然而数据链路层规定了数据字段最大长度(最大传输单元MTU)。所以数据报总长度不能超过MTU,以太网规定MTU是1500字节,传送过长数据报会行进分片处理。IP 协议规定,因特网所有节点,必须能接受长度576字节的数据报。如果切片,首部中“总长度”字段指分片后的每一个分片的首部长度与该分片的数据长度总和。

标识:16位,有一个计数器,每产生一个数据报,计数器加1,并将此值赋给标识字段,相同的标识字段的值使分片后的各数据报片能正确地重装成原来的数据报

标志:3位,后两位有意义。最低位为MF(More Fragment),MF=1 表示后面 "还有分片" 的数据报,MF=0 表示已是若干数据报片的最后一个。中间一位为DF(Don't Fragment),意思是“不能分片”,只有DF=0时才允许分片

片偏移:13位,相对于用户数据字段的起点,该片在原分组中的相对位置。以8字节为偏移单位,因此每个分片的长度一定是8字节(64位)的整数倍。原始数据报首部被复制为各数据报片的首部,但必须修改有关字段的值。

网际协议 IP

生存时间:8位,TTL(Time To Live)数据报在网络中的寿命,防止无法交付的数据报无限制地在网络中兜圈子。最初TTL以秒为单位,没经过一个路由器减在这个路由器消耗的时间,往往小于1秒,就减去1秒。后来把TTL字段功能改为“跳数限制”,路由器在转发数据报之前就把TTL值减1,TTL值减到0就丢弃这个数据报。所有数据报在因特网中最多经过255个路由器。TTL值等于1的数据报发不出局域网。

协议:8位,指出此数据报携带的数据是使用何种协议,以便使目的主机的IP层知道应将数据部分上交给哪个处理程序。

网际协议 IP

首部校验和:16位,只检验数据报的首部。每经过一个路由器,都重新计算一下首部校验和。为了减少计算量,所以不检验数据部分,首部的检验不采用复杂的CRC,而采用下面计算方法:

在发送方,先把IP数据报首部划分为许多16位字的序列,并把检验和字段置为零。用反码算术运算把所有16位字相加后,将得到的和的反码写入检验和字段。接收方再反码算术运算相加一次,将得到的和取反码。如果首部未发生任何变化,则此结果必为0.于是保留。否则丢弃此数据报。

网际协议 IP

源地址:32位

目的地址:32位

可选字段:最大40字节,增加IP数据报的功能,用来支持排错,测量以及安全等措施。但也增加了路由器处理数据报的开销,很多路由器不考虑IP首部可选字段。IPv6首部长度是固定的,没有可变部分。

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: