1. ICMP是「Internet Control Message Ptotocol」的縮寫。它是TCP/IP協議族的一個子協議,用於在IP主機、路由器之間傳遞控制消息。緩存
控制消息是指網絡通不通、主機是否可達、路由是否可用等網絡自己的消息。這些控制消息雖然並不傳輸用戶數據,可是對於用戶數據的傳遞起着重要的做用。在網絡中常常會使用到ICMP協議。例如常常用於檢查網絡不通的ping命令,這個ping的過程實際上就是ICMP協議工做的過程。還有跟蹤路由的trancert命令也是基於ICMP協議的。服務器
2. ping.exe的原理:向指定的IP地址發送必定長度的數據包,按照約定,若指定IP地址存在的話,會返回一樣大小的數據包,固然,若在特定時間內沒有返回,就是「超時」,會被認爲指定的IP地址不存在。因爲ping使用的是ICMP協議,有些防火牆軟件會屏蔽ICMP協議,因此有時候ping的結果只能做爲參考,ping不通並不必定說明對方IP不存在。網絡
3. ping命令執行過程詳解:spa
機器A ping 機器B進程
同一網段ip
1.ping通知系統創建一個固定格式的ICMP請求數據包路由
2.ICMP協議打包這個數據包和機器B的IP地址轉交給IP協議層(一組後臺運行的進程,與ICMP相似)io
3.IP層協議將以機器B的IP地址爲目的地址,本機IP地址爲源地址,加上一些其餘的控制信息,構建一個IP數據包後臺
4.獲取機器B的MAC地址原理
IP層協議經過機器B的IP地址和本身的子網掩碼,發現它跟本身屬同一網絡,就直接在本網絡查找這臺機器的MAC。
若兩臺機器以前有過通訊,在機器A的ARP緩存表應該有B機IP與其MAC的映射關係;若沒有,則發送ARP請求廣播,獲得機器B的MAC地址,一併交給數據鏈路層
機器B收到這個數據幀後,先檢查目的地址,和本機MAC地址對比
符合,接收。接收後檢查該數據幀,將IP數據包從幀中提取出來,交給本機的IP協議層協議。IP層檢查後,將有用的信息提取交給ICMP協議,後者處理後,立刻構建一個ICMP應答包,發送給主機A,其過程和主機A發送ICMP請求包到主機B相似(這時候主機B已經知道了主機A的MAC地址,不需再發ARP請求);不符合,丟棄。
不一樣網段
1.ping通知系統創建一個固定格式的ICMP請求數據包
2.ICMP協議打包這個數據包和機器B的IP地址轉交給IP協議層(一組後臺運行的進程,與ICMP相似)
3.IP層協議將以機器B的IP地址爲目的地址,本機IP地址爲源地址,加上一些其餘的控制信息,構建一個IP數據包
4.獲取主機B的MAC地址
4. ping的結果:
1.Request timed out:對方與本身不在同一網段內,經過路由也沒法到達;對方已關機,或者網絡上沒有這個地址;對方存在,不過設置了ICMP數據包過濾;錯誤設置IP地址
2.Destination host Unreachable:本身未設定默認路由,對方跟本身不在同已網段。
3.Bad ip address:沒有鏈接到DNS服務器,沒法解析IP,也多是IP不存在
4.Source quench received:對方或中途服務器繁忙而沒法應答
5.Ping 127.0.0.1:若是ping不通,則代表本地址TCP/IP協議不能正常工做