在一個TCP/IP網絡中,traceroute程序是不可缺少的工具。其操作很簡單:開始時發送一個TTL字段為1的UDP數據報,然后將TTL字段每次加1,以確定路徑中的每個路由器。
每個路由器在丟棄UDP數據報時都返回一個ICMP超時報文2,而最終目的主機則產生一個ICMP端口不可達的報文。
我們給出了在LAN和WAN上運行traceroute程序的例子,并用它來考察IP源站選路。
我們用寬松的源站選路來檢測發往目的主機的路由是否與從目的主機返回的路由一樣。
####**習題**
8.1 當IP將接收到的TTL字段減1,發現它為0時,將會發生什么結果?
8.2 traceroute程序是如何計算RTT的?將這種計算RTT的方法與ping相比較。
8.3 (本習題與下一道習題是基于開發traceroute程序過程中遇到的實際問題,它們來自于traceroute程序源代碼注釋)。假設源主機和目的主機之間有三個路由器(R1、R2和R3),而中間的路由器(R2)在進入TTL字段為1時,將TTL字段減1,但卻錯誤地將該IP數據報發往下一個路由器。請描述會發生什么結果。在運行traceroute程序時會看到什么樣的現象?
8.4 同樣,假設源主機和目的主機之間有三個路由器。由于目的主機上存在錯誤,因此,它總是將進入TTL值作為外出ICMP報文的TTL值。請描述這將發生什么結果,你會看到什么現象。
8.5 在圖8-8運行例子中,我們可以在sun和netb之間的SLIP鏈路上運行tcpdump程序。如果指定-v選項,就可以看到返回ICMP報文的TTL值。這樣,我們可以看到進入netb、butch、Gabby和enss142.UT.westnet.net的TTL值分別為255、253、252和249。這是否為我們判斷是否存在丟失路由器提供了額外的信息?
8.6 SunOS和SVR4都提供了帶-l選項的ping版本,以提供松源選路。手冊上說明,該選項可以與-R選項(指定記錄路由選項)一起使用。如果已經進入到這些系統中,請嘗試同時用這兩個選項。其結果是什么?如果采用tcpdump來觀測數據報,請描述其過程。
8.7 比較ping和traceroute程序在處理同一臺主機上客戶的多個實例的不同點。
8.8 比較ping和traceroute程序在計算往返時間上的不同點。
8.9 我們已經說過, traceroute程序選取開始UDP目的主機端口號為33453,每發送一個數據報將此數加1。在1.9節中,我們說過暫時端口號通常是1024 ~ 5000之間的值,因此traceroute程序的目的主機端口號不可能是目的主機上所使用的端口號。在Solaris2.2系統中的情況也是如此嗎?(提示:查看E.4節)
8.10 RFC 1393 [Malkin 1993b]提出了另一種判斷到目的主機路徑的方法。請問其優缺點是什么?
- 第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 小結