本文為大家介紹traceroute 原理(tracert的工作原理),下面和小編一起看看詳細內(nèi)容吧。
traceroute 的工作原理
traceroute最簡單的基本用法是:traceroute主機名
traceroute 程序旨在使用icmp 和ip 標(biāo)頭的ttl(生存時間)字段。首先,traceroute向目的地發(fā)送一個ttl為1的ip數(shù)據(jù)報(實際上每次發(fā)送3個40字節(jié)的數(shù)據(jù)包,包括源地址、目的地址和發(fā)送數(shù)據(jù)包時的時間戳),當(dāng)?shù)谝粋€時一個路由器(router)收到這個數(shù)據(jù)報,它會將ttl減1。
此時ttl變?yōu)?,因此路由器會丟棄該數(shù)據(jù)報并發(fā)回“icmp超時”報文(包括ip包的源地址、ip包的所有內(nèi)容和路由器的ip地址) ), traceroute收到這個報文后,就知道這個路由器存在于這條路徑上,然后traceroute再發(fā)送一個ttl為2的數(shù)據(jù)報,發(fā)現(xiàn)第二個路由器.
traceroute 每次發(fā)送的數(shù)據(jù)報的ttl 加1 以發(fā)現(xiàn)另一個路由器,如此重復(fù)的動作一直持續(xù)到數(shù)據(jù)報到達目的地。當(dāng)數(shù)據(jù)報到達目的地時,主機不會發(fā)回icmp超時報文,因為它已經(jīng)是目的地了,那么traceroute如何知道目的地已經(jīng)到達呢?
當(dāng)traceroute向目的地發(fā)送udp數(shù)據(jù)報時,它選擇的端口號是一般應(yīng)用程序不使用的端口號(30000以上),所以當(dāng)udp數(shù)據(jù)報到達目的地時,主機會發(fā)回“icmp端口不可達”消息,當(dāng)traceroute 收到這條消息時,它就知道目的地已經(jīng)到達。所以traceroute在server端并沒有所謂的daemon程序。
traceroute提取發(fā)送icmp ttl過期報文的設(shè)備ip地址,進行域名解析。 traceroute每次都會打印一系列數(shù)據(jù),包括它經(jīng)過的路由設(shè)備的域名和ip地址,以及三個數(shù)據(jù)包每次來回所花費的時間。
traceroute 有固定的時間來等待響應(yīng)(icmp ttl 過期消息)。如果這個時間已經(jīng)過去,它會打印一系列*標(biāo)志,表明該路徑上的設(shè)備無法在給定時間內(nèi)響應(yīng)icmp ttl expired 消息。然后,traceroute 將ttl 計數(shù)器加1 并繼續(xù)。
好了,traceroute 原理(tracert的工作原理)的介紹到這里就結(jié)束了,想知道更多相關(guān)資料可以收藏我們的網(wǎng)站。