1. 程式人生 > >第7章 網路層協議(2)_ICMP協議

第7章 網路層協議(2)_ICMP協議

2. ICMP協議

2.1 ICMP報文(Internet Control Message Protocol)的型別

報文型別

型別值

程式碼

描述

請求報文

8

0

請求回顯報文

響應報文

0

0

回顯應答報文

差錯報告報文

3

(終點不可到達)

0

網路不可達

1

主機不可達

2

協議不可達

3

埠不可達

4

需要進行分片但設定了不分片

13

由於路由器過濾,通訊被禁止

4

0

源端被關閉

5

(改變路由)

0

對網路重定向

1

對主機重定向

11

0

傳輸期間生存時間(TTL)為0

12

(引數問題)

0

壞的IP首部

1

缺少必要的選項

(1)ICMP報文用於在IP主機、路由器之間傳遞控制訊息。如網路通不通、主機是否可到達、路由是否可用等網路本身的訊息

(2)ICMP差錯報文共5種

  ①終點不可到達:當路由器或主機沒有到達目標地址的路由時,就丟棄該資料包,給源點發送終點不可到達報文。

  ②源點抑制:當路由器或主機由於擁塞而丟棄資料包時,就會向源點發送源點抑制報文,使源點知道應降低資料包的傳送速率。

  ③時間超時:當路由器收到生存時間為零的資料報時,除丟棄該資料報外,還要向源點發送時間超過報文

。當終點在預先規定的時間內不能收到一個數據報的全部資料片時,就把己收到的資料報片都丟棄,並向源點發送時間超時報文。

  ④引數問題:當路由器或目的主機收到的資料報的首部中有的欄位的值不正確時,就丟棄該資料報,並向源點發送引數問題報文。

  ⑤改變路由(重定向):路由器把改變路由報文傳送給主機,讓主機知道下次應將資料報傳送給另外的路由器(可通過更好的路由)

2.2 ICMP報文格式

(1)ICMP報文格式

(2)ICMP差錯報文

  ①ICMP差錯報文中的資料欄位具有同樣的格式,即ICMP資料部分=收到的IP資料報的首部和資料欄位的前8個位元組)

  ②提取資料報中資料欄位的前8個位元組是為了得到傳輸層的埠號(對於TCP和UDP)以及傳輸層報文的傳送序號(對於TCP)。這些資訊對源點通知高層協議是有用的。

  ③整個ICMP差錯報文=ICMP的前8個位元組+ICMP資料部分,作為IP資料報的資料欄位傳送給源點。

2.3 ICMP差錯報告報文:路由重定向

(1)PC1的閘道器設定為R1的f0/0介面地址(192.168.1.1)。當PC1給PC3傳送資料包時,會發送給R1,再經R1轉發給R3。這樣效率不高。

  ①三層交換機埠預設為二層口,介面配置模式下使用不帶參的switchport命令把一個介面設定為2層模式。如果需要啟用三層功能就需要在此埠輸入no switchport命令。

  ②在配置R3路由器的f1/0地址前,要執行no swichport命令,才可以進一步配置介面地址。

(2)當出現這種現象時,路由器R1會把第1個數據包轉發給R3,然後給PC1傳送一個ICMP重定向資料包,告訴PC1到達主機192.168.2.2,下一跳為192.168.1.254.這樣PC1增加一條到192.168.2.2的路由,下一跳指向192.168.1.254(注意,是到一個主機,而不是到192.168.2.0/24整個網段的路由)。以後的資料包就直接發到R3的f0/0的介面。

(3)主機和路由器對於重定向報文的不同處理原則

  ①路由器一般會忽略ICMP重定向報文

  ②主機對於重定向報文的處理取決於作業系統。對於Windows作業系統,從閘道器返回的ICMP重定向報文,會在計算機的路由表中新增一條到主機的路由

  ③也可以人工新增到一個主機地址的路由:如c:\Windows\system32>route add 10.7.1.35 mask 255.255.255.255 10.7.10.254(注意,子網掩碼是4個255)

2.4 ICMP差錯報告報文:給程式返回錯誤訊息

(1)實驗環境

  ①VM使用虛擬機器WinXP充當,連線到VMnet1網路。

  ②R1和R2預設路由互相指定對方。

  ③然後從WinXP的瀏覽器訪問http://59.46.80.160,這個TCP資料包會在兩個路由器之間往復轉發,直到TTL耗盡。然後路由器返回給WinXP主機ICMP差錯報文資料包,如下圖。

(2)抓包分析

  ①當WinXP瀏覽http://59.46.80.160時,使用的是TCP協議,源埠和目標埠分別為1058和80。

  ②從上圖可知R2產生ICMP差錯報文給WinXP。該ICMP報文中包含了傳輸層首部的8個位元組指明瞭出現差錯的資料包的協議、源埠和目標埠

2.5 使用ICMP排除網路故障

(1)使用ping命令診斷網路故障

  ①當ping某個IP時,出現大多數請求超時,只是偶爾會有ICMP響應資料包時,說明網路很不暢通。

  ②這種請求超時的產生主要原因是網路擁塞,導致傳送一個ICMP請求資料包在一段時間內沒有得到ICMP響應資料包或針對該ICMP請求資料包的差錯報告資料包。

  ③可以檢查導致網路擁塞的原因,比如惡意軟體大量傳送廣播包占用了網路頻寬。

(2)使用tracert跟蹤資料包路徑

  ①ping和-i引數跟蹤資料包

  ②tracert命令的工作原理就是使用上述方法,通過給目標地址傳送TTL逐漸增加的ICMP請求,根據返回的ICMP差錯報文來確定沿途經過了哪些路由器

(3)使用pathping跟蹤資料包路徑

  ①pathping是一個基於TCP/IP的命令列工具,該命令不但可以跟蹤資料包從源主機到目標主機所經過的路徑,還可以統計計算機網路延時以及丟包率。其跟蹤資料包路徑的原理和tracert命令一樣。

  ②圖中的“躍點”指的是路由器,D處表示路由器轉發資料包的丟包率。E處的表示從躍點9到躍點10鏈路上的丟包率。