查看: 23698|回复: 19

原创: Ping –l(ping最大值)简单分析

[复制链接]
发表于 2006-6-26 15:21:35 | 显示全部楼层 |阅读模式
上午有朋友在问,“在pc上ping pc,数据包大小为8000可以通,为什么啊?”
为什么会有这样的疑问呢,原因很简单,以太网II的数据包不是在64~1518字节之内吗?怎么带8000的参数,都还可以Ping通呢?
仔细一想,ICMP协议工作在网络层,而以太网II是工作在以太网层,所以ICMP协议与64~1518的限制,应该没有必然的联系。为验证推论是否正确,做了以下的实验。
1.在Windows XP上Ping内部的网关和DNS,均带上8000的参数,在Ping的同时使用EtherPeek抓包,Ping的结果如下图。




两个都是通的,这时我们来看一下抓到的数据包。



从上面可以清楚地看到,在CMD窗口中的一个Ping请求被分成6个数据段进行传输,且前5个的长度是1518字节,最后1个是646字节。
下面来详细看下8000字节的分布:
第1个数据包,数据长度=1518-14(以太网II头)-20(IP报头)-8(ICMP报头)-4(FCS)=1472字节;
第2~5个数据包,数据长度=1518-14(以太网II头)-20(IP报头)-4(FCS)=1480字节;
第6个数据包,数据长度=646-14(以太网II头)-20(IP报头)-4(FCS)=608字节;
1472+1480*4+606=1472+5920+606=8000字节。
与前面的ping 192.168.0.1 –l 8000和ping 61.139.2.69 –l 8000完全吻合。这也印证了我们前面的理解是正确的,即分段传输-l所带参数这么大的数据。
测试后可知,不同操作系统下,Ping的最大值是不同的,Windows下最大是65500,Linux下是65507,且注意这个值是数据内容,不包括任何报头信息(以太网头,IP头,ICMP头)。

[ 本帖最后由 菜鸟人飞 于 2006-6-26 15:23 编辑 ]

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?CSNA会员注册

×
回复

使用道具 举报

发表于 2006-6-26 20:47:16 | 显示全部楼层
对,我测试的结果和楼主的一样!
回复

使用道具 举报

发表于 2006-6-27 09:09:40 | 显示全部楼层

PING通3000字节,收不到邮件

我最近发现了一个这样的问题,我PING 网关只有3000字节,用OUTLOOK像死机了一样(发送和接受不到邮件),后来换了一个Switch正常了.我不明白,以太网II的数据包不是在64~1518字节之内吗?既然以太网II的数据包是1518字节,为什么能PING 通3000,但收不到信?希望楼主给予解答,不胜感激,谢谢!
回复

使用道具 举报

 楼主| 发表于 2006-6-27 10:51:21 | 显示全部楼层
首先,我没有重现楼主的情况,我也认为不能收发邮件与PING没有直接的关系。
PING和收发邮件,会使用各自的进程,单独发送数据包。
您更换交换机后,就正常了,说明这可能是硬件问题啊。
回复

使用道具 举报

发表于 2006-6-27 13:20:50 | 显示全部楼层
谢谢楼主的回复!我又试了一下,发现正常情况下SNIFFER捕获的OUTLOOK数据包大小为60字节,按这样说来能PING通3000字节的数据,60字节更应是可以的!就这点我不明白???
回复

使用道具 举报

发表于 2006-6-27 21:15:02 | 显示全部楼层
阿飞的(1472+1480*4+606=1472+5920+606=8000字节。)里面的606应当是608,笔误了!呵呵!
回复

使用道具 举报

 楼主| 发表于 2006-6-28 08:54:52 | 显示全部楼层
原帖由 jiesen 于 2006-6-27 21:15 发表
阿飞的(1472+1480*4+606=1472+5920+606=8000字节。)里面的606应当是608,笔误了!呵呵!

谢谢!
实在不好意思,
回复

使用道具 举报

发表于 2006-6-28 09:23:24 | 显示全部楼层
原帖由 jiesen 于 2006-6-27 21:15 发表
阿飞的(1472+1480*4+606=1472+5920+606=8000字节。)里面的606应当是608,笔误了!呵呵!

厉害,这都看到了。
我当时看的时候咋没注意呢
学习,细心
回复

使用道具 举报

发表于 2006-6-28 23:01:23 | 显示全部楼层
个人认为:虽然大包也可以发出去,很明显已经分片了,ICMP协议还是要受到以太网数据包大小64~1518的限制。
回复

使用道具 举报

发表于 2006-6-29 09:23:49 | 显示全部楼层
真是神了,ping互联网也能是大包,俺就重来没有成功过!!!
回复

使用道具 举报

发表于 2006-6-29 23:18:57 | 显示全部楼层
原帖由 jingshne 于 2006-6-29 09:23 发表
真是神了,ping互联网也能是大包,俺就重来没有成功过!!!


这个关键要看经过的路由吧,如果路由设置了不允许分片,或者限制了icmp包的回应,就该很难ping 通的。
回复

使用道具 举报

发表于 2006-6-30 09:22:25 | 显示全部楼层
原帖由 icefired 于 2006-6-28 23:01 发表
个人认为:虽然大包也可以发出去,很明显已经分片了,ICMP协议还是要受到以太网数据包大小64~1518的限制。

嗯,我也这么认为是分片了的。
而且从楼主的抓包来看,有很多IP Fragment的数据包,这就是分片的数据包。
回复

使用道具 举报

 楼主| 发表于 2006-6-30 10:25:55 | 显示全部楼层
原帖由 icefired 于 2006-6-28 23:01 发表
个人认为:虽然大包也可以发出去,很明显已经分片了,ICMP协议还是要受到以太网数据包大小64~1518的限制。

当然,遵循OSI七层的数据传输,最后肯定都会遵循以太网层的限制的,呵呵。
回复

使用道具 举报

发表于 2006-6-30 22:43:50 | 显示全部楼层

学习!

ICMP协议的主要用途是什么?
回复

使用道具 举报

发表于 2006-7-4 00:04:14 | 显示全部楼层

用此原理可以制造出大流量数据包的环境

ping的包长写到最大,然后用一些小工具修改网卡的MTU值,再使用多台终端一起ping,就能制造大流量数据包的测试环境,以前我看中兴公司的工程师用过这种方法,一个字:妙!
回复

使用道具 举报

发表于 2006-7-14 18:26:57 | 显示全部楼层
我发现,在同一网络环境下,xp ping xp 大包可以过,如32K包,但是xp ping 2000server 或2003server就过不去,不知道是什么原因.
回复

使用道具 举报

发表于 2007-5-2 23:11:40 | 显示全部楼层
哦  原来是设置有问题啊 哈哈
回复

使用道具 举报

发表于 2007-5-2 23:32:59 | 显示全部楼层
虽然这个问题我很早就知道,但是写得如此详细还真要赞赞楼主。
回复

使用道具 举报

发表于 2008-4-25 18:03:35 | 显示全部楼层
反对双方的身份的身份的身份的身份
回复

使用道具 举报

发表于 2009-10-15 13:15:40 | 显示全部楼层
写的不错,学习学习学习了。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | CSNA会员注册

本版积分规则

快速回复 返回顶部 返回列表