UIP協議棧三

下面說說網卡如何與UIP協議交互中的ICMP情況,首先必須知道什麼叫ICMP,在百科上的介紹是:
   ----------------------------------ICMP------------------------------------------------------
 
   ICMP是(Internet Control Message Protocol)Internet控制報文協議。它是TCP/IP協議族的一個子協議,用於在IP主機、路由器之間傳遞控制消息。控制消息是指網絡通不通、主機是否可達、路由是否可用等網絡本身的消息。這些控制消息雖然並不傳輸用戶數據,但是對於用戶數據的傳遞起着重要的作用。
    ICMP協議是一種面向無連接的協議,用於傳輸出錯報告控制信息。它是一個非常重要的協議,它對於網絡安全具有極其重要的意義。   
    它是TCP/IP協議族的一個子協議,屬於網絡層協議,主要用於在主機與路由器之間傳遞控制信息,包括報告錯誤、交換受限控制和狀態信息等。當遇到IP數據無法訪問目標、IP路由器無法按當前的傳輸速率轉發數據包等情況時,會自動發送ICMP消息。
    ICMP 提供一致易懂的出錯報告信息。發送的出錯報文返回到發送原數據的設備,因爲只有發送設備纔是出錯報文的邏輯接受者。發送設備隨後可根據ICMP報文確定發生錯誤的類型,並確定如何才能更好地重發失敗的數據包。但是ICMP唯一的功能是報告問題而不是糾正錯誤,糾正錯誤的任務由發送方完成。
  我們在網絡中經常會使用到ICMP協議,比如我們經常使用的用於檢查網絡通不通的Ping命令(Linux和Windows中均有),這個“Ping”的過程實際上就是ICMP協議工作的過程。還有其他的網絡命令如跟蹤路由的Tracert命令也是基於ICMP協議的。
-------------------------------------ICMP---------------------------------------------------- 
  
    實現ICMP網絡控制報文協議時,只實現echo(迴響)服務。uIP在生成迴響報文時並不重新分配存儲器空間,而是直接修改echo請求報文來生成迴響報文。將ICMP類型字段從“echo”類型改變成 “echo reply”類型,重新計算校驗和修改校驗和字段。
  1. #define ICMPBUF ((struct uip_icmpip_hdr *)&uip_buf[UIP_LLH_LEN])
    主要的處理過程在uip_process()函數中,UIP同樣將收到的ICMP的數據包放到uip_buf中。
發佈了28 篇原創文章 · 獲贊 15 · 訪問量 12萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章