ICMP協議-路由交換原理4-【HCNA筆記】

1、ICMP報文格式

    ICMP協議屬於網絡層,是TCP/IP協議族的一個子協議,ICMP報文被封裝在IP報文中。網絡中傳遞的ICMP包示意如下,:

ICMP數據包格式
幀頭IP報頭Data(ICMP包)FCS


TypeCodeChecksumdata



8位8位16位按需要

Type:消息類型。

Code:消息類型的具體參數。

Checksum:校驗字段,用於檢查消息是否完整;在ICMP重定向消息中用於指定網關IP地址;在Echo Reply消息中這個字段包含標識符和序號。

data:數據字段,根據不同使用需求,內容不一樣。


2、ICMP消息格式

ICMP消息格式(加粗部分爲常用)

Type

Code描述備註
00Echo Reply回顯應答(ping應答)
3
0Network Unreachable網絡不可達
31Host Unreachable

主機不可達

32Protocol Unreachable協議不可達(不支持該協議號)
33Port Unreachable端口不可達(主機沒有開放該端口)
34Fragmentation needed but no frag.bit set需要進行分片但設置不分片比特
35Source routing failed源站選路失敗
36Destination network unknown目的網絡未知
37Destination host unknown目的主機未知
38Source host isolated (obsolete)源主機被隔離(作廢不用)
39Destination network administratively prohibited目的網絡被強制禁止
310Destination host administratively prohibited目的主機被強制禁止
311Network unreachable for TOS由於服務類型TOS,網絡不可達
312Host unreachable for TOS由於服務類型TOS,主機不可達
313Communication administratively prohibited by filtering由於過濾,通信被強制禁止
314Host precedence violation主機越權
315Precedence cutoff in effect優先中止生效
4
0Source quench源端被關閉(基本流控制)
50Redirect for network對網絡重定向
51Redirect for host對主機重定向
52Redirect for TOS and network對服務類型和網絡重定向
53Redirect for TOS and host對服務類型和主機重定向
80Echo Request回顯請求(Ping請求)
90Router advertisement路由器通告
100Route solicitation路由器請求
110TTL equals 0 during transit傳輸期間生存時間爲0
111TTL equals 0 during reassembly在數據報組裝期間生存時間爲0
120IP header bad (catchall error)壞的IP首部(包括各種差錯)
121Required options missing缺少必需的選項
130Timestamp request (obsolete)時間戳請求(作廢不用)
140Timestamp reply (obsolete)時間戳應答(作廢不用)
150Information request (obsolete)信息請求(作廢不用)
160Information reply (obsolete)信息應答(作廢不用)
170Address mask request地址掩碼請求
180Address mask reply地址掩碼應答


3、ICMP功能

    ICMP用於在主機、路由器之間傳遞控制消息,包括錯誤報告、交換受限控制和狀態信息等。通常的應用場景是主機向遠端發送數據而路由找不到遠端,於是向主機發送一個ICMP報文告知其錯誤情況,我們稱之爲差錯報文,需要注意ICMP的唯一功能是報告問題而不是糾正錯誤。另一種情況是主機向路由或遠端發送一個ICMP請求報文,並獲取ICMP回覆報文以獲取當前網絡情況等信息,這種稱之爲詢問報文。

    ICMP差錯報文共5種:

ICMP差錯報文
終點不可達包括網絡不可達、主機不可達、協議不可達、端口不可達、需要分片但DF比特已置爲1、源路由失敗六種情況,當出現上述六種情況時就向源站發送終點不可達報文。
源站抑制當路由器或主機由於擁塞而丟棄數據時,就向源站發送源站抑制報文使源站知道應當將數據報文的發送速率放緩。
超時

當路由器收到生存時間爲0的數據,或目的站在預先規定的時間內沒有收到一個數據報的全部數據報片段均判定爲超時,則丟棄數據並向源站發送超時報文。

參數問題路由器或目的站收到的數據報首部的字段存在值不正確則丟棄該數據,並向源站發送參數問題報文。
重定向
當路由器檢測到源站使用非優化路由時就會向該主機發送一個ICMP重定向報文,請求主機改變路由。

    爲避免ICMP差錯報文對廣播分組響應所帶來的廣播風暴,以下五種情況都不會導致ICMP差錯報文的產生:

    1)路由器或主機在收到異常的ICMP差錯報文時不會產生新的差錯報文。

    2)目的地址是廣播地址或多播地址的IP數據報。

    3)作爲鏈路層廣播的數據報。

    4)不是IP分片的第一片,避免每個分片都產生一個新的差錯報文。

    5)源地址不是單個主機的數據報。

    ICMP詢問報文有四種:

ICMP詢問報文
回送請求和回答ICMP回送請求報文是主機或路由器向一個特定目的端發出的詢問,收到報文的目的端必須發送ICMP回送應答報文給源端。目前在於測試目的端是否可達並瞭解其有關狀態。
時間戳請求和回答源端可以發送一個ICMP時間戳請求報文向另一個系統查詢當前的時間,該報文的好處是可提供毫秒級的時間分辨率。
掩碼地址請求和回答主機使用ICMP掩碼地址請求報文可向子網掩碼服務器得到某個接口的掩碼地址。
路由詢問和通過主機將路由器詢問報文進行廣播或多播,收到詢問的路由器就使用路由器通過報文廣播其路由選擇信息。通過這種方式主機可瞭解連接在本網絡上的路由器是否正常工作。

    

4、ICMP應用

    Ping:

    Ping是檢測網絡連通性的常用工具,同時也能收集其他相關信息。用戶可以在Ping命令中指定不同參數,常用配置參數說明如下:


-a source-ip-address指定ICMP報文的源IP地址
-c count指定發送報文的次數,缺省發送5個
-h ttl-valuse指定TTL的值,缺省是255
-t timeout指定等待應當報文的超時時間


    Tracert:

    源主機想知道訪問目的主機的路徑,它向第一個路由器發送一個TTL值爲1的ICMP包且使用一個目的主機無法識別的端口,第一個路由器A收到該包後先將TTL值減1發現此時TTL=0於是不再轉發並返回一個ICMP包給源主機,其中就包含了路由器A的地址。主機A收到路由器A的應答知道了路由器A的地址,便再次發送一個TTL值爲2的ICMP包,路由器A收到該包後會向下轉發則路由器B會收到該包,由於TTL=0則路由器B會返回一個ICMP包給源主機。通過這種方法層層傳遞到目的主機,目的主機發現該包端口太大無法識別於是向源主機回覆一個目的不可達的ICMP包,源主機收到這個回覆的包就知道自己發送的包已到達目的主機。則整個路徑的IP就被源主機獲悉。


【需要分片但DF比特已置爲1】路由器收到一份需要分片的數據報,而其IP首部中的DF字段被置爲1,表明不需要分片,此時路由應向源主機發送一個ICMP差錯報文。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章