ICMP協議與ping命令

2021-10-01 05:16:37 字數 2822 閱讀 8206

在網路中ping是乙個十分強大的tcp/ip工具。它的作用主要為:

(1)用來檢測網路的連通情況和分析網路速度;

(2)根據網域名稱得到伺服器ip;

(3)根據ping返回的ttl值來判斷對方所使用的作業系統及資料報經過路由器數量。

我們通常會用它來直接ping ip位址,來測試網路的連通情況。

ping 的原理是 icmp 協議.

icmp 的全稱是 intent control message protocol, 中文過來就是 網際網路控制報文協議。它是網際網路協議族的核心協議之一。它用於tcp/ip網路中傳送控制訊息,提供可能發生在通訊環境中的各種問題反饋,通過這些資訊,使管理者可以對所發生的問題作出診斷,然後採取適當的措施解決。

在ip通訊中,經常有資料報到達不了對方的情況。原因是,在通訊途中的某處的乙個路由器由於不能處理所有的資料報,就將資料報乙個乙個丟棄了。或者,雖然到達了對方,但是由於搞錯了埠號,伺服器軟體可能不能接受它。這時,在錯誤發生的現場,為了聯絡而飛過來的信鴿就是icmp 報文。在ip 網路上,由於資料報被丟棄等原因,為了控制將必要的資訊傳遞給發信方。icmp 協議是為了輔助ip 協議,交換各種各樣的控制資訊而被製造出來的。

icmp報文主要分為兩種型別:

定義:傳送端主動發起請求,並且獲取到應答。

常見應用:ping

ping 就是主動請求,獲取到主動應答。但是 ping 是在原生的 icmp 中新增了自定義格式區域。例如 ping 中放了傳送的請求時間,以此計算出路程。所以,其實在 ping 的報文中會加入序號,以用來區分資料報,從而提高計算時間或者路程的準確性。

icmp差錯報文的幾個例子:終點不可達為3,源抑制為4,超時為11,重定向為5

(1)終點不可達

網路資訊不能到達終點,就會給傳送端傳送乙個目的不可到達的資訊。告訴傳送端可能是裝置故障而引起關閉(情況之一)。然後這種又可以再次細分:

a、網路不可達 — **為 0,

b、主機不可達 — **為 1.

c、協議不可達 — **為 2.

d、埠不可達 — **為 3.

e、需要分段 - **為 4.( 必須把資料分段才能去到終點

(2)源站抑制

傳送端傳送大量資料時,可能會導致網路( 路由器 )過載,此時過載處可以向傳送端傳送源抑制的訊息,讓他降低傳送速度。

(3)時間超時

網路包超過設定的在網路中的生存時間,還沒有達到。

(4)路由重定向

定義資料報的路由規則。因為大部分的時候,路由規則是通過相關協議演算法生成的,有些時候重新定義過之後,會讓這個資料報繞的更遠。

ping 命令用來在ip 層次上調查與指定機器是否連通,調查資料報往復需要多少時間。為了實現這個功能,ping 命令使用了兩個icmp 報文。

1.向目標伺服器傳送回送請求。

首先,向目標伺服器發出回送請求(型別是8,**是0)報文(同2)。在這個回送請求報文裡,除了型別和**字段,還被追加了識別符號和序號字段。識別符號和序號字段分別是16 位的字段。ping 命令在傳送回送請求報文時,在這兩個欄位裡填入任意的值。對於識別符號,應用程式執行期間送出的所有報文裡填入相同的值。對於序號,每送出乙個報文數值就增加1。而且,回送請求的選項資料部分用來裝任意資料。這個任意資料用來調整ping 的交流資料報的大小。

2.返回回送回答。

計算機送出的回送請求到達目標伺服器後,伺服器回答這一請求,向送信方傳送回送請求(型別是0,**是0)(同3)。這個icmp 回送回答報文在ip 層來看,與被送來的回送請求報文基本上一樣。不同的只是,源和目標ip 位址欄位被交換了,型別欄位裡填入了表示回送回答的0。也就是,從送信方來看,自己送出的icmp 報文從目標伺服器那裡象鸚鵡學舌那樣原樣返回了。

送信方的計算機可以通過收到回送回答報文,來確認目標伺服器在工作著。進一步,記住傳送回送請求報文的時間,與接收到回送回答報文的時間一比較,就能計算出報文一去一回往復所需要的時間(同4)。但是,收到的回送回答報文裡寫的只是型別和**的話,傳送方計算機將無法判斷它是否是自己發出去請求的回答。因此,前面說到的識別符號和序號欄位就有它的意義了。將這兩個值與回送回答報文中的相同字段值一比較,送行方計算機就能夠簡單地檢測回送回答是否正確了。執行ping 命令而調查的結果沒什麼問題的話,就將目標伺服器的ip 位址,資料大小,往復花費的時間列印到螢幕上。

3.用ping 命令不能確定與對方連通的原因大致有三個。

1)目標伺服器不存在;2)花在資料報交流上的時間太長ping 命令認為超時;3)目標伺服器不回答ping 命令。如果是原因2),通過ping 命令的選項來延長到超時的等待時間,就能正確顯示結果了。如果原因是1)或3)的話,僅憑ping 命令的結果就不能判斷是哪方了。正如這樣,ping 命令不一定一定能判斷對方是否存在。

ping -t

不間斷地ping指定計算機,直到管理員中斷。

ping -a

ping -a解析計算機名與netbios名。就是可以通過ping它的ip位址,可以解析出主機名。

ping -n count

傳送 count 指定的 echo 資料報數。預設值為 4

ping -l length

傳送包含由 length 指定的資料量的 echo 資料報。預設為 32 位元組;最大值是65,527。

PING命令與ICMP協議

不管是開發中,還是電腦日常使用,常常遇到網路不通的問題。這時你就會習慣性的使用乙個命令ping,檢視問題出在 那它是如何工作的哪?icmp就是網際網路控制報文協議,網路包在複雜的網路環境傳輸時,常常遇到各種各樣的問題。當遇到問題的時候,總不能讓這個網路包死的不明不白,要傳出訊息來,報個情況,是怎麼死...

ICMP協議和ping命令

當網路不通的情況下,通常會想到ping命令,ping一下,但是ping命令內部如何執行的,可能並不清楚,其實ping是基於icmp協議進行工作的。一 icmp協議的格式 icmp是在rfc 792中定義的網際網路協議族之一。通常用於返回的錯誤資訊或是分析路由。icmp錯誤訊息總是包括了源資料並返回給...

ping 原理與ICMP協議

ping 原理與icmp協議 ping的原理 ping程式是用來探測主機到主機之間是否可通訊,如果不能ping到某台主機,表明不能和這台主機建立連線。ping使用的是icmp協議,它傳送icmp回送請求訊息給目的主機。icmp協議規定 目的主機必須返回icmp回送應答訊息給源主機。如果源主機在一定時...