如果線路速率是9600b/s,而一個字節有8bit,加上一個起始比特和一個停止比特,那么線路的速率就是960B/s(字節/秒)。以這個速率傳輸一個1024字節的分組需要1066ms。如果用SLIP鏈接運行一個交互式應用程序,同時還運行另一個應用程序如FTP發送或接收1024字節的數據,那么一般來說就必須等待一半的時間(533ms)才能把交互式應用程序的分組數據發送出去。
假定交互分組數據可以在其他“大塊”分組數據發送之前被發送出去。大多數的SLIP實現確實提供這類服務排隊方法,把交互數據放在大塊的數據前面。交互通信一般有Telnet、Rlogin以及FTP的控制部分(用戶的命令,而不是數據)。
這種服務排隊方法是不完善的。它不能影響已經進入下游(如串行驅動程序)隊列的非交互數據。同時,新型的調制解調器具有很大的緩沖區,因此非交互數據可能已經進入該緩沖區了。
對于交互應用來說,等待533ms是不能接受的。關于人的有關研究表明,交互響應時間超過100~200 ms就被認為是不好的[Jacobson 1990a]。這是發送一份交互報文出去后,直到接收到響應信息(通常是出現一個回顯字符)為止的往返時間。把SLIP的MTU縮短到256就意味著鏈路傳輸一幀最長需要266ms,它的一半是133ms(這是一般需要等待的時間)。這樣情況會好一些,但仍然不完美。我們選擇它的原因(與64或128相比)是因為大塊數據提供良好的線路利用率(如大文件傳輸)。假設CSLIP的報文首部是5個字節,數據幀總長為261個字節,256個字節的數據使線路的利用率為98.1%,幀頭占1.9%,這樣的利用率是很不錯的。如果把MTU降到256以下,那么將降低傳輸大塊數據的最大吞吐量。
在圖2-5列出的MTU值中,點對點鏈路的MTU是296個字節。假設數據為256字節,TCP和IP首部占40個字節。由于MTU是IP向鏈路層查詢的結果,因此該值必須包括通常的TCP和IP首部。這樣就會導致IP如何進行分片的決策。IP對于CSLIP的壓縮情況一無所知。
我們對平均等待時間的計算(傳輸最大數據幀所需時間的一半)只適用于SLIP鏈路(或PPP鏈路)在交互通信和大塊數據傳輸這兩種情況下。當只有交互通信時,如果線路速率是9600b/s,那么任何方向上的1字節數據(假設有5個字節的壓縮幀頭)往返一次都大約需要12.5ms。它比前面提到的100~200ms要小得多。需要注意的是,由于幀頭從40個字節壓縮到5個字節,使得1字節數據往返時間從85ms減到12.5ms。不幸的是,當使用新型的糾錯和壓縮調制解調器時,這樣的計算就更難了。這些調制解調器所采用的壓縮方法使得在線路上傳輸的字節數大大減少,但糾錯機制又會增加傳輸的時間。不過,這些計算是我們進行合理決策的入口點。
在后面的章節中,我們將用這些串行線路吞吐量的計算來驗證數據從串行線路上通過的時間。
- 第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 小結