第一部分 簡介和TCP/IP
第1章 簡介 2
1.1 概述 2
1.2 一個簡單的時間獲取客戶程序 5
1.3 協(xié)議無關性 9
1.4 錯誤處理:包裹函數 10
1.5 一個簡單的時間獲取服務器程序 12
1.6 本書中客戶/服務器程序示例索引表 14
1.7 OSI模型 16
1.8 BSD網絡支持歷史 17
1.9 測試用網絡及主機 19
1.10 Unix標準 22
1.11 64位體系結構 24
1.12 小結 25
習題 25
第2章 傳輸層:TCP、UDP和SCTP 27
2.1 概述 27
2.2 總圖 27
2.3 用戶數據報協(xié)議(UDP) 29
2.4 傳輸控制協(xié)議(TCP) 30
2.5 流控制傳輸協(xié)議(SCTP) 31
2.6 TCP連接的建立和終止 31
2.7 TIME_WAIT狀態(tài) 37
2.8 SCTP關聯的建立和終止 38
2.9 端口號 42
2.10 TCP端口號與并發(fā)服務器 43
2.11 緩沖區(qū)大小及限制 45
2.12 標準因特網服務 50
2.13 常見因特網應用的協(xié)議使用 51
2.14 小結 52
習題 53
第二部分 基本套接字編程
第3章 套接字編程簡介 56
3.1 概述 56
3.2 套接字地址結構 56
3.3 值—結果參數 61
3.4 字節(jié)排序函數 63
3.5 字節(jié)操縱函數 66
3.6 inet_aton、inet_addr和inet_ntoa函數 67
3.7 inet_pton和inet_ntop函數 68
3.8 sock_ntop和相關函數 70
3.9 readn、writen和readline函數 72
3.10 小結 76
習題 76
第4章 基本TCP套接字編程 77
4.1 概述 77
4.2 socket函數 77
4.3 connect函數 80
4.4 bind函數 81
4.5 listen函數 84
4.6 accept函數 88
4.7 fork和exec函數 90
4.8 并發(fā)服務器 91
4.9 close函數 93
4.10 getsockname和getpeername函數 94
4.11 小結 96
習題 96
第5章 TCP客戶/服務器程序示例 97
5.1 概述 97
5.2 TCP回射服務器程序:main函數 97
5.3 TCP回射服務器程序:str_echo函數 98
5.4 TCP回射客戶程序:main函數 99
5.5 TCP回射客戶程序:str_cli函數 100
5.6 正常啟動 101
5.7 正常終止 102
5.8 POSIX信號處理 103
5.9 處理SIGCHLD信號 106
5.10 wait和waitpid函數 108
5.11 accept返回前連接中止 111
5.12 服務器進程終止 112
5.13 SIGPIPE信號 113
5.14 服務器主機崩潰 114
5.15 服務器主機崩潰后重啟 115
5.16 服務器主機關機 116
5.17 TCP程序例子小結 116
5.18 數據格式 117
5.19 小結 120
習題 120
第6章 I/O復用:select和poll函數 122
6.1 概述 122
6.2 I/O模型 122
6.3 select函數 127
6.4 str_cli函數(修訂版) 132
6.5 批量輸入 133
6.6 shutdown函數 136
6.7 str_cli函數(再修訂版) 137
6.8 TCP回射服務器程序(修訂版) 138
6.9 pselect函數 142
6.10 poll函數 144
6.11 TCP回射服務器程序(再修訂版) 146
6.12 小結 148
習題 149
第7章 套接字選項 150
7.1 概述 150
7.2 getsockopt和setsockopt函數 150
7.3 檢查選項是否受支持并獲取默認值 152
7.4 套接字狀態(tài) 156
7.5 通用套接字選項 156
7.6 IPv4套接字選項 168
7.7 ICMPv6套接字選項 169
7.8 IPv6套接字選項 169
7.9 TCP套接字選項 171
7.10 SCTP套接字選項 173
7.11 fcntl函數 182
7.12 小結 184
習題 184
第8章 基本UDP套接字編程 186
8.1 概述 186
8.2 recvfrom和sendto函數 187
8.3 UDP回射服務器程序:main函數 187
8.4 UDP回射服務器程序:dg_echo函數 188
8.5 UDP回射客戶程序:main函數 190
8.6 UDP回射客戶程序:dg_cli函數 190
8.7 數據報的丟失 191
8.8 驗證接收到的響應 191
8.9 服務器進程未運行 193
8.10 UDP程序例子小結 194
8.11 UDP的connect函數 196
8.12 dg_cli函數(修訂版) 199
8.13 UDP缺乏流量控制 200
8.14 UDP中的外出接口的確定 203
8.15 使用select函數的TCP和UDP回射服務器程序 204
8.16 小結 206
習題 207
第9章 基本SCTP套接字編程 208
9.1 概述 208
9.2 接口模型 208
9.3 sctp_bindx函數 212
9.4 sctp_connectx函數 213
9.5 sctp_getpaddrs函數 213
9.6 sctp_freepaddrs函數 213
9.7 sctp_getladdrs函數 214
9.8 sctp_freeladdrs函數 214
9.9 sctp_sendmsg函數 214
9.10 sctp_recvmsg函數 215
9.11 sctp_opt_info函數 215
9.12 sctp_peeloff函數 216
9.13 shutdown函數 216
9.14 通知 217
9.15 小結 221
習題 222
第10章 SCTP客戶/服務器程序例子 223
10.1 概述 223
10.2 SCTP一到多式流分回射服務器程序:main函數 223
10.3 SCTP一到多式流分回射客戶程序:main函數 225
10.4 SCTP流分回射客戶程序:sctpstr_cli函數 226
10.5 探究頭端阻塞 228
10.6 控制流的數目 233
10.7 控制終結 233
10.8 小結 234
習題 235
第11章 名字與地址轉換 236
11.1 概述 236
11.2 域名系統(tǒng) 236
11.3 gethostbyname函數 239
11.4 gethostbyaddr函數 242
11.5 getservbyname和getservbyport函數 242
11.6 getaddrinfo函數 245
11.7 gai_strerror函數 250
11.8 freeaddrinfo函數 251
11.9 getaddrinfo函數:IPv6 251
11.10 getaddrinfo函數:例子 253
11.11 host_serv函數 254
11.12 tcp_connect函數 254
11.13 tcp_listen函數 257
11.14 udp_client函數 261
11.15 udp_connect函數 263
11.16 udp_server函數 264
11.17 getnameinfo函數 266
11.18 可重入函數 267
11.19 gethostbyname_r和gethostbyaddr_r函數 270
11.20 作廢的IPv6地址解析函數 271
11.21 其他網絡相關信息 272
11.22 小結 273
習題 274
第三部分 高級套接字編程
第12章 IPv4與IPv6的互操作性 278
12.1 概述 278
12.2 IPv4客戶與IPv6服務器 278
12.3 IPv6客戶與IPv4服務器 281
12.4 IPv6地址測試宏 283
12.5 源代碼可移植性 284
12.6 小結 284
習題 285
第13章 守護進程和inetd超級服務器 286
13.1 概述 286
13.2 syslogd守護進程 286
13.3 syslog函數 287
13.4 daemon_init函數 289
13.5 inetd守護進程 293
13.6 daemon_inetd函數 297
13.7 小結 299
習題 299
第14章 高級I/O函數 300
14.1 概述 300
14.2 套接字超時 300
14.3 recv和send函數 305
14.4 readv和writev函數 306
14.5 recvmsg和sendmsg函數 307
14.6 輔助數據 310
14.7 排隊的數據量 313
14.8 套接字和標準I/O 313
14.9 高級輪詢技術 316
14.10 T/TCP:事務目的TCP 320
14.11 小結 322
習題 323
第15章 Unix域協(xié)議 324
15.1 概述 324
15.2 Unix域套接字地址結構 324
15.3 socketpair函數 326
15.4 套接字函數 327
15.5 Unix域字節(jié)流客戶/服務器程序 327
15.6 Unix域數據報客戶/服務器程序 329
15.7 描述符傳遞 330
15.8 接收發(fā)送者的憑證 337
15.9 小結 340
習題 340
第16章 非阻塞式I/O 341
16.1 概述 341
16.2 非阻塞讀和寫:str_cli函數(修訂版) 342
16.3 非阻塞connect 351
16.4 非阻塞connect:時間獲取客戶程序 352
16.5 非阻塞connect:Web客戶程序 354
16.6 非阻塞accept 362
16.7 小結 363
習題 363
第17章 ioctl操作 365
17.1 概述 365
17.2 ioctl函數 365
17.3 套接字操作 366
17.4 文件操作 367
17.5 接口配置 367
17.6 get_ifi_info函數 369
17.7 接口操作 378
17.8 ARP高速緩存操作 378
17.9 路由表操作 380
17.10 小結 381
習題 381
第18章 路由套接字 382
18.1 概述 382
18.2 數據鏈路套接字地址結構 382
18.3 讀和寫 383
18.4 sysctl操作 390
18.5 get_ifi_info函數 394
18.6 接口名字和索引函數 397
18.7 小結 401
習題 401
第19章 密鑰管理套接字 402
19.1 概述 402
19.2 讀和寫 403
19.3 傾瀉安全關聯數據庫 404
19.4 創(chuàng)建靜態(tài)安全關聯 407
19.5 動態(tài)維護安全關聯 412
19.6 小結 415
習題 416
第20章 廣播 417
20.1 概述 417
20.2 廣播地址 418
20.3 單播和廣播的比較 419
20.4 使用廣播的dg_cli函數 422
20.5 競爭狀態(tài) 424
20.6 小結 431
習題 432
第21章 多播 433
21.1 概述 433
21.2 多播地址 433
21.3 局域網上多播和廣播的比較 436
21.4 廣域網上的多播 438
21.5 源特定多播 440
21.6 多播套接字選項 441
21.7 mcast_join和相關函數 445
21.8 使用多播的dg_cli函數 450
21.9 接收IP多播基礎設施會話聲明 451
21.10 發(fā)送和接收 454
21.11 SNTP:簡單網絡時間協(xié)議 457
21.12 小結 461
習題 461
第22章 高級UDP套接字編程 462
22.1 概述 462
22.2 接收標志、目的IP地址和接口索引 462
22.3 數據報截斷 467
22.4 何時用UDP代替TCP 467
22.5 給UDP應用增加可靠性 469
22.6 捆綁接口地址 478
22.7 并發(fā)UDP服務器 482
22.8 IPv6分組信息 483
22.9 IPv6路徑MTU控制 486
22.10 小結 487
習題 488
第23章 高級SCTP套接字編程 489
23.1 概述 489
23.2 自動關閉的一到多式服務器程序 489
23.3 部分