打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
报文分段、IP数据包、帧的长度约束
关于ping命令时IP包长和以太网帧的长度计算
网友:tiger001 发布于: 2007.03.27 09:09 (共有条评论) 查看评论 | 我要评论
一般设备的接口的MTU值是1500,这个值指的是IP层的报文长度,当这个报文承载在以太网帧上的时候,加上以太网帧的18个字节,整个以太网帧的长度是1518。当这个以太网帧被打上VLAN信息的时候,整个二层报文的长度就会变为1522个字节。
当我们在ping  1468的时候,1468是IP层的净负荷,加上20个字节的IP报文头和8个字节的ICMP报文头,整个IP报文长度为1496个字节,再加上18字节的以太网帧封装和4个字节的VLAN信息,整个以太网帧长度就是1518的字节了。
报文分段、IP数据包、帧的长度约束(转自网络)
(2011-02-12 15:59:29)
标签: 杂谈
分类: 计算机网络
1、数据链路层对数据帧的长度都有一个限制,也就是链路层所能承受的最大数据长度,这个值称为最大传输单元,即MTU。以以太网为例,这个值通常是1500字节。
2、对于IP数据包来讲,也有一个长度,在IP包头中,以16位来描述IP包的长度,也就是说,一个IP包,最长可能是65535字节(多数网络设备将其限制在576字节以内)。
3、结合以上两个概念,第一个重要的结论就出来了,如果IP包的大小,超过了MTU值,那么就需要分片,也就是把一个IP包分为多个,这个概念非常容易理解,一个载重5T的卡车,要拉10T的货,它当然就得分几次来拉了。
4、IP分片是很多资料常讲的内容,但是我倒是觉得分不分片其实不重要,重要的是另一个东西。一个数据包穿过一个大的网络,它其间会穿过多个网络,每个网络的MTU值是不同的。我们可以设想,如果接受/发送端都是以太网,它们的MTU都是1500,我们假设发送的时候,IP数据包会以1500来封装,然而,不幸的是,传输中有一段X.25网,它的MTU是576,这会发生什么呢?我想,这个才是我们所关心的。
当然,结论是显而易见的,这个数据包会被再次分片,咱开始用火车拉,到了半路,不通火车,只通汽车,那一车货会被分为很多车……仅此而已,更重要的是,这种情况下,如果IP包被设置了“不允许分片标志”,那会发生些什么呢?对,数据包将被丢弃,然事收到一份ICMP(Internet Control Message Protocol,Internet控制报文协议)不可达差错,告诉你,需要分片!
这个网络中最小的MTU值,被称为路径MTU,我们应该有一种有效的手段,来发现这个值,最笨的方法或许是先用traceroute查看所有节点,然后一个个ping……
5、到了传输层,也会有一个最大值的限制,当然,对于只管发,其它都不管的UDP来说,不再我们讨论之列。这里说的是TCP协议。说到大小,或许会让人想到TCP著名的滑动窗口的窗口大小,它跟收发两端的缓存有关,这里讨论的是传输的最大数据包大小,所以,它也不在讨论之列。
TCP的选项字段中,有一个最大报文段长度(MSS,Maximum Segment Size),表示了TCP传往另一端的最大数据的长度,当一个连接立时,连接的双方都要通告各自的MSS,也就是说,它说是与TCP的SYN标志在一起的。当然,对于传输来讲,总是希望MSS越大越好,现在超载这么严重,谁家不希望多拉点货……但是,MSS总是有个限制的,也就是MTU-IP头长度-TCP头长度,对于以太网来讲
它通常是1500-20-20=1460,虽然总是希望它能很大(如1460),但是大多数BSD实现,它都是512的倍数,如1024……
6、回到分片上来,例如,在Win2000下执行如下命令:
"ping 192.168.0.1 -l 1473
按刚才的说法,1473+20(ip头)+8(icmp头)=1501,则好大于1500,它会被分片。
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
IP数据包长度问题总结 (MTU MSS)
一层层剥开网络通信协议,太长了
IP分片浅析
tcpip详解笔记(10) udp协议
《网络协议》IP 分片与 TCP 分段
动图图解!既然IP层会分片,为什么TCP层也还要分段?|路由器|ip|tcp|数据包|报文
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服