IP数据报分片
分片报文详解
分片报文详解分片报文是网络通信中用于处理大数据传输的一种技术。
当IP数据报的总长度大于链路层所能传输的最大数据长度时,需要对IP数据报进行分片。
下面将对分片报文进行详细解释:1. 分片的原因:IP数据报(IP头+DATA)被封装在链路层数据报中,因此链路层的MTU(最大传输单元)严格限制了IP数据报的长度。
在IP数据报的源与目的地路径上的各段链路可能使用不同的链路层协议,有不同的MTU。
例如,以太网的MTU为1500字节,而许多广域网的MTU不超过576字节。
当IP数据报的总长度大于链路MTU时,就需要将IP数据报中的数据分装在两个或更多个较小的IP数据报中,这些较小的数据报叫做片。
2. 分片的过程:分片由IPv4头部中的标识(Identification)、分片偏移(Fragment offset)和更多分片(More Fragments, MF)字段控制。
分片的标识(Identification)都是同样的,而且分片偏移(Fragment offset)是以8字节为单位的偏移。
先对数据进行分片,然后每一部分再加上报头。
3. 分片的组装:这就需要用到IP报头中的三个字段:16位分片标识、3位标志、13位片偏移。
其中,13位片偏移用于确定分片以后,各个部分在原始报文的哪个位置,即在原始报文中的偏移量;16位分片标识用于判断一个报文是否分片,如果一个报文不分片,不同报文之间的16位标识符是不同的;如果一个报文分片了,分片报文的16位标识符是一样的,说明这些分片报文原本属于一个完整的报文。
4. 分片的判断:根据片偏移判断是否为普通报文或分片报文的最后一部分。
如果片偏移为0,说明是普通报文,结束判断,直接向上层交付;如果片偏移不为0,说明是分片报文,需要加入到具有相同16位标识符的集合中。
然后判断所有的报文是否收全。
以上信息仅供参考,如需了解更多信息,建议咨询专业人士或查阅相关书籍文献。
深入理解IP包分片原理
深入理解IP包分片原理原理, 分片一、关键术语MTU MRU PMTU MSS包分片ip 分片和tcp分片差异1.IP分片产生的原因是网络层的MTU;TCP分段产生原因是MSS.2.IP分片由网络层完成,也在网络层进行重组;TCP分段是在传输层完成,并在传输层进行重组. //透明性3.对于以太网,MSS为1460字节,而MUT往往会大于MSS.故采用TCP协议进行数据传输,是不会造成IP分片的。
若数据过大,只会在传输层进行数据分段,到了IP层就不用分片。
而我们常提到的IP分片是由于UDP传输协议造成的,因为UDP传输协议并未限定传输数据报的大小。
为什么会有IP分片?直接原因是上层协议企图发送一段数据,其长度超过了M TU (Maxitum Transmi ssionUnit)。
什么情况,或者说什么协议会尝试发送这么长的数据?常见的有UDP和ICMP,需要特别注意的是,TCP一般不会。
为什么TCP不会造成IP分片呢?原因是TCP自身支持分段:当TCP要传输长度超过MS S(Maxitum Segment Size)的数据时,会先对数据进行分段,正常情况下,MSS小于MT U,因此,TCP一般不会造成IP分片。
而UDP和IC MP就不支持这种分段功能了,UDP和ICM P认为网络层可以传输无限长(实际上有65535的限制)的数据,当这两种协议发送数据时,它们不考虑数据长度,仅在其头部添加UDP或IC MP首部,然后直接交给网络层就万事大吉了。
接着网络层IP协议对这种“身长头短”的数据进行分片,不要指望IP能很“智能”地识别传给它的数据上层头部在哪里,载荷又在哪里,它会直接将整个的数据切成N个分片,这样做的结果是,只有第一个分片具有UDP或者ICMP首部,而其它分片则没有。
ip分片重组流程
ip分片重组流程1. 啥是IP分片呀。
你想啊,网络世界就像一个超级大的交通网络,数据就是那些在网络里跑来跑去的小汽车。
而IP数据包就是装载这些数据的“大货车”。
有时候呢,这个“大货车”太大了,没办法一下子通过网络里一些比较窄的“路”,这时候就得把这个大的IP数据包拆分成一个个小的片段,就像把大货车上的货物分装到几个小车上一样,这就是IP分片啦。
比如说,一个很大的文件要从一个地方传到另一个地方,网络条件不太允许一次性传过去,那就得分成好几块来传咯。
2. 为啥要进行IP分片呢。
这就好比你要搬家,有个超级大的沙发,电梯太小装不下,那你是不是得把沙发拆成几块,一块一块地搬上去呀?IP分片也是这个道理。
网络里有些设备或者链路对数据包的大小是有限制的,要是数据包太大,就过不去啦。
通过分片,就能让数据顺利地在网络里“旅行”,最后再把它们重新组合起来,就像把拆了的沙发在新家里再装起来一样。
这样就能保证数据完整地到达目的地咯。
3. 分片的过程是咋样的呢。
当要发送一个比较大的IP数据包的时候,发送端就会开始干活啦。
它会根据网络的情况,比如说链路的最大传输单元(MTU)大小,来决定把这个大数据包分成几个小片段。
每个小片段都有自己的“身份证”哦,里面包含了一些重要的信息,像原来大数据包的标识、这个小片段在整个数据包里的位置序号等等。
就好像把大沙发拆成几块后,给每一块都编个号,这样到时候就知道怎么组装啦。
4. 重组又是咋回事呢。
等这些小片段在网络里“跋山涉水”,终于都到达目的地啦,接收端就开始忙活重组的事儿。
它会根据小片段里的“身份证”信息,也就是那些标识和序号,把它们按照原来的顺序排好队。
就像你把拆了的沙发零件按照编号一个一个摆好,然后再把它们组装起来,这样就得到了原来完整的大数据包啦。
接收端会检查是不是所有的小片段都到齐了,如果有哪个调皮的小片段丢了,它还会想办法去处理呢,可能会请求重新发送丢失的那部分。
5. 遇到问题咋办呀。
IP数据报分片、组装和MAC帧报文结构
IP数据报分片、组装和MAC帧报文结构1 IP数据报分片、组装一、术语:a、MTU:当两台远程PC互联的时候,它们的数据需要穿过很多的路由器和各种各样的网络媒介才能到达对端,网络中不同媒介的MTU各不相同,就好比一长段的水管,由不同粗细的水管组成(MTU不同)通过这段水管最大水量就要由中间最细的水管决定。
网络层IP协议会检查每个从上层协议下来的数据包的大小,并根据本机MTU的大小决定是否作“分片”处理。
b、DF:DF(Donot Fragment)。
这是一个标志位,指明了不能进行IP数据包的分片。
当这个IP数据包的DF设定为1,在一大段网络(水管里面)传输的时候,如果遇到MTU小于IP数据包的情况,转发设备就会根据要求丢弃这个数据包。
然后返回一个错误信息给发送者。
c、MSS:MSS就是TCP数据包每次能够传输的最大数据分段。
为了达到最佳的传输效能TCP协议在建立连接的时候通常要协商双方的MSS值,这个值TCP协议在实现的时候往往用MTU值代替(需要减去IP数据包包头的大小20Bytes和TCP数据段的包头20Bytes)所以往往MSS为1460。
通讯双方会根据双方提供的MSS值得最小值确定为这次连接的最大MSS值。
二、分片:IP报文在传输过程中,有些时候“水管”会越来越窄,也就是MTU会越来越小。
IP报文也会一分再分。
每个IP分片的报头基本相同,只是片偏移不一样。
把一个数据报为了适合网络传输而分成多个数据报的过程称为分片,被分片后的各个IP数据报可能经过不同的路径到达目标主机。
一个IP数据报在传输过程中可能被分片,也可能不被分片。
如果被分片,分片后的IP数据报和原来没有分片的IP数据报结构是相同的,即也是由IP头部和IP数据区两个部分组成:分片后的IP数据报,数据区是原IP数据报数据区的一个连续部分,头部是原IP数据报头部的复制,但与原来未分片的IP数据报头部有两点主要不同:标志和片偏移:(1) 标志:在IP数据报头部有一个叫“标志”的字段,用3位二进制数表示:不分片DF(Do not Fragment)标志如果被置1,则数据报在传输过程中不能被分片,如网络连通性测试命令ping就可以用-F参数设置为在数据传输时不分片,但这样当数据不能通过MTU较小的网络时,将产生数据不可达的错误。
IP分片
1、分片ICMP ECHO请求发送与响应1.1、IP报头中的分片处理[RFC 791]:The fields which may be affected by fragmentation include:(1) options field(2) more fragments flag(3) fragment offset(4) internet header length field(5) total length field(6) header checksum如果假设各个分片都没有选项字段那么与数据报的分片与重组有关的字段是:数据报总长度、数据报标识(每个分片该字段值都一样)、分段标志、分片偏移、16位首部校验和。
数据报总长度:该字段是报头长度和数据字节的总和,以字节为单位。
最大长度为65535字节。
从IP报头开始算。
数据报标识:这个唯一的16位标识符由产生它的主机指定给数据报。
发送主机为它送出的每个数据报产生一个单独ID,但数据报在传输的过程中可能会分段,并经过不同的网络而到达目的地。
分段后的数据报都共享同一个数据报ID,这将帮助接收主机对分段进行重装。
分段标志:3位分段标志位中的第一位未用,其他两位用于控制数据报的分段方式。
如果“不能分段(DF)”位设为1,意味着数据报在选路到目的地的过程中不会分段传输。
如果数据报不分段就无法选路,试图分段的路由器将丢掉该数据报并向源主机发送错误报文。
如果“更多段(MF)”位设为1,意味着该数据报是某两个或多个分段中的一个,但不是最后一段。
如果MF位设为0,意味着后面没有其他分段或者是该数据报本来就没有分段。
接收主机把标志位和分段偏移一起使用,以重组被分段的数据报。
所以第一个包DF=0,MF=1;第二个包DF=0,MF=0分段偏移值:这个字段包含13位,它表示以8字节为单位,当前数据报相对于初始数据报的开头的位置。
换句话说,数据报的第一个分段的偏移值为0;如果第二个分段中的数据从初始数据报开头的第800字节开始,该偏移值将是100。
IP协议 (通俗易懂),IP协议的主要功能及实现原理,IP地址分类,IP数据包分片,IP数据报格式。
IP协议(通俗易懂),IP协议的主要功能及实现原理,IP地址分类,IP数据包分片,IP数据报格式。
「主页」:士别三日wyx「简介」:CSDN top100、阿里云博客专家、华为云享专家、网络安全领域优质创「专栏简介」:此文章已录入专栏《计算机网络零基础快速入门》本章重点1.IP协议的作用是什么?2.IP地址分类有哪些?3.IP数据包为什么分片?怎么分片?IP是一种「不可靠」的「端到端」的数据包「传输服务」,主要实现两个功能:数据传输和数据分片。
一、IP地址IP协议根据「IP地址」将数据传输到指定的目标主机,就像你寄快递的时候需要提供一个收货地址一样。
IP地址是全世界唯一的 32 位「二进制」数,通常用4位点分十进制来表示。
在 cmd 中执行 ipconfig 命令,查看本机的IP地址:为了便于寻址以及层次化构造网络,每个IP地址分为「网络号码」和「主机号码」两个部分,同一个物理网络上的所有主机都使用同一个网络号码。
1)IP地址分类IP地址分为A、B、C、D、E五类。
A类地址第一段是网络号码,剩下三段是主机号码;B类地址前两段是网络号码,剩下两段是主机号码;C类地址前三段是网络号码,最后一段是主机号码;类别IP范围子网掩码描述A类(1~126)1.0.0.1 ~127.255.255.254255.0.0.0共有126个网络,每个网络有1600万台主机,适合大规模的网络。
B类(128~191)128.0.0.1 ~191.255.255.254255.255.0.0共有16384个网络,每个网络有6万台主机,适合中等规模的网络。
C类(192~223)192.0.0.1 ~233.255.255.254255.255.255.0共有209万个网络,每个网络有254台主机,适合小型网络。
D类224.0.0.0 ~ 组播地址类别IP范围子网掩码描述(224~239)239.255.255.255E类(240~255)240.0.0.0 ~255.255.255.254保留地址2)私有IP地址A、B、C类地址中,分为公有IP和私有IP。
IP数据报的分片和重组
数据1(600字节) 数据2(600字节) 数据(160节) 数据2(600字节)
数据3 (200字节)
首部 首部 首部
数据1:偏移量=0,MF=1
数据2:偏移量=75(600) MF=1
数据3: 偏移量=150(1200) MF=0
00:03
问题:分片首部如何设置?
00:03
问题?
IP数据报的分片发生在哪里? 源点主机会对IP分组进行分片吗?
00:03
数据报的分片控制
数据报的封装 (以太网帧类型0800H) 数据报首部 帧头 数据报数据区 帧数据区
问题:每种网络有固定的MTU,若IP报文长度大于 MTU,怎么办?
数据分片(如何分片?)
00:03
首部长度:若无选项,和原数据报相同,否则重新计算。 ID、标志域和片偏移量:如前所述。 总长度:分片首部的长度+分片数据部分的长度。 校验和:必须重新计算。(为什么?) 选项:EOL和NOP不可复制,LSR、SSR复制到所有分片 中,记录路由和时间戳选项只能复制到第一个分片中。
00:03
00:03
MF (More Fragment):片未 完位 MF=0,是最后一片 MF=1,不是最后一片 解决了:分片的结束
如何组装?
组装时,需要重新设置首部的某些字段 (1)修改分片标志和片偏移量字段 (2)首部其它字段复制原来数据报首部的相应字段 标识符
DF MF
片偏移量
00:03
首部 首部 首部 首部
(2)如何标识同一个数据报分片的顺序?
(3)如何标识同一个数据报分片的结束?
00:03
标识
DF MF 片偏移量
ip数据报中与分片有关的3个字段。
ip数据报中与分片有关的3个字段。
IP数据报中与分片有关的三个字段是总长度(Total Length)、标识(Identification)和片偏移(Fragment Offset)。
总长度字段指示了整个IP数据报的长度,它包括IP头部和数据负载部分的总和。
这个字段是16位的,可以表示最大长度为65535字节的数据报。
当传输的数据超过了网络链路的最大传输单元(MTU),就需要进行分片来适应不同的网络链路。
数据报的总长度字段的值就是在分片过程中根据MTU大小将原始数据分割后,每个片段的长度之和。
标识字段是唯一地识别数据报的一个值,用于在接收端重新组装和识别来自同一个源IP地址的片段。
当一个数据报被分成多个片段时,每个片段的标识字段都会有相同的值。
这使得接收端能够正确地将这些片段重新组装成原始的数据报。
标识字段是一个16位的值,范围从0到65535。
片偏移字段指示了每个片段在原始数据报中的相对位置。
它的单位是8个字节,因此片偏移字段的值是以8个字节为单位的偏移量。
接收端使用片偏移字段来确定每个片段在重组时的正确顺序,以及片段的相对位置以重新组装原始数据报。
IP数据报中的这三个字段在分片过程中发挥着重要的作用。
它们确保了在不同的网络链路上传输的数据能够正确地被重新组装成原始的数据报。
这种分片机制使得不同网络链路的设备能够适应不同的MTU 大小,从而实现了跨网络的数据传输。
在实际应用中,了解这些与分片有关的字段是非常重要的。
在网络设计和配置中需要考虑数据报的总长度、标识和片偏移,以确保数据能够在网络中正确传输和重新组装。
此外,了解分片机制还可以帮助网络管理员优化网络性能和解决网络中的分包问题。
总而言之,掌握IP数据报中与分片有关的字段对于理解和优化网络传输是非常有指导意义的。
ip数据报分片的原因与方法
ip数据报分片的原因与方法原因:IP数据报分片(Fragmentation)是指将较大的IP数据报划分为多个较小的数据报,以便在传输过程中能够适应不同类型的链路。
IP数据报分片的主要原因如下:1. 最大传输单位(MTU)限制:不同类型的网络链路具有不同的MTU,即每个链路所能承载的数据报最大字节数。
当一个数据报的大小超过某个链路的MTU时,就需要进行分片处理,以确保数据报能够在该链路上传输。
2. 设备性能限制:一些计算机系统或网络设备由于硬件性能限制,处理较大数据报时会有困难。
因此,数据报分片有助于提高这些设备的处理效率。
方法:IP数据报分片的方法主要包括以下几个步骤:1. 确定数据报是否需要分片:发送方首先检查数据报的大小是否超过链路的MTU。
如果没有超过,无需分片,直接进行传输。
如果超过了链路的MTU,则需要进行分片处理。
2. 计算分片数目和分片大小:发送方需要计算将数据报分割成多少个较小的数据报,以及每个分片的大小。
分片的大小需要是8字节的整数倍,以符合IP协议的要求。
3. 设置IP数据报头部信息:在每个分片的IP数据报头部,发送方需要设置以下信息:- 标识(Identification):这是一个唯一的值,用于标识原始数据报。
所有分片具有相同的标识值,以便接收方重组时能够识别出属于同一个原始数据报的分片。
- 更多片标志(More Fragments):如果一个分片后面还有其他的分片,则需要设置这个标志。
最后一个分片的更多片标志应为0。
- 片偏移(Fragment Offset):这个值表示当前分片相对于原始数据报开头的偏移量。
片偏移的单位是8字节。
4. 分片数据报的传输:分片完成后,发送方将这些较小的数据报分别发送给接收方。
5. 数据报的重组:当接收方收到所有分片后,它会根据分片的标识和片偏移对这些分片进行重组,以恢复原始的数据报。
需要注意的是,IP数据报分片可能会导致网络效率降低,因为分片和重组过程需要额外的处理开销。
ip数据报分片的原因与方法
ip数据报分片的原因与方法
IP数据报分片是在网络传输过程中将一个大的IP数据报分割成多个小的IP数据报进行传输的过程。
这种情况通常发生在网络中MTU (最大传输单元)的限制下。
MTU是指网络中支持的最大数据包大小。
当一个IP数据报的大小超过MTU时,就需要将其分成多个小的IP数据报进行传输,这就是分片。
IP数据报分片的原因是因为物理网络传输的限制。
不同的网络设备
和链路都有自己的MTU大小,例如以太网的MTU为1500字节,而无
线网络的MTU可能会更小。
当一个IP数据报的大小超过链路的MTU 时,就会发生分片。
IP数据报分片的方法是由发送端负责将大的IP数据报分成多个分片,并在每个分片的首部中设置标志位来指示这是一个分片包,并设置分片包的片偏移和总长度等信息。
接收端在收到所有的分片包后,会根据每个分片包中的信息将它们重新组合成完整的IP数据报。
由于IP数据报分片会增加网络传输的开销,在网络设计和部署时应
尽可能避免IP数据报的分片。
一般来说,可以通过设置合适的MTU
大小、优化网络路径和使用更先进的网络设备等方法来减少IP数据
报的分片。
ip数据报分片的原因与方法
ip数据报分片的原因与方法
IP数据报分片是在网络传输过程中,将一个大的IP数据包分割成多个更小的数据包进行传输的过程。
IP数据报分片的原因是因为不同的网络和设备所能容纳的数据包大小不同,如果一个IP数据包的大小超过了某个网络或设备所能容纳的大小,那么就需要将其分割成多个小的IP数据包进行传输。
这种技术可以增加网络的灵活性和稳定性,使得大的数据包也可以被传输。
IP数据报分片的方法是通过IP协议的分片机制来实现的。
当一个IP 数据包需要分割成多个小的数据包时,发送端的IP层会将原始数据包进行分割,并为每个分割后的数据包分配一个唯一的标识符。
这些分割后的数据包会按照顺序进行传输,并在接收端的IP层重新组合成原始的数据包。
IP数据报分片虽然可以提高网络传输的可靠性和稳定性,但它也会带来一些额外的开销和延迟。
因为分割后的数据包需要在接收端重新组合,所以在传输过程中会增加额外的处理时间,这会导致网络传输的延迟增加。
同时,分割后的数据包的数量也会增加,会占用更多的网络带宽,这会导致网络传输的效率降低。
因此,在进行IP数据报分片时,需要权衡传输效率和数据包的完整性,选择合适的数据包大小和分片策略。
TCP-IP IP 数据报分片实验
实验6 IP 数据报分片实验一、实验目的使用Ping 命令在两台计算机之间发送大于MTU 的数据报,验证分片过程,加深对IP 协议的理解。
二、实验内容及要求1.IP 数据报分片实验原理图1 IP 数据报分片示例我们已经从前边的实验中看到,IP 报文要交给数据链路层封装后才能发送。
理想情况下,每个IP 报文正好能放在同一个物理帧中发送。
但在实际应用中,每种网络技术所支持的最大帧长各不相同。
例如:以太网的帧中最多可容纳 1500 字节的数据;FDDI 帧最多可容纳4470 字节的数据。
这个上限被称为物理网络的最大传输单元(MTU,MaxiumTransfer Unit)。
TCP/IP 协议在发送 IP 数据报文时,一般选择一个合适的初始长度。
当这个报文要从一个 MTU 大的子网发送到一个 MTU 小的网络时,IP 协议就把这个报文的数据部分分割成能被目的子网所容纳的较小数据分片,组成较小的报文发送。
每个较小的报文被称为一个分片(Fragment)。
每个分片都有一个 IP 报文头,分片后的数据报的 IP 报头和原始 IP 报头除分片偏移、MF 标志位和校验字段不同外,其他都一样。
图25 显示了Ethereal 捕获的IP 数据报分片的分析情况,可参考。
重组是分片的逆过程,分片只有到达目的主机时才进行重组。
当目的主机收到IP 报文时,根据其片偏移和标志MF 位判断其是否一个分片。
若MF 为0,片偏移为0,则表明它是一个完整的报文;否则,则表明它是一个分片。
当一个报文的全部分片都到达目的主机时,IP 就根据报头中的标识符和片偏移将它们重新组成一个完整的报文交给上层协议处理。
2.实验环境与说明(1)实验设备和连接与5和6 实验完全相同。
(2)实验分组每四名同学为一组,其中每两人一小组,每小组各自独立完成实验。
3.实验步骤步骤1:按照4.1 和 4.2 实验连接好设备,完成路由器和PC1、PC2 的相关配置;步骤2:在PC1、PC2 两台计算机上运行Ethereal,为了只截获和实验有关的数据报,设置Ethereal 的截获条件为对方主机的IP 地址,开始截获报文;步骤3:在PC1 上执行如下Ping 命令,向主机PC2 发送4500B 的数据报文:Ping –l 4500 –n 2 172.16.20.100步骤4:停止截获报文,分析截获的报文,回答下列问题:1)以太网的MTU 是多少?___________________________________2)对截获的报文分析,将属于同一ICMP 请求报文的分片找出来,主机PC1 向主机PC2 发送的ICMP 请求报文分成了几个分片?___________________________________3)若要让主机PC1 向主机PC2 发送的数据分为3 个分片,则Ping 命令中的报文长度应为多大?为什么?_________________________________________________________________________________________________________________________________________________________________________________________________________________________________4 )将第二个ICMP 请求报文的分片信息填入表 1:。
IP数据报的分片和组装原理是什么
IP数据报的分片和组装原理是什么当一个主机发送数据到另一个主机时,这些数据需要通过多个路由层转发。
IP在路由层的转发过程较为复杂,如何处理目的主机发送的数据报呢?首先我们需要了解数据报的格式:IP的转发和控制都是由IP数据报的头部决定4位首部长度的数值是以 4字节为单位的,最小值为 5,也就是说首部长度最小是 4x5=20字节 ,也就是不带任何选项的 IP首部 ,4位能表表示的最大值是 15,也就是说首部长度最大是 60字节8位TOS字段有 3个位用来指定IP数据报的优先级 (目前已经废弃不用 ),还有4个位表示可选包括服务类型的最小延迟、最大吞吐量、最大可靠性和最小成本,总比特数始终为0。
16位总长度是整个数据报 (包括IP首部和 IP层payload)的字节数。
每传一个 IP数据报 ,16 位的标识加1,可用于分片和重新组装数据报。
3位标志和13位切片偏移用于切片。
TTL(Time to live) 是这样用的 :源主机为数据包设定一个生存时间 ,比如 64,每过一个路由器就把该值减 1,如果减到 0就表示路由已经太长了仍然找不到目的主机的网络 ,就丢弃该包 ,因此这个生存时间的单位不是秒 ,而是跳 (hop)。
协议字段指示上层协议是 TCP、 UDP、 ICMP还是 IGMP。
然后是校验和, 只校验IP首部 ,数据的校验由更高层协议负责。
IPv4的IP地址长度为 32位。
在IP数据报中总长度是16位的字段,一次数据报的最大长度为2^16-1,虽然尽可能长的数据报能够提高传输效率,但是很少有超过 1500字节的;所以在这里只要超过1500字节,就认为此数据报该分片了。
IP数据报被分片以后,各分片分别组成一个具有IP首部的分组,并各自独立的路由,分别抵达目的主机后,目的主机的IP层会在传送给传输层之前将收到的所有分片重新组装成一个数据报。
一.IP分片1.IP分片原理:分片和重新组装的过程对于传输层是透明的,原因是IP数据报进行分片以后,只有它到达下一站时才可以进行重新组装,且它是由目的端的IP层来完成的,分片之后的数据报根据需要可以再次分片;IP分片和完整的报文差不多拥有相同的IP头,ID域对美英分片都是一致的,这样才能在进行组装的时候识别出来同一个IP数据报文分片。
ip分片的原理
IP分片的原理及分析分片是分组交换的思想体现,也是IP 协议解决的两个主要问题之一。
在IP 协议中的分片算法主要解决异种网最大传输单元(MTU) 的不同. 但是分组在传输过程中不断地分片和重组会带来很大的工作量还会增加一些不安全的因素。
1 IP分片的定义IP分片是网络上传输IP报文的一种技术手段。
IP协议在传输数据包时,将数据报文分为若干分片进行传输,并在目标系统中进行重组。
这一过程称为分片(fragmentation)。
2 IP分片的原因通常要传输的IP报文的大小超过最大传输单位MTU(Maximum Transmission Unit)时就会产生IP分片情况。
IP分片通常发生在网络环境中。
比如说,在以太网(Ethernet)环境中可传输最大IP报文大小(MTU)为1500字节。
而传输的报文大小要比1500字节(不包括以太协议的首部和尾部18个字节)大,这个时候就需要利用到分片技术,经分片后才能传输此报文。
另外,使用UDP很容易导致IP分片,而很难强迫TCP发送一个需要进行分片的报文。
3 IP分片的原理及分析分片和重新组装的过程对传输层是透明的,其原因是当IP数据报进行分片之后,只有当它到达下一站时,才可进行重新组装,且它是由目的端的IP层来完成的。
分片之后的数据报根据需要也可以再次进行分片。
IP分片和完整IP报文差不多拥有相同的IP头,ID域对于每个分片都是一致的,这样才能在重新组装的时候识别出来自同一个IP报文的分片。
在IP头里面,16位识别号唯一记录了一个IP包的ID(ipid),具有同一个ID的IP分片将会重新组装;而13位片偏移则记录了某IP片相对整个包的位置;而这两个表中间的3位标志则标志着该分片后面是否还有新的分片。
这三个域就组成了IP分片的所有信息,接受方就可以利用这些信息对IP数据进行重新组织。
3.1标志字段的作用标志字段在分片数据报中起了很大作用,在数据报分片时把它的值复制到每片中。
深入理解IP包分片原理
深入理解IP包分片原理IP包分片是指在IP协议中,当一个IP包的大小超过了网络链路所能承载的最大传输单元(MTU)时,需要将这个IP包拆分成多个较小的IP包进行传输。
本文将深入解释IP包分片的原理。
首先,IP包分片是IPv4协议中的一个重要特性,用于解决不同网络链路的MTU不一致的问题。
在IP协议中,每个IP包都有一个20字节的IP头部,其中包含了源IP地址、目的IP地址、协议类型以及其他控制标志等信息。
除了IP头部外,每个IP包还包含了封装的数据,即传输层协议(如TCP、UDP)的数据。
当一个IP包的大小超过了链路的MTU时,IP层需要进行分片处理。
MTU是链路层上能够传输的最大数据单元大小。
如果一个IP包的大小超过了MTU,则需要将其拆分成多个较小的IP包进行传输,这些被拆分的小IP包称为片段(fragment)。
IP包分片的过程如下:1.源主机将大的IP包分解成多个较小的IP片段。
每个片段都是一个完整的IP包,有自己的IP头部。
2. 在源主机的IP层,每个片段都被分配一个唯一的标识符(Identification),以便接收方能够将片段重新组装到原始IP包中。
3. 每个片段都有一个偏移量(Offset)字段,用于指示该片段在原始IP包中的相对位置。
偏移量以8个字节为单位。
4. 源主机还会设置“分片”标志(More Fragments),用于指示是否还有其他片段。
5.对于每个片段,源主机会重新计算IP头部的校验和字段。
6.在链路上传输时,每个片段被独立地处理。
片段可以采用不同的路由路径,因此可能会以不同的顺序到达目的主机。
7. 在目的主机上,IP层使用Identification来确定来自同一个原始IP包的片段。
偏移量字段被用来重新组装片段,将它们按照正确的顺序放置。
8.目的主机接收到所有片段后,会根据偏移量和片段大小重新组装原始IP包。
在重新组装时,目的主机会重新计算IP头部的校验和,并进行校验。
ICMP协议和IP数据报分片分析实验报告
计算机网络实验报告实验名称:ICMP 协议和IP 数据报分片分析姓名:张祎立学号:2011302330050 专业:信息管理与信息系统班级:信管二班指导教师:实验成绩:批阅教师签字:一、实验目的1. 理解 ICMP 协议报文类型和格式;2. 理解 ping 命令的工作原理;3. 理解 traceroute 的工作原理;4. 理解 IP 协议报文类型和格式。
二、实验内容与实验步骤1. 使用 wireshark 抓包软件分析ICMP 协议报文的类型;2. 分析 ping 命令的工作原理;3. 分析 tracert 命令的工作原理;4. 使用 wireshark 抓包软件分析IP 协议报文以及报文分片。
三、实验环境与因特网连接的计算机,操作系统为Windows,安装有Wireshark、IE 等软件。
四、实验过程与分析1. 分析 ICMP 协议步骤1:在 PC1 运行 Wireshark,开始截获报文,为了只截获和实验内容有关的报文,将Wireshark 的Captrue Filter 设置为“No Broadcast and no Multicast”;步骤2:在 PC1 以 为目标主机,在命令行窗口执行 Ping 命令,要求ping通8 次;Ping 命令为:ping –n 8将命令行窗口进行截图:步骤3:停止截获报文,分析截获的结果,回答下列问题:1)将抓包结果进行截图(要求只显示ping 的数据包):输入过滤规则ip.addr==119.75.217.562)截获的ICMP 报文有几种类型?两种。
分别是:0(回应应答)和8(回应请求)3) 分析截获的ICMP 报文,按下表要求,将各字段信息填入表中,要求填写前4 个报文的信息。
报文号源IP 目的IP 报文格式类型代码标识序列号 125 192.168.217.56 119.75.217.56 8 0 0x0200 3840|15 126 119.75.217.56 192.168.217.56 0 0 0x0200 3840|15 127 192.168.217.56 119.75.217.56 8 0 0x0200 4096|16 128 119.75.217.56 192.168.217.56 0 0 0x0200 4096|16 4)查看ping 请求信息,ICMP 的type 8是和code 是0并截图:5) 查看相应得ICMP 响应信息,ICMP 的type 0是和code 是0并截图:6) 若要只显示ICMP的echo响应数据包,显示过滤器的规则为icmp.type == 8并根据过滤规则进行抓包截图:7) 若要只显示ICMP的echo请求数据包,显示过滤器的规则为icmp.type == 0并根据过滤规则进行抓包截图:2. 分析traceroute 的工作原理步骤1:在 PC1 上运行 Wireshark 开始截获报文;步骤2:在PC1上执行Tracert命令,如:tracert ;将命令窗口进行截图;步骤3:在wireshark里设置显示过滤器为icmp;步骤4:停止截获报文,分析截获的报文,回答下列问题:1)截获了报文中哪几种 ICMP 报文?其类型码和代码各为多少?三种报文:①Time-to-live exceeded,类型11,代码0;②Request,类型8,代码0;③Reply,类型0,代码0。
IP数据包分片
IP数据包分片理解
一、以太网帧格式如下:
MAC数据包的最小值为46byte,至于这个最小值是因为以太网信道侦听需要,1500byte为规范值。
一般的电脑MTU设置值为1500,就是基于MAC最大封包的考虑。
一般的IP包的大小肯定超过1500byte,为了能在MAC 帧中传输,必须将IP包进行分片,分成适合传输的MAC帧。
可以测试发现,当IP数据包的大小超过1500byte时,且不允许分片时,电脑系统拒绝发送此报文,同时提示数据包需要分片。
使用ICMP包进行测试,因为IP头占用20byte,ICMP头占用8byte,所以ICMP包大小最大为1472byte。
测试,使用1472的ICMP报文可以通过,但是使用1473的ICMP不分片报文则不能通过。
测试1:
抓包如下,1472byte的ICMP报文可以通过不分片进行传输;
测试2:
因为ICMP报文的大小为3000byte,所以肯定报文要进行分片,抓包如下:
第一个ICMP报文,满载1472byte。
IP包中fragment flags 字段表
有后续有Ip分片。
第二个报文(第一分片)就直接通过IP分片传输,且不包含ICMP 头,此IP包承载的大小为1480byte。
第三个报文(第二分片),承载的数据包大小为48byte,分片结束。
此包的整个大小为:1472+1480+48=3000 byte。
ip分片详解及例题
ip分片详解及例题IP分片是指将IP数据报分割成更小的片段进行传输的过程。
它是为了适应不同网络的最大传输单元(MTU)而设计的。
当一个IP数据报的大小超过了网络的MTU时,路由器会将其分割成多个较小的片段进行传输,接收端再将这些片段重新组装成完整的数据报。
IP分片涉及到以下几个重要的字段:1. 标识字段(Identification),标识字段用于标识属于同一个数据报的不同分片。
在分片过程中,原始数据报的标识字段会被复制到所有的分片中,以便接收端能够正确地将它们重新组装。
2. 标志字段(Flags),标志字段包含了3个位,其中第一个位是保留位,第二个位是“不分片”位(DF),第三个位是“更多分片”位(MF)。
DF位用于指示数据报是否允许进行分片,MF位用于指示是否还有更多的分片。
3. 片偏移字段(Fragment Offset),片偏移字段指示了当前分片相对于原始数据报的起始位置。
它以8字节为单位,表示当前分片相对于原始数据报的偏移量。
IP分片的过程如下:1. 发送端将原始数据报分割成多个分片,并设置标志字段和片偏移字段。
2. 分片在传输过程中独立传输,每个分片都有自己的IP头部。
3. 接收端根据标识字段将属于同一个数据报的分片进行组装,根据片偏移字段确定它们的相对位置。
4. 当所有分片都到达接收端并按照正确的顺序组装完成后,接收端可以恢复原始的数据报。
IP分片的使用可以解决网络中不同链路的MTU不一致的问题,确保数据能够顺利传输。
然而,IP分片也会引入一些问题,例如增加了网络传输的复杂性和延迟,并且在某些情况下可能会导致分片丢失或重组失败。
以下是一个IP分片的例题:假设有一个IP数据报的总长度为1500字节,MTU为500字节。
请问发送端需要进行多少次分片,并给出每个分片的标志字段、片偏移字段和长度。
解答:根据题目,总长度为1500字节,MTU为500字节,因此需要进行3次分片。
第一次分片:标志字段,保留位(0)、不分片位(0)、更多分片位(1)。
TCP分段与IP分片
TCP分段与IP分片1、首先根据Ethernet II类型以太网帧格式可以得知,Ethernet II类型以太网帧的最小长度为64字节,最大长度为1518字节。
(另外还有7字节前导同步吗+1字节帧开始定界符是所有类型的以太网帧格式必要的)以太网帧格式有四种类型,Ethernet II类型以太网帧格式是我通过WIRESHARK抓包后发现目前网络使用的帧格式类型。
Ethernet IIEthernet II帧格式一开始我有个问题就是,根据TCP/IP的传输流可以知道,HTTP响应报文是装到TCP报文的数据区,TCP报文又是装到IP报文的数据区,而最后IP报文是装到以太网帧的数据区中。
为什么以太网帧的数据区最大长度为1500字节,而HTTP报文最终是放在以太网帧的数据区中,却没有限制HTTP报文的大小?2、在WIRESHRAK抓包的时候会发现很多长度为1514的TCP报文,但是这个跟以太网帧的数据区最大长度为1518字节有什么关联吗?而且这个TCP长度为什么是1460而不是1500 ?image.png以太网封装IP数据包的最大长度是1500字节,也就是说以太网最大帧长应该是以太网首部加上1500,再加上7字节的前导同步码和1字节的帧开始定界符,具体就是:7字节前导同步吗+1字节帧开始定界符+6字节的目的MAC+6字节的源MAC+2字节的帧类型+1500+4字节的。
按照上述,最大帧应该是1526字节,但是实际上我们抓包得到的最大帧是1514字节,为什么不是1526字节呢?原因是当数据帧到达网卡时,在物理层上网卡要先去掉前导同步码和帧开始定界符,然后对帧进行CRC检验,如果帧校验和错,就丢弃此帧。
如果校验和正确,就判断帧的目的硬件地址是否符合自己的接收条件(目的地址是自己的物理硬件地址、可接收的多播硬件地址等),如果符合,就将帧交“设备驱动程序”做进一步处理。
这时我们的抓包软件才能抓到数据,因此,抓包软件抓到的是去掉前导同步码、帧开始分界符、之外的数据,其最大值是6+6+2+1500=1514、再说一下TCP报文内部的结构。
计算机网络原理IP数据报的分片与组装
计算机网络原理IP数据报的分片与组装IP数据报的分片与组装是指当一个IP数据报的大小超过了网络传输的最大限制时,需要将其分割成若干个较小的数据报进行传输,并在目的主机上再将这些分片数据报重新组装成原始数据报。
这个过程是由IP协议中的数据报分片与组装机制来完成的。
数据报分片的原因通常有两种:一是原始数据报的长度超过了MTU (Maximum Transmission Unit)限制,即网络传输介质一次最大能够传输的数据量;二是数据报的路由经过了一些网络设备,该设备只支持较小的数据包大小。
在进行数据报分片时,IP协议会根据MTU的限制将原始数据报进行分割,每个新的分片数据报都有一个新的IP头部,同时原始数据报的标识字段会被拆分为标识字段和片偏移字段,以便在后续的组装过程中正确还原原始数据报。
此外,每个分片数据报还会设置MF(More Fragments)位,用于指示是否还有后续的分片数据。
在传输过程中,分片数据报会通过网络独立地传输到目的主机。
由于网络是不可靠的,分片数据报可能会出现丢失、重复、乱序等问题。
目的主机在接收到这些分片数据报后,会根据IP头部中的标识字段进行识别,并根据片偏移字段将这些分片数据报进行正确的组装。
如果一些分片数据报丢失,目的主机会在一定时间内等待该分片的到达,如果超时还未收到,则丢弃其他分片,不再进行组装。
组装过程中,目的主机会根据每个分片数据报的片偏移字段确定其在原始数据报中的位置,并按照片偏移进行排序和组装。
当所有分片数据报都到达目的主机后,组装过程完成,原始数据报被完整还原。
需要注意的是,分片和组装是由IP层完成的,上层的传输层、应用层并不知道分片和组装的过程。
对于应用程序来说,数据报的分片和组装是透明的,应用层的数据传输和接收都是基于原始数据报进行的。
总的来说,IP数据报的分片与组装机制保证了在网络传输过程中大于MTU的数据能够被正确分割和组装,从而实现了对较大数据报的传输。