通信人家园
标题:
有人对IP分片熟悉嘛?
[查看完整版帖子]
[打印本页]
时间:
2006-3-20 22:54
作者:
waterfish
标题:
有人对IP分片熟悉嘛?
MTU是1500字节,但当ethernet帧的ip数据达到1492字节以上就分片,为什么?
时间:
2006-3-27 13:58
作者:
cctvghost
IP头
时间:
2006-3-27 20:06
作者:
SuperRouter
IP头要算在内
时间:
2006-3-27 22:00
作者:
waterfish
谢谢回答,不过IP头20字节和ICMP头8字节已经计算在内,数据是1464字节
时间:
2006-3-30 08:58
作者:
yustg
前面有8个字节的前导符,即当数据封装成以太网帧,即将要发送的时候就得加前导符了
呵呵,太久了,记忆中是这样,如有错误之处请指教
时间:
2006-3-31 21:00
作者:
bettering
还可能有MPLS VPN的头等等
时间:
2006-5-29 13:38
作者:
gcfang
寒,以上回答真令人失望,这里有没有真正的研发人员来?!
1492最大的可能性,在于pppoe,pppoe头部有8各字节。不过楼主说的情况似乎不是pppoe,因为没有提到ppp。那么只能解释为路径mtu为1492。什么原因未知。
时间:
2006-6-4 02:18
作者:
alamb
我们通常讲的mtu指的是以太网祯里面的负载部分,也就是说不包括以太网前导符、祯头、校验等。
可以用带-f -l参数的ping检测一下网卡实际配置的mtu
时间:
2006-6-8 18:35
作者:
韩国舞族
数据是1464字节
时间:
2006-6-8 18:36
作者:
韩国舞族
发帖随机事件
在家园里面建造自己的房子,属于违章建筑!罚钱 50!
时间:
2006-6-10 01:59
作者:
lucas_123
什么设备?什么使用环境?好像都没有说吧。
时间:
2006-6-10 01:59
作者:
lucas_123
发帖随机事件
你好久没陪孩子,今天良心发现和孩子一起看马戏,花掉 15 金钱作为门票!
时间:
2006-6-10 01:59
作者:
lucas_123
发帖随机事件
在论坛的低价竞拍活动中,经过深思熟虑,你只报了一个价格,就竞拍无绳话机成功,金钱增加 88,经验增加 8
提供人:ilikemaths
时间:
2006-6-10 01:59
作者:
lucas_123
发帖随机事件
你秘密研制口服型全球卫星定位系统的终端,人只要吃一粒,马上就能知道在哪里了,管理员给你科研经费 500 元
时间:
2006-6-10 01:59
作者:
lucas_123
发帖随机事件
你在家园的一角开了家小小咖啡店,因此认识了不少家园的朋友,经验加 10。
时间:
2006-6-10 02:00
作者:
lucas_123
发帖随机事件
中国BBS百强评比,你积极投票参加,为通信人家园拉选票,奖励你家园币 50,经验 5
时间:
2006-6-10 02:00
作者:
lucas_123
回这个帖子,收获很大呀,^_^
时间:
2006-8-15 16:55
作者:
Eric2000
顶上来吧,这个问题会越来越多遇到
时间:
2006-8-28 21:31
作者:
ceshi001
ZT: MTU: Maxitum Transmission Unit 最大传输单元
MSS: Maxitum Segment Size 最大分段大小(偶是直译,翻译的不好,不要打俺PP)
PPPoE: PPP Over Ethernet(在以太网上承载PPP协议)
[分析过程]
先说说这MTU最大传输单元,这个最大传输单元实际上和链路层协议有着密切的关系,让我们先仔细回忆一下EthernetII帧的结构DMAC+SMAC+Type+Data+CRC
由于以太网传输电气方面的限制,每个以太网帧都有最小的大小64bytes最大不能超过1518bytes,对于小于或者大于这个限制的以太网帧我们都可以视之为错误的数据帧,一般的以太网转发设备会丢弃这些数据帧。
(注:小于64Bytes的数据帧一般是由于以太网冲突产生的“碎片”或者线路干扰或者坏的以太网接口产生的,对于大于1518Bytes的数据帧我们一般把它叫做Giant帧,这种一般是由于线路干扰或者坏的以太网口产生)
由于以太网EthernetII最大的数据帧是1518Bytes这样,刨去以太网帧的帧头(DMAC目的MAC地址48bit=6Bytes+SMAC源MAC地址48bit=6Bytes+Type域2bytes)14Bytes和帧尾CRC校验部分4Bytes(这个部门有时候大家也把它叫做FCS),那么剩下承载上层协议的地方也就是Data域最大就只能有1500Bytes这个值我们就把它称之为MTU。这个就是网络层协议非常关心的地方,因为网络层协议比如IP协议会根据这个值来决定是否把上层传下来的数据进行分片。就好比一个盒子没法装下一大块面包,我们需要把面包切成片,装在多个盒子里面一样的道理。
当两台远程PC互联的时候,它们的数据需要穿过很多的路由器和各种各样的网络媒介才能到达对端,网络中不同媒介的MTU各不相同,就好比一长段的水管,由不同粗细的水管组成(MTU不同 )通过这段水管最大水量就要由中间最细的水管决定。
对于网络层的上层协议而言(我们以TCP/IP协议族为例)它们对水管粗细不在意它们认为这个是网络层的事情。网络层IP协议会检查每个从上层协议下来的数据包的大小,并根据本机MTU的大小决定是否作“分片”处理。分片最大的坏处就是
降低了传输性能,本来一次可以搞定的事情,分成多次搞定,所以在网络层更高一层(就是传输层)的实现中往往会对此加以注意!有些高层因为某些原因就会要求我这个面包不能切片,我要完整地面包,所以会在IP数据包包头里面加上一
个标签
F(Donot Fragment)。这样当这个IP数据包在一大段网络(水管里面)传输的时候,如果遇到MTU小于IP数据包的情况,转发设备就会根据要求丢弃这个数据包。然后返回一个错误信息给发送者。这样往往会造成某些通讯上的问题,不过幸运的是大部分网络链路都是MTU1500或者大于1500。
对于UDP协议而言,这个协议本身是无连接的协议,对数据包的到达顺序以及是否正确到达不甚关心,所以一般UDP应用对分片没有特殊要求。
对于TCP协议而言就不一样了,这个协议是面向连接的协议,对于TCP协议而言它非常在意数据包的到达顺序以及是否传输中有错误发生。所以有些TCP应用对分片有要求---不能分片(DF)。
花开两朵,各表一枝,说完MTU的故事我们该讲讲今天的第二个猪脚---PPPoE所谓PPPoE就是在以太网上面跑PPP协议,有人奇怪了,PPP协议和Ethernet不都是链路层协议吗?怎么一个链路层跑到另外一个链路层上面去了,难道升级成网络层协议了不成。其实这是个误区:就是某层协议只能承载更上一层协议。
为什么会产生这种奇怪的需求呢?这是因为随着宽带接入(这种宽带接入一般为Cable Modem或者xDSL或者以太网的接入)由于以太网缺乏认证计费机制而传统运营商是通过PPP协议来对拨号等接入服务进行认证计费的,所以就出了这么一个怪胎
PPoE。(有关PPPoE的详细介绍参见V大以及本站其他成员的一些介绍文章,我就不啰里啰唆的了)
PPPoE带来了好处,也带来了一些坏处,比如:二次封装耗费资源,降低了传输效能等等,这些坏处俺也不多说了,最大的坏处就是PPPoE导致MTU变小了以太网的MTU是1500,再减去PPP的包头包尾的开销(8Bytes),就变成1492。
如果两台主机之间的某段网络使用了PPPoE那么就会导致某些不能分片的应用无法通讯。
这个时候就需要我们调整一下主机的MTU,通过降低主机的MTU,这样我们就能够顺利地进行通讯了。
当然对于TCP应用而言还有另外的解决方案。
马上请出今天第三位猪脚:MSS。
MSS最大传输大小的缩写,是TCP协议里面的一个概念。
MSS就是TCP数据包每次能够传输的最大数据分段。为了达到最佳的传输效能TCP协议在建立连接的时候通常要协商双方的MSS值,这个值TCP协议在实现的时候往往用MTU值代替(需要减去IP数据包包头的大小20Bytes和TCP数据段的包头20Bytes)所以往往MSS为1460。通讯双方会根据双方提供的MSS值得最小值确定为这次连接的最大MSS值。
介绍完这三位猪脚s
我们回过头来看前言里面的那个问题,我们试想一下,如果我们在中间路由器上把每次TCP连接的最大MSS进行调整这样使得通过PPPoE链路的最大MSS值加上数据包头包尾不会超过PPPoE的MTU大小1492这样就不会造成无法通讯的问题.所以上面的问题可以通过ip tcp adjust-mss 1452来解决。
当然问题也可以通过修改PC机的MTU来解决。
时间:
2006-8-30 09:54
作者:
shorse
楼上是高手,学习了
时间:
2006-8-30 09:55
作者:
shorse
发帖随机事件
去香港游,购买奢侈品,花费 230 元。
时间:
2006-9-6 10:53
作者:
wyz4617
ding
时间:
2006-9-7 17:04
作者:
gzax
乱七八糟的。
时间:
2006-9-10 22:35
作者:
ccie20000
多谢各位回答!
不是pppoe封装,pc接入ethernet
通信人家园 (https://www.txrjy.com/)
Powered by C114