icmp = internet control message protocol = 網際網路控制報文協議
icmp經常被認為是ip層的乙個組成部分,用於傳遞差錯報文和其他需要注意的資訊。
icmp報文是被封裝在ip資料報內部進行傳輸的。
icmp報文都包括8位型別字段、8位**字段、16位檢驗和字段。不同的型別和**對應不同的報文內容。
icmp報文可以分為差錯報文和查詢報文。
型別欄位有15個不同的值,每個型別還可以用**字段進一步描述不同的條件。
在對icmp差錯報文進行響應時,永遠不會生成另乙份icmp差錯報文(避免無窮迴圈)。
icmp差錯報文始終包含ip的首部和產生icmp差錯報文的ip資料報的前8個位元組。根據ip資料報首部中的協議字段和ip資料報前8個位元組中的tcp或udp報文首部中的tcp或udp埠號,接收icmp差錯報文的模組可以將其與某個協議和使用者程序聯絡起來。
下面各種情況都不會導致產生icmp差錯報文:
icmp差錯報文(但是icmp查詢報文可能會產生差錯報文);
目的位址是廣播位址或多播位址的ip資料報;
作為鏈路層廣播的資料報;
不是ip分片的第一片;
源位址不是單個主機的資料報(因此,源位址不要設為零位址、環迴位址、廣播位址、多播位址)。
icmp位址掩碼請求用於無盤系統在引導過程中獲取自己的子網掩碼。
icmp位址掩碼請求/應答報文 = 8位型別(請求=17,應答=18) + 8位**(=0) + 16位檢驗和 + 16位識別符號 + 16位序列號 + 32位子網掩碼
其中,識別符號和序列號由傳送端任意選定,應答報文將返回這兩個欄位的值,傳送端就可以把請求與應答進行匹配。
icmp時間戳請求允許系統向另乙個系統查詢當前時間。返回的值是從午夜開始計算的毫秒數,協調的統一時間(coordinated universal time, utc)。
icmp時間戳請求/應答 = 8位型別(請求=13,應答=14)+ 8位**(=0)+ 16位檢驗和 + 16位識別符號 + 16位序列號 + 32位發起時間戳 + 32位接收時間戳 + 32位傳送時間戳
其中,接收時間戳和傳送時間戳通常被設定成相同的值。
乙個例子
其中,orig表示發起時間戳,recv表示接收時間戳,xmit表示傳送時間戳。rtt表示往返時延(round-trip time = rtt),其值等於傳送端收到應答的時間值減去傳送請求的時間值。difference的值是接受時間戳減去發起時間戳。
tt如果 dif
fere
nce−
0.5∗rt
t<
0difference - 0.5*rtt < 0
differ
ence
−0.5
∗rtt
<
0,則說明本地時鐘比查詢主機的時鐘快(orig值過大),需要對本地時鐘進行調整 。
上面的兩行例子中接收端bsdi分別要比傳送端sun慢7ms和8ms。即−6m
s−0.5∗2m
s=−7
ms-6ms - 0.5*2ms=-7ms
−6ms−0
.5∗2
ms=−
7ms−7m
s−0.5∗2m
s=−8
ms-7ms - 0.5*2ms = -8ms
−7ms−0
.5∗2
ms=−
8ms其他或的時間和日期的方法還包括daytime時間服務程式、 網路時間協議(ntp = network time protocol)、分布式時間服務(dts)等。
icmp不可達報文格式:
icmp不可達報文 = 1位元組型別(=3)+1位元組**(0-15)+2位元組檢驗和 + 4位元組未用(必須為0)+ 產生差錯的ip資料報首部(包含任何選項)+ 原始ip資料報中資料部分的前8位元組
以udp埠不可達返回的icmp差錯報文為例:
icmp差錯報文 = 8位元組icmp首部 + 20位元組產生差錯的ip資料報首部(包含任何選項)+ 8位元組udp首部
其中:udp首部 = 16位源埠號 + 16位目的埠號 + 16位udp長度 + 16位udp檢驗和
TCP IP詳解 卷一 協議
第一章概述 第二章internet位址結構 第三章鏈路層 第四章位址解析協議 第五章internet協議 第六章系統配置 dhcp和自動配置 第七章防火牆和網路位址轉換 第八章icmpv4和icmpv6 internet控制報文協議 第九章廣播和本地組播 igmp和mld 第十章使用者資料報協議和i...
TCP IP協議詳解 卷一 UDP
小小搬運工又來了,五一節即將到來了 udp是面向資料報的傳輸層協議,即程序的每個輸出操作剛好產生乙個udp資料報,並組裝成乙份待傳送的ip資料報。tcp是面向流字元,即應用程式產生的全體資料與真正傳送的單個ip資料報可能沒有什麼聯絡。udp資料報封裝成ip資料報的格式如圖1所示 圖1 udp封裝 2...
《TCP IP詳解卷一 協議》 概述
tcp ip協議族是一組不同層次上的多個協議的組合。tcp ip通常被認為是乙個 四層次協議系統。應用層 負責處理特定的應用程式細節。tcp ip協議族是一組不同的協議組合在一起構成的協議族,儘管通常稱該協議為tcp ip協議,但tcp和ip只是其中的兩種協議而已。該協議族的另乙個名字為intern...