traceroute
也是第三層-IP層著名的應用之一,利用traceroute可以知道封包從你的電腦到另一端電腦走了什麼路徑,雖然每次走的路徑可能會不一樣,但是大部分時候走的路由是相同的。
還記得ping的ttl嗎?它代表Time_To_Live(生存時間)
,每過一個路由器,生存時間就會-1,直到等於0都還沒走到目的地地址則代表 TTL 已經到期,接著就會傳送錯誤訊息給原本發送的電腦,TTL的值越大越好,代表經過的路由器越少,也代表越快。
那麼 TTL值一開始是多少呢?不同的作業系统默認下 TTL是不同的。
所以 TTL值可以用來識別作業系統的類型
traceroute怎麼知道經過了哪些路由器呢?就是透過ttl的設定,電腦先發送一個TTL=1的ICMP封包,在遇到第一個路由器就返回一個超時封包,並得到第一個路由器的地址
第二次,再發送一個TTL=2的ICMP封包,在遇到第二個路由器就返回一個超時封包,並得到第二個路由器的地址,以此類推,知道等到達目的地地址。
系列的成果將會放在這:https://github.com/kaichiachen/pytcpdump
文章配合著程式碼有助於學習 :)