协议簇:ICMP 解析
簡介
ICMP 是 Internet Control Message Protocol 的簡寫. 它主要用來調試網絡通信環境中存在的問題.
比如,當 IP 數據包總是無法正常的發送到目的地址, 當網關沒有足夠的 buffer 來轉發對應的數據包 等問題.
值得一提的是,它屬于網絡層,不屬于傳輸層. 也就是說它和 IP 協議處于同一層次,而并不是與 TCP/UDP 處于同一層次.
消息格式
ICMP 協議使用 IP 協議頭來傳輸數據. 具體的數據就是 ICMP 規定的一些數據包,我們接下來一一介紹…
因為 ICMP 格式與 IP 相同,這里我們簡單介紹以下各個字段. 詳細請參考 協議簇: IPv4 詳解
幾個需要特別注意的字段,及其值:
接下來,我們來看看常見的 ICMP 報文實例
Destionation Unreachable Message
各字段的意義及其值:
0 = net unreachable
1 = host unreachable
2 = protocol unreachable
3 = port unreachable
4 = fragmentation needed and DF set
5 = source route failed
描述
實例
筆者在自己機器上使用 ping 192.168.1.44 命令得到了 Destination unreachable 消息的包,這里我們來分析以下
Time Exceeded Message
它的包格式與 Destionation Unreachable Message 相同,這里不再贅述.
各字段的意義及其值:
0 = time to live exceeded in transit
1 = fragment reassembly time exceeded
描述
實例
筆者使用 ping -i 2 baidu.com 命令抓取到了此類型的 ICMP 數據包,這里我們省略掉于前文重復的部分,直接貼出 ICMP 包相關的信息
Parameter Problem Message
各字段的意義及其值:
0 = pointer indicates the error
描述
當網關或者目標主機無法根據 IP 頭正確的解析此數據包時,就會丟棄該數據包并發送此 ICMP 報文.
這個問題的可能原因是 錯誤的使用 Option.
Source Quench Message
它的包格式與 Destionation Unreachable Message 相同,這里不再贅述.
各字段的意義及其值:
描述
當網管或者目標主機沒有足夠的 buffer 來處理對應的數據包時,就會丟棄數據包并發送此 ICMP 報文
Redirect Message
各字段的意義及其值:
0 = Redirect datagrams for the Network
1 = Redirect datagrams for the Host
2 = Redirect datagrams for the Type of Service and Network
3 = Redirect datagrams for the Type of Service and Host
描述
這種 ICMP 消息在如下情況下會被發送:
假定網關 G1 從一個相連的主機或網關收到一個數據包,G1 檢查自己的路由表找到該數據包應該被轉發給網關 G2,再由 G2 繼續轉發,直到該數據包到達主機 X. 但是如果 G2 和 該數據包的源地址處于同一個網絡,那么此時 G1 會發送此 ICMP 消息來建議源主機將發送給 X 的數據包都直接發送給 G2,這樣路由長度最短,數據發送速度更快.
Echo or Echo Reply Message
各字段的意義及其值:
8 = Echo Message
0 = Echo Reply Message
描述
正如我們前面已經看到,我們在收到一個 ICMP 響應時,響應的 ICMP 數據包中都會包含對應 Echo Message.
實例
下面展示一個 Echo Message 的結構
下面時對應的 Echo Reply Message 的結構
值得注意的時: Echo Message 和 Echo Reply Message 中的 identifier 和 sequence number 字段時相同的. 這樣我們就得知 這兩個數據包時互相對應關系.
而我們收到了 Echo Reply Message,也就證明我們到對應的目的主機的鏈路是工作的.
Timestamp or Timestamp Reply Message
各字段的意義及其值:
13 = Timestamp Message
14 = Timestamp Reply Message
Information Request or Information Reply Message
各字段的意義及其值:
15 = Information Request Message
16 = Information Reply Message
描述
這個數據包發送時不填寫目的地址字段,接收方在 reply message 中填寫自己的地址信息.
使用這個數據包可以用來發現當前網絡中所有的主機地址信息.
END!
總結
以上是生活随笔為你收集整理的协议簇:ICMP 解析的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: PID控制器开发笔记之一:PID算法原理
- 下一篇: opc服务器组态文件已写保护_远程组态软