回覆列表
  • 1 # niioo358

    就是基於ICMP的。TCP/IP協議詳解卷1的8.2節中曾經說過,路由追蹤時傳送UDP資料報給目標主機,而且設定的埠值很高,一般大於30000,以避免埠號被使用。原文如下: “Traceroute程式傳送一份UDP資料報給目的主機,但它選擇一個不可能的值作為UDP埠 號(大於30 000),使目的主機的任何一個應用程式都不可能使用該埠。因為,當該資料報 到達時,將使目的主機的UDP模組產生一份“埠不可達”錯誤(見 6 . 5節)的ICMP報文。 這樣,Traceroute程式所要做的就是區分接收到的ICMP報文是超時還是埠不可達,以判斷 什麼時候結束。” 中間的路由器是因為TTL=0以後返回ICMP 型別11,程式碼0的超時訊息。目的IP到了以後,拆包分析UDP內容,發現埠不可達,返回ICMP型別3,程式碼3(目標埠不可達)實現。 在windws主機裡面的tracert和TCP/IP詳解的表述有點出入。windows主機的tracert是直接是用ping來實現的,但是這個ping的TTL值在3個包後增大1,不可達或者超時後返回星號,繼續下一個TTL的包的傳送,一直到達預設設定的30跳。一般在路由器和交換機上的traceroute都是UDP的方式,每個TTL發的包的個數和最大跳數、UDP開始埠都是可以調整的。

  • 中秋節和大豐收的關聯?
  • 《紅樓夢》是個怎樣的“夢”?