ping命令的作用和原理簡述
簡單來說,「ping」是用來探測本機與網路中另一主機之間是否可達的命令,如果兩臺主機之間ping不通,則表明這兩臺主機不能建立起連線。ping是定位網路通不通的一個重要手段。
ping 命令是基於 ICMP 協議來工作的,「 ICMP 」全稱為 Internet 控制報文協議( Internet Control Message Protocol)。ping 命令會傳送一份ICMP回顯請求報文給目標主機,並等待目標主機返回ICMP回顯應答。因為ICMP協議會要求目標主機在收到訊息之後,必須返回ICMP應答訊息給源主機,如果源主機在一定時間內收到了目標主機的應答,則表明兩臺主機之間網路是可達的。
舉一個例子來描述「ping」命令的工作過程:
假設有兩個主機,主機A(192.168.0.1)和主機B(192.168.0.2),現在我們要監測主機A和主機B之間網路是否可達,那麼我們在主機A上輸入命令:ping 192.168.0.2
此時,ping命令會在主機A上構建一個 ICMP的請求資料包(資料包裡的內容後面再詳述),然後 ICMP協議會將這個資料包以及目標IP(192.168.0.2)等資訊一同交給IP層協議。
IP層協議得到這些資訊後,將源地址(即本機IP)、目標地址(即目標IP:192.168.0.2)、再加上一些其它的控制資訊,構建成一個IP資料包。
IP資料包構建完成後,還不夠,還需要加上MAC地址,因此,還需要透過ARP對映表找出目標IP所對應的MAC地址。當拿到了目標主機的MAC地址和本機MAC後,一併交給資料鏈路層,組裝成一個資料幀,依據乙太網的介質訪問規則,將它們傳送出出去。
當主機B收到這個資料幀之後,會首先檢查它的目標MAC地址是不是本機,如果是就接收下來處理,接收之後會檢查這個資料幀,將資料幀中的IP資料包取出來,交給本機的IP層協議,然後IP層協議檢查完之後,再將ICMP資料包取出來交給ICMP協議處理,當這一步也處理完成之後,就會構建一個ICMP應答資料包,回發給主機A,
在一定的時間內,如果主機A收到了應答包,則說明它與主機B之間網路可達,如果沒有收到,則說明網路不可達。除了監測是否可達以外,還可以利用應答時間和發起時間之間的差值,計算出資料包的延遲耗時。
透過ping的流程可以發現,ICMP協議是這個過程的基礎,是非常重要的.
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/15498/viewspace-2286521/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 我們會經常用到ping命令,你知道它的作用和原理嗎?
- 簡述回撥函式的意義和作用函式
- 簡述SSL證書的作用
- 簡述Linux chmod命令的知識Linux
- Ping命令
- ping 命令
- 簡述RPC原理實現RPC
- Token 的作用和原理
- html2image原理簡述HTML
- 簡述top命令與結束程式kill命令
- 簡述大前端技術棧的渲染原理前端
- 簡述Linux中ps命令和輸出風格引數Linux
- nmap攻擊技術原理簡述
- 改變IP地址的原理和作用
- JDK、JRE和JVM簡述JDKJVM
- 簡單的 ping 測試
- Linux基礎命令---pingLinux
- 直播電商原始碼,簡述直播的實現原理原始碼
- MySQL兩階段提交過程原理簡述MySql
- Python作用域詳述Python
- Elasticsearch-BulkRequest和BulkProcessor簡述Elasticsearch
- Linux下history命令簡單原理Linux
- ES6let命令和塊級作用域和const命令
- redis自學(33)哨兵的作用和工作原理Redis
- Linux ping命令有什麼用?Linux
- 簡述HTTP和HTTPS協議的不同之處HTTP協議
- RPA技術原理與RPA產品形態簡述
- linux 命令尾部&的作用Linux
- 一文讀懂DHCP的工作原理和作用
- 交換機的作用、功能和工作原理詳解
- 簡述為什麼通訊原理中正數的相頻是0
- tomcat + spring mvc 原理(一):tomcat原理綜述和靜態架構TomcatSpringMVC架構
- redis的repl-ping-slave-period和repl-ping-replica-periodRedis
- Dojo簡述
- CNN 簡述CNN
- 簡述Linux下的靜態庫和動態庫Linux
- 短文1:使用 php-socket 簡述 http 伺服器原理PHPHTTP伺服器
- 短文1.1:使用 php-socket 簡述 http 伺服器原理PHPHTTP伺服器