《用tcp/ip進行網際互聯》 第8章 差錯與控制報文(ICMP)

首先,說明一下網際控制報文協議(ICMP)的存在理由,由於互聯網中存在的都是獨立運行的路由器,由於路由器不可能在任何時候都運行的很好,總有時候會出錯,而IP協議是不會有差錯控制的,那麼當問題出現的時候,管理員就很難診斷出相應問題的所在,比如發送方的報文超時,這個時候管理員如何知道問題所在那?是中間的路由器有問題,還是本地硬件有問題那?這個就是ICMP報文存在的理由。

ICMP的一個非常重要的特點就是它只能和源站進行通信,當一個路由器發現當前網絡中出現的問題的時候,它就會把ICMP報文發給發送報文的源站,因爲在IP報文中只有源站和目的站的IP地址,單個的路由器是不可能具有全局的視角的。

ICMP的發送是需要兩級封裝的,po一個圖上來。

從這張圖可以看出ICMP包裝在IP數據報的報文段中,而整個IP數據報包裝在物理幀的數據部分。                                  ICMP報文首部的格式,ICMP報文段分爲很多種類型,但是無論哪種類型,ICMP報文段首部都是含有以下結構的,po個圖上來。


其中ICMP報文類型字段,說明了ICMP報文的類型,代碼字段能提供關於類型的更多信心,檢驗和字段用來確認數據在傳輸的過程中不會出現差錯。當然ICMP報文還會把產生錯文報文中的首部和一些八位組截取下來放到ICMP報文中,這樣可以幫助源站判斷到底是哪一個協議和軟件負責這個報文。下面的內容會主要討論幾種重要的ICMP報文的特徵。

第一種——回送請求和回答報文。


使用這個報文的程序就是ping,它主要用來測試兩個網絡接口之間的連接是否正常,其中標識符和序號用來匹配回答和請求,請求的類型是8,回答的類型是0。

第二種——目的站不可達的報告。

只要因爲某個差錯阻止路由器向目的主機發送數據報,那麼路由器就會向主機發送一個源站不可達報文,類型爲3,代碼0~15依次說明了發生錯誤的原因,但是,ICMP並不能完全判斷所有的故障和錯誤。

第三種——ICMP重定向報文


使用這個報文的一個優點就是可以允許主機剛開始以最小的路由信息開始工作,可以把所有的數據報都發給默認的路由器轉發,再通過ICMP重定向報文更新路由表。具體過程:主機分析互聯網首部和數據報前綴得到目的IP地址,再將路由器的互聯網地址作爲轉發路由,根據這兩個信息更新路由表。當然,ICMP重定向報文也是有侷限性的,有些情況下即使路由選擇不是最優的,ICMP重定向報文也無法起到作用(假設主機只和一個路由相連接,這個時候中間的路由器選擇了非最優的路徑,那麼傳給主機的ICMP重定向報文無法通知中間的路由器改變路由表)。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章