我前面有發關於MTU值的問題,查了網路上許多人的見解,還有封包的一些結構。
我這邊還有一個例子,卻不知道怎麼解釋。
我開發板(linux)移植了 pptp server ,然後所有 source(包含 ppp0) 都透過 eth0 出
去外網
當電腦(windows)透過區網(和 pptp server同網段) 連進去vpn client,看了開發板上
的網路介面
ifconfig
eth0 MTU=1500
ppp0 MTU=1396
我電腦透過VPN再透過eth0, yahoo 上不去,但可以連 google 或者其他網頁。 我照
著網路的說明測 MTU
在 Windows cmd 下 ping -f -l XXXX www.yahoo.com.tw
ping -f -l 1373 www.yahoo.com.tw
需要切割封包,但設定DF旗標
需要切割封包,但設定DF其標
ping -f -l 1372 www.yahoo.com.tw
要求等候逾時
要求等候逾時
,測得 XXXX為 1372 ,但還是不能ping 通 yahoo ,網路上
說 1372 還需加上 20 byte IP包和 8 byte ICMP,才是最佳 MTU,
所以 1372+28 =1400,我至 server ,ppp0界面 改成 MTU 為 1400
我就可以在 windows 下
ping -f -l 1372 www.yahoo.com.tw
回覆自124.108.105.150: 位元組:1372 TTL=50
1 我的解讀是,yahoo server 回應透過 eth0 再透過 ppp0 它可能回傳太大的封包給
ppp0 ,但是 ppp0 卻給 1396 ,所以封包被 dropped 掉,以致 yahoo 上不去,這樣
解讀是對的嗎? 那其他 google怎能上?
2 使用 ping -f -l 方法測出來的值不就已經是 MTU 了,MTU已經有包含 TCP包和IP包了
為啥他還需要加上 20 byte IP 包和 8 byte 的 ICMP?
搞得我到現在仍一團混亂.... 懇請賜教,謝謝。