在局域網上運行ping程序的結果輸出一般有如下格式:

當返回ICMP回顯應答時,要打印出序列號和TTL,并計算往返時間(TTL位于IP首部中的生存時間字段。當前的BSD系統中的ping程序每次收到回顯應答時都打印出收到的TTL—有些系統并不這樣做。我們將在第8章中通過traceroute程序來介紹TTL的用法)。
從上面的輸出中可以看出,回顯應答是以發送的次序返回的(0,1,2等)。
ping程序通過在ICMP報文數據中存放發送請求的時間值來計算往返時間。當應答返回時,用當前時間減去存放在ICMP報文中的時間值,即是往返時間。注意,在發送端bsdi上,往返時間的計算結果都為0 ms。這是因為程序使用的計時器分辨率低的原因。BSD/386版本0.9.4系統只能提供10 ms級的計時器(在附錄B中有更詳細的介紹)。在后面的章節中,當我們在具有較高分辨率計時器的系統上(Sun)查看tcpdump輸出時會發現, ICMP回顯請求和回顯應答的時間差在4 ms以下。
輸出的第一行包括目的主機的IP地址,盡管指定的是它的名字(svr4)。這說明名字已經經過解析器被轉換成IP地址了。我們將在第14章介紹解析器和DNS。現在,我們發現,如果敲入ping命令,幾秒鐘過后會在第1行打印出IP地址,DNS就是利用這段時間來確定主機名所對應的IP地址。
本例中的tcpdump輸出如圖7-2所示。
從發送回顯請求到收到回顯應答,時間間隔始終為3.7 ms。還可以看到,回顯請求大約每隔1秒鐘發送一次。
通常,第1個往返時間值要比其他的大。這是由于目的端的硬件地址不在ARP高速緩存中

的緣故。正如我們在第4章中看到的那樣,在發送第一個回顯請求之前要發送一個ARP請求并接收ARP應答,這需要花費幾毫秒的時間。下面的例子說明了這一點:

第1個RTT中多出的3 ms很可能就是因為發送ARP請求和接收ARP應答所花費的時間。
這個例子運行在sun主機上,它提供的是具有微秒級分辨率的計時器,但是ping程序只能打印出毫秒級的往返時間。在前面運行于BSD/386 0.9.4版上的例子中,打印出來的往返時間值為0 ms,這是因為計時器只能提供10 ms的誤差。下面的例子是BSD/386 1.0版的輸出,它提供的計時器也具有微秒級的分辨率,因此, ping程序的輸出結果也具有較高的分辨率。

- 第1章 概述
- 1.1 引言
- 1.2 分層
- 1.3 TCP/IP的分層
- 1.4 互聯網的地址
- 1.5 域名系統
- 1.6 封裝
- 1.7 分用
- 1.8 客戶-服務器模型
- 1.9 端口號
- 1.10 標準化過程
- 1.11 RFC
- 1.12 標準的簡單服務
- 1.13 互聯網
- 1.14 實現
- 1.15 應用編程接口
- 1.16 測試網絡
- 1.17 小結
- 第2章 鏈路層
- 2.1 引言
- 2.2 以太網和IEEE 802封裝
- 2.3 尾部封裝
- 2.4 SLIP:串行線路IP
- 2.5 壓縮的SLIP
- 2.6 PPP:點對點協議
- 2.7 環回接口
- 2.8 最大傳輸單元MTU
- 2.9 路徑MTU
- 2.10 串行線路吞吐量計算
- 2.11 小結
- 第3章 IP:網際協議
- 3.1 引言
- 3.2 IP首部
- 3.3 IP路由選擇
- 3.4 子網尋址
- 3.5 子網掩碼
- 3.6 特殊情況的IP地址
- 3.7 一個子網的例子
- 3.8 ifconfig命令
- 3.9 netstat命令
- 3.10 IP的未來
- 3.11 小結
- 第4章 ARP:地址解析協議
- 4.1 引言
- 4.2 一個例子
- 4.3 ARP高速緩存
- 4.4 ARP的分組格式
- 4.5 ARP舉例
- 4.5.1 一般的例子
- 4.5.2 對不存在主機的ARP請求
- 4.5.3 ARP高速緩存超時設置
- 4.6 ARP代理
- 4.7 免費ARP
- 4.8 arp命令
- 4.9 小結
- 第5章 RARP:逆地址解析協議
- 5.1 引言
- 5.2 RARP的分組格式
- 5.3 RARP舉例
- 5.4 RARP服務器的設計
- 5.4.1 作為用戶進程的RARP服務器
- 5.4.2 每個網絡有多個RARP服務器
- 5.5 小結
- 第6章 ICMP:Internet控制報文協議
- 6.1 引言
- 6.2 ICMP報文的類型
- 6.3 ICMP地址掩碼請求與應答
- 6.4 ICMP時間戳請求與應答
- 6.4.1 舉例
- 6.4.2 另一種方法
- 6.5 ICMP端口不可達差錯
- 6.6 ICMP報文的4.4BSD處理
- 6.7 小結
- 第7章 Ping程序
- 7.1 引言
- 7.2 Ping程序
- 7.2.1 LAN輸出
- 7.2.2 WAN輸出
- 7.2.3 線路SLIP鏈接
- 7.2.4 撥號SLIP鏈路
- 7.3 IP記錄路由選項
- 7.3.1 通常的例子
- 7.3.2 異常的輸出
- 7.4 IP時間戳選項
- 7.5 小結
- 第8章 Traceroute程序
- 8.1 引言
- 8.2 Traceroute程序的操作
- 8.3 局域網輸出
- 8.4 廣域網輸出
- 8.5 IP源站選路選項
- 8.5.1 寬松的源站選路的traceroute程序示例
- 8.5.2 嚴格的源站選路的traceroute程序示例
- 8.5.3 寬松的源站選路traceroute程序的往返路由
- 8.6 小結
- 第9章 IP選路
- 9.1 引言
- 9.2 選路的原理
- 9.2.1 簡單路由表
- 9.2.2 初始化路由表
- 9.2.3 較復雜的路由表
- 9.2.4 沒有到達目的地的路由
- 9.3 ICMP主機與網絡不可達差錯
- 9.4 轉發或不轉發
- 9.5 ICMP重定向差錯
- 9.5.1 一個例子
- 9.5.2 更多的細節
- 9.6 ICMP路由器發現報文
- 9.6.1 路由器操作
- 9.6.2 主機操作
- 9.6.3 實現
- 9.7 小結