Ping程序由Mike Muuss編寫,目的是為了測(cè)試另一臺(tái)主機(jī)是否可達(dá)。該程序發(fā)送一份ICMP回顯請(qǐng)求報(bào)文給主機(jī),并等待返回ICMP回顯應(yīng)答。
Ping程序
我們稱發(fā)送回顯請(qǐng)求的Ping程序?yàn)榭蛻簦Q被Ping的主機(jī)為服務(wù)器。大多數(shù)的TCP/IP
實(shí)現(xiàn)都在內(nèi)核中直接支持Ping服務(wù)器,這種服務(wù)器不是一個(gè)用戶進(jìn)程。
ICMP回顯請(qǐng)求和回顯應(yīng)答報(bào)文如圖1所示。

圖1:ICMP回顯請(qǐng)求和回顯應(yīng)答報(bào)文格式
Unix系統(tǒng)在實(shí)現(xiàn)ping程序時(shí)是把ICMP報(bào)文中的標(biāo)識(shí)符字段置成發(fā)送進(jìn)程的ID號(hào)。這樣即使在同一臺(tái)主機(jī)上同時(shí)運(yùn)行了多個(gè)ping程序?qū)嵗?span lang=EN-US> ping程序也可以識(shí)別出返回的信息。
序列號(hào)從0開始,每發(fā)送一次新的回顯請(qǐng)求就加1。ping程序打印出返回的每個(gè)分組的序
列號(hào),允許我們查看是否有分組丟失、失序或重復(fù)。IP是一種最好的數(shù)據(jù)報(bào)傳遞服務(wù),因此這三個(gè)條件都有可能發(fā)生。
IP記錄路由選項(xiàng)
ping程序?yàn)槲覀兲峁┝瞬榭?span lang=EN-US>IP記錄路由(RR)選項(xiàng)的機(jī)會(huì)。大多數(shù)不同版本的ping程序都提供-R選項(xiàng),以提供記錄路由的功能。它使得ping程序在發(fā)送出去的IP數(shù)據(jù)報(bào)中設(shè)置IP
RR選項(xiàng)(該IP數(shù)據(jù)報(bào)包含ICMP回顯請(qǐng)求報(bào)文)。這樣,每個(gè)處理該數(shù)據(jù)報(bào)的路由器都把它的
IP地址放入選項(xiàng)字段中。當(dāng)數(shù)據(jù)報(bào)到達(dá)目的端時(shí), IP地址清單應(yīng)該復(fù)制到ICMP回顯應(yīng)答中,
這樣返回途中所經(jīng)過的路由器地址也被加入清單中。當(dāng)ping程序收到回顯應(yīng)答時(shí),它就打印
出這份IP地址清單。
最大的問題是IP首部中只有有限的空間來存放IP地址。IP首部中的首部長(zhǎng)度字段只有4bit,因此整個(gè)IP首部最長(zhǎng)只能包括15(4bit全為1,8+4+2+1=15)個(gè)32bit長(zhǎng)的字(即60個(gè)字節(jié))。由于IP首部固定長(zhǎng)度為20字節(jié)(參加第三章的IP首部格式), RR選項(xiàng)用去3個(gè)字節(jié),這樣只剩下37個(gè)字節(jié)(60-20-3)來存放IP地址清單,也就是說只能存放9(4×9)個(gè)IP地址。
IP數(shù)據(jù)報(bào)中的RR選項(xiàng)的一般格式如圖2所示。

圖2:IP首部中的記錄路由選項(xiàng)的一般格式
code是一個(gè)字節(jié),指明IP選項(xiàng)的類型。對(duì)于RR選項(xiàng)來說,它的值為7。len是RR選項(xiàng)總字
節(jié)長(zhǎng)度,在這種情況下為39(盡管可以為RR選項(xiàng)設(shè)置比最大長(zhǎng)度小的長(zhǎng)度,但是ping程序
總是提供39字節(jié)的選項(xiàng)字段,最多可以記錄9個(gè)IP地址。由于IP首部中留給選項(xiàng)的空間有限,
它一般情況都設(shè)置成最大長(zhǎng)度)。
ptr稱作指針字段。它是一個(gè)基于1的指針,指向存放下一個(gè)IP地址的位置。它的最小值為4,指向存放第一個(gè)IP地址的位置。隨著每個(gè)IP地址存入清單, ptr的值分別為8,1 2,1 6,最大到36。當(dāng)記錄下9個(gè)IP地址后,ptr的值為40,表示清單已滿。
IP時(shí)間戳選項(xiàng)
IP時(shí)間戳選項(xiàng)與記錄路由選項(xiàng)類似。IP時(shí)間戳選項(xiàng)的格式如圖3所示。

圖3:IP首部中時(shí)間戳選項(xiàng)的一般格式
時(shí)間戳選項(xiàng)的代碼為0x44。其他兩個(gè)字段len和ptr與記錄路由選項(xiàng)相同:選項(xiàng)的總長(zhǎng)度
(一般為36或40)和指向下一個(gè)可用空間的指針( 5,9,13等)。接下來的兩個(gè)字段是4 bit的值:OF表示溢出字段,FL表示標(biāo)志字段。
posted on 2008-06-10 23:17
水 閱讀(2808)
評(píng)論(5) 編輯 收藏 引用 所屬分類:
tcp/ip