ICMP協議是「Internet Control Message Ptotocol」(因特網控制消息協議)的縮寫。它是TCP/IP協議族的一個子協議,用於在IP主機、路由器之間傳遞控制消息。緩存
Ping(Packet Internet Groper),因特網包探索器,用於驗證網絡鏈接(TCP/IP)的連通性。使用Ping命令向目標主機或IP地址發送ICMP迴應請求,驗證主機可否鏈接到TCP/IP網絡和網絡資源,也能夠用其隔離網絡硬件和不兼容配置。根據返回的信息,能夠推斷TCP/IP參數是否配置正確,以及運行是否正常、網絡是否通暢等。服務器
其實,Ping就是一個測試程序,一般用Ping目標主機的IP地址或域名地址,看它是否響應,來判斷網絡的連通性。若是Ping運行正確,大致上就能夠排除網絡訪問層、網卡、MODEM的輸入輸出線路、電纜和路由器等存在的故障,從而縮小問題範圍。但因爲能夠自定義所發數據報的大小及無休止的高速發送,ping也被某些別有用心的做爲DDOS(拒絕服務攻擊)的工具;網絡
命令格式以下:工具
ping 目標主機地址(IP或者域名)[參數]測試
下圖顯示了一些有用的Ping命令選項spa
測試方式:code
出現提示消息以下:blog
示例:有A、B、C、D四臺機子(其中A、B的IP分別爲192.168.0.4-192.168.0.5,子網掩碼均爲255.255.255.0;C、D的IP分別爲192.168.1.3-192.168.1.4,子網掩碼均爲255.255.255.0),一臺路由RA鏈接以上兩個子網。進程
1)、在同一網段ip
在主機A上運行「Ping 192.168.0.5」後,都發生了些什麼呢? 首先,Ping命令會構建一個固定格式的ICMP請求數據包,而後由ICMP協議將這個數據包連同地址「192.168.0.5」一塊兒交給IP層協議(和 ICMP同樣,其實是一組後臺運行的進程),IP層協議將以地址「192.168.0.5」做爲目的地址,本機IP地址做爲源地址,加上一些其餘的控制信息,構建一個IP數據包,並想辦法獲得192.168.0.5的MAC地址(物理地址,這是數據鏈路層協議構建數據鏈路層的傳輸單元——幀所必需的),以便交給數據鏈路層構建一個數據幀。關鍵就在這裏,IP層協議經過對比機器B的IP地址、本身的IP地址和本身的子網掩碼,發現它跟本身屬同一網絡,就直接在本網絡內查找這臺機器的MAC。若是之前兩機有過通訊,在A機的ARP緩存表應該有B機IP與其MAC的映射關係;若是沒有,就發一個ARP請求廣播,獲得B機的MAC, 一併交給數據鏈路層。後者構建一個數據幀,目的地址是IP層傳過來的物理地址,源地址則是本機的物理地址,還要附加上一些控制信息,依據以太網的介質訪問規則,將它們傳送出去。
主機B收到這個數據幀後,先檢查它的目的地址,並和本機的物理地址對比,如符合,則接收;不然丟棄。接收後檢查該數據幀,將IP數據包從幀中提取出來,交給本機的IP層協議。一樣,IP層檢查後,將有用的信息提取後交給ICMP協議,後者處理後,立刻構建一個ICMP應答包,發送給主機A,其過程和主機A發送ICMP請求包到主機B如出一轍。
2)、在不一樣網段
在主機A上運行「Ping 192.168.1.4」後,開始跟上面同樣,到了怎樣獲得MAC地址時,IP協議經過計算髮現D機與本身不在同一網段內,就直接將交由路由處理,也就是將路由的MAC取過來,至於怎樣獲得路由的MAC,跟上面同樣,先在ARP緩存表找,找不到就廣播吧。路由獲得這個數據幀後,再跟主機D進行聯繫,若是找不到,就向主機A返回一個超時的信息。