【網路協議】ICMP協議、Ping、Traceroute
ICMP協議
ICMP經常被認為是IP層的一個組成部分,它是網路層的一個協議,它傳遞差錯報文以及其他需要注意的資訊,ICMP報文通常被IP層或更高層(TCP、UDP等)使用,它是在IP資料包內傳輸的。
ICMP報文大致分為兩類:查詢報文和差錯報文。
先來看差錯報文。當傳送IP資料包發生錯誤時(比如主機不可達、網路不可達等),ICMP協議將會傳送一個ICMP差錯報文給源主機,好讓主機做出相應的處理,也因此IP層以上的一些協議有可能做到可靠傳輸。書中給出了ICMP差錯報文中的一些組合(型別和程式碼的組合)描述:如網路不可達、網路不可達、協議不可達、埠不可達等。這裡說下埠不可達的意思:UDP的規則之一是,如果收到一份UDP資料包而目的埠與某個正在使用的程式不相符,那麼UDP返回一個ICMP不可達報文,將報文中的型別和程式碼的組合設定為埠不可達。Traceroute程式就是利用埠不可達來產生ICMP差錯報文的。
另外,在大多數情況下,傳送IP資料包發生錯誤,會產生一個ICMP錯誤報文,但下面各種情況都不會導致產生ICMP差錯報文:
- ICMP差錯報文不會產生差錯報文(ICMP查詢報文可能會產生ICMP差錯報文);
- 目的地址是廣播地址和多播地址的IP資料包;
- 作為鏈路層廣播的資料包;
- 不是IP分片的第一片
- 源地址不是單個主機的資料包。
- 子網掩碼查詢;
- 時間戳查詢;
- ping查詢。
ping程式
ping是ICMP的一個很著名的應用。ping程式時對兩個TCP/IP系統連通性進行測試的基本工具,它只利用ICMP回顯請求和回顯應答報文,而不用經過傳輸層,ping伺服器一般在核心中試下ICMP的功能。當某一個網站訪問不了時,我們就可以ping一下這個網站,看下連通情況。比如下圖:
這裡先ping到google的伺服器,我們可以看到連通性不是很好,丟包率為50%,而我們又ping了下Github的伺服器,連通性比較好,丟包率為0%。
Traceroute程式
Traceroute是ICMP協議的另一個重要應用,主要用來偵測源主機到目的主機之間所經過的路由的情況。Traceroute使用ICMP報文和IP首部中的TTL欄位,其原理很簡單,開始時傳送一個TTL欄位為1的UDP資料包,而後每次收到ICMP超時報文後,再傳送一個TTL欄位加1的UDP資料包,以確定路徑中的每個路由器,而每個路由器在丟棄UDP資料包時都會返回一個ICMP超時報文,最終到達目的主機後,由於ICMP選擇了一個不可能的值作為UDP埠(大於30000)。這樣目的主機就會傳送一個埠不可達的ICMP差錯報文。
相關文章
- 網路通訊協議-ICMP協議詳解!協議
- ICMP協議協議
- 網路管理之ICMP協議篇協議
- 計算機網路之四:ICMP協議計算機網路協議
- 【網路協議】UDP協議協議UDP
- 【網路協議】IP協議、ARP協議、RARP協議協議
- IP協議(網路層協議)協議
- TCP IP之ICMP協議TCP協議
- ICMP協議的定義協議
- icmp和arp協議協議
- 【網路協議】TCP協議簡介協議TCP
- 網路協議協議
- ICMP Internet控制資訊協議協議
- 網路通訊協議-TCP協議詳解!協議TCP
- 網路通訊協議-HTTP協議詳解!協議HTTP
- 網路通訊協議-SMTP協議詳解!協議
- 什麼是協議?| 網路協議定義協議
- WireShark——IP協議包分析(Ping分析IP協議包)協議
- 透析ICMP協議(三): 牛刀初試之一 應用篇ping(ICMP.dll) (轉)協議
- 網路管理協議協議
- web網路協議Web協議
- 網路協議大全協議
- ICMP協議結構全解(2)協議
- ICMP協議結構全解(1)協議
- 簡單而重要的協議:ICMP協議
- 為什麼說 ICMP 協議是網路最強輔助協議
- 網路協議 6 - 路由協議:敢問路在何方?協議路由
- 網路協議之:haproxy的Proxy Protocol代理協議協議Protocol
- 計算網路之MSTP協議與VRRP協議協議VR
- 網路協議之:socket協議詳解之Datagram Socket協議
- 網路協議 1 - 概述協議
- 網路協議基本概述協議
- 防火牆 | 網路協議防火牆協議
- 網路通訊協議協議
- 網路協議入門協議
- 【網路協議之OSPF】協議
- 網路傳輸協議協議
- 網路協議之TCP協議TCP