IP分组和分片

您所在的位置:网站首页 ip分组如何分片 IP分组和分片

IP分组和分片

2024-01-29 04:12| 来源: 网络整理| 查看: 265

本文讨论两个问题①IP数据报的首部②IP数据报的分片

TCP/IP模型分为五层,从上到下依次是应用层、传输层、网络层、数据链路层和物理层。

IP数据报是网络层的概念。

IP数据报的首部

版本号:0~3  共占4位,是IP协议的版本号,IPV4和IPV6,所以只能是0100、0110两个选项

首部长度:4~7 共占4位,共 有2的4次方,就是最多可以表示0~15个数,而IP数据报首部的固定部分都有20个字节了,所以0~15是不够用的,所以首部长度按4字节为一个单位。例如:首部长度0110=6,就是首部长度有6*4=24个字节。

服务类型Tos:8~15 共占8位,

总长度:16~31  共占16位,2的16次方=65536,也就是0~65535,IP分组的总长度,最长的IP分组是65535个字节。

生存时间TTL:63~70 共占8位,2的8次方=256,就是这个IP分组最多经过256个路由器。

协议:71~78 共占8位。该IP分组中装的是传输层哪个协议的数据包。6是TCP协议的,17是UDP协议的

首部校验和:79~94 共占16位。对首部错误的一个校验

标识、标志位、片偏移占32位,共4个字节,和IP数据报的分片有关。

 

分片

分片的原因:在网络层,因为要向下层也就是数据链路层传输,而数据链路层帧有最大传输单元(Max Transport Unit  MTU)限制,超过这个值就得降数据报分组。

比如以太网的MTU是1500B,PPP(Point to Point Prootocol)的MTU是296B,FDDI(Fiber Distributing Data Interface 光纤分布式数据接口)的MTU是4352,令牌环的MTU是4464B。

如果数据报的长度大于MTU,就可以分片了。至于允许不允许分片,需要看IP数据报首部的标志位。

 

标识(ID):32~47 共占16位,IP分组的标识(ID),IP协议利用一个计数器,每产生一个IP分组加1,作为该分组的标识。

标志位:48~50 占3位,保留位、DF、MF。DF=Don't Fragment,DF=1时,不允许分片;DF=0时,允许分片。MF=1时,非最后一片;MF=0时,最后一片或者未分片。

这两位只有三种可能。10:不允许分片;01:允许分片,不是最后一片;00:允许分片,是最后一片。不存在11.

 

片偏移:占13位,这个分片在原IP分组中的相对位置,以分片的首字节表示。IP分组总长度是占16个字节,而片偏移占143个字节,所以片偏移是以(2的16次方)除以(2的13次方)=2的3次方=8字节为单位的。

 

举个例子:假设IP数据分组的长度是L,数据链路层的MTU是M,IP数据报首部的长度是20个字节(没有可选部分),每个分片都是按数据链路层可以传输的最大长度来切片的。那么:

每个分片中封装的数据:

d={向下取整【(M-20)/8】}*8 

式子中20是首部数据长度,8:片偏移是以8字节为单位。

 

需要的总片数:

n=向上取整[(L-20)/d]   

 

 

每片的片偏移字段取值:

Vi=(d/8)*(i-1) i=1,2,3...,n

 

每片的总长度字段:

li=d+20   i=1,2,。。。,n-1

li=L-(i-1)*d  i=n

 

把IP分组的标识作为每个分片的标识。

 

等IP数据报的所有分片到达接收端时,会按照片偏移把其重新组装起来。如果丢失了一片怎么办?接收方计算机会等待一段时间,如果还接收不到这个分片,就会把IP分组的所有分片全部丢掉。

思考一下:

接收端计算机怎么样才能唯一确定一个分片?

①源IP地址

②目的IP地址

③标识(ID)

④片偏移字段

⑤协议

欢迎大家指正~

 



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3