1. 程式人生 > >Ping程式在TCP/IP中的應用

Ping程式在TCP/IP中的應用

我們稱傳送回顯請求的ping程式為客戶,而稱被ping的主機為伺服器。大多數的TCP/IP實現都在核心中直接支援Ping伺服器—這種伺服器不是一個使用者程序(在第6章中描述的兩種ICMP查詢服務,地址掩碼和時間戳請求,也都是直接在核心中進行處理的)。

  ICMP回顯請求和回顯應答報文如圖1所示。

  

圖1 ICMP回顯請求和回顯應答報文格式

  對於其他型別的I C M P查詢報文,伺服器必須響應識別符號和序列號欄位。另外,客戶傳送的選項資料必須回顯,假設客戶對這些資訊都會感興趣。

  U n i x系統在實現p i n g程式時是把I C M P報文中的識別符號欄位置成傳送程序的I D號。這樣即使在同一臺主機上同時運行了多個p i n g程式例項,p i n g程式也可以識別出返回的資訊。

  序列號從0開始,每傳送一次新的回顯請求就加1.p i n g程式打印出返回的每個分組的序列號,允許我們檢視是否有分組丟失、失序或重複。I P是一種最好的資料報傳遞服務,因此這三個條件都有可能發生。

  舊版本的p i n g程式曾經以這種模式執行,即每秒傳送一個回顯請求,並打印出返回的每個回顯應答。但是,新版本的實現需要加上-s選項才能以這種模式執行。預設情況下,新版本的p i n g程式只發送一個回顯請求。如果收到回顯應答,則輸出“host is alive ”;否則,在2 0秒內沒有收到應答就輸出“no answer(沒有回答)”。