ping的使用與實(shí)現(xiàn)原理剖析
時(shí)間:2023-02-20 09:22:01 | 來(lái)源:建站知識(shí)
時(shí)間:2023-02-20 09:22:01 來(lái)源:建站知識(shí)
ping的使用與實(shí)現(xiàn)原理剖析:
ping簡(jiǎn)介
在診斷網(wǎng)絡(luò)問(wèn)題時(shí),我們經(jīng)常會(huì)使用ping命令。它可以快速告訴我們,某個(gè)域名是否可以可以訪問(wèn),訪問(wèn)延時(shí)高不高。
雖然在網(wǎng)絡(luò)日益復(fù)雜的今天,一臺(tái)主機(jī)是否能夠ping通,跟該主機(jī)是否能夠連接上并沒(méi)有必然的聯(lián)系,但很多時(shí)候還是能夠幫助我們發(fā)現(xiàn)不少的問(wèn)題。
舉個(gè)例子,廣大IT群眾最喜歡用百度來(lái)測(cè)試網(wǎng)絡(luò)情況,用的就是ping。
? ~ ping www.baidu.comPING www.a.shifen.com (14.215.177.38): 56 data bytes64 bytes from 14.215.177.38: icmp_seq=0 ttl=55 time=7.146 ms64 bytes from 14.215.177.38: icmp_seq=1 ttl=55 time=7.228 ms64 bytes from 14.215.177.38: icmp_seq=2 ttl=55 time=7.018 ms64 bytes from 14.215.177.38: icmp_seq=3 ttl=55 time=7.243 ms^C--- www.a.shifen.com ping statistics ---4 packets transmitted, 4 packets received, 0.0% packet lossround-trip min/avg/max/stddev = 7.018/7.159/7.243/0.089 ms
ping輸出分析
前面例子中,ping輸出的內(nèi)容包含三部分:
輸出一:ping的主機(jī)對(duì)應(yīng)的IP地址(進(jìn)行了DNS解析),向該主機(jī)發(fā)送的數(shù)據(jù)包的大?。?6字節(jié))。
PING www.a.shifen.com (14.215.177.38): 56 data bytes
輸出二:來(lái)自主機(jī)的響應(yīng)信息。
- icmp_seq:序列號(hào),表示第幾個(gè)個(gè)響應(yīng)包(遞增的數(shù)字)。
- time:請(qǐng)求往返耗時(shí)。
- ttl:IP數(shù)據(jù)報(bào)的ttl設(shè)置。
- 64 bytes:響應(yīng)的數(shù)據(jù)包大小是64字節(jié)。
64 bytes from 14.215.177.38: icmp_seq=0 ttl=55 time=7.146 ms64 bytes from 14.215.177.38: icmp_seq=1 ttl=55 time=7.228 ms64 bytes from 14.215.177.38: icmp_seq=2 ttl=55 time=7.018 ms64 bytes from 14.215.177.38: icmp_seq=3 ttl=55 time=7.243 ms
輸出三:ping整體請(qǐng)求/響應(yīng)概覽。
- 一共發(fā)送了4個(gè)ping請(qǐng)求,收到4個(gè)ping響應(yīng),丟包率是0%。
- 最小/平均/最大往返時(shí)間:7.018/7.159/7.243 ms。
--- www.a.shifen.com ping statistics ---4 packets transmitted, 4 packets received, 0.0% packet lossround-trip min/avg/max/stddev = 7.018/7.159/7.243/0.089 ms
實(shí)現(xiàn)原理
ping命令主要基于ICMP(Internet Control Message Protocol)實(shí)現(xiàn),它包含了兩部分:客戶(hù)端、服務(wù)器。
- 客戶(hù)端:向服務(wù)端發(fā)送ICMP回顯請(qǐng)求報(bào)文(echo message)。
- 服務(wù)端:向客戶(hù)端返回ICMP回西顯響應(yīng)報(bào)文(echo reply message)。
ICMP報(bào)文通用格式如下:
- 類(lèi)型:1個(gè)字節(jié)。8表示回顯請(qǐng)求報(bào)文,0表示回顯響應(yīng)報(bào)文。
- 代碼:1個(gè)字節(jié)?;仫@請(qǐng)求報(bào)文、回顯響應(yīng)報(bào)文 時(shí)均為0。
- 校驗(yàn)和:2個(gè)字節(jié)。非重點(diǎn),略過(guò)。
- 標(biāo)識(shí)符:2個(gè)字節(jié)。發(fā)送ICMP報(bào)文的客戶(hù)端進(jìn)程的id,服務(wù)端會(huì)回傳給客戶(hù)端。因?yàn)橥粋€(gè)客戶(hù)端可能同時(shí)運(yùn)行多個(gè)ping程序,這樣客戶(hù)端收到回西顯報(bào)文,可以知道是響應(yīng)給哪個(gè)客戶(hù)端進(jìn)程的。
- 序列號(hào):2個(gè)字節(jié)。從0開(kāi)始,客戶(hù)端每次發(fā)送新的回顯請(qǐng)求時(shí)+1。服務(wù)端原樣會(huì)傳。
- 數(shù)據(jù):6個(gè)字節(jié)??蛻?hù)端記錄回顯請(qǐng)求的發(fā)送時(shí)間,服務(wù)端記錄回西顯響應(yīng)的發(fā)送時(shí)間
wireshark抓包分析
以前面ping百度為例,下面是wireshark的抓包截圖??梢钥吹?,包含了4組請(qǐng)求、響應(yīng)。
看下第1個(gè)回顯請(qǐng)求。類(lèi)型為8,代碼為0,序列號(hào)為0,標(biāo)識(shí)符為發(fā)送進(jìn)程的id。
再看下第1個(gè)回顯響應(yīng)。類(lèi)型為0,代碼為0,序列號(hào)、標(biāo)識(shí)符與回顯請(qǐng)求的一致。
最后看下回顯請(qǐng)求->響應(yīng)的耗時(shí)間。請(qǐng)求發(fā)送時(shí)間為 May 13, 2018 18:59:14.022371000 CST,請(qǐng)求->響應(yīng)的往返耗時(shí)為 7.092毫秒。
其他3組數(shù)據(jù)可參照上面的方法進(jìn)行分析。
寫(xiě)在后面
ping是很常用的網(wǎng)絡(luò)監(jiān)測(cè)手段,開(kāi)發(fā)者有必要掌握它的用法,以及懂得如何分析它的輸出結(jié)果。
此外,對(duì)于時(shí)長(zhǎng)需要跟網(wǎng)絡(luò)打交道的開(kāi)發(fā)者來(lái)說(shuō),最好還能掌握ping的實(shí)現(xiàn)原理,這樣在遇到棘手的網(wǎng)絡(luò)問(wèn)題時(shí),能夠有更清晰的解決問(wèn)題的思路。
比如,因?yàn)椴磺‘?dāng)?shù)脑O(shè)置,導(dǎo)致云主機(jī)服務(wù)能正常訪問(wèn),但卻死活ping不通,這個(gè)時(shí)候?qū)?shí)現(xiàn)細(xì)節(jié)的了解就派上用場(chǎng)了。
最后,文章內(nèi)容如有錯(cuò)漏,敬請(qǐng)指出。
相關(guān)鏈接
Echo or Echo Reply Message
https://tools.ietf.org/html/rfc792
關(guān)鍵詞:原理,剖析,實(shí)現(xiàn),使用