网络层IP数据包的分片与重组时,片偏移长度的限制问题?

作者&投稿:贰程 (若有异议请与网页底部的电邮联系)
一个IP分组,数据部分长度为8192字节,欲通过MTU=1500的局域网,如何分片?给出每个分片长度及片偏移。~

标准IP头部20字节,MTU=1500,数据长度最多1480字节,以下是分片方法。
第1个包:IP头20,数据1480,偏移量0 MF=1
第2个包,IP头20,数据1480,偏移185 MF=1
第3个包,IP头20,数据1480,偏移370 MF=1
第4个包,IP头20,数据1480,偏移555 MF=1
第5个包,IP头20,数据1480,偏移740 MF=1
第6个包,IP头20,数据792, 偏移925 MF=0
链路层具有最大传输单元MTU这个特性,它限制了数据帧的最大长度,不同的网络类型都有一个上限值。以太网的MTU是1500,可以用 netstat -i 命令查看这个值。
如果IP层有数据包要传,而且数据包的长度超过了MTU,那么IP层就要对数据包进行分片(fragmentation)操作,使每一片的长度都小于或等于MTU。
假设要传输一个UDP数据包,以太网的MTU为1500字节,一般IP首部为20字节,UDP首部为8字节,数据的净荷(payload)部分预留是1500-20-8=1472字节。如果数据部分大于1472字节,就会出现分片现象。

扩展资料:
分片过程
对于发送端发送的每份IP数据报来说,其标识字段都包含一个值。该值在数据报分片时被复制到每个片中。标志字段用其中一个比特来表示“更多的片”。
除了最后一片外,其他每个组成数据报的片都要把该比特置1。片偏移字段指的是该片偏移原始数据报开始处的位置。另外,当数据报被分片后,每个片的总长度值要改为该片的长度值。
最后,标志字段中有一个比特称作“不分片”位。如果将这一比特置1,IP将不对数据报进行分片。相反把数据报丢弃并发送一个ICMP差错报文给起始端。
当IP数据报被分片后,每一片都成为一个分组,具有自己的IP首部,并在选择路由时与其他分组独立。这样,当数据报的这些片到达目的端时有可能会失序,但是在IP首部中有足够的信息让接收端能正确组装这些数据报片。
参考资料:百度百科-分片

首先ip数据报首部20还剩1460,最大为500,再加上除最后一分片外,其它分片长度必须为8的整数倍,所以分为3片长度分别为496,496,468,偏移量分别为0/8,496\8,496•2/8。MF分别为1,1,0。
例如:
3片;
第一片:数据字段长度1480、片偏移是0,MF是1;
第二片:数据字段长度1480、片偏移是185,MF是1;
第三片:数据字段长度1020、片偏移是370和MF是0。

扩展资料:
首部长度:占4位,可表示的最大十进制数值是15。请注意,这个字段所表示数的单位是32位字(1个32位字长是4字节),因此,当IP的首部长度为1111时,首部长度就达到60字节。当IP分组的首部长度不是4字节的整数倍时,必须利用最后的填充字段加以填充。
因此数据部分永远在4字节的整数倍开始,这样在实现IP协议时较为方便。首部长度限制为60字节的缺点是有时可能不够用。但这样做是希望用户尽量减少开销。最常用的首部长度就是20字节(即首部长度为0101),这时不使用任何选项。
参考资料来源;百度百科-数据报

TCP/IP协议中分包与重组原理介绍

分片是分组交换的思想体现,也是IP协议解决的两个主要问题之一。在IP协议中的分片算法主要解决不同物理网络最大传输单元(MTU) 的不同造成的传输问题。但是分组在传输过程中不断地分片和重组会带来很大的工作量还会增加一些不安全的因素。我们将在这篇小论文中讨论IP分片的原因、原理、实现以及引起的安全问题。

一、什么是IP分片

IP分片是网络上传输IP报文的一种技术手段。IP协议在传输数据包时,将数据报文分为若干分片进行传输,并在目标系统中进行重组。这一过程称为分片(fragmentation)。

二、为什么要进行IP分片

每一种物理网络都会规定链路层数据帧的最大长度,称为链路层MTU(Maximum Transmission Unit).IP协议在传输数据包时,若IP数据报加上数据帧头部后长度大于MTU,则将数据报文分为若干分片进行传输,并在目标系统中进行重组。比如说,在以太网环境中可传输最大IP报文大小(MTU)为1500字节。如果要传输的数据帧大小超过1500字节,即IP数据报长度大于1472(1500-20-8=1472,普通数据报)字节,则需要分片之后进行传输。

三、IP分片原理及分析

分片和重新组装的过程对传输层是透明的,其原因是当IP数据报进行分片之后,只有当它到达目的站时,才可进行重新组装,且它是由目的端的IP层来完成的。分片之后的数据报根据需要也可以再次进行分片。

IP分片和完整IP报文差不多拥有相同的IP头,ID域对于每个分片都是一致的,这样才能在重新组装的时候识别出来自同一个IP报文的分片。在IP头里面,16位识别号唯一记录了一个IP包的ID,具有同一个ID的IP分片将会重新组装;而13位片偏移则记录了某IP片相对整个包的位置;而这两个表中间的3位标志则标志着该分片后面是否还有新的分片。这三个标志就组成了IP分片的所有信息(将在后面介绍),接受方就可以利用这些信息对IP数据进行重新组织。

1、标志字段的作用

标志字段在分片数据报中起了很大作用,在数据报分片时把它的值复制到每片中的标志字段的其中一个比特称作“不分片”位,用其中一个比特来表示“更多的片”。除了最后一片外,其他每个组成数据报的片都要把该比特置1。片偏移字段指的是该片偏移原始数据报开始处的位置。另外,当数据报被分片后,每个片的总长度值要改为该片的长度值。如果将标志字段的比特置1,则IP将不对数据报进行分片,若在某个中间路由器上需要对其分片,则仅仅把数据报丢弃并发送一个ICMP不可达差错报文给源主机。如果不是特殊需要,则不应该置1;最右比特置1表示该报文不是最后一个IP分片。故意发送部分IP分片而不是全部,则会导致目标主机总是等待分片消耗并占用系统资源。某些分片风暴攻击就是这种原理。这里以以太网为例,由于以太网传输电气方面的限制,每个以太网帧都有最小的大小64bytes最大不能超过1518bytes,抛去以太网帧的帧头(DMAC目的MAC地址48bit=6Bytes+SMAC源MAC地址48bit=6Bytes+Type域2bytes)14Bytes和帧尾CRC校验部分4Bytes,那么剩下承载上层协议的地方也就是Data域最大就只能有1500Bytes,这就是前面所说的MTU的值。这个也是网络层协议非常关心的地方,因为网络层的IP协议会根据这个值来决定是否把上层传达下来的数据进行分片。就好比一个盒子没法装下一大块面包,我们需要把面包切成片,装在多个盒子里面一样的道理。

下面是标志位在IP首部中的格式以及各个标志的意义:

Identification
R
DF
MF
Fragment Offset

R:保留未用;DF:Don’t Fragment,“不分片”位,如果将这一比特置1,IP 层将不对数据报进行分片;MF:More Fragment,“更多的片”,除了最后一片外,其它每个组成数据报的片都要把比特置1;Fragment Offset:该片偏移原始数据包开始处的位置。偏移的字节数是该值乘以8。

2、MTU原理

当两台远程PC需要通信的时候,它们的数据需要穿过很多的路由器和各种各样的网络媒介才能到达对端,网络中不同媒介的MTU各不相同,就好比一长段的水管,由不同粗细的水管组成(MTU不同)通过这段水管最大水量就要由中间最细的水管决定。

对于网络层的上层协议而言(这里以TCP/IP协议族为例)它们对“水管”粗细不在意,它们认为这个是网络层的事情。网络层IP协议会检查每个从上层协议下来的数据包的大 小,并根据本机MTU的大小决定是否作“分片”处理。分片最大的坏处就是降低了传输性能,本来一次可以搞定的事情,分成多次搞定,所以在网络层更高一层(就是传输层) 的实现中往往会对此加以注意!有些高层因为某些原因就会要求我这个面包不能切片,我要完整地面包,所以会在IP数据包包头里面加上一个标签:DF(Don‘t Fragment)。这样当这个IP数据包在一大段网络(水管里面)传输的时候,如果遇到MTU小于IP数据包的情况,转发设备就会根据要求丢弃这个数据包。然后返回一个错误信息给发送者。这样往往会造成某些通讯上的问题,不过幸运的是大部分网络链路MTU都是1500或者大于1500(仅X.25网络的576和点对点网络的296小于1500)。

对于UDP协议而言,这个协议本身是无连接的协议,对数据包的到达顺序以及是否正确到达并不关心,所以一般UDP应用对分片没有特殊要求。

对于TCP协议而言就不一样了,这个协议是面向连接的协议,对于TCP协议而言它非常在意数据包的到达顺序以及是否传输中有错误发生。所以有些TCP应用对分片有要求---不能分片(DF)。

3、MSS的原理

MSS(Maxmum Sigmentation Size)就是TCP数据包每次能够传输的最大数据分段。为了达到最佳的传输效能TCP协议在建立连接的时候通常要协商双方的MSS值,这个值TCP协议在实现的时候往往用MTU值代替(需要减去IP数据包包头的大小20字节和TCP数据段的包头20字节)所以往往MSS为1460。通讯双方会根据双方提供的MSS值的最小值确定为这次连接的最大MSS值。

当IP数据报被分片后,每一片都成为一个分组,具有自己的IP首部,并在选择路由时与其他分组独立。这样,当数据报的这些片到达目的端时有可能会失序,但是在IP首部中有足够的信息让接收端能正确组装这些数据报片。

尽管IP分片过程看起来是透明的,但有一点让人不想使用它:即使只丢失一片数据也要重传整个数据报。因为IP层本身没有超时重传的机制——由更高层来负责超时和重传(TCP有超时和重传机制,但UDP没有。一些UDP应用程序本身也执行超时和重传)。当来自TCP报文段的某一片丢失后,TCP在超时后会重发整个TCP报文段,该报文段对应于一份IP数据报。没有办法只重传数据报中的一个数据报片。事实上,如果对数据报分片的是中间路由器,而不是起始端系统,那么起始端系统就无法知道数据报是如何被分片的。就这个原因,经常需要避免分片。

四、IP分片算法的原理

分片重组是IP层一个最重要的工作,其处理的主要思想:当数据包从一个网络A进入另一个网络B时,若原网络的数据包大于另一个网络或者接口的MTU长度,则需要进行分片(若设置DF为1,则丢弃,并回送ICMP不可达差错报文)。因而在IP数据包的报头有若干标识域注明分片包的共同标识号、分片的偏移量、是否最后一片及是否允许分片。传输途中的网关利用这些标识域进可能的再行分片,目有主机把收到的分片进行重组以恢重数据。因此,分片包在经过网络监测设备、安全设备、系统管理设备时,为了获取信息、处理数据,都必须完成数据包的分片或重组。

五、IP分片的安全问题

IP分片是在网络上传输IP报文时常采用的一种技术,但是其中存在一些安全隐患。Ping of Death, teardrop等攻击可能导致某些系统在重组IP分片的过程中宕机或者重新启动。一些IP分片攻击除了用于进行拒绝服务攻击之外,还常用于躲避防火墙或者网络入侵检测系统的一种手段。部分路由器或者基于网络的入侵检测系统(NIDS),由于IP分片重组能力的欠缺,导致无法进行正常的过滤或者检测。

介绍一下Tiny fragment 攻击:

所谓Tiny fragment攻击是指通过恶意操作,发送极小的分片来绕过包过滤系统或者入侵检测系统的一种攻击手段。攻击者通过恶意操作,可将TCP报头(通常为20字节)分布在2个分片中,这样一来,目的端口号可以包含在第二个分片中。对于包过滤设备或者入侵检测系统来说,首先通过判断目的端口号来采取允许/禁止措施。但是由于通过恶意分片使目的端口号位于第二个分片中,因此包过滤设备通过判断第一个分片,决定后续的分片是否允许通过。但是这些分片在目标主机上进行重组之后将形成各种攻击。通过这种方法可以迂回一些入侵检测系统及一些安全过滤系统。目前一些智能的包过滤设备直接丢掉报头中未包含端口信息的分片

片偏移字段以“8字节”为单位,即偏移值如果是1的话,表示偏移量为8个字节!

这样算来,正好和IP包最大长度65535相符!


TCP\/IP有几层,提供什么互联网服务
网络层—是TCP\/IP协议族中非常关键的一层,主要定义了IP地址格式,从而能够使得不同应用类型的数据在Internet上通畅地传输,IP协议就是一个网络层协议。网络接口层—这是TCP\/IP软件的最低层,负责接收IP数据包并通过网络发送之,或者从网络上接收物理帧,抽出IP数据报,交给IP层。1.TCP\/UDP协议 TCP...

TCP\/IP 协议难点之一—— IP分片
(14字节以太首部,20字节IP首部,UDP8\/TCP20,因此IP包每次最大为1500==MTU。去掉协议头UDP有效数据1472字节,TCP为1460字节。还有最后的4字节CRC),但是一个IP数据报则可能会有8192字节,超过以太帧的最大限制,那么这时就需要IP分片,分批进行传输。发送方会在IP层将要发送的数据分成多个数据包分批...

数据报,数据包,分组,包,报文,帧,段的区别
字节)进行分段,生成 K 个 packet ,等于3000\/1500=2个 packet 。总而言之,一个 datagram 是 n 个 packet ,即 1 个 数据报 由 n 个 分组\/数据包 组成 When sending packets using TCP\/IP, the data portion of each IP packet is formatted as a TCP segment .

tcpip协议分几层
3、TCP\/IP协议分为4个层次,自底向上依次为网络接口层、网络层、传输层和应用层。网络接口层负责接收IP数据报,并负责把这些数据报发送到指定网络上。计算机网络技术:TCP\/IP体系结构将网络分为哪几层?TCP\/IP体系结构与OSI...计算机网络技术:TCP\/IP体系结构将网络分为应用层,表示层,会话层,传输...

tcpip协议分为几层
网络接口层(Network Interface Layer):这是TCP\/IP协议栈的最低层,负责数据帧的发送和接收,以及从物理层接收数据帧并将数据帧传递到网络层,或者从网络层接收IP数据包并将其封装成帧发送到物理网络上。这一层直接处理与各种网络媒介的物理连接,如以太网、Wi-Fi等。网络层(Internet Layer):网...

计算机网络协议——TCP\/IP协议总结
Internet委员会定义了5种IP地址类型以适合不同容量的网络,即A类~E类。其中A、B、C 3类由InternetNIC在全球范围内统一分配,D、E类为特殊地址。IP地址分为五大类:A类、B类、C类、D类和E类,如下图所示:IP路由选择 当一个IP数据包准备好了的时候,IP数据包(或者说是路由器)是如何将数据包...

tcp\/ ip协议族是怎样一个体系结构?
1、数据链路层 数据链路层实现了网卡接口的网络驱动程序,以处理数据在物理媒介(比如以太网、令牌环等)上的传输。数据链路层两个常用的协议是ARP协议和RARP协议。它们实现了IP地址和机器物理地址之间的相互转换。2、网络层 网络层实现数据包的选路和转发。WAN通常使用众多分级的路由器来连接分散的主机或...

IP协议及IP数据包详解
(2)传递服务:① 不可靠(IP协议只是尽自己最大努力去传输数据包),可靠性由上层协议提供(TCP协议);② 无连接;(事先不建立会话);(3)数据包的分片和重组。(二)IP数据包详解:(1)0100 = Version : 4(表示使用的 IPv4协议),对等层之间要使用同一种IP协议(IPv4协议);(2)0101...

ip数据报首部里的固定部分是20字节为什么首部长度最大能达到60字节,不...
首部的长度指包括固定部分和可变部分,所以他的字节最大可以达到60字节。IP数据包包头分为两部分:A、固定部分(20字节),本号,报头长度,服务类型,数据报总长度,标识,权标志,片偏移,生存时间,协议和头部校验和,源,目的IP地址。B、选项部分,包头长度为这两部分之和,不超过60字节。

tcp\/ip协议分为四层分别是
tcpip协议分为四层分别是如下:应用层、传输层、网络层和数据链路层。扩展知识 TCPIP(TransmissionControlProtocolInternetProtocol)是一组通信协议,被广泛用于互联网和局域网中。它是一个分层协议栈,包含多个层级,每个层级都有特定的功能。除了基本的TCP、IP协议外,还有一些相关的扩展知识,涉及到网络...

奇台县19859756450: 网络层IP数据包的分片与重组时,片偏移长度的限制问题?我们知道片偏移是13bit,表示偏移的字节数,那么如果该包大于2的13次方个字节,片偏移岂不是... -
祝劳盐酸:[答案] 片偏移字段以“8字节”为单位,即偏移值如果是1的话,表示偏移量为8个字节! 这样算来,正好和IP包最大长度65535相符!

奇台县19859756450: 分片后的IP数据报在重组时是怎样确定顺序的?具体到哪个协议? -
祝劳盐酸: 重组由目的端IP层来完成. 有标识字段来确定分片属于哪一个报文,有分片中的片偏移确定分片的顺序. 除最后一个分片外,分片的标志字段有一个比特标识“更多的片”.

奇台县19859756450: IP数据报如何分段到达目的之后如何重组 -
祝劳盐酸: ip数据包包头内部有一个16位的标识来区分每一个ip数据包,同时3位的标志位中有一位来表示“更多分片”,也就是说这一位置位的时候表示该ip包被分片了并且当前这一片还不是最后一片,如果是最后一片的话就是置0的.还有一个13位的偏...

奇台县19859756450: 在IP数据报首部中,主要用于数据报分片和重组的部分是? -
祝劳盐酸: 标识(Identification)字段:源站赋予数据报的标识,对于同一源站,标识符必须唯一; 标志(Flags)字段:表示是否分片,0-片未完,1-不分片,2-未用; 片偏移(Fragment offset)字段:指出本片在初始数据区中的偏移量,以8byte为单位.

奇台县19859756450: 为什么有时需要对IP数据报进行分片?如何分片? -
祝劳盐酸: 任何时候IP层接收到一份要发送的IP数据报时,它要判断向本地哪个接口发送数据(选路),并查询该接口获得其MTU.IP把MTU与数据报长度进行比较,如果需要则进行分片.分...

奇台县19859756450: IP分组为什么需要分片处理的功能? -
祝劳盐酸: 物理网络层一般要限制每次发送数据帧的最大长度.任何时候IP层接收到一份要发送的IP数据报时,它要判断向本地哪个接口发送数据(选路),并查询该接口获得其MTU.IP把MTU与数据报长度进行比较,如果需要则进行分片.

奇台县19859756450: 分片IP数据包是什么? -
祝劳盐酸: 就是说数据包过大,超过路径的mtu值 ,所以就要进行分片,就是把它分割成更小的包

奇台县19859756450: IP报文什么时候需要分片
祝劳盐酸: 有传输层的报文段传输至网络层的IP包时,需要分片.

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网