2003/09/13

PPPoE的MTU

我上网是通过PPPoE(PPP over Ethernet),好像现在网通的局域网接入和电信的ADSL大部分用的这个协议,既然是over Ethernet,一定会做协议封装,那么MTU(最大传输单元)应该达不到1500,在网上看到这可能会导致部分网络应用不正常,我于是在我的机器上实 测了一把,在dos窗口下使用ping就可以了,用ping -f -l ### ****.***这样的格式,-f是设置不分片,-l设置包长,当包长超过MTU时,就会返回ICMP不能分片的错误。在我的机器上:
E:\>ping -f -l 1465 www.****.com
Pinging www.****.com with 1465 bytes of data:
Packet needs to be fragmented but DF set.
而使用1464包长是可以的。
E:\>ping -f -l 1464 www.****.com
Pinging www.****.com with 1464 bytes of data:
Reply from ###.###.###.###: bytes=1464 time=16ms TTL=123
可以算出MTU等于1464+28(28等于ping包的头部,一个IP加一个ICMP头)=1492!
然后只要在注册表里修改这个接口的MTU就可以了。

一个有趣的实验是,使用同样的方法,但是目标地址换成自己的IP地址或是127.0.0.1得到的是不同的结果1472,可见在这里环回接口的MTU仍然是1500,和PPPoE的MTU并不相等!

没有评论: