【太閣課堂】Ping 和 traceroute 的工作原理以及作用+實(shí)驗(yàn)
在工作中,我們會(huì)經(jīng)常使用ping 和traceroute 來(lái)檢測(cè)網(wǎng)絡(luò)的連通性,那么今天就給大家分析一下這兩個(gè)小工具的工作原理以及常用的可選項(xiàng)參數(shù)的具體含義:
?
(1)Ping 的工作過(guò)程

?
Ping 會(huì)發(fā)送 echo request message 到某個(gè)地址,然后等待應(yīng)(reply),當(dāng) echo request 到達(dá)目標(biāo)地址以后,在一個(gè)有效的時(shí)間內(nèi)(timeout 之前)返回 echo reply message 給源地 址,則說(shuō)明目的地可達(dá)。如在有效時(shí)間內(nèi),沒(méi)有收到回應(yīng),則在發(fā)送端顯示超時(shí)。
Ping 命令是把 ICMP 報(bào)文中的標(biāo)示符置為發(fā)送該 ICMP 報(bào)文的進(jìn)程,這樣在對(duì)端可以區(qū) 分出從本端運(yùn)行的多個(gè) Ping 實(shí)例。Ping 命令每發(fā)送一個(gè) ICMP 回顯請(qǐng)求報(bào)文,順序號(hào)就加 1,順序號(hào)從 1 開(kāi)始,不同的系 統(tǒng)發(fā)送回顯請(qǐng)求的數(shù)量不同,默認(rèn)情況發(fā)送 5 個(gè)回顯請(qǐng)求報(bào)文。
也可以通過(guò)命令行參數(shù)設(shè) 置發(fā)送回顯請(qǐng)求報(bào)文的個(gè)數(shù),如果對(duì)端可達(dá),則在對(duì)端會(huì)相應(yīng)回應(yīng) 5 個(gè)和請(qǐng)求端同樣序號(hào) 的 ICMP 回應(yīng)報(bào)文。?
(2)Tracert 的工作過(guò)程?
?

?
?
源端首先發(fā)送 3 個(gè) TTL 字段的值都為 1 的 UDP 數(shù)據(jù)報(bào)給遠(yuǎn)程設(shè)備,使用隨機(jī)的任何大 于 32768 的端口地址作為目標(biāo)設(shè)備的接受報(bào)文端口,TTL 為 1 的數(shù)據(jù)報(bào)到達(dá)第一跳路由器以后 隨即超時(shí),路由器響應(yīng)源設(shè)備一個(gè) ICMP 的超時(shí)報(bào)文,之后源端再發(fā)送 3 個(gè) UDP 數(shù)據(jù)報(bào), 這次更改 TTL 值為 2,即經(jīng)過(guò) 2 個(gè)路由器以后,響應(yīng)源端 ICMP 超時(shí)報(bào)文,依次類推,直到 這些 UDP 報(bào)文到達(dá)了目標(biāo)設(shè)備。
由于發(fā)送的報(bào)文中的目的端口,目標(biāo)設(shè)備接收到 ICMP 報(bào)文后,由于報(bào)文的端口是一個(gè) 在目標(biāo)設(shè)備沒(méi)有使用的端口,目標(biāo)設(shè)備就會(huì)響應(yīng) ICMP port unreachable 信息給源端,表示 目標(biāo)端口不可達(dá),同時(shí)說(shuō)明 Tracert 執(zhí)行完畢。從而可以從源端顯示的結(jié)果中,看到到目標(biāo) 設(shè)備所經(jīng)過(guò)的路徑。?
Tracert 發(fā)送數(shù)據(jù)報(bào)的 TTL 值最大可以到 30,每一次發(fā)送如果在指定的時(shí)間的內(nèi)沒(méi)有回 應(yīng)報(bào)文,在發(fā)送端就會(huì)顯示超時(shí),如果發(fā)送 30 跳的值后,仍然顯示為超時(shí),表明無(wú)法達(dá)到 目標(biāo)設(shè)備,測(cè)試失敗。默認(rèn)情況沒(méi)有發(fā)送報(bào)文的超時(shí)時(shí)間為 5 秒,可以在 0ms~65535ms 之 間進(jìn)行設(shè)置。
IPv4 網(wǎng)絡(luò)環(huán)境:(H3C 設(shè)備上需要開(kāi)啟) 需要在中間設(shè)備(源端與目的端之間的設(shè)備)上開(kāi)啟 ICMP 超時(shí)報(bào)文發(fā)送功能。如果中 間設(shè)備是 H3C 設(shè)備,需要在設(shè)備上執(zhí)行 ip ttl-expires enable 命令 需要在目的端開(kāi)啟 ICMP 目的不可達(dá)報(bào)文發(fā)送功能。
如果目的端是 H3C 設(shè)備,需要在設(shè) 備上執(zhí)行 ip unreachables enable 命令。
實(shí)驗(yàn):
實(shí)驗(yàn)環(huán)境,在R1和R3 上分別配置環(huán)回口,三個(gè)路由器之間使用OSPF 全部宣告到Area 0 .
實(shí)驗(yàn)一:ping 的使用
以下是常用的一些命令
[R1]ping ?
? -a? ? ? ? ? ? ?Select source IP address, the default is the IP address of the
? ? ? ? ? ? ? ? ?output interface
? -c? ? ? ? ? ? ?Specify the number of echo requests to be sent, the default is
? ? ? ? ? ? ? ? ?5
? -f? ? ? ? ? ? ?Set Don't Fragment flag in packet (IPv4-only)
? -h? ? ? ? ? ? ?Specify TTL value for echo requests to be sent, the default is
? ? ? ? ? ? ? ? ?255
? -i? ? ? ? ? ? ?Select the interface sending packets
?
?
? -name? ? ? ? ? Display the host name of the destination address
?
? -s? ? ? ? ? ? ?Specify the number of data bytes to be sent, the default is
? ? ? ? ? ? ? ? ?56bytes
? -si? ? ? ? ? ? Set the specified interface as the source interface of ping
? ? ? ? ? ? ? ? ?packet
? ip? ? ? ? ? ? ?IP Protocol
? ipv6? ? ? ? ? ?IPv6 Protocol
?
這些參數(shù)是可以結(jié)合使用的, 比如檢查鏈路MTU 。

配置解釋
[R1]ping -a 1.1.1.1 -s 1500 3.3.3.3?
如圖, 是在R1 上使用1.1.1.1 作為源地址, 3.3.3.3 作為目的地址,發(fā)送數(shù)據(jù)包大小為1500
實(shí)驗(yàn)二:tracert的使用
以下是常用的一些命令
[R1]tracert ?
? -a? ? ? ? ? ? ?Set source IP address, the default is the IP address of the
? ? ? ? ? ? ? ? ?output interface
? -f? ? ? ? ? ? ?First time to live, the default is 1
? -m? ? ? ? ? ? ?Max time to live, the default is 30
? -name? ? ? ? ? Display the host name of the router on each hop
? -p? ? ? ? ? ? ?Destination UDP port number, the default is 33434
? -q? ? ? ? ? ? ?Number of probe packet, the default is 3
? ipv6? ? ? ? ? ?IPv6 Protocol
?

配置解釋
[R1]tracert -a 1.1.1.1 3.3.3.3 以1.1.1.1 為源,3.3.3.3 為目的地探測(cè)每一跳路徑
[R1]tracert -a 1.1.1.1 -f 2 3.3.3.3 指定以1.1.1.1 為源3.3.3.3 為目的地,每次ttl都為2,探測(cè)路徑,隔跳探測(cè)。
?