內容簡介
《TCP/IP詳解·卷2:實現》完整而詳細地介紹了TCP/IP協定是如何實現的。
書中給出了約500個圖例,15000行實際操作的C代碼,採用舉例教學的方法幫助你掌握TCP/IP實現。《TCP/IP詳解·卷2:實現》不僅說明了插口API和協定族的關係以及
主機實現與
路由器實現的差別。
還介紹了4.4BSD-Lite版的新的特點。《TCP/IP詳解·卷2:實現》適用於希望理解TCP/IP協定如何實現的人,包括編寫網路應用程式的程式設計師以及利用TCP/IP維護計算機網路的系統管理員。
編輯推薦
《TCP》針對任何希望理解TCP/IP協定是如何實現的讀者設計;無論是編寫網路套用的程式設計師,負責利用TCP/TP維護計算機系統和網路的系統管理員,還是任何有興趣理解大塊非凡代碼的普通讀者;本書都是一本優秀的教科書。
作者簡介
G.R.賴特(Gary R.Wright),美國Connix公司的董事長。合著有《TCP/IP詳解 卷2:實現》。
目錄
譯者序
前言
第1章 概述
1.1 引言
1.2 原始碼表示
1.2.1 將擁塞視窗設定為1
1.2.2 印刷約定
1.3 歷史
1.4 套用編程接口
1.5 程式示例
1.6 系統調用和庫函式
1.7 網路實現概述
1.8 描述符
1.9 mbuf與輸出處理
1.9.1 包含插口地址結構的mbuf
1.9.2 包含數據的mbuf
1.9.3 添加IP和UDP首部
1.9.4 IP輸出
1.9.5 乙太網輸出
1.9.6 UDP輸出小結
1.10 輸入處理
1.10.1 乙太網輸入
1.10.2 IP輸入
1.10.3 UDP輸入
1.10.4 進程輸入
1.11 網路實現概述(續)
1.12 中斷級別與並發
1.13 原始碼組織
1.14 測試網路
1.15 小結
第2章 mbuf:存儲器快取
2.1 引言
2.2 代碼介紹
2.2.1 全局變數
2.2.2 統計
2.2.3 核心統計
2.3 mbufl的定義
2.4 mbuf結構
2.5 簡單的mbuf宏和函式
2.5.1 m-get函式
2.5.2 MGET宏
2.5.3 m-etry函式
2.5.4 mbuf鎖
2.6 m-devget和m-pullup函式
2.6.1 m-devget函式
2.6.2 mtod和dtom宏
2.6.3 pullup函式和連續的協定首部
2.6.4 m-pullup和IP的分片與重組
2.6.5 TCP重組避免調用m-pullup
2.6.6 m-pullup使用總結
2.7 mbuf宏和函式的小結
2.8 Neff3聯網數據結構小結
2.9 m-Copy和簇引用計數
2.10 其他選擇
2.11 小結
第3章 接口層
3.1 引言
3.2 代碼介紹
3.2.1 全局變數
3.2.2 SNMP變數
3.3 ifnet結構
3.4 ifadck結構,
3.5 sockaddr結構
3.6 ifnet與土faddr的專用化
3.7 網路初始化概述
3.8 乙太網初始化
3.9 suP初始化
3.10 環回初始化
3.11 if_attach函式
3.12 ifinit函式
3.13 小結
第4章 接口:乙太網
4.1 引言
4.2 代碼介紹
4.2.1 全局變數
4.2.2 統計量
4.2.3 SNMP變數
4.3 乙太網接口
4.3.1 leintr函式
4.3.2 leread函式
4.3.3 ether_input函式
4.3.4 ether_output函式
4.3.5 lestart函式
4.4 ioctl系統調用
4.4.1 ifioctl函式
4.4.2 ifconf函式
4.4.3 舉例
4.4.4 通用接口ioctl命令
4.4.5 if_down和if_up函式
4.4.6 乙太網、SLIP和環回
4.5 小結
第5章 接口:SLIP和環回
5.1 引言
5.2 代碼介紹
5.2.1 全局變數
5.2.2 統計量
5.3 SLIP接口
5.3.1 SLIP線路規程:SLIPDISC
5.3.2 SLIP初始化:slopen slinit
5.3.3 SLIP輸入處理:slinput
5.3.4 SLIP輸出處理:sloutput
5.3.5 slstart函式
5.3.6 SLIP分組丟失
5.3.7 SLIP性能考慮
5.3.8 slclose函式
5.3.9 sltioctl函式
5.4 環回接口
5.5 小結
第6章 IP編址
6.1 引言
6.1.IIP位址
6.I.2 IP位址的印刷規定
6.1.3 主機和路由器
6.2 代碼介紹
6.3 接口和地址小結
6.4 sockaddr_in結構
6.5 in_ifaddr結構
6.6 地址指派
6.6.1 ifioctl函式
6.6.2 in_control函式
6.6.3 前提條件:SIOCSIFADDR、SIOCSIFNETMASK和SIOCSIFDSFADDR
6.6.4 地址指派:SIOCSIFADDR
6.6.5 in_ifinit函式
6.6.6 網路掩碼指派:SIOCSIFNETMASK
6.6.7 目的地址指派:SIOCSIFDSTADDR
6.6.8 獲取接口信息
6.6.9 每個接口多個IP位址
6.6.10 附加IP位址:SIOCAIFADDR
6.6.11 刪除IP位址:SIOCDIFADDR
6.7 接口ioctl處理
6.7.1 leioctl函式
6.7.2 slioctl函式
6.7.3 loioctl函式
6.8 Internet實用函式
6.9 ifnet實用函式
6.10 小結
第7章 域和協定
7.1 引言
7.2 代碼介紹
7.2.1 全局變數
7.2.2 統計量
7.3 domain結構
7.4 protosw結構
7.5 IP的domain和protosw結構
7.6 pffindproto~Hpffindtype函式
7.7 pfctlinput函式
7.8 IP初始化
7.8.1 Intemet傳輸分用
7.8.2 ip_init函式
7.9 sysctl系統調用
7.10 小結
第8章 IP:網際協定
8.1 引言
8.2 代碼介紹
8.2.1 全局變數
8.2.2 統計量
8.2.3 SNMP變數
8.3 IP分組
8.4 輸入處理:ipintr函式
8.4.1 ipintr概觀
8.4.2 驗證
8.4.3 轉發或不轉發
8.4.4 重裝和分用
8.5 轉發:ip_forward函式
8.6 輸出處理:ip_output函式
8.6.1 首部初始化
8.6.2 路由選擇
8.6.3 源地址選擇和分片
8.7 Internet檢驗和:in_cksum函式
8.8 setsockopt和getsockopt系統調用
8.8.1 PRCO_SETOPT的處理
8.8.2 PRCO_GETOPT的處理
8.9 ip_sysctl函式
8.10 小結
第9章 IP選項處理
9.1 引言
9.2 代碼介紹
9.2.1 全局變數
9.2.2 統計量
9.3 選項格式
9.4 ip_dooptions函式
9.5 記錄路由選項
9.6 源站和記錄路由選項
9.6.1 save_rte函式
9.6.2 ip_srcroute函式
9.7 時間戳選項:
9.8 ip_insertoptions函式
9.9 ip_pcbopts函式
9.10 一些限制
9.11 小結
笫10章 IP的分片與重裝
10.1 引言
10.2 代碼介紹
10.2.1 全局變數
10.2.2 統計量
10.3 分片
10.4 ip_optcopy函式
10.5 重裝
10.6 ip_reass函式
10.7 ip_slowtimo函式
10.8 小結
第11章 ICMP:Internet控制報文協定
11.1 引言
11.2 代碼介紹
11.2.1 全局變數
11.2.2 統計量
11.2.3 SNMP變數
11.3 icmp結構
11.4 ICMP的protosw結構
11.5 輸入處理:icmp_input函式
11.6 差錯處理
11.7 請求處理
11.7.1 回顯詢問:ICMP_ECHO和ICMLHCHOREPLY
11.7.2 時間戳詢問:ICMP_TSTAMP和
ICMPTSTAMPREPLY
11.7.3 地址掩碼詢問:ICMP_MASKREQ和ICMP_MASKREPLY
11.7.4 信息詢問:ICMP_IREQ和ICMP_IREQREPLY
11.7.5 路由器發現:ICMP_ROUTERADVERy和ICMP_ROUTERSOLICIF
11.8 重定向處理
11.9 回答處理
11.10 輸出處理
11.11 icmp_error函式
11.12 icmpreflect函式
11.13 icmp_send函式
11.14 icmp_sysctl函式
11.15 小結
第12章 IP多播
12.1 引言
12.2 代碼介紹
12.2.1 全局變數
12.2.2 統計量
12.3 乙太網多播地址
12.4 ether_multi結構
12.5 乙太網多播接收
12.6 inmulti結構
12.7 ip_moptions結構
12.8 多播的插口選項
12.9 多播的TTL值
12.9.1 MBONE
12.9.2 擴展環搜尋
12.10 ip_setmoptions函式
12.10.1 選擇一個明確的多播接口:IP_MULTICAS%_IF
12.10.2 選擇明確的多播TTL:IP_MULTICASTTTL
12.10.3 選擇多播環回:IPMULTICAST_LOOP
12.11 加入一個IP多播組
12.11.1 in_addmulti函式
12.11.2 slioctl和loioctl函式:SIOCADDMULTT和SIOCDRLTI
12.11.3 Leioctl函式:SIOCADDMULTI和SIOCDELMULTI
12.11.4 etheraddmulti函式
12.12 離開一個IP多播組
12.12.1 in_delmulti函式
12.12.2 ether_delmulti函式
12.13 ip_getmoptions函式
12.14 多播輸入處理:ipintr函式
12.15 多播輸出處理:ip_output函式
12.16 性能的考慮
12.17 小結
第13章 IGMP:Intemet組管理協定
13.1 引言
13.2 代碼介紹
13.2.1 全局變數
13.2.2 統計量
13.2.3 SNMP變數
13.3 igrmp結構
13.4 IGMP的protosw的結構
13.5 加入一個組:igmp_joingroup函式
13.6 igmp_fasttimo函式
]3.7 輸入處理:igmp_input函式
13.7.1 成員關係查詢:IGMP_HOST_M194BERSHIPQUERY
13.7.2 成員關係報告:IGMP_HOST_MEMBERSHIPREPORT
13.8 離開一個組:ignlo_leavegroup函式
13.9 小結
第14章 IP多播選路
14.1 引言
14.2 代碼介紹
14.2.1 全局變數
14.2.2 統計量
14.2.3 SNMP變數
14.3 多播輸出處理(續)
14.4 mrouted守護程式
14.5 虛擬接口
14.5.1 虛擬接口表
14.5.2 add_vif函式
14.5.3 del_vif函式
14.6 IGMP(續)
14.6.1 add_igrp函式
14.6.2 del_igrp函式
14.6.3 grplst_member函式
14.7 多播選路
……
第15章 插口層
第16章 插口I/O
第17章 插口選項
第18章 Radix樹路由表
第19章 選路請求和選路訊息
第20章 選路插口