本文只是總結(jié)了兩個常用的網(wǎng)絡(luò)命令的實現(xiàn)原理和一點使用經(jīng)驗說明。這些東西通常都分布在各種書籍或者文章中的,,我勤快那么一點點,,總結(jié)一下,,再加上我的一點理解和使用經(jīng)驗,方便大家了解,。這些也是很基礎(chǔ)的東西,,沒什么高深的,。 Ping 這個應(yīng)該大家都會用的吧,最主要的就是檢測目標(biāo)主機是不是可連通,。Ping程序?qū)嶋H就是發(fā)送一個ICMP回顯請求報文(就是請求別人收到這個報文之后回顯)給目的主機,,并等待回顯的ICMP應(yīng)答。然后打印出回顯的報文。Ping不通一個地址,,并不一定表示這個IP不存在或者沒有連接在網(wǎng)絡(luò)上,,因為對方主機可能做了限制,,比如安裝了防火墻,因此Ping不通并不表示不能使用FTP或者TELNET連接,。 C:\Documents and Settings\snoopy> ping 202.103.176.22 /t Pinging 202.103.176.22 with 32 bytes of data: Reply from 202.103.176.22: bytes=32 time=6ms TTL=58 Reply from 202.103.176.22: bytes=32 time=6ms TTL=58 PING得到的結(jié)果包括字節(jié)數(shù),、反應(yīng)時間、以及生存時間,。Ping程序通過在ICMP報文數(shù)據(jù)中存放發(fā)送請求的時間來計算返回時間。當(dāng)應(yīng)答返回時,,根據(jù)現(xiàn)在時間減去報文中存放的發(fā)送時間就得到反應(yīng)時間了,。生存時間(TTL),,本來就存放在IP數(shù)據(jù)報的頭部,,直接就能夠獲取。在返回的報文顯示的TTL值表示從目標(biāo)主機到源主機剩下的跳數(shù),。 Tracert 首先,,要知道一個路由器的原理:當(dāng)路由器接收到一個TTL為1的IP數(shù)據(jù)報的時候,,路由器就不再轉(zhuǎn)發(fā)這個數(shù)據(jù)了,,而直接丟棄,并且發(fā)送一個ICMP“超時”信息給源主機,這個信息會帶上自己的接口地址,。(當(dāng)路由器接收到TTL=1的數(shù)據(jù)包時,它會將 TTL值減1,,這時TTL值減為0,路由器將會丟棄該報文并向源點發(fā)送錯誤信息,。這個方法可以防止報文在互聯(lián)網(wǎng)上無休止的傳輸,,所以網(wǎng)絡(luò)中根本就不會有TTL=0的報文) 一個探測路由的程序,,可以讓我們看見IP數(shù)據(jù)報到達目的地經(jīng)過的路由,。 Tracert利用ICMP數(shù)據(jù)報和IP數(shù)據(jù)報頭部中的TTL值來實現(xiàn)。TTL(Time To Live)是一個IP數(shù)據(jù)報的生存時間,,當(dāng)每個IP數(shù)據(jù)報經(jīng)過路由器的時候都回把TTL值減去1或者減去在路由器中停留的時間,,但是大多數(shù)數(shù)據(jù)報在路由器中停留的時間都小于1秒種,因此實際上就是在TTL值減去了1,。這樣,,TTL值就相當(dāng)于一個路由器的計數(shù)器,。 當(dāng)路由器接收到一個TTL為1的IP數(shù)據(jù)報的時候,,路由器就不再轉(zhuǎn)發(fā)這個數(shù)據(jù)了,,而直接丟棄,,并且發(fā)送一個ICMP“超時”信息給源主機,。Tracert程序的關(guān)鍵就是這個回顯的ICMP報文的IP報頭的信源地址就是這個路由器的IP地址,。同時,如果到達了目的主機,,我們并不能知道,,于是,Tracert還同時發(fā)送一個UDP信息給目的主機,,并且選擇一個很大的值作為UDP的端口,,使主機的任何一個應(yīng)用程序都不使用這個端口。所以,,當(dāng)達到目的主機的時候,,目標(biāo)主機的UDP模塊(別的主機的不會做出反應(yīng))就產(chǎn)生一個“端口不可到達”的錯誤,這樣就能判斷是否是到達目的地了,。 有說法是利用ping得到的TTL值來判斷主機類型,,這種辦法可以大概地用來判斷,有人問為什么一般得到的都不是標(biāo)準(zhǔn)的TTL值,。這個就是因為ICMP數(shù)據(jù)包走的路由器線路的原因,,所以,用ping 和 tracert 一起來用更容易判斷主機類型(不過并不一定兩次走的路線都一樣,,所以,,還是個大概值,不過更接近點,,而且主機的默認(rèn)TTL值是可以改變的),。 tracert命令查看某個地址,得到的時間有3個如下 比如: 26ms 10ms 10ms. 表示發(fā)送的三個探測包的回應(yīng)時間;一般在網(wǎng)絡(luò)情況平均的情況下,,三個時間差不多,;如果相差比較大,,說明網(wǎng)絡(luò)情況變化比較大. 也就是說,,tracert每次返回的時間都是從出發(fā)點到目的路由器的所花費的時間,,因為中間是包的轉(zhuǎn)發(fā),所以花費的時間很少,而且有些路由器負(fù)荷比較大,響應(yīng)時間比較長,也就有可能出現(xiàn)前面的路由器返回的時間比后面一跳路由器返回的時間還要長的情況,。 ping和tracert的原理: 1、PING命令主要作用是測試2臺設(shè)備網(wǎng)絡(luò)層之間是否。 其工作原理:假設(shè)A路由器PING B路由器,,A路由器會先發(fā)一個ICMP ECHO報文(TYPE=8,CODE=0),,如果2臺設(shè)備 之間路由是可達的,,B收到后會回一個ICMP REPLY的報文(TYPE=0,CODE=0),。ping命令也可以顯示經(jīng)過的跳數(shù), 這樣也可以通過PING命令查看我經(jīng)過了哪幾跳,,每一跳的IP地址,命令參數(shù)是-R,。但不是所有的路由器均支持該 命令,,并且IP首部中留給選項的空間有限,不能存放太多的路徑,,一般最多就只能存放9個IP地址,。 2、TRACERT命令主要作用和PING -R的作用一樣,,是測試2臺設(shè)備之間經(jīng)過的跳數(shù)和每一跳的IP地址,。其工作原 理分2種情況說明: 1)假設(shè)A是一臺PC機,由A來TRACERT B,,A首先會發(fā)送一個ICMP ECHO的報文(TYPE=8,,CODE=0), 并且該報 文的TTL=1,,第一個路由器收到后會丟棄該報文不轉(zhuǎn)發(fā),,并返回一個ICMP超時的報文(TYPE=11,CODE=0),,然后 A會在發(fā)送一個ICMP ECHO的報文,,這時TTL=2,下一個路由器收到后又回一個ICMP超時報文,。當(dāng)報文到達B后,,B會 回給A一個ICMP端口不可達的報文(TYPE=3,CODE=3),。 2)假設(shè)A是一臺路由器,,由A來TRACERT B,A首先會發(fā)送一個UDP報文,,并且UDP的端口號大于30000以保證這個 端口號在B上未被占用,,該報文的TTL=1,第一個路由器收到后會丟棄該報文不轉(zhuǎn)發(fā),,并返回一個ICMP超時的報文 (TYPE=11,,CODE=0),然后A會在發(fā)送一個UDP的報文,,這時TTL=2,,下一個路由器收到后又回一個ICMP超時報文。 當(dāng)報文到達B后,,B會回給A一個ICMP端口不可達的報文(TYPE=3,,CODE=3) --------------------- 本文來自 很吵請安靜 的CSDN 博客 ,,全文地址請點擊:https://blog.csdn.net/qq_30448629/article/details/51357497?utm_source=copy |
|