ping -f -l [packet size] [IP]
#[packet size]:封包大小 1~1500
以使用HiNet ADSL為例:
#開啟「命令提示字元」鍵入
ping -f -l 1500 168.95.192.1
這裡我們從最大值開始測試,試驗連線的對象為HiNet的DNS Server。(連線對象選一個變數最少的吧!gateway ip 是不錯的選擇。)
~如果回應訊息為:Packet needs to be fragmented but DF set
~就試著再減少封包大小數值。
#Binary Search是個不錯的選擇。1500不行就向下砍一半=750。假設這時出現回應(Reply from 168.95.192.1: Bytes=750 time=?ms TTL=?),那就再向上加=1125,反之則向下減=375。(說到這就想到以前每次看「全能估價王」看來賓在猜價錢都不知道用這種方法,有夠...)。
#如此反覆嘗試直到找到最大的那個數值為止。
#另外由於ping指令所送出的封包包含了IP header (20 Bytes)、ICMP header (8 Bytes)。所以得到的數值必須在減28。例如我ping所得到數值為1472的話,最佳MTU數值應該是1472-28=1444。
還有一個參數必須提到:MSS(Maximum Segment Size):最大分段。因為TCP/IP協定在傳送時會將原始的資料一層一層的加上訊框(這裡自行參考TCP/IP原理或看看OSI模型吧)。所以最後出去的封包其實是多出了TCP header (20 Bytes)、IP header (20 Bytes)。故所謂的MSS就是減掉這40Bytes的數值~1472-40=1432。
沒有留言:
張貼留言