我們稱發(fā)送回顯請求的ping程序為客戶,而稱被ping的主機(jī)為服務(wù)器。大多數(shù)的TCP/IP實(shí)現(xiàn)都在內(nèi)核中直接支持Ping服務(wù)器—這種服務(wù)器不是一個用戶進(jìn)程(在第6章中描述的兩種ICMP查詢服務(wù),地址掩碼和時間戳請求,也都是直接在內(nèi)核中進(jìn)行處理的)。
ICMP回顯請求和回顯應(yīng)答報文如圖1所示。
圖1 ICMP回顯請求和回顯應(yīng)答報文格式
對于其他類型的I C M P查詢報文,服務(wù)器必須響應(yīng)標(biāo)識符和序列號字段。另外,客戶發(fā)送的選項數(shù)據(jù)必須回顯,假設(shè)客戶對這些信息都會感興趣。
U n i x系統(tǒng)在實(shí)現(xiàn)p i n g程序時是把I C M P報文中的標(biāo)識符字段置成發(fā)送進(jìn)程的I D號。這樣即使在同一臺主機(jī)上同時運(yùn)行了多個p i n g程序?qū)嵗琾 i n g程序也可以識別出返回的信息。
序列號從0開始,每發(fā)送一次新的回顯請求就加1.p i n g程序打印出返回的每個分組的序列號,允許我們查看是否有分組丟失、失序或重復(fù)。I P是一種最好的數(shù)據(jù)報傳遞服務(wù),因此這三個條件都有可能發(fā)生。
舊版本的p i n g程序曾經(jīng)以這種模式運(yùn)行,即每秒發(fā)送一個回顯請求,并打印出返回的每個回顯應(yīng)答。但是,新版本的實(shí)現(xiàn)需要加上-s選項才能以這種模式運(yùn)行。默認(rèn)情況下,新版本的p i n g程序只發(fā)送一個回顯請求。如果收到回顯應(yīng)答,則輸出“host is alive ”;否則,在2 0秒內(nèi)沒有收到應(yīng)答就輸出“no answer(沒有回答)”。