基本概念
ICMP(Internet Control Message Protocol,網絡控制封包協定),屬于OSI七層模型中的網絡層,與IP/UDP同屬一層,可以将其看成IP、UDP協定功能的一個補充,因為以前說過,IP協定是不可靠的,其可靠性需借助其他子產品來完成,比如上層的TCP協定或同層的ICMP協定,同層的ICMP提供了差錯封包和查詢封包來了解目前的網絡狀态。
ICMP查詢封包和差錯封包
![](https://img.laitimes.com/img/9ZDMuAjOiMmIsIjOiQnIsICN3UTNyITNxITMxUDM2EDMy8CX0Vmbu4GZzNmLn9Gbi1yZtl2Lc9CX6MHc0RHaiojIsJye.jpg)
基于ICMP的應用
Ping指令和Traceroute指令。
Ping指令:
相信大家都不陌生,用于檢測目的主機是否可達。
如果主機可達,傳回如下:
這裡ping了位址192.168.1.1
位元組=32:說明發了一個32位元組的ICMP查詢封包。
時間=1ms:說明從發封包到收到目的主機回複的時間是1ms,也就是常說的網絡延時。
TTL=64:Time To Live,說明如果這個查詢封包經過64跳還沒被回複,将被丢棄。
注意:如果Ping不通,除了檢測網絡連通性以外,還需注意目的主機防火牆是否屏蔽了Ping的回應要求,這在區域網路Ping不通的情況下非常常見。
Traceroute指令:
Windows下是tracert指令,Linux下是traceroute指令。
用以檢視本地主機到目的網絡主機經過了哪些節點。
在Ping不通的情況下,常用此指令來定位到底在哪個網絡節點出了問題。