譯者序 前言 第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 小結 第10章 動態選路協議 10.1 引言 10.2 動態選路 10.3 Unix選路守護程序 10.4 RIP:選路信息協議 10.4.1 報文格式 10.4.2 正常運行 10.4.3 度量 10.4.4 問題 10.4.5 舉例 10.4.6 另一個例子 10.5 RIP版本 10.6 OSPF:開放最短路徑優先 10.7 BGP:邊界網關協議 10.8 CIDR:無類型域間選路 10.9 小結 第11章 UDP:用戶數據報協議 11.1 引言 11.2 UDP首部 11.3 UDP檢驗和 11.3.1 tcpdump輸出 11.3.2 一些統計結果 11.4 一個簡單的例子 11.5 IP分片 11.6 ICMP不可達差錯(需要分片) 11.7 用Traceroute確定路徑MTU 11.8 采用UDP的路徑MTU發現 11.9 UDP和ARP之間的交互作用 11.10 最大UDP數據報長度 11.11 ICMP源站抑制差錯 11.12 UDP服務器的設計 11.12.1 客戶IP地址及端口號 11.12.2 目標IP地址 11.12.3 UDP輸入隊列 11.12.4 限制本地IP地址 11.12.5 限制遠端IP地址 11.12.6 每個端口有多個接收者 11.13 小結 第12章 廣播和多播 12.1 引言 12.2 廣播 12.2.1 受限的廣播 12.2.2 指向網絡的廣播 12.2.3 指向子網的廣播 12.2.4 指向所有子網的廣播 12.3 廣播的例子 12.4 多播 12.4.1 多播組地址 12.4.2 多播組地址到以太網地址的轉換 12.4.3 FDDI和令牌環網絡中的多播 12.5 小結 第13章 IGMP:Internet組管理協議 13.1 引言 13.2 IGMP報文 13.3 IGMP協議 13.3.1 加入一個多播組 13.3.2 IGMP報告和查詢 13.3.3 實現細節 13.3.4 生存時間字段 13.3.5 所有主機組 13.4 一個例子 13.5 小結 第14章 DNS:域名系統 14.1 引言 14.2 DNS基礎 14.3 DNS的報文格式 14.3.1 DNS查詢報文中的問題部分 14.3.2 DNS響應報文中的資源記錄部分 14.4 一個簡單的例子 14.5 指針查詢 14.5.1 舉例 14.5.2 主機名檢查 14.6 資源記錄 14.7 高速緩存 14.8 用UDP還是用TCP 14.9 另一個例子 14.10 小結 第15章 TFTP:簡單文件傳送協議 15.1 引言 15.2 協議 15.3 一個例子 15.4 安全性 15.5 小結 第16章 BOOTP: 引導程序協議 16.1 引言 16.2 BOOTP的分組格式 16.3 一個例子 16.4 BOOTP服務器的設計 16.5 BOOTP穿越路由器 16.6 特定廠商信息 16.7 小結 第17章 TCP:傳輸控制協議 17.1 引言 17.2 TCP的服務 17.3 TCP的首部 17.4 小結 第18章 TCP連接的建立與終止 18.1 引言 18.2 連接的建立與終止 18.2.1 tcpdump的輸出 18.2.2 時間系列 18.2.3 建立連接協議 18.2.4 連接終止協議 18.2.5 正常的tcpdump輸出 18.3 連接建立的超時 18.3.1 第一次超時時間 18.3.2 服務類型字段 18.4 最大報文段長度 18.5 TCP的半關閉 18.6 TCP的狀態變遷圖 18.6.1 2MSL等待狀態 18.6.2 平靜時間的概念 18.6.3 FIN_WAIT_2狀態 18.7 復位報文段 18.7.1 到不存在的端口的連接請求 18.7.2 異常終止一個連接 18.7.3 檢測半打開連接 18.8 同時打開 18.9 同時關閉 18.10 TCP選項 18.11 TCP服務器的設計 18.11.1 TCP服務器端口號 18.11.2 限定的本地IP地址 18.11.3 限定的遠端IP地址 18.11.4 呼入連接請求隊列 18.12 小結 第19章 TCP的交互數據流 19.1 引言 19.2 交互式輸入 19.3 經受時延的確認 19.4 Nagle算法 19.4.1 關閉Nagle算法 19.4.2 一個例子 19.5 窗口大小通告 19.6 小結 第20章 TCP的成塊數據流 20.1 引言 20.2 正常數據流 20.3 滑動窗口 20.4 窗口大小 20.5 PUSH標志 20.6 慢啟動 20.7 成塊數據的吞吐量 20.7.1 帶寬時延乘積 20.7.2 擁塞 20.8 緊急方式 20.9 小結 第21章 TCP的超時與重傳 21.1 引言 21.2 超時與重傳的簡單例子 21.3 往返時間測量 21.4 往返時間RTT的例子 21.4.1 往返時間RTT的測量 21.4.2 RTT估計器的計算 21.4.3 慢啟動 21.5 擁塞舉例 21.6 擁塞避免算法 21.7 快速重傳與快速恢復算法 21.8 擁塞舉例(續) 21.9 按每條路由進行度量 21.10 ICMP的差錯 21.11 重新分組 21.12 小結 第22章 TCP的堅持定時器 22.1 引言 22.2 一個例子 22.3 糊塗窗口綜合症 22.4 小結 第23章 TCP的保活定時器 23.1 引言 23.2 描述 23.3 保活舉例 23.3.1 另一端崩潰 23.3.2 另一端崩潰並重新啟動 23.3.3 另一端不可達 23.4 小結 第24章 TCP的未來和性能 24.1 引言 24.2 路徑MTU發現 24.2.1 一個例子 24.2.2 大分組還是小分組 24.3 長肥管道 24.4 窗口擴大選項 24.5 時間戳選項 24.6 PAWS:防止回繞的序號 24.7 T/TCP:為事務用的TCP擴展 24.8 TCP的性能 24.9 小結 第25章 SNMP:簡單網絡管理協議 25.1 引言 25.2 協議 25.3 管理信息結構 25.4 對象標識符 25.5 管理信息庫介紹 25.6 實例標識 25.6.1 簡單變量 25.6.2 表格 25.6.3 字典式排序 25.7 一些簡單的例子 25.7.1 簡單變量 25.7.2 get-next操作 25.7.3 表格的訪問 25.8 管理信息庫(續) 25.8.1 system組 25.8.2 interface組 25.8.3 at組 25.8.4 ip組 25.8.5 icmp組 25.8.6 tcp組 25.9 其他一些例子 25.9.1 接口MTU 25.9.2 路由表 25.10 trap 25.11 ASN.1和BER 25.12 SNMPv 25.13 小結 第26章 Telnet和Rlogin:遠程登錄 26.1 引言 26.2 Rlogin協議 26.2.1 應用進程的啟動 26.2.2 流量控制 26.2.3 客戶的中斷鍵 26.2.4 窗口大小的改變 26.2.5 服務器到客戶的命令 26.2.6 客戶到服務器的命令 26.2.7 客戶的轉義符 26.3 Rlogin的例子 26.3.1 初始的客戶-服務器協議 26.3.2 客戶中斷鍵 26.4 Telnet協議 26.4.1 NVT ASCII 26.4.2 Telnet命令 26.4.3 選項協商 26.4.4 子選項協商 26.4.5 半雙工、一次一字符、一次 一行或行方式 26.4.6 同步信號 26.4.7 客戶的轉義符 26.5 Telnet舉例 26.5.1 單字符方式 26.5.2 行方式 26.5.3 一次一行方式(准行方式) 26.5.4 行方式:客戶中斷鍵 26.6 小結 第27章 FTP:文件傳送協議 27.1 引言 27.2 FTP協議 27.2.1 數據表示 27.2.2 FTP命令 27.2.3 FTP應答 27.2.4 連接管理 27.3 FTP的例子 27.3.1 連接管理:臨時數據端口 27.3.2 連接管理:默認數據端口 27.3.3 文本文件傳輸:NVT ASCII 表示還是圖像表示 27.3.4 異常中止一個文件的傳輸: Telnet同步信號 27.3.5 匿名FTP 27.3.6 來自一個未知IP地址的匿名FTP 27.4 小結 第28章 SMTP:簡單郵件傳送協議 28.1 引言 28.2 SMTP協議 28.2.1 簡單例子 28.2.2 SMTP命令 28.2.3 信封、首部和正文 28.2.4 中繼代理 28.2.5 NVT ASCII 28.2.6 重試間隔 28.3 SMTP的例子 28.3.1 MX記錄:主機非直接連到 Internet 28.3.2 MX記錄:主機出故障 28.3.3 VRFY和EXPN命令 28.4 SMTP的未來 28.4.1 信封的變化:擴充的SMTP 28.4.2 首部變化:非ASCII字符 28.4.3 正文變化:通用Internet郵件 擴充 28.5 小結 第29章 網絡文件系統 29.1 引言 29.2 Sun遠程過程調用 29.3 XDR:外部數據表示 29.4 端口映射器 29.5 NFS協議 29.5.1 文件句柄 29.5.2 安裝協議 29.5.3 NFS過程 29.5.4 UDP還是TCP 29.5.5 TCP上的NFS 29.6 NFS實例 29.6.1 簡單的例子:讀一個文件 29.6.2 簡單的例子:創建一個目錄 29.6.3 無狀態 29.6.4 例子:服務器崩潰 29.6.5 等冪過程 29.7 第3版的NFS 29.8 小結 第30章 其他的TCP/IP應用程序 30.1 引言 30.2 Finger協議 30.3 Whois協議 30.4 Archie、WAIS、Gopher、Veronica和WWW 30.4.1 Archie 30.4.2 WAIS 30.4.3 Gopher 30.4.4 Veronica 30.4.5 萬維網WWW 30.5 X窗口系統 30.5.1 Xscope程序 30.5.2 LBX: 低帶寬X 30.6 小結 附錄A tcpdump程序 附錄B 計算機時鍾 附錄C sock程序 附錄D 部分習題的解答 附錄E 配置選項 附錄F 可以免費獲得的源代碼 參考文獻 縮略語