當前位置:
首頁 > 知識 > ICMP 網際控制協議全攻略 建議收藏

ICMP 網際控制協議全攻略 建議收藏

簡介

ICMP協議, Internet Control Message Protocol 網際控制協議,是一個傳輸層協議,其網路層協議為IP協議,在IP數據包頭中,ip包的protocl位為1。


主要用途

ICMP協議用於在IP主機 、 路由器之間傳遞控制消息。控制消息可以檢測網路是否暢通、主機 是否可達、 路由是否可用等網路本身的消息。這些控制消息雖然並不傳輸用戶信息,但是對於用戶數據的傳遞起著重要的作用。


ICMP報文格式

ICMP報頭格式

ICMP報文包含在IP數據報中,IP報頭在ICMP報文的最前面。一個ICMP報文包括IP報頭(至少20位元組)、ICMP報頭(至少八位元組)和ICMP報文(屬於ICMP報文的數據部分)。當IP報頭中的協議欄位值為1時,就說明這是一個ICMP報文。ICMP報頭如下圖所示。

ICMP 網際控制協議全攻略 建議收藏

ICMP報文格式

1.ICMP類型

0 響應應答(ECHO-REPLY)

3 不可到達

4 源抑制

5 重定向

8 響應請求(ECHO-REQUEST)

11 超時

12 參數失靈

13 時間戳請求

14 時間戳應答

15 信息請求(*已作廢)

16 信息應答(*已作廢)

17 地址掩碼請求

18 地址掩碼應答

2.ICMP代碼

128返回請求(Echo Request)報文

129返回應答(Echo Reply)報文

130組成員查詢(Group Membership Query)

131組成員報告(Group Membership Report)

132組成員結束(Group Membership Termination)

133路由器請求(Router Solicitation)

134路由器公告(Router Advertisement)

135鄰機請求(Neighbor Solicitation)

136鄰機公告(Neighbor Advertisement)

137 重定向(Redirect)

3.校驗和

不介紹

4.具體內容

雖然說不同的使用方式有不同的內容,但是一般作為檢測網路是否聯通使用的話,一般的內容為08:09:0a:0b:0c:0d:0e:0f:10:11:12:13:14:15:16:17:18:19:1a:1b:1c:1d:1e:1f:20:21:22:23:24:25:26:27:28:29:2a:2b:2c:2d:2e:2f:30:31:32:33:34:35:36:37

當然,不同系統有不同的內容,但是這種方式使用內容沒有實際意義。

ICMP具體應用

ICMP 網際控制協議全攻略 建議收藏

1.監測網路是否暢通

例如監測我們的主機到百度的連通性

ICMP 網際控制協議全攻略 建議收藏

PING 百度伺服器

可以看的出來,我們使用的命令是ping baidu.com,根據結果顯示,百度的cdn的ip地址是220.181.57.216,同時還可以看到ttl和延遲,ttl值為55說明我們經過了9台路由器。

ping命令的高級用法


ping -c count

Stop after sending (and receiving) count ECHO_RESPONSE packets.

If this option is not specified, ping will operate until inter-

rupted. If this option is specified in conjunction with ping

sweeps, each sweep will consist of count packets.

ping -c 制定次數,代表發送制定次數的icmp包

例如:ping -c 3 baidu.com

ICMP 網際控制協議全攻略 建議收藏


-m ttl

Set the IP Time To Live for outgoing packets. If not specified, the kernel uses the value of thenet.inet.ip.ttl MIB variable.

設置ip包頭的ttl生存周期 ttl

例如:ping -m 5 baidu.com

ICMP 網際控制協議全攻略 建議收藏

我們發現,由於設置ttl值為5,因此數據包並未達到百度的伺服器,而是在中途由於ttl值減少至0而發生了超時

ICMP 網際控制協議全攻略 建議收藏

從抓到的包中也可以看出


-t timeout

Specify a timeout, in seconds, before ping exits regardless of how many packets have been received.

-W waittime

Time in milliseconds to wait for a reply for each packet sent. If a reply arrives later, the packet is not printed as replied, but considered as replied when calculating statistics.

-t 設置超時時間

-w 設置等待時間


-s packetsize

Specify the number of data bytes to be sent. The default is 56, which translates into 64 ICMP data

bytes when combined with the 8 bytes of ICMP header data. This option cannot be used with ping

使用 -s參數設置包的大小,默認為 56

例如 ping -s 1 baidu.com

ICMP 網際控制協議全攻略 建議收藏


可以看出,這個ICMP數據段的Data屬性的大小為1

ICMP協議應用2

traceroute命令

traceroute命令用於追蹤數據包在網路上的傳輸時的全部路徑,它默認發送的數據包大小是40位元組。

通過traceroute我們可以知道信息從你的計算機到互聯網另一端的主機是走的什麼路徑。當然每次數據包由某一同樣的出發點(source)到達某一同樣的目的地(destination)走的路徑可能會不一樣,但基本上來說大部分時候所走的路由是相同的。

traceroute通過發送小的數據包到目的設備直到其返回,來測量其需要多長時間。一條路徑上的每個設備traceroute要測3次。輸出結果中包括每次測試的時間(ms)和設備的名稱(如有的話)及其ip地址。

ICMP 網際控制協議全攻略 建議收藏

工作原理

首先,traceroute送出一個TTL是1的IP 數據包到目的地,當路徑上的第一個路由器收到這個數據包時,它將TTL減1。此時,TTL變為0,所以該路由器會將此數據包丟掉,並送回一個「ICMP time exceeded」消息(包括發IP包的源地址,IP包的所有內容及路由器的IP地址),tracert 收到這個消息後,便知道這個路由器存在於這個路徑上,接著traceroute 再送出另一個TTL是2 的數據包,發現第2 個路由器...... traceroute 每次將送出的數據包的TTL 加1來發現另一個路由器,這個重複的動作一直持續到某個數據包 抵達目的地。當數據包到達目的地後,該主機則不會送回ICMP time exceeded消息,一旦到達目的地,由於tracert通過UDP數據包向不常見埠(30000以上)發送數據包,因此會收到「ICMP port unreachable」消息,故可判斷到達目的地。

喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 青峰科技 的精彩文章:

ARP協議原理及應用全攻略
DHCP的原理與應用

TAG:青峰科技 |