雲小課|網絡好不好,ping一下就知道


摘要:在測試和部署網絡通信應用時,我們經常會遇到網絡不通的問題,一般都會想到ping一下。本文將帶您了解ping命令的作用和原理~

在測試和部署網絡通信應用時,我們經常會遇到網絡不通的問題。一般都會想到ping一下。那么ping命令的作用和原理到底是什么呢?

ping 命令是基於 ICMP 協議來工作的,要明白ping, 先了解下ICMP協議吧~

ICMP協議

ICMP全稱為互聯網控制報文協議(Internet Control Message Protocol)。

那么具體是怎么“控制”的呢?

在復雜的網絡傳輸環境里,數據包常常會遇到各種問題導致傳輸失敗。網絡層的IP協議是一種無連接的,不可靠的數據包協議,它並不能保證數據一定被送達,因此,我們需要其它的協議,在數據包傳發送異常時,能將異常信息傳回來,這樣才可以調整傳輸策略,以此來控制整個局面。

ICMP協議格式

ICMP 協議是通過IP協議來發送的,報文封裝在 IP 包里面。如下:

ICMP報文格式:

ICMP數據包由8bit的類型字段和8bit的代碼字段以及16bit的校驗字段再加上選項數據組成。

ICMP報文大致分為兩類:查詢報文類型和差錯報文類型。

查詢報文類型

查詢報文主要應用於ping查詢、子網掩碼查詢、時間戳查詢等。

ping命令其實就是對ICMP協議查詢報文類型的使用。

主機A ping 主機B時,ping命令在主機A構建ICMP請求數據包時,ICMP的類型字段為8(回送請求),當主機B構建ICMP請求數據包時,ICMP的類型字段為0(回送應答)。如果主機A在一定時間內收到了主機B的應答,則表明兩台主機之間網絡是可達的。

差錯報文類型

差錯報文主要產生於數據傳送發送錯誤的時候,包括:目標不可達(網絡不可達、主機不可達、協議不可達、端口不可達、禁止分片等)、超時、參數問題、重定向(網絡重定向、主機重定向等)等。

IP 路由器無法將 IP 數據包發送給目標地址時,會給發送端主機返回一個目標不可達的 ICMP 消息,並在這個消息中顯示不可達的具體原因,原因記錄在 ICMP 包頭的代碼字段。

ping命令的工作過程

舉一個例子來描述「ping」命令的工作過程:

假設有兩個主機,主機A(192.168.0.1)和主機B(192.168.0.2),現在我們要監測主機A和主機B之間網絡是否可達,

在主機A上輸入命令:ping 192.168.0.2

1)發送端主機構建ICMP請求數據包。ping命令會在主機A上構建一個 ICMP的請求數據包。數據包包含多個字段,主要的有類型和序號。

類型:在請求數據包中,類型字段為8;

序號:主要用於區分連續 ping 的時候發出的多個數據包。

每發出一個請求數據包,序號會自動加 1。為了能夠計算往返時間 RTT,它會在報文的數據部分插入發送時間。

2)IP層構建IP數據包。 ICMP協議會將這個數據包以及目標IP(192.168.0.2)等信息一同交給IP層協議。IP層協議得到這些信息后,將源地址(即本機IP)、目標地址(即目標IP:192.168.0.2)、再加上一些其它的控制信息,構建成一個IP數據包。

3)加入MAC地址。需要通過ARP映射表找出目標IP(192.168.0.2)所對應的MAC地址。當拿到了目標主機的MAC地址和本機MAC后,一並交給數據鏈路層,組裝成一個數據幀,依據以太網的介質訪問規則,將它們傳送出出去。

主機B收到數據幀后,進行如下步驟:

  1. 檢查MAC地址,丟棄或接收,提取IP數據包。當主機B收到這個數據幀之后,會首先檢查它的目標MAC地址是不是本機,如果是就接收下來處理,接收之后會檢查這個數據幀,將數據幀中的IP數據包取出來,交給本機的IP層協議。
  2. IP層檢查IP。IP層協議檢查完之后,再將ICMP數據包取出來交給ICMP協議處理。
  3. 構建ICMP應答包。應答包的類型字段為 0,序號為接收到的請求數據包中的序號。
  4. 應答數據包回發給主機A。

在一定的時間內,如果主機A收到了應答包,則說明它與主機B之間網絡可達,如果沒有收到,則說明網絡不可達。除了監測是否可達以外,還可以利用應答時間和發起時間之間的差值,計算出數據包的延遲耗時。

課堂練習

關於ICMP協議與ping命令如何工作我們已經了解了,那對於我們在雲上搭建的應用,如何測試彈性雲服務器間的通信狀況呢?

回憶一下,彈性雲服務器數據流量的進出是需要遵守安全組規則的,沒有安全組規則的允許,誰都不能訪問。

那我們就可以在安全組中添加放通ICMP協議的安全組規則,允許其他雲服務器通過 ICMP 協議訪問該雲服務器,進而實現通過ping命令來測試彈性雲服務器間的通信狀況了。

安全組規則配置如下:

獲取更多安全組信息,請戳這里

本文分享自華為雲社區《【雲小課】基礎服務第65課 網絡知識一籮筐——網絡好不好,ping一下就知道》,原文作者:雲小萌。

 

點擊關注,第一時間了解華為雲新鮮技術~


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM