标题：UNIX网络编程：套接字联网API
图书信息
出版社: 人民邮电出版社; 第1版 (2010年7月1日)
外文书名: UNIX Network Programming(Volume 1):The Sockets Networking API,Third Edition
丛书名: 图灵计算机科学丛书
平装: 804页
正文语种: 简体中文
开本: 16
ISBN: 9787115228406, 711522840X
条形码: 9787115228400, 9787115228406
尺寸: 25.8 x 18.4 x 4 cm
重量: 1.4 Kg
作者简介
作者：（美国）史蒂文斯（W.Richard Stevens） （美国）芬纳（Bill Fenner） （美国）鲁道夫（Andrew M.Rudoff）
史蒂文斯(W. Richard Stevens)（1951—1999）,国际知名的UNIX和网络专家，备受赞誉的技术作家。生前著有《TCP/IP详解》（三卷）、《UNIX环境高级编程》和《UNIX网络编程》（两卷），均为不朽的经典著作。
鲁道夫(Bill Fenner),AT&T实验室的主要技术人员，专攻IP多播、网络管理和测量，他是IETF路由的领域主管之一，负责审批作为RFC出版的所有路由相关文档。 
鲁道夫(Andrew M. Rudoff Sun),公司的资深软件工程师，专攻网络、操作系统内核、文件系统和高可用性软件体系结构。
内容简介
《UNIX网络编程(卷1):套接字联网API(第3版)》是一部UNIX网络编程的经典之作！书中全面深入地介绍了如何使用套接字API进行网络编程。全书不但介绍了基本编程内容，还涵盖了与套接字编程相关的高级主题，对于客户/服务器程序的各种设计方法也作了完整的探讨，最后还深入分析了流这种设备驱动机制。
《UNIX网络编程(卷1):套接字联网API(第3版)》内容详尽且具权威性，几乎每章都提供精选的习题，并提供了部分习题的答案，是网络研究和开发人员理想的参考书。
媒体评论
“所有人都非常期待这本书，因为它完美地结合了实践经验、历史视角以及在本领域浸淫多年才能获得的透彻理解。阅读本书是一种享受，我收获颇丰。相信大家定会有同感。”  
——Sam Leffler，FreeBSD基金会副主席   
“这部著作在计算机科学领域里的传奇得以延续，Bill Fenner和Andrew Rudoff居功至伟。”   
——Art Sedighi   
“这套书是学习网络编程最好的书。全世界最最好的，远超群伦。”   
——S. Devasundaram   
“这本书不会让你一夜之间成为专家，但它终究会让你成为专家。”   
——John Nguyen
目录
第一部分 简介和TCP/IP 
第1章 简介 2 
1.1 概述 2 
1.2 一个简单的时间获取客户程序 5 
1.3 协议无关性 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 用户数据报协议（UDP） 29 
2.4 传输控制协议（TCP） 30 
.2.5 流控制传输协议（SCTP） 31 
2.6 TCP连接的建立和终止 31 
2.7 TIME_WAIT状态 37 
2.8 SCTP关联的建立和终止 38 
2.9 端口号 42 
2.10 TCP端口号与并发服务器 43 
2.11 缓冲区大小及限制 45 
2.12 标准因特网服务 50 
2.13 常见因特网应用的协议使用 51 
2.14 小结 52 
习题 53 
第二部分 基本套接字编程 
第3章 套接字编程简介 56 
3.1 概述 56 
3.2 套接字地址结构 56 
3.3 值-结果参数 61 
3.4 字节排序函数 63 
3.5 字节操纵函数 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 并发服务器 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 套接字状态 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 域名系统 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域协议 324 
15.1 概述 324 
15.2 Unix域套接字地址结构 324 
15.3 socketpair函数 326 
15.4 套接字函数 327 
15.5 Unix域字节流客户/服务器程序 327 
15.6 Unix域数据报客户/服务器程序 329 
15.7 描述符传递 330 
15.8 接收发送者的凭证 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 创建静态安全关联 407 
19.5 动态维护安全关联 412 
19.6 小结 415 
习题 416 
第20章 广播 417 
20.1 概述 417 
20.2 广播地址 418 
20.3 单播和广播的比较 419 
20.4 使用广播的dg_cli函数 422 
20.5 竞争状态 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 发送和接收 454 
21.11 SNTP：简单网络时间协议 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 并发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 部分递送 490 
23.4 通知 492 
23.5 无序的数据 495 
23.6 捆绑地址子集 496 
23.7 确定对端和本端地址信息 497 
23.8 给定IP地址找出关联ID 500 
23.9 心搏和地址不可达 501 
23.10 关联剥离 502 
23.11 定时控制 503 
23.12 何时改用SCTP代替TCP 505 
23.13 小结 506 
习题 506 
第24章 带外数据 507 
24.1 概述 507 
24.2 TCP带外数据 507 
24.3 sockatmark函数 513 
24.4 TCP带外数据小结 519 
24.5 客户/服务器心搏函数 520 
24.6 小结 524 
习题 524 
第25章 信号驱动式I/O 525 
25.1 概述 525 
25.2 套接字的信号驱动式I/O 525 
25.3 使用SIGIO的UDP回射服务器程序 527 
25.4 小结 532 
习题 533 
第26章 线程 534 
26.1 概述 534 
26.2 基本线程函数：创建和终止 535 
26.3 使用线程的str_cli函数 537 
26.4 使用线程的TCP回射服务器程序 538 
26.5 线程特定数据 542 
26.6 Web客户与同时连接 549 
26.7 互斥锁 552 
26.8 条件变量 555 
26.9 Web客户与同时连接（续） 558 
26.10 小结 560 
习题 560 
第27章 IP选项 561 
27.1 概述 561 
27.2 IPv4选项 561 
27.3 IPv4源路径选项 562 
27.4 IPv6扩展首部 569 
27.5 IPv6步跳选项和目的地选项 569 
27.6 IPv6路由首部 573 
27.7 IPv6粘附选项 577 
27.8 历史性IPv6高级API 578 
27.9 小结 579 
习题 579 
第28章 原始套接字 580 
28.1 概述 580 
28.2 原始套接字创建 580 
28.3 原始套接字输出 581 
28.4 原始套接字输入 582 
28.5 ping程序 584 
28.6 traceroute程序 596 
28.7 一个ICMP消息守护程序 608 
28.8 小结 622 
习题 622 
第29章 数据链路访问 623 
29.1 概述 623 
29.2 BPF：BSD分组过滤器 623 
29.3 DLPI：数据链路提供者接口 625 
29.4 Linux：SOCK_PACKET和 PFPACKET 626 
29.5 libpcap：分组捕获函数库 627 
29.6 libnet：分组构造与输出函数库 627 
29.7 检查UDP的校验和字段 628 
29.8 小结 645 
习题 645 
第30章 客户/服务器程序设计范式 646 
30.1 概述 646 
30.2 TCP客户程序设计范式 648 
30.3 TCP测试用客户程序 649 
30.4 TCP迭代服务器程序 650 
30.5 TCP并发服务器程序，每个客户一个子进程 650 
30.6 TCP预先派生子进程服务器程序，accept无上锁保护 653 
30.7 TCP预先派生子进程服务器程序，accept使用文件上锁保护 659 
30.8 TCP预先派生子进程服务器程序，accept使用线程上锁保护 662 
30.9 TCP预先派生子进程服务器程序，传递描述符 663 
30.10 TCP并发服务器程序，每个客户一个线程 667 
30.11 TCP预先创建线程服务器程序，每个线程各自accept 669 
30.12 TCP预先创建线程服务器程序，主线程统一accept 671 
30.13 小结 673 
习题 674 
第31章 流 675 
31.1 概述 675 
31.2 概貌 675 
31.3 getmsg和putmsg函数 678 
31.4 getpmsg和putpmsg函数 679 
31.5 ioctl函数 680 
31.6 TPI：传输提供者接口 680 
31.7 小结 689 
习题 689 
附录A IPv4、IPv6、ICMPv4和ICMPv6 690 
附录B 虚拟网络 704 
附录C 调试技术 708 
附录D 杂凑的源代码 714 
附录E 精选习题答案 726 
参考文献 756 
索引 763