ICMP,ping 命令 學(xué)習(xí)筆記

ICMP 協(xié)議介紹

IP 協(xié)議并不是一個(gè)可靠的協(xié)議,它不保證數(shù)據(jù)被送達(dá),那么保證數(shù)據(jù)送達(dá)的工作應(yīng)該由其他的模塊來完成。其中一個(gè)重要的模塊就是 ICMP(網(wǎng)絡(luò)控制報(bào)文)協(xié)議。

當(dāng)傳送 IP 數(shù)據(jù)包發(fā)生錯(cuò)誤,比如主機(jī)不可達(dá),路由不可達(dá)等等,ICMP 協(xié)議將會(huì)把錯(cuò)誤信息封包,然后傳送回給主機(jī)。給主機(jī)一個(gè)處理錯(cuò)誤的機(jī)會(huì),這 也就是為什么說建立在 IP 層以上的協(xié)議是可能做到安全的原因。

ICMP即互聯(lián)網(wǎng)控制消息協(xié)議(Internal Control Message Protocol),與IP協(xié)議一樣同屬TCP/IP模型中的網(wǎng)絡(luò)層,并且ICMP數(shù)據(jù)包是包裹在IP數(shù)據(jù)包中的。
他的作用是報(bào)告一些網(wǎng)絡(luò)傳輸過程中的錯(cuò)誤與做一些同步工作。
ICMP數(shù)據(jù)包有許多類型。每一個(gè)數(shù)據(jù)包只有前4個(gè)字節(jié)是相同域的,剩余的字段有不同的數(shù)據(jù)包類型的不同而不同。ICMP數(shù)據(jù)包的格式如下:

  • 類型字段:指明該數(shù)據(jù)包屬于什么類型(大分類),長度1個(gè)字節(jié)。
  • 代碼字段:指明數(shù)據(jù)包屬于大類里面的哪個(gè)小類,長度1個(gè)字節(jié)。類型字段與代碼字段共同決定ICMP數(shù)據(jù)包類型,以及后續(xù)字段含義。
  • 校驗(yàn)和 : 指明該數(shù)據(jù)包的校驗(yàn)和,長度2個(gè)字節(jié)。該校驗(yàn)和覆蓋整個(gè)ICMP數(shù)據(jù)包。

常見的ICMP數(shù)據(jù)包:

  • ICMP端口不可達(dá)差錯(cuò)
  • ICMP地址請(qǐng)求與應(yīng)答。

其中第1種為ICMP差錯(cuò)數(shù)據(jù)包;第2種是ICMP查詢數(shù)據(jù)包。

ping 命令

示例:

ping ms.com
Pinging ms.com [10.195.48.99] with 32 bytes of data:
Reply from 10.195.48.99: bytes=32 time=251ms TTL=41
Reply from 10.195.48.99: bytes=32 time=251ms TTL=41
Reply from 10.195.48.99: bytes=32 time=251ms TTL=41
Reply from 10.195.48.99: bytes=32 time=251ms TTL=41
Ping statistics for 10.195.48.99:
Packets: Sent = 4, Received = 4, Lost = 0 (0% loss),
Approximate round trip times in milli-seconds:
Minimum = 251ms, Maximum = 251ms, Average = 251ms

TTL是 Time To Live的縮寫,該字段指定IP包被路由器丟棄之前允許通過的最大網(wǎng)段數(shù)量。

ping命令是用來查看網(wǎng)絡(luò)上另一個(gè)主機(jī)系統(tǒng)的網(wǎng)絡(luò)連接是否正常的一個(gè)工具。
Ping命令只使用眾多ICMP報(bào)文中的兩種:"請(qǐng)求回送'(ICMP_ECHO)和"請(qǐng)求回應(yīng)'(ICMP_ECHOREPLY)。
ping命令的工作原理是:用類型碼為8(請(qǐng)求回顯)的 ICMP 發(fā)請(qǐng)求,收到請(qǐng)求的主機(jī)則用類型碼為0(回顯應(yīng)答)的 ICMP 回應(yīng)。ping 程序來計(jì)算間隔時(shí)間,并計(jì)算有多少個(gè)包被送達(dá)。用戶就可以判斷網(wǎng)絡(luò)大致的情況。

ICMP協(xié)議規(guī)定:目的主機(jī)必須返回ICMP回送應(yīng)答消息給源主機(jī)。如果源主機(jī)在一定時(shí)間內(nèi)收到應(yīng)答,則認(rèn)為主機(jī)可達(dá)。

ping還給我們一個(gè)看主機(jī)到目的主機(jī)的路由的機(jī)會(huì)。這是因?yàn)?ICMP 的 ping 請(qǐng)求數(shù)據(jù)報(bào)在每經(jīng)過一個(gè)路由器的時(shí)候,路由器都會(huì)把 自己的 IP 地址放到該數(shù)據(jù)報(bào)中。而目的主機(jī)則會(huì)把這個(gè) IP 地址列表復(fù)制到回應(yīng) ICMP 數(shù)據(jù)包中發(fā)回給主機(jī)。

Ping工作過程:
假定主機(jī)A的IP地址是192.168.1.1,主機(jī)B的IP地址是192.168.1.2,都在同一子網(wǎng)內(nèi)。
首先,Ping命令會(huì)構(gòu)建一個(gè)固定格式的ICMP請(qǐng)求數(shù)據(jù)包,然后由ICMP協(xié)議將這個(gè)數(shù)據(jù)包連同地址“192.168.1.2”一起交給IP層協(xié)議,IP層協(xié)議將以地址“192.168.1.2”作為目的地址,本機(jī)IP地址作為源地址,加上一些其他的控制信息,構(gòu)建一個(gè)IP數(shù)據(jù)包,并在一個(gè)映射表中查找出IP地址192.168.1.2所對(duì)應(yīng)的物理地址(也叫MAC地址),一并交給數(shù)據(jù)鏈路層。

后者構(gòu)建一個(gè)數(shù)據(jù)幀,目的地址是IP層傳過來的物理地址,源地址則是本機(jī)的物理地址,還要附加上一些控制信息,依據(jù)以太網(wǎng)的介質(zhì)訪問規(guī)則,將它們傳送出去。
其中映射表由ARP實(shí)現(xiàn)。ARP(Address Resolution Protocol)是地址解析協(xié)議,是一種將IP地址轉(zhuǎn)化成物理地址的協(xié)議。ARP具體說來就是將網(wǎng)絡(luò)層(OSI的第三層)地址解析為數(shù)據(jù)連接層(OSI的第二層)的MAC地址。

主機(jī)B收到這個(gè)數(shù)據(jù)幀后,先檢查它的目的地址,并和本機(jī)的物理地址對(duì)比,如符合,則接收;否則丟棄。接收后檢查該數(shù)據(jù)幀,將IP數(shù)據(jù)包從幀中提取出來,交給本機(jī)的IP層協(xié)議。同樣,IP層檢查后,將有用的信息提取后交給ICMP協(xié)議,后者處理后,馬上構(gòu)建一個(gè)ICMP應(yīng)答包,發(fā)送給主機(jī)A,其過程和主機(jī)A發(fā)送ICMP請(qǐng)求包到主機(jī)B一模一樣。


引用:
(005)TCP/IP協(xié)議-ICMP協(xié)議
ping實(shí)現(xiàn)原理
ping 原理與ICMP協(xié)議

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

推薦閱讀更多精彩內(nèi)容

  • 簡介 用簡單的話來定義tcpdump,就是:dump the traffic on a network,根據(jù)使用者...
    保川閱讀 5,981評(píng)論 1 13
  • 1.這篇文章不是本人原創(chuàng)的,只是個(gè)人為了對(duì)這部分知識(shí)做一個(gè)整理和系統(tǒng)的輸出而編輯成的,在此鄭重地向本文所引用文章的...
    SOMCENT閱讀 13,125評(píng)論 6 174
  • 個(gè)人認(rèn)為,Goodboy1881先生的TCP /IP 協(xié)議詳解學(xué)習(xí)博客系列博客是一部非常精彩的學(xué)習(xí)筆記,這雖然只是...
    貳零壹柒_fc10閱讀 5,086評(píng)論 0 8
  • 協(xié)議基礎(chǔ) 協(xié)議就是計(jì)算機(jī)之間通過網(wǎng)絡(luò)實(shí)現(xiàn)通信時(shí)實(shí)現(xiàn)所達(dá)成的一種“約定”,這種約定使得那些由不同廠商的設(shè)備,不同的C...
    d9fc24a0c9a9閱讀 2,393評(píng)論 0 6
  • 第二章 物理層 頻分復(fù)用:頻分復(fù)用的用戶在同樣的時(shí)間占用不同的帶寬資源(頻率帶寬) 時(shí)分復(fù)用:時(shí)分復(fù)用的用戶在不同...
    PramaWells閱讀 3,727評(píng)論 1 3