(完整版)IP分片_计算与MTU的_关系
深入理解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数据报分片、组装和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较小的网络时,将产生数据不可达的错误。
ping大包与MTU的关系

ping大包与MTU的关系C:\Documents and Settings\Administrator>ping 132.96.144.254Pinging 132.96.144.254 with 32 bytes of data:Reply from 132.96.144.254: bytes=32 time=1ms TTL=255Reply from 132.96.144.254: bytes=32 time=2ms TTL=255Reply from 132.96.144.254: bytes=32 time=3ms TTL=255Reply from 132.96.144.254: bytes=32 time=7ms TTL=255Ping statistics for 132.96.144.254:Packets: Sent = 4, Received = 4, Lost = 0 (0% loss),Approximate round trip times in milli-seconds:Minimum = 1ms, Maximum = 7ms, Average = 3msC:\Documents and Settings\Administrator>ping 132.96.144.254 -hBad option -h.Usage: ping [-t] [-a] [-n count] [-l size] [-f] [-i TTL] [-v TOS][-r count] [-s count] [[-j host-list] | [-k host-list]][-w timeout] target_nameOptions:-t Ping the specified host until stopped.To see statistics and continue - type Control-Break; To stop - type Control-C.-a Resolve addresses to hostnames.-n count Number of echo requests to send.-l size Send buffer size.-f Set Don't Fragment flag in packet.-i TTL Time To Live.-v TOS Type Of Service.-r count Record route for count hops.-s count Timestamp for count hops.-j host-list Loose source route along host-list.-k host-list Strict source route along host-list.-w timeout Timeout in milliseconds to wait for each reply.C:\Documents and Settings\Administrator>ping 132.96.144.254 -l 3000 //在同一个网段,没有IP MTU这一说法,可以ping一组3000字节的大包Pinging 132.96.144.254 with 3000 bytes of data:Reply from 132.96.144.254: bytes=3000 time=3ms TTL=255Reply from 132.96.144.254: bytes=3000 time=3ms TTL=255Reply from 132.96.144.254: bytes=3000 time=3ms TTL=255Reply from 132.96.144.254: bytes=3000 time=3ms TTL=255Ping statistics for 132.96.144.254:Packets: Sent = 4, Received = 4, Lost = 0 (0% loss),Approximate round trip times in milli-seconds:Minimum = 3ms, Maximum = 3ms, Average = 3msC:\Documents and Settings\Administrator>C:\Documents and Settings\Administrator>ping 132.96.144.254 -l 6000 //在同一个网段,ping一组6000字节的大包也没有问题Pinging 132.96.144.254 with 6000 bytes of data:Reply from 132.96.144.254: bytes=6000 time=5ms TTL=255Reply from 132.96.144.254: bytes=6000 time=5ms TTL=255Reply from 132.96.144.254: bytes=6000 time=4ms TTL=255Reply from 132.96.144.254: bytes=6000 time=4ms TTL=255Ping statistics for 132.96.144.254:Packets: Sent = 4, Received = 4, Lost = 0 (0% loss),Approximate round trip times in milli-seconds:Minimum = 4ms, Maximum = 5ms, Average = 4msC:\Documents and Settings\Administrator>ping 132.96.144.9Pinging 132.96.144.9 with 32 bytes of data:Reply from 132.96.144.9: bytes=32 time=2ms TTL=128Reply from 132.96.144.9: bytes=32 time=1ms TTL=128Reply from 132.96.144.9: bytes=32 time=1ms TTL=128Reply from 132.96.144.9: bytes=32 time=1ms TTL=128Ping statistics for 132.96.144.9:Packets: Sent = 4, Received = 4, Lost = 0 (0% loss),Approximate round trip times in milli-seconds:Minimum = 1ms, Maximum = 2ms, Average = 1msC:\Documents and Settings\Administrator>ping 132.96.144.9 -l 6000 //在同一个网段,ping一组6000字节的大包也没有问题,但所耗时间肯定比ping小包要久Pinging 132.96.144.9 with 6000 bytes of data:Reply from 132.96.144.9: bytes=6000 time=2ms TTL=128Reply from 132.96.144.9: bytes=6000 time=2ms TTL=128Reply from 132.96.144.9: bytes=6000 time=2ms TTL=128Reply from 132.96.144.9: bytes=6000 time=2ms TTL=128Ping statistics for 132.96.144.9:Packets: Sent = 4, Received = 4, Lost = 0 (0% loss),Approximate round trip times in milli-seconds:Minimum = 2ms, Maximum = 2ms, Average = 2msC:\Documents and Settings\Administrator>ping 132.98.81.139Pinging 132.98.81.139 with 32 bytes of data:Reply from 132.98.81.139: bytes=32 time=15ms TTL=250Reply from 132.98.81.139: bytes=32 time=15ms TTL=250Reply from 132.98.81.139: bytes=32 time=14ms TTL=250Reply from 132.98.81.139: bytes=32 time=13ms TTL=250Ping statistics for 132.98.81.139:Packets: Sent = 4, Received = 4, Lost = 0 (0% loss),Approximate round trip times in milli-seconds:Minimum = 13ms, Maximum = 15ms, Average = 14msC:\Documents and Settings\Administrator>ping 132.98.81.139 -l 6000 //这就不行了,ping外网段的,不可以超过路由器的IP MTU值Pinging 132.98.81.139 with 6000 bytes of data:Request timed out.Request timed out.Request timed out.Request timed out.Ping statistics for 132.98.81.139:Packets: Sent = 4, Received = 0, Lost = 4 (100% loss),C:\Documents and Settings\Administrator>ping 132.98.81.139 -l 1500 //一般路由器的接口的IP MTU值都设成1500字节Pinging 132.98.81.139 with 1500 bytes of data:Request timed out.Request timed out.Request timed out.Request timed out.Ping statistics for 132.98.81.139:Packets: Sent = 4, Received = 0, Lost = 4 (100% loss),C:\Documents and Settings\Administrator>ping 132.98.81.139 -l 1472 //减去包头,1500字节的IP MTU值只剩下1472字节,所以1472是包大小的上限Pinging 132.98.81.139 with 1472 bytes of data:Reply from 132.98.81.139: bytes=1472 time=20ms TTL=250Reply from 132.98.81.139: bytes=1472 time=18ms TTL=250Reply from 132.98.81.139: bytes=1472 time=16ms TTL=250Reply from 132.98.81.139: bytes=1472 time=15ms TTL=250Ping statistics for 132.98.81.139:Packets: Sent = 4, Received = 4, Lost = 0 (0% loss),Approximate round trip times in milli-seconds:Minimum = 15ms, Maximum = 20ms, Average = 17msC:\Documents and Settings\Administrator>ping 132.98.81.139 -l 1473Pinging 132.98.81.139 with 1473 bytes of data:Request timed out.Request timed out.Request timed out.Request timed out.Ping statistics for 132.98.81.139:Packets: Sent = 4, Received = 0, Lost = 4 (100% loss),C:\Documents and Settings\Administrator>先看看以太帧的结构:ping大包与MTU的关系 - 18989792 - 刘盛瀚由图中标示可知,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处获得地址。
(完整版)第3章计算机网络体系结构(习题答案)

第3章计算机网络体系结构一、填空题1.协议主要由(语法)、(语义)和(同步)三个要素组成。
2.OSI模型分为(物理层)、(数据链路层)、(网络层)、(传输层)、(会话层)、(表示层)和(应用层)七个层次。
3.OSI模型分为(资源子网)和(通信子网)两个部分。
4.物理层定义了(机械特性)、(电气特性)、(功能特性)和(规程特性)四个方面的内容。
5.数据链路层处理的数据单位称为(帧)。
6.数据链路层的主要功能有(链路管理)、(成帧)、(信道共享)、(帧同步)、(流量控制)、(差错控制)、(透明传输)和(寻址)。
7.在数据链路层中定义的地址通常称为(硬件地址)或(物理地址)。
8.网络层所提供的服务可以分为两类:(面向连接的)服务和(无连接的)服务。
9.传输层的功能包括(服务选择)、(连接管理)、(流量控制)、(拥塞控制)和(差错控制)等。
二、名词解释同步协议实体对等层对等层通信服务 CIDR 协议数据单元服务数据单元同步同步指的是广义的、在一定条件下发生什么事情的特性,而且条件和时间有关,具有时序的含义。
协议计算机网络中意图进行通信的结点必须要遵守一些事先约定好的规则。
这些为进行数据交换而建立的规则、标准或约定即称为协议,也称为网络协议。
实体任何接收或者发送数据的硬件单元或者软件进程模块都可以称为通信实体,简称实体。
对等层不同的网络结点,若它们遵循的是同一种网络体系结构的话,那么在不同结点上完成同样功能的层次称为对等层。
对等层通信在分层的网络体系结构中,每个层次只知道自己从上层接收来数据并处理后再传递给下一层,结果通信目的方该层次的对等层就收到与己方处理的一模一样的数据。
就好像在两个对等层之间有一条“通道”直接把数据传送过去一样,这种情况就称为对等层通信。
服务下一层能被上一层看见的功能称为服务。
协议数据单元、服务数据单元对等层上传送的数据单位称为协议数据单元,而直接相邻的两个层次之间交换的数据单位称为服务数据单元。
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分片理解报告
IP分片理解报告一、IP分片的定义因为在实际网络环境中,传输的网络数据包有时会超过设备的接口处理能力,这时就需要对数据包进行分片处理,那么对于IP层二、测试组网:PC1(10.1.1.2)----T1-----PC2(10.1.2.2)验证方法:通过ping一个大包来验证IP的分片情况在PC1上发送一个长度为5000的icmp包,在PC2上进行抓包验证收到的数据包的分片情况:最终分为四片1514×3+602.三、具体的分片原理如下:1、首先设备接口的MTU默认都是1500Byte,这个值的含义是链路层所能承载的上层数据包的大小,那么对于ICMP数据包来说,就是可以承载1500Byte-IP头=1480Byte大小的ICMP包;2、PC1发送一个长度为5000Byte icmp数据包,需要设备接口承载的大小为5000Byte+ICMP头=5008Byte,ping数据包的大小,不同的设备和操作系统,处理的不一样,需根据实际情况处理;3、按照1480Byte单位大小进行分片处理,最终结果为1480×3+568,分为四片4、在PC2上抓到的数据包是封装了以太头之后的大小,也就是在上述分片结果的情况下,每片大小+IP头+以太头,实际最终大小应该还有结尾的4Byte的CRC,抓包工具没有显示而已四、详细分析一下最终四个分片:第一个分片如下:这个分片的封装内容包括『以太头+IP头+ICMP头+DATA』,具体IP头的报文格式,主要字段包括:Identification:唯一标识一份完整IP数据包MF:更多分片,“1”表示还有分片fragment offset:表示该分片数据部分开始位置在原IP报文数据部分的偏移,单位是8bytes。
“1”表示是第一个分片DF:能否分片,“0”表示分片第二个分片如下:这个分片的封装内容包括『以太头+IP头+DATA』,具体IP头字段包括Identification:唯一标识一份完整IP数据包DF:“0”表示分片MF:“1”表示还有更多分片Fragment offset:“1480”表示这片报文的起始位对比最初的数据报文的偏移量第三个分片如下:这个分片的封装内容和第二片一样也是『以太头+IP头+DATA』,具体Identification:唯一标识一份完整IP数据包IP头字段包括:DF:“0”表示分片MF:“1”表示还有更多分片Fragment offset:“2960”表示这片报文的起始位对比最初的数据报文的偏移量第四个分片如下:这个分片的封装内容和第二、三片一样也是『以太头+IP头+DATA』,具体IP头字段包括:Identification:唯一标识一份完整IP数据包、DF:“0”表示分片MF:“0”表示分片结束,没有更多分片Fragment offset:“4440”表示这片报文的起始位对比最初的数据报文的偏移量五、分片重组最终IP分片到达PC2的时候,会涉及到分片重组,具体过程就是PC收到每一个分片的时候会检查MF位,如果为“1”表示还有后续分片,则缓存分片等待后续分片,如果MF=0,则表示分片接收结束,开始计算原始IP数据报文的长度,原始IP报文数据长度=最后一片分片偏移+最后一片分片数据大小,那么对于上述分片,PC2收到最后一片报文后,经计算原始IP报文数据长度=4440+568=5008Bytes,可以检查PC2是否收到了全部分片,如果收到了就继续交给上层处理;通过比较四个分片的最终封装格式,发现只有在第一个分片中包括了ICMP头部封装,剩余三片都没有,因为在IP分片的过程中,只有在第一个分片中才会封装上层协议首部和数据,剩余分片都只是封装数据,因为IP分片的过程中只对IP层所承载的上层数据进行处理,所以封装的数据也就是上层协议数据附录:IP头格式介绍:Version:4bit,”4”表示IPv4Header length:4bit,表示首部占32bits单位的大小,所以“5”表示首部长度为20Byes,最长为(2^8-1)×4=60Bytes DSCP:8bitsTotal length:16bits,IP数据包总长度Identification:16bits,标识每一份IP数据包Flags:3bit,主要有三个字段,保留字段、MF表示是否还有后续分片、DF是否分片Fragment offset:13bit,分组片偏移TTL:8bits,生存时间Protocol:8bits,表示上层封装协议,“6”表示TCP Header checksum:16bits,头部校验Source ip:32bits,源IP地址Destination ip:32bits,目的IP地址。
TCP层的分段跟IP层的分片之间的关系
TCP层的分段跟IP层的分片之间的关系TCP层的分段跟IP层的分片之间的关系MTU和MSS存在的关系TCP层的分段和IP层的分片之间的关系MTU和MSS存在的关系首先说明:数据报的分段和分片确实发生,分段发生在传输层,分片发生在网络层。
但是对于分段来说,这是经常发生在UDP传输层协议上的情况,对于传输层使用TCP协议的通道来说,这种事情很少发生。
1,MTU(Maximum Transmission Unit,MTU),最大传输单元(1)以太网和802.3对数据帧的长度都有一个限制,其最大值分别是1500和1492个字节。
链路层的这个特性称作MTU。
不同类型的网络大多数都有一个上限。
如果IP层有一个数据要传,且数据的长度比链路层的MTU还大,那么IP层就要进行分片(fragmentation),把数据报分成若干片,这样每一个分片都小于MTU。
(2)把一份IP数据报进行分片以后,由到达目的端的IP层来进行重新组装,其目的是使分片和重新组装过程对运输层(TCP/UDP)是透明的。
由于每一分片都是一个独立的包,当这些数据报的片到达目的端时有可能会失序,但是在IP首部中有足够的信息让接收端能正确组装这些数据报片。
(3)尽管IP分片过程看起来透明的,但有一点让人不想使用它:即使只丢失一片数据也要重新传整个数据报。
why?因为IP层本身没有超时重传机制------由更高层(比如TCP)来负责超时和重传。
当来自TCP报文段的某一片丢失后,TCP在超时后会重发整个TCP报文段,该报文段对应于一份IP数据报(而不是一个分片),没有办法只重传数据报中的一个数据分片。
(4)使用UDP很容易导致IP分片,TCP试图避免IP分片。
那么TCP是如何试图避免I P分片的呢?其实说白了,采用TCP协议进行数据传输是不会造成IP分片的,因为一旦T CP数据过大,超过了MSS,则在传输层会对TCP包进行分段(如何分,见下文!),自然到了IP层的数据报肯定不会超过MTU,当然也就不用分片了。
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)。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 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数据报首部与分片有关的字段中的数值。