免费A级毛片无码专区网站-成人国产精品视频一区二区-啊 日出水了 用力乖乖在线-国产黑色丝袜在线观看下-天天操美女夜夜操美女-日韩网站在线观看中文字幕-AV高清hd片XXX国产-亚洲av中文字字幕乱码综合-搬开女人下面使劲插视频

【lwip】10-ICMP協(xié)議&源碼分析

目錄

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

文章插圖
其ICMP報(bào)文格式如下圖:
【lwip】10-ICMP協(xié)議&源碼分析

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

經(jīng)驗(yàn)總結(jié)擴(kuò)展閱讀