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/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 簡述 clearfix 的原理
- 簡述回撥函式的意義和作用函式
- 簡述SSL證書的作用
- [hadoop]mapreduce原理簡述Hadoop
- Token 的作用和原理
- Linux route命令簡述Linux
- butterknife原始碼簡單分析&原理簡述原始碼
- 簡述RPC原理實現RPC
- html2image原理簡述HTML
- 簡述Linux chmod命令的知識Linux
- 簡述什麼是Promise及其作用,本質Promise
- ping和Traceroute命令祥解
- 簡述top命令與結束程式kill命令
- ping 命令
- Ping命令
- nmap攻擊技術原理簡述
- 直播電商原始碼,簡述直播的實現原理原始碼
- solaris 之ping命令使用簡要及unset(export)Export
- linux命令:ping命令Linux
- 改變IP地址的原理和作用
- 簡述Linux中ps命令和輸出風格引數Linux
- 簡述truncate、delete和dropdelete
- MySQL兩階段提交過程原理簡述MySql
- Docker的Ubuntu映象安裝的容器無ifconfig命令和ping命令DockerUbuntu
- 剖析程式中SVCHOST的作用和原理(轉)
- redis自學(33)哨兵的作用和工作原理Redis
- 詳解python的super()的作用和原理Python
- DOS-ping命令
- Ping命令詳解
- Elasticsearch-BulkRequest和BulkProcessor簡述Elasticsearch
- JDK、JRE和JVM簡述JDKJVM
- 簡單的 ping 測試
- 交換機的作用、功能和工作原理詳解
- Python作用域詳述Python
- source命令的作用
- javascript作用域和作用域鏈簡單介紹JavaScript
- Linux命令ping,nc的學習Linux
- 簡述forEach()、map()、every()、some()和filter()的用法Filter