TCP/IP詳解學習筆記(5)-- ICMP:internet 控制報文協議

1.概述網絡

     ICMP是(Internet Control Message Protocol)Internet控制報文協議。它是TCP/IP協議族的一個子協議,用於在IP主機、路由器之間傳遞控制消息。控制消息是指網絡通不通、主機是否可達、路由是否可用等網絡自己的消息。這些控制消息雖然並不傳輸用戶數據,可是對於用戶數據的傳遞起着重要的做用。
     ICMP報文是在IP數據報內部被傳輸的。
     ICMP報文的格式如圖所示。
     
  • 類型字段:能夠有15個不一樣的值,來描述特定類型的ICMP報文。
  • 代碼:進一步描述類型的不一樣條件
  • 檢驗和:ICMP的檢驗和是必需的。
2.ICMP報文的類型
     各類類型的ICMP報文如圖所示。
不一樣類型由報文中的類型字段和代碼字段共同決定。圖中最後兩列代表ICMP報文是一份查詢報文仍是一份差錯報文。
如下狀況不會致使產生ICMP差錯報文:
  • ICMP差錯報文(避免無休止的循環下去,可是ICMP查詢報文有可能產生ICMP差錯報文)
  • 目的地址是廣播地址或者多博地址的IP數據報
  • 做爲鏈路層廣播的數據報
  • 不是IP分片的第一片。
  • 源地址不是單個主機的數據報。這就是說,源地址不能爲零地址,環回地址,廣播地址或者多博地址。
3.ICMP地址掩碼請求與應答
     ICMP地址掩碼請求與應答用於無盤系統引導過程當中獲取本身的子網掩碼。系統廣播它 ICMP請求報文,或者使用BOOTP協議。ICMP地址掩碼請求和應答報文如圖所示。
     
     ICMP報文中的標識符和序列號字段由發送端任意選擇指定。
4.ICMP時間戳請求與應答
     ICMP時間戳請求容許系統向另外一個系統查詢當前的時間。返回的建議值是自午夜開始計算的毫秒數,協調的同一時間(UTC)。ICMP時間戳請求和應答報文如圖所示。
請求端填寫發起時間戳,而後發送報文。應答系統收到請求報文時填寫接收時間戳。在發送應答時填寫發送時間戳。
5.ICMP端口不可達差錯
     ICMP端口不可達差錯報文,是收到一個UDP數據報而目的端口與某個正在使用的進程不相符,則返回一個ICMP不可達報文。
     ICMP報文是主機之間交換的,而不用目的端口號。
     ICMP的一個規則是:ICMP差錯報文必須包括生成該差錯報文的數據報IP首部,還必須至少包括跟在該IP首部後面的前8個字節。如圖所示。
     
6.ICMP主機與網絡不可達差錯
     當路由器收到一份IP數據報但又不能轉發時候,就要發送一份ICMP「主機不可達」差錯報文。
7.ICMP重定向差錯
     當IP數據報應該被髮送到另外一個路由器時,收到數據報的路由器就要發送ICMP重定向差錯報文給IP數據報的發送端。
     重定向通常用來讓具備不多選路信息的主機逐漸創建更完善的路由表。
     ICMP重定向報文的格式如圖所示。
     ICMP重定向報文的接收者必須查看三個IP地址
  • 致使重定向的IP地址(即ICMP重定向報文的數據位於IP數據報的首部)
  • 發送重定向報文的路由器的IP地址(包含重定向信息的IP數據報中的源地址)
  • 應該採用的路由器IP地址。
     ICMP重定向不一樣代碼值含義
     
     ICMP重定向報文只能有路由器產生。
8.ICMP路由器發現報文
     主機在引導之後要廣播或多播傳送一份路由請求報文。一臺或更多的路由器響應一份路由器通告報文。
     ICMP路由器請求報文的格式如圖所示:
     ICMP路由器通告報文格式:
     
 
主要用來更新路由表。
相關文章
相關標籤/搜索