国产精品免费嫩草研究院|无遮羞动漫在线观看AV|国产麻豆精品传媒AV国产在线|村在线观看|寂寞情人1正版|韩国床震韩国床震古|精品系列专区久久

【lwip】10-ICMP協議&源碼分析

目錄

  • 前言
  • 10.1 ICMP簡介
  • 10.2 ICMP報文
    • 10.2.1 ICMP報文格式
    • 10.2.2 ICMP報文類型
    • 10.2.3 ICMP報文固定首部字段意義
  • 10.3 ICMP差錯報告報文
    • 10.3.1 目的不可達
    • 10.3.2 源站抑制
    • 10.3.3 重定向(改變路由)
    • 10.3.4 超時
    • 10.3.5 參數錯誤
  • 10.4 ICMP查詢報文
    • 10.4.1 回顯
  • 10.5 ICMP數據結構
    • 10.5.1 ICMP數據報數據結構
    • 10.5.2 ICMP類型字段
    • 10.5.3 目的不可達代碼字段
    • 10.5.4 超時代碼字段
  • 10.6 發送ICMP差錯報告
    • 10.6.1 發送ICMP差錯報文基函數
    • 10.6.2 icmp_dest_unreach()目的不可達差錯報告
    • 10.6.3 icmp_time_exceeded()超時差錯報告
  • 10.7 接收ICMP報文處理
前言參考:RFC 792
原文:李柱明博客:https://www.cnblogs.com/lizhuming/p/16861945.html
10.1 ICMP簡介IP 協議是一種不可靠、無連接的協議,只在各個主機間交付數據,但是對于數據的到達與否,IP 協議并不關心 。
但是有些源主機希望能得到當數據沒能發送到目標的時候有個回應,不然目標主機都不知道發的數據到了哪里 。
所以 IP 協議并不完美,這就出現的 ICMP 。
ICMP 是“Internet Control Message Protocol”(網際報文控制協議)的縮寫 。
ICMP協議用于在IP主機、路由器之間傳遞控制消息,包括數據包錯誤信息、網絡狀況信息和主機狀況信息等 。
ICMP屬于網絡層 。
雖然從報文上看ICMP報文是基于IP報文的,但是ICMP從協議和功能上看是屬于網絡層的,因為ICMP報文的目的不是目的主機的某個應用程序,不為應用程序提供傳輸服務,而是是IP協議的輔助協議 。
所以其報文主要分兩大類:ICMP差錯報告報文和ICMP查詢報文 。
10.2 ICMP報文10.2.1 ICMP報文格式IPCM報文封裝在IP數據區中,如圖:
【lwip】10-ICMP協議&源碼分析

文章插圖
其ICMP報文格式如下圖:
【lwip】10-ICMP協議&源碼分析

文章插圖
ICMP報文由8字節首部和可變長度的數據部分組成 。
不同類型的ICMP報文,ICMP 報文首部的格式也會有點差異,但是首部的前 4 個字節都是通用的:
  • 類型(type)字段:占用1字節 。表示產生這種類型 ICMP 報文的原因 。
  • 代碼(code)字段:占用1字節 。進一步描述了產生這種類型 ICMP 報文的具體原因 。
  • 校驗和字段:占用2字節 。記錄包括 ICMP 報文數據部分在內的整個 ICMP 數據報的校驗和 。其計算方法和IP首部校驗和一樣 。
參考RFC 792
  • 根據各種ICMP報文類型來定義剩余非固定的報文格式 。
  • 也可以參考該協議找到各個字段的意義 。
10.2.2 ICMP報文類型ICMP 報文有兩大類型:ICMP差錯報告報文和ICMP查詢報文 。
ICMP差錯報告報文主要是用來向 IP 數據報源主機返回一個差錯報告信息,而這個差錯報告信息產生的原因是路由器或者主機不能對當前數據報進行正常的處理 。
簡單來說就是源主機發送的數據報沒法到目標主機中,或者到達了目標主機而無法遞交給上層協議 。便會產生ICMP差錯報告報文返回給源主機 。
ICMP查詢報文用于一臺主機向另一臺主機發起一個請求,如果目標主機收到這個查詢的請求后,就會按照查詢報文的格式向源主機做出應答 。如ping 。
結合ICMP報文類型字段的表格:
ICMP報文類型具體類型描述差錯報告報文3目的不可達4源站抑制5重定向11超時12參數錯誤報文查詢報文0或8回顯請求或回顯應答9或10路由器詢問或通告13或14時間戳請求或應答15或16信息請求或信息應答17或18掩碼請求或應答10.2.3 ICMP報文固定首部字段意義參考

經驗總結擴展閱讀