6.ICMP:Internet控制報文協議

介紹

ICMP一般被認爲是IP層的組成部分。它用來傳送差錯報文以及一些須要注意的信息,一般被IP層、TCP層、UDP層使用,偶爾也被用戶層使用算法

ICMP報文

ICMP報文是放在IP數據報中進行傳輸3d

image_1chq7ajnhl951et6opdpb41219.png-33.1kB

報文格式以下:code

image_1chq7j558s9oehdr3s15a8e9mm.png-44.8kB

  • 類型:有15個值,描述不一樣類型ICMP報文
  • 代碼:類型只是一個粗略描述,代碼纔是一個具體描述
  • 校驗和:是整個ICMP報文的校驗和,算法與IP首部校驗和算法相同

類型+代碼惟一肯定了ICMP報文的描述blog

image_1chq8c64u1v1lad613lmq0map513.png-276.8kB

這幾種狀況不會產生ICMP差錯報文:接口

  1. ICMP差錯報文
  2. 目的地址是廣播地址或多播地址的IP數據報
  3. 鏈路層廣播的數據報
  4. 不是IP分片的第一片
  5. 源地址不是單個主機的數據報

ICMP地址掩碼請求與應答

ICMP地址掩碼請求用於無盤系統獲取本身的子網掩碼,與RARP請求獲取IP相似ip

請求和應答的報文格式:ci

image_1chqa0skv1cki1rbmvekijc19859.png-39.3kB

其中標識符和序列號是發送端自定義,這些信息會隨應答一塊兒返回。發送端用這兩個信息能夠將請求和應答匹配起來qt

經過icmpaddrmask程序向目標地址發送ICMP地址掩碼請求,其中140.252.13.63爲子網內的廣播地址map

image_1chqtr4t71ipt12tjtq1s6a6g916.png-41.2kB

其中svr4返回的地址是錯誤的請求

image_1chqtv5sr1v02e5g1r3jh39oi1j.png-28kB

向本機發送請求

image_1chqu2jn015brcb2staf52ubd20.png-29.7kB

其中響應的子網掩碼是收到請求的接口的子網掩碼,其中兩個IP地址最後都是本機的環回接口處理,因此子網掩碼就是127.0.0.1的

ICMP時間戳請求與應答

ICMP時間戳請求返回值是自午夜開始計算的毫秒數,利用ICMP時間戳請求,能夠校訂本機時間

請求與應答報文格式爲:

image_1chr0n0071cf073i15fb1upqfko2d.png-52kB

  • 發起時間戳:請求端填寫,而後發送報文
  • 接收時間戳:響應端接收到報文時填寫
  • 傳送時間戳:響應端發送應答時填寫

大部分系統後二者的值是同樣的

向主機bsdi發送ICMP時間戳請求

image_1chr5p9j71lur42r93t1o1m99s2q.png-29.1kB

其中有幾點值得注意:

  • 接收時間戳與傳送時間戳一致
  • 發送時間戳表明本機上的時間戳,可能須要被校準
  • rtt是請求往返時間,rtt/2約等於請求或應答的傳輸時間
  • difference = 接收時間戳 - 發起時間戳
  • sun主機須要調整本機時間 = 發起時間戳 + difference - rtt/2

ICMP端口不可達差錯

當目的端口沒有提供訪問服務,就會報ICMP端口不可達差錯

ICMP不可達報文格式:

image_1chs3m5001dpi12681a2l1vkkk2l3k.png-46.1kB

ICMP端口不可達差錯代碼爲3

當發送UDP數據報,但目的端口不存在,目的主機返回的報文格式:

image_1chs36btfmlnhlk1cid1fk811fa37.png-58.2kB

  • 產生差錯的數據報IP首部:之因此要返回這個信息,是由於只有知道該信息,才能瞭解IP上層協議是什麼(TCP/UDP),如何解析它
  • UDP首部(TCP相似):UDP首部恰好8字節,只有知道UDP首部,才能獲取源端口和目的端口,而後給調用方返回足夠的信息

ICMP報文的4.4BSD處理

針對ICMP報文,4.4BSD系統的處理方式:

image_1chs3suki2par0r7oq15n91n8p41.png-351.7kB

相關文章
相關標籤/搜索