ICMP
差錯報文,報文是在IP數據報內部傳輸的
規範: RFC792
ICMP報文
各個字段:
類型和代碼決定了不同類型的ICMP報文。查詢報文還是差錯報文。響應差錯報文的時候不會再生成差錯報文以免無限遞歸
整個差錯報文由IP首部,ICMP數據報和產生ICMP數據報的IP數據報的前8個字節組成
這樣就可以與協議(IP首部中的協議字段)和用戶進程(IP數據報8個字節中的TCP或UDP首部中包含的端口號)聯繫起來
不產生ICMP差錯報文的情況
- ICMP差錯報文
- 目的地址是廣播地址或多播地址的IP數據報
- 作爲鏈路層廣播的數據報
- 不是IP分片的第一片
- 源地址不是單個主機的數據報,也就是說源地址不能是零地址,環回地址,廣播或多播地址
這些限制是防止ICMP差錯報文對廣播組發送大量的數據
ICMP地址掩碼請求與應答
用於無盤系統在引導過程中獲取自己的子網掩碼。請求方式是廣播
標識符和序列號由發送端自己填。這樣在應答的時候能對的上不搞錯
流程:
無盤系統廣播ICMP地址掩碼請求。如果有主機收到了該請求就會進行應答,應答中包含了子網掩碼的信息
ICMP地址掩碼應答必須是收到請求接口的子網掩碼的主機
ICMP時間戳請求與應答
ICMP時間戳請求使指向另一個系統查詢當前時間,返回的值UTC(好像也可以改成其他格式)到現在的毫秒數 時間從1900年1月1日0點0分0秒開始算
報文格式
請求端寫發起時間戳 應答端寫接受時間戳和傳送事件戳。
ICMP端口不可達差錯
UDP數據報的目的端口與目的主機上的進程不相符會返回一個ICMP不可達報文
這是UDP數據報發送失敗後返回的數據報
ICMP不可達數據報報文
利用原始IP數據報中數據的前8字節能夠分析出是哪個協議的哪個端口發起的數據報