IP分片_计算与MTU的_关系

合集下载

关于 MTU

关于 MTU

关于MTU详细解释因特网协议允许IP分片,这样就可以将数据报分成足够小的片段以通过那些最大传输单元小于该数据报原始大小的链路了。

这一分片过程发生在IP层(OSI模型的第三层,即网络层),它使用的是将分组发送到链路上的网络接口的最大传输单元的值。

原始分组的分片都被加上了标记,这样目的主机的IP层就能将分组重组成原始的数据报了。

在因特网协议中,一条因特网传输路径的“路径最大传输单元”被定义为从源地址到目的地址所经过“路径”上的所有IP跳的最大传输单元的最小值。

或者从另外一个角度来看,就是无需进一步分片就能穿过这条“路径”的最大传输单元的最大值。

RFC 1191描述了“路径最大传输单元发现方法”,这是一种确定两个IP主机之间路径最大传输单元的技术,其目的是为了避免IP分片。

在这项技术中,源地址将数据报的DF(Don't Fragment,不要分片)位置位,再逐渐增大发送的数据报的大小——路径上任何需要将分组进行分片的设备都会将这种数据报丢弃并返回一个“数据报过大”的ICMP响应到源地址——这样,源主机就“学习”到了不用进行分片就能通过这条路径的最大的最大传输单元了。

不幸的是,越来越多的网络封杀了ICMP的传输(譬如说为了防范DDOS攻击)——这使得路径最大传输单元发现方法不能正常工作,其常见表现就是一个连接在低数据流量的情况下可以正常工作,但一旦有大量数据同时发送,就会立即挂起(例如在使用IRC的时候,客户会发现在发送了一个禁止IP欺骗的ping之后就得不到任何响应了,这是因为该连接被大量的欢迎消息堵塞了)。

而且,在一个使用因特网协议的网络中,从源地址到目的地址的“路径”常常会为了响应各种各样的事件(负载均衡、拥塞、断电等等)而被动态地修改——这可能导致路径最大传输单元在传输过程中发生改变——有时甚至是反复的改变。

其结果是,在主机寻找新的可以安全工作的最大传输单元的同时,更多的分组被丢失掉了。

IP分片_计算与MTU的_关系

IP分片_计算与MTU的_关系

两台PC之间有三段链路,MTU分别为1500字节、1300字节、900字节,源PC发送的1500字节IP包,会被分片两次,额外增加2 个IP头和2个帧头帧尾。

IP分片相关数据:标识,标志,片偏移。

1、标识(Identificaiton):16bit,是发送者赋予数据报的标识符,接收者利用这个信息和源地址判断收到的分组属于哪个数据报,以便进行重组。

因此,在分片时,该域必须不加修改该2、标志(Flags):3bit,只有低两位有效。

第一位bit(MF[more flag])为0时表示该分片是最后一片,如果该位是1表示后面还有分片。

第二位bit(DF[Don’t Flag])为0时表示可以对数据报进行分片,如果该位是1表示数据报不能分片。

当该位设置为1而帧长度不匹配又必须分片时,设备就会将数据报丢弃并返回错误信息。

片偏移:13位的字段表示这个分片在整个数据报中的相对位置。

是在原始数据报中的数据偏移量,以8字节为度量单位。

这样做是因为分片偏移字段只有13bit长,用1bit表示1B的长度,13bit最多能标示8191B(2^13),总长度:包括IP 报头和数据,16bit,单位byte。

IP包可以是总长65535字节(2^16[0~65535])。

因此按1bit表示8字节,以8字节为单位可以用13位来表示更多的字节。

规定:把数据报进行分片的主机或路由器必须选择每个分片的长度,使得这个长度可以被8整除。

用片偏移表示片段的开始位置,除最后一个分片外,其他分片的长度(数据载荷部分,不包括IP头)应能被8整除。

例子:某数据报的总长度为3820B(使用固定首部),需要分片为长度不超过1420B 的数据报片(标识:250382),应该怎么分?IP数据报首部与分片有关的字段中的数值。

[协议分析] IP分片(碎片)重组简单概念

[协议分析] IP分片(碎片)重组简单概念

[协议分析] IP分片(碎片)重组简单概念链路层具有最大传输单元MTU这个特性,它限制了数据帧的最大长度,不同的网络类型都有一个上限值。

以太网的MTU是1500,可以用netstat -i 命令查看这个值。

如果IP层有数据包要传,而且数据包的长度超过了MTU,那么IP层就要对数据包进行分片(fragmentation)操作,使每一片的长度都小于或等于MTU。

我们假设要传输一个UDP数据包,以太网的MTU为1500字节,一般IP首部为20字节,UDP首部为8字节,数据的净荷(payload)部分预留是1500-20-8=1472字节。

如果数据部分大于1472字节,就会出现分片现象。

当提交给数据链路层进行传送时,一个IP分片或一个很小的无需分片的IP数据报称为分组。

数据链路层在分组前面加上它自己的首部,并发送得到的帧。

IP首部(5-8字节)包含了分片和重组所需的信息:+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ -+-+-+-+| Identification |R|DF|MF| Fragment Offset |+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+|||| Identification:发送端发送的IP数据包标识字段都是一个唯一值,该值在分片时被复制到每个片中。

R:保留未用。

DF:Don't Fragment,“不分片”位,如果将这一比特置1 ,IP层将不对数据报进行分片。

MF:More Fragment,“更多的片”,除了最后一片外,其他每个组成数据报的片都要把该比特置1。

Fragment Offset:该片偏移原始数据包开始处的位置。

偏移的字节数是该值乘以8。

两个Flags和Fragment Offset结合使用,进行分片时,DF比特设置为0,表示可以进行分片,这时如果MF的值为1,则表示当前IP报文是一个IP包的其中一段分片,并且不是最后一个分片,这时结合Fragment Offset域继续判断;如果MF为1而Fragment Offset = 0,表示该IP报文为第一个分片,而且后续有分片;如果MF为1而Fragment Offset不是0,表示该IP报文为中间的一个分片;如果MF为0而Fragment Offset不是0,表示该报文是最后一个分片。

MTU参数对运营商网络的影响及配置建议

MTU参数对运营商网络的影响及配置建议

MTU参数对运营商网络的影响及配置建议MTU概念简介最大传输单元(Maximum Transmission Unit,MTU)是指一种通信协议承载上层数据报文的最大数据报大小(以字节为单位)。

最大传输单元这个参数通常与通信物理接口有关(以太接口、串口、ATM、E1/T1等)。

通常来说是指在IP层上能通过的最大报文长度。

IP协议允许IP分片,这样就可以将数据报分成足够小的片段以通过那些最大传输单元小于该数据报原始大小的链路了。

分片技术会降低通信效率,因此很多应用通过将IP报文头的DF“Don’t Fragment”标记位置位,来禁止对报文分片。

如常见的WEB应用。

此时就需要有一种机制来发现整个传输路径的所有接口的最小MTU值。

在IP协议中,一条传输路径的“路径的MTU”被定义为从源地址到目的地址所经过“路径”上的所有IP接口的MTU的最小值。

RFC 1191描述了“路径最大传输单元发现方法”。

在这项技术中,源地址将数据报文的DF“Don't Fragment”标记位置位,路径上任何需要将报文进行分片的设备接口都会将这种数据报丢弃并返回一个“数据报过大”的ICMP响应到源地址,并在这个响应中告知了该接口的MTU值。

这样,源主机就“学习”到了不用进行分片就能通过这条路径的最大传输单元了。

但在现实网络中,有很多种原因使得路径最大传输单元发现方法不能正常工作,常见的环境有:网络中存在NAT设备,导致路径上需要将报文分片的设备无法通知数据源;网络中安全设备基于状态的访问控制,或对ICMP报文抑制;网络中存在隧道,MPLS-VPN等技术,报文在传输过程中增加了额外的封装,超过了接口的MTU。

下面我们来看一看一些MTU带来的问题。

问题1:通过PPPoE over L2TP隧道访问总部WEB服务器部分网页打不开参考如下组网图:分部采用R1路由器和总部R2路由器租用运营商提供的Internet访问链路,通过L2TP建立隧道,分部需要访问总部服务器的客户端通过PPPoE连到R1,并通过L2TP隧道从R2处获得地址。

深入理解IP包分片原理

深入理解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分片?直接原因是上层协议企图发送一段数据,其长度超过了MTU (Maxitum Transmission Unit)。

什么情况,或者说什么协议会尝试发送这么长的数据?常见的有UDP和ICMP,需要特别注意的是,TCP一般不会。

为什么TCP不会造成IP分片呢?原因是TCP自身支持分段:当TCP要传输长度超过MSS(Maxitum Segment Size)的数据时,会先对数据进行分段,正常情况下,MSS小于MTU,因此,TCP一般不会造成IP分片。

而UDP和ICMP就不支持这种分段功能了,UDP和ICMP认为网络层可以传输无限长(实际上有65535的限制)的数据,当这两种协议发送数据时,它们不考虑数据长度,仅在其头部添加UDP或ICMP首部,然后直接交给网络层就万事大吉了。

接着网络层IP协议对这种“身长头短”的数据进行分片,不要指望IP能很“智能”地识别传给它的数据上层头部在哪里,载荷又在哪里,它会直接将整个的数据切成N个分片,这样做的结果是,只有第一个分片具有UDP或者ICMP首部,而其它分片则没有。

于是又更进一步理解TCP存在的必要性了!二、 MTU MRU简介我们都知道,不同类型的网络,其MTU(最大传输单元)各不相同,如以太网中,最大的传输帧为1518字节,FDDI为4500字节,令牌环帧在4500字节到17800字节之间,而IP协议的一个重要功能,就是能够对传输的数据大于硬件接口的MTU时,对其进行分段传输。

MTU概念深入讲解

MTU概念深入讲解

MTU 概念详解1. 概述在IP 数据在网络上传输时,会涉及到MTU 这个概念。

MTU ,即最大传输单元(Maximum Transport Unit ),这是一个数据链路层的概念,指数据链路层对数据帧长度的限制。

但是,MTU 实际上限制的并非数据链路层数据帧的长度,而是数据链路层帧的载荷(Payload )部分的长度。

以最常见的以太网为例,其帧格式如图 1所示,MTU 限定的是数据部分的长度,根据RFC894(附后),对于以太网而言,MTU 为1500 bytes ,也即“数据(载荷)”部分的最大长度为1500 bytes 。

7 bytes 1 byte 6 bytes 6 bytes 2 bytes 46~1500 bytes 4 bytes图 1 数据链路帧格式2. MTU 详解由于IP 数据报在由IP 层交由数据链路层传输时,要将包括IP 报头和IP 数据的内容作为数据链路层的载荷封装在数据链路帧中。

因此,MTU 实际上是限制了IP 层中IP 数据报的总长度,当IP 数据报的总长度超过MTU 时,即需要分片,若IP 数据报头中设置了“不可分片”,则该报文将被丢弃,并产生ICMP 差错报告。

(a) 原始IP数据报分片1(片偏移0)分片2(片偏移1500)(b) 在MTU 为1500情况下的分片图 2 IP 数据报分片演示图 2演示了一个长度为2000的IP 数据报在经过以太网传输时的分片情况,由于MTU 限制为1500 bytes ,在以太网中传输时将被拆分为两个分片,每个分片包含首部的长度不超过1500 bytes 。

3. 抓包分析在局域网中进行抓包,采用如下命令:C:\> ping -l 2000 10.137.135.191由于指定的数据长度超过了以太网MTU的限制,在传输中会发生分片。

对第一个分片的抓包结果如图3所示。

通过IP协议部分可见,该IP数据报为一个分片,且不为第一分片(More Fragments位被设置),首部长度20 bytes,总长1500 bytes。

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数据包长度问题总结(MTUMSS)

IP数据包长度问题总结(MTUMSS)这篇文章总结的不错,转自:/to_wait/blog/item/3e855931a5a51717eac4a f22.html首先要看TCP/IP协议,涉及到四层:链路层,网络层,传输层,应用层。

其中以太网(Ethernet)的数据帧在链路层IP包在网络层TCP或UDP包在传输层TCP或UDP中的数据(Data)在应用层它们的关系是数据帧{IP包{TCP或UDP包{Data}}}---------------------------------------------------------------------------------在应用程序中我们用到的Data的长度最大是多少,直接取决于底层的限制。

我们从下到上分析一下:1.在链路层,由以太网的物理特性决定了数据帧的长度为(46+18)-(1500+18),其中的18是数据帧的头和尾,也就是说数据帧的内容最大为1500(不包括帧头和帧尾),即MTU(Maximum Transmission Unit)为1500;2.在网络层,因为IP包的首部要占用20字节,所以这的MTU为1500-20=1480;3.在传输层,对于UDP包的首部要占用8字节,所以这的MTU 为1480-8=1472;所以,在应用层,你的Data最大长度为1472。

(当我们的UDP 包中的数据多于MTU(1472)时,发送方的IP层需要分片fragmentation进行传输,而在接收方IP层则需要进行数据报重组,由于UDP是不可靠的传输协议,如果分片丢失导致重组失败,将导致UDP数据包被丢弃)。

从上面的分析来看,在普通的局域网环境下,UDP的数据最大为1472字节最好(避免分片重组)。

但在网络编程中,Internet中的路由器可能有设置成不同的值(小于默认值),Internet上的标准MTU值为576,所以Internet 的UDP编程时数据长度最好在576-20-8=548字节以内。

浅析二层MTU IP MTU MPLS MTU与IP报文分片和TCP MSS计算关系

浅析二层MTU/IP MTU/MPLS MTU与IP报文分片和TCP MSS 计算关系二层MTU、IP MTU、MPLS MTU以及TCP 三次握手中的MSS,它们的作用简单地说就是控制所能够传输报文的大小,超出最大长度的报文要么被分片要么被丢弃。

而IP报文的分片存在以下缺点:1、IP 报文的分片和重组操作是由软件基于CPU来实现的,这就会占用和消耗设备的CPU资源。

2、每一个分片报文都需要单独的二三层等协议报头和尾部,如果是VPN报文的分片,相关VPN协议头和尾部占用的字节数会更大,这就导致分片报文的传输会占中更多的链路带宽资源。

3、每一个分片报文的在网络上的传输,对每台网络设备来说都是一个独立的路由转发和交换过程,这就会增加网络设备资源消耗。

通过以上几点可以看出,IP报文的分片会降低网络传输效率,因此应该适当的调整和配置各MTU以及MSS尽量避免IP报文分片。

二层MTU/IP MTU/MPLS MTU/MSS,单独拿出其中一项大家可能已经很了解熟知,但如果他们同时配置在一个接口上,对IP报文的分片和TCP的MSS计算来说,他们之间的关系似乎又说不清理还乱。

本文档只是浅析二层MTU/IP MTU/MPLS MTU与IP报文分片和TCP MSS计算之间的关系。

由于各厂商在实现上可能存在差异,以及受实验环境所限,本文以下内容对于其他厂商的设备和思科其他型号的设备仅供参考。

本文档若存在错误的地方,请指正!若有不足的地方,请补充。

一、MSS1、三层接口(非MPLS环境)发起的TCP连接的MSS=IP MTU-40bytes (ip header+tcp header)。

因为三层接口MSS默认为536bytes(Cisco IOS测试的值),当IP MTU-40>536时,所以此时对MSS大小(536bytes)没有影响;若当IP MTU-40<536时,MSS=IP MTU-40bytes(ip header+tcp header)。

深入理解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头部的校验和,并进行校验。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

两台PC之间有三段链路,MTU分别为1500字节、1300字节、900字节,源PC发送的1500字节IP包,会被分片两次,额外增加2 个IP头和2个帧头帧尾。

IP分片相关数据:标识,标志,片偏移。

1、标识(Identificaiton):16bit,是发送者赋予数据报的标识符,接收者利用这个信息和源地址判断收到的分组属于哪个数据报,以便进行重组。

因此,在分片时,该域必须不加修改该
2、标志(Flags):3bit,只有低两位有效。

第一位bit(MF[more flag])为0时表示该分片是最后一片,如果该位是1表示后面还有分片。

第二位bit(DF[Don’t Flag])为0时表示可以对数据报进行分片,如果该位是1表示数据报不能分片。

当该位设置为1而帧长度不匹配又必须分片时,设备就会将数据报丢弃并返回错误信息。

片偏移:13位的字段表示这个分片在整个数据报中的相对位置。

是在原始数据报中的数据偏移量,以8字节为度量单位。

这样做是因为分片偏移字段只有13
bit长,用1bit表示1B的长度,13bit最多能标示8191B(2^13),总长度:包括IP 报头和数据,16bit,单位byte。

IP包可以是总长65535字节(2^16[0~65535])。

因此按1bit表示8字节,以8字节为单位可以用13位来表示更多的字节。

规定:把数据报进行分片的主机或路由器必须选择每个分片的长度,使得这个长度可以被8整除。

用片偏移表示片段的开始位置,除最后一个分片外,其他分片的长度(数据载荷部分,不包括IP头)应能被8整除。

例子:
某数据报的总长度为3820B(使用固定首部),需要分片为长度不超过1420B 的数据报片(标识:250382),应该怎么分?
IP数据报首部与分片有关的字段中的数值。

相关文档
最新文档