ICMP協議的定義

ForTechnology發表於2011-08-05
ICMP協議的定義2010-07-13 10:10 佚名 csdn.net 我要評論(0) 字號:T | T

下面我們來介紹一下ICMP協議。這個協議的作用是在網路層,進行訊息控制的。不少有關於這個ICMP協議的攻擊問題,那麼對於這個原理我們就需要清楚了。

AD:


在網路層,ICMP協議有著很重要的作用。它可以算是一位檢查者,幫助我們檢查在訊息中的一些傳遞問題。那麼接下來我們就來規範一下這個協議的定義。網際網路控制訊息協議(Internet Control Message Protocol 或簡寫 ICMP)的目的是用於在 TCP/IP 網路中傳送控制訊息,提供可能發生在通訊環境中的各種問題反饋,通過這些資訊,令管理者可以對所發生的問題作出診斷,然後採取適當的措施去解決它。

ICMP依靠IP來完成它的任務,它是IP的主要部分。它與傳輸協議,如TCP和UDP顯著不同:它一般不用於在兩點間傳輸資料。它通常不由網路程式直接使用,除了ping和traceroute這兩個特別的例子。

IPv4的ICMP也叫ICMPv4。IPv6的也有一個相似的協議,叫ICMPv6。

ICMP訊息是在IP層,通常是從一個普通的產生了ICMP響應的IP資料包中生成的。IP把適當的ICMP訊息用一個新的檔頭(header)封裝起來(以把ICMP訊息送回原來的傳送者),然後把產生的資料包用常規的方式傳送回去。

例如,每臺轉發IP資料包的機器(例如途中的路由器)都要把IP報頭中的TTL(time to live)減1,如果TTL減為了0,一個ICMP超時訊息就會被髮送到資料包的源傳送者。

每個ICMP訊息都是直接封裝在一個IP資料包中的,因此,和UDP一樣,ICMP是不可靠的。

雖然ICMP協議是包含在IP資料包中的,但是對ICMP訊息通常會特殊處理,會和一般IP資料包的處理不同,而不是作為IP的一個子協議來處理。在很多時候,需要去檢視ICMP訊息的內容,然後傳送適當的錯誤訊息到那個原來產生IP資料包的程式,即那個被提示一個ICMP訊息的程式。

很多常用的工具是基於ICMP訊息的。traceroute是通過傳送包含有特殊的TTL的包,然後查詢ICMP協議超時訊息和目標不可達訊息來實現的。和traceroute相關的ping則是用ICMP的"Echo request"和"Echo reply"訊息來實現的。

ICMP部分的結構

報頭

ICMP報頭從IP報頭的第160位開始(除非使用了IP報頭的可選部分)。



Type - ICMP的型別;

Code - 進一步劃分ICMP的型別;例如,ICMP的目標不可達型別可以把這個位設為1至15等來表示不同的意思。

Checksum - 這個欄位包含有從ICMP報頭和資料部分計算得來的,用於檢查錯誤的資料,其中資料部分的值視為0。

ID - 這個欄位包含了ID值,在ECHO REPLY型別的訊息中要返回這個欄位。

Sequence - 這個欄位包含一個序號,同樣要在ECHO REPLY型別的訊息中要返回這個欄位。

填充資料

填充的資料緊接在ICMP報頭的後面(以8位為一組):

Linux的 "ping"工具填充的ICMP除了8個8位元組的報頭以外,還另外填充資料使得總大小為64位元組。

Windows 的"ping.exe" 填充的ICMP協議除了8個8位元組的報頭以外,還另外填充資料使得總大小為40位元組

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/25897606/viewspace-704276/,如需轉載,請註明出處,否則將追究法律責任。

相關文章