traceroute

簡單是理解,traceroute使用了兩種不正常的方式來測試,以獲得我們預期的結果。

一、TTL=0

二、UDP端口不可達。


在windows下,traceroute使用的是ICMP協議

在unix下,traceroute使用的是UDP協議


windows下,traceroute依次發送icmp報文,TTL=1、2、3...,探測路徑。最開始TTL=1,這個報文的類型和代碼字段分別是8、0。到遇到第一跳的時候,返回一個類型代碼爲11、0的差錯包,表示TTL=0。然後接着發送TTL=2,探測第二跳。這樣一直下去。直到到達目的地


unix下,traceroute發送的是UDP(端口號大於30000)的三個包。同時TTL=1、2、3...,在沒到達最終路徑之前,過程和windows一樣。但是在到達目的地的時候,會發出一個端口不可達的ICMP差錯報文。類型、代碼爲3、3。

這裏需要注意的一點,三個UDP報文的端口號是不一樣的。這樣做的好處是,可以查到鏈路上的負載均衡。絕大多數的負載均衡的設備是基於流的。這三個端口號不一樣的包數據三個流,這樣可以查看到負載均衡的情況。



還有一點需要注意的就是,traceroute探測到的是 入站接口的IP地址。而ICMP的源站路由檢測的是出站接口的IP地址。他們使用的原理是完全不一樣的。


ping的源站路由可以記錄往返的路徑。但是隻能記錄最多9個地址。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章