本书全面深入地讲述了套接口API网络编程的既成事实标准,对X/Open传输接口API也作了广泛的介绍。本书从对套接口API的综合讨论开始,论述了基本编程内容后,即转入高级套接口编程的相关主题,包括IPv4与IPv6的互操作性、UNIX域协议、非阻塞I/O路由套接口、广播、多播、线程、原始套接口、数据库链路访问等,对于客户一般服务器的各种设计方法也作了完整的探讨。在叙述X/Open传输接口API时,还对流管种设备驱动机制作了深入分析。在附录中又给出了IPv6、ICMPv6、虚拟网络等新内容。\r\n 本书内容详尽且具权威性,几乎每章都提供精选的习题,是计算机和网络专业高年级本科生和研究生的首选教材。本书也可作为网络研究和开发人员的自学教材和参考书。
前言\r\n\r\n第1部分 简介和TCP/IP\r\n\r\n第1章 简介\r\n\r\n1.1 概述\r\n1.2 一个简单的时间/时期客户程序\r\n1.3 协议无关性\r\n1.4 错误处理:包裹函数\r\n1.5 一个简单的时间/日期服务器程序\r\n1.6 书中客户-服务器程序例子索引表\r\n1.7 OSI模型\r\n1.8 BSD网络支持历史\r\n1.9 测试用网络及主机\r\n1.10 Unix标准\r\n1.11 64位体系结构\r\n1.12 小结\r\n1.13 习题\r\n\r\n第2章 传输层:TCP和UDP\r\n\r\n2.1 概述\r\n2.2 总图\r\n2.3 UDP:用户数据报协议\r\n2.4 TCP;传输控制协议\r\n2.5 TCP连接的建立和终止\r\n2.6 TIME-WAIT状态\r\n2.7 端口号\r\n2.8 TCP端口号与并发服务器\r\n2.9 缓冲区大小及限制\r\n2.10 标准因特网服务\r\n2.11 常见因特网应用程序的协议使用\r\n2.12 小结\r\n2.13 习题\r\n\r\n第2部分 基本套接口编程\r\n\r\n第3章 套接口编程简介\r\n\r\n3.1 概述\r\n3.2 套接口地址结构\r\n3.3 值结果参数\r\n3.4 字节排序函数\r\n3.5 字节操纵函数\r\n3.6 inet-aton、inet-addr和inet-ntoa函数\r\n3.7 inet-pton和inet-ntop函数\r\n3.8 sock-ntop 和相关函数\r\n3.9 readn、writen和readline函数\r\n3.10 isfdtype函数\r\n3.11 小结\r\n3.12 习题\r\n\r\n第4章 基本TCP套接口编程\r\n\r\n4.1 概述\r\n4.2 Socket函数\r\n4.3 connetct函数\r\n4.4 bind函数\r\n4.5 listen函数\r\n4.6 accept函数\r\n4.7 fork和exec函数\r\n4.8 并发服务器\r\n4.9 close函数\r\n4.10 getsockname和getpeername函数\r\n4.11 小结\r\n4.12 习题\r\n\r\n第5章 TCP客户-服务器程序例子\r\n\r\n5.1 概述\r\n5.2 TCP回射服务器程序:main函数\r\n5.3 TCP回射服务器程序:str-echo函数\r\n5.4 TCP回射客户程序:main函数\r\n5.5 TCP回射客户程序:str-cli函数\r\n5.6 正常启动\r\n5.7 正常终止\r\n5.8 Posix信号处理\r\n5.9 处理SIGCHLD信号\r\n5.10 wait和watipid函数\r\n5.11 accept返回前连接夭折\r\n5.12 服务器进程终止\r\n5.13 SIGPIPE信号\r\n5.14 服务器主崩溃\r\n5.15 服务主机崩溃后重启\r\n5.16 服务器主机关机\r\n5.17 TCP程序例子小结\r\n5.18 数据格式\r\n5.19 小结\r\n5.20 习题\r\n\r\n第6章 I/O复用:select和poll函数\r\n\r\n6.1 概述\r\n6.2 I/O模型\r\n6.3 select函数\r\n6.4 str-cli函数(修订版)\r\n6.5 批量输入\r\n6.6 shutdown函数\r\n6.7 str-cli函数(再修订版)\r\n6.8 TCP回射服务器程序(修订版)\r\n6.9 pselect函数\r\n6.10 Poll函数\r\n6.11 TCP回射服务器程序(再修订版)\r\n6.12 小结\r\n6.13 习题\r\n\r\n第7章 套接口选项\r\n\r\n7.1 概述\r\n7.2 getsockopt和setockopt函数\r\n7.3 检查选项是否受支持并获取缺省值\r\n7.4 套接口状态\r\n7.5 基本套接口选项\r\n7.6 IPv4套接口选项\r\n7.7 ICMPv6套接口选项\r\n7.8 IPv6套接口选项\r\n7.9 TCP套接口选项\r\n7.10 cntl函数\r\n7.11 小结\r\n7.12 习题\r\n\r\n第8章 基本UDP套接口编程\r\n\r\n8.1 概述\r\n8.2 recvfrom 和sendto函数\r\n8.3 UDP回射服务器程序:main函数\r\n8.4 UDP回射服务器程序:dg-echo函数\r\n8.5 UDP回射客户程序:main函数\r\n8.6 UDP回射客户程序:dg-cli函数\r\n8.7 数据报的丢失\r\n8.8 验证接收到的响应\r\n8.9 服务器进程未运行\r\n8.10 UDP程序例子小结\r\n8.11 UDP的connect函数\r\n8.12 dg-cli函数(修订版)\r\n8.13 UDP缺乏流量控制\r\n8.14 UDP中外出接口的确定\r\n8.15 使用select函数的TCP和UDP回射服务器程序\r\n8.16 小结\r\n8.17 习题\r\n\r\n第9章 基本名字与地址转换\r\n\r\n9.1 概述\r\n9.2 域名系统\r\n9.3 gethostbyname函数\r\n9.4 RES-USE-INET6解析器选项\r\n9.5 gethostbyname2函数与IPv6函数\r\n9.6 gethostbyaddr函数\r\n9.7 uname函数\r\n9.8 gethostname函数\r\n9.9 getservbyname和getservbyport函数\r\n9.10 其他网络相关信息\r\n9.11 小结\r\n9.12 习题\r\n\r\n第3部分 高级套接口编程\r\n\r\n第10章 IPv4和IPv6的互操作性\r\n\r\n10.1 概述\r\n10.2 IPv4客户与IPv4服务器\r\n10.3 IPv6客户与IPv4服务器\r\n10.4 IPv6地址测试宏\r\n10.5 IPv6-ADDRFORM套接口选项\r\n10.6 源代码可移植性\r\n10.7 小结\r\n10.8 习题\r\n\r\n第11章 高级名字与地址转换\r\n\r\n11.1 概述\r\n11.2 getaddrinfo函数\r\n11.3 gai-strerror函数\r\n11.4 freeaddrinfo函数\r\n11.5 getaddrinfor函数:IPv6和UNIX域\r\n11.6 getaddrinfo函数:例子\r\n11.7 host-serv函数\r\n11.8 tcp-connect函数\r\n11.9 tcp-listen函数\r\n11.10 udp-client函数\r\n11.11 udp-connect函数\r\n11.12 udp-server函数\r\n11.13 getnameinfo函数\r\n11.14 可重入函数\r\n11.15 gethostbyname-r和gethostbyname-r函数\r\n11.16 getaddrinfo和getaddrinfo函数的实现\r\n11.17 小结\r\n11.18 习题\r\n\r\n第12章 守护进程和inetd超级服务器\r\n\r\n12.1 概述\r\n12.2 syslogd守护进程\r\n12.3 syslog函数\r\n12.4 daemon-init函数\r\n12.5 inetd守护进程\r\n12.6 daemon-inetd函数\r\n12.7 小结\r\n12.8 习题\r\n\r\n第13章 高级I/O函数\r\n\r\n13.1 概述\r\n13.2 套接口超时\r\n13.3 recv和send函数\r\n13.4 readv和writev函数\r\n13.5 recvmsg和sendmsg函数\r\n13.6 辅助数据\r\n13.7 排队的数据量\r\n13.8 套接口与标准I/O\r\n13.9 T/TCP:事务TCP\r\n13.10 小结\r\n13.11 习题\r\n\r\n第14章 Unix域协议\r\n\r\n14.1 概述\r\n14.2 Unix域套接口地址结构\r\n14.3 socketpair函数\r\n14.4 套接口函数\r\n14.5 Unix域字节流客户-服务器程序\r\n14.6 Unix域数据报客户-服务器程序\r\n14.7 描述字传递\r\n14.8 接收发送者的凭证\r\n14.9 小结\r\n14.10 习题\r\n\r\n第15章 非阻塞I/O\r\n\r\n15.1 概述\r\n15.2 非阻塞读和写:str-cli函数(修订版)\r\n15.3 非阻塞connect\r\n15.4 非阻塞connect:日期/时间客户程序\r\n15.5 非阻塞connect:web客户程序\r\n15.6 非阻塞accept\r\n15.7 小结\r\n15.8 习题\r\n\r\n第16章 ioctl操作\r\n\r\n16.1 概述\r\n16.2 ioctl函数\r\n16.3 套接口操作\r\n16.4 文件操作\r\n16.5 接口配置\r\n16.6 get-ini-info函数\r\n16.7 接口操作\r\n16.8 ARP高速缓存操作\r\n16.9 路由表操作\r\n16.10 小结\r\n16.11 习题\r\n\r\n第17章 路由套接口\r\n\r\n17.1 概述\r\n17.2 数据链套接口地址结构\r\n17.3 读和写\r\n17.4 sysctl操作\r\n17.5 get-ifi-info函数\r\n17.6 接口名和索引函数\r\n17.7 小结\r\n17.8 习题\r\n\r\n第18章 广播\r\n\r\n18.1 概述\r\n18.2 广播地址\r\n18.3 单播和广播的比较\r\n18.4 使用广播的dg-cli函数\r\n18.5 竞争状态\r\n18.6 小结\r\n18.7 习题\r\n\r\n第19章 多播\r\n\r\n19.1 概述\r\n19.2 多播地址\r\n19.3 局域网上多播和广播的比较\r\n19.4 广域网上的多播\r\n19.5 多播套接口选项\r\n19.6 mcast-join和相关函数\r\n19.7 使用多播的dg-cli函数\r\n19.8 接收MBone会话声明\r\n19.9 发送和接收\r\n19.10 SNTP:简单网络时间协议\r\n19.11 SNTP(续)\r\n19.12 小结\r\n19.13 习题\r\n\r\n第20章 高级UDP套接口编程\r\n\r\n20.1 概述\r\n20.2 接收标志、目的IP地址和接口索引\r\n20.3 数据报截断\r\n20.4 何时使用UDP而不是TCP\r\n20.5 给UDP应用程序增加可靠性\r\n20.6 捆绑接口地址\r\n20.7 并发UDP服务\r\n20.8 IPv6分组信息\r\n20.9 小结\r\n20.10 习题\r\n\r\n第21章 带外数据\r\n\r\n21.1 概述\r\n21.2 TCP带外数据\r\n21.3 sockatmark函数\r\n21.4 TCP带外数据小结\r\n21.5 客户-服务器心博函数\r\n21.6 小结\r\n21.7 习题\r\n\r\n第22章 信号驱动I/O\r\n\r\n22.1 概述\r\n22.2 套接口上信号驱动I/O\r\n22.3 使用SIGIO的UDP回射服务器程序\r\n22.4 小结\r\n22.5 习题\r\n\r\n第23章 线程\r\n\r\n23.1 概述\r\n23.2 基本线程函数:创建和终止\r\n23.3 使用线程的str-cli函数\r\n23.4 使用线程的TCP回射服务程序\r\n23.5 线程特定数据\r\n23.6 Web客户与同时连接\r\n23.7 互斥锁\r\n23.8 条件变量\r\n23.9 Web客户与同时连接(续)\r\n23.10 小结\r\n23.11 习题\r\n\r\n第24章 IP选项\r\n\r\n24.1 概述\r\n24.2 IPv4选项\r\n24.3 IP源路径选项\r\n24.4 IPv6扩展头部\r\n24.5 IPv6步跳选项和目的的选项\r\n24.6 IPv6由头部\r\n24.7 IPv6粘附选项\r\n24.8 小结\r\n24.9 习题\r\n\r\n第25章 原始套接口\r\n\r\n25.1 概述\r\n25.2 原始套接口创建\r\n25.3 原始套接口输出\r\n25.4 原始套接口输入\r\n25.5 ping程序\r\n25.6 Traceroute程序\r\n25.7 一个ICMP消息守护进程\r\n25.8 小结\r\n25.9 习题\r\n\r\n第26章 数据链接访问\r\n\r\n26.1 概述\r\n26.2 BPF:BSD分组过滤器\r\n26.3 DLPI:数据链路提供者接口\r\n26.4 Linux:SOCK-PACKET\r\n26.5 libpcap:分组捕获函数库\r\n26.6 检查UDP的检验和字段\r\n26.7 小结\r\n26.8 习题\r\n\r\n第27章 客户-服务器程序其他设计方法\r\n\r\n27.1 概述\r\n27.2 TCP客户程序其他设计方法\r\n27.3 TCP测试用客户程序\r\n27.4 TCP迭代服务器程序\r\n27.5 TCP并发服务器程序,每个客户一个子进程\r\n27.6 TCP预先派生子进程服务器程序,accept无上锁保护\r\n27.7 TCP预先派生子进程服务器程序,accept使用文件锁保护\r\n27.8 TCP预先派生子进程服务器程序,accept使用线程互斥锁保护\r\n27.9 TCP预先派生子进程服务器程序,传递描述文字\r\n27.10 TCP并发服务器程序,每个客户一个线程\r\n27.11 TCP预先创建线程服务器程序,每个线程各自accept\r\n27.12 TCP预先创建线程服务器程序,主线程统一accept\r\n27.13 小结\r\n27.14 习题\r\n\r\n第4部分 XTI:X/Open传输接口编程\r\n\r\n第28章 XTI:TCP客户程序\r\n\r\n28.1 概述\r\n28.2 t-open函数\r\n28.3 t-error和t-strerror函数\r\n28.4 netbuf结构和xti结构\r\n28.5 t-bind函数\r\n28.6 t-connect函数\r\n28.7 t-rcv和t-rcvrel函数\r\n28.8 t-look函数\r\n28.9 t-sndrel和t-rcvrel函数\r\n28.10 t-snddis和t-rcvdis函数\r\n28.11 XTI TCP时间/日期客户程序\r\n28.12 xti-rdwr函数\r\n28.13 小结\r\n28.14 习题\r\n\r\n第29章 XTI:名字与地址函数\r\n\r\n29.1 概述\r\n29.2 /etc/netconfig文件与netconfig函数\r\n29.3 NETPATH环境变量与netpath函数\r\n29.4 netdir函数\r\n29.5 t-alloc和t-free函数\r\n29.6 t-getprotaddr函数\r\n29.7 xti-ntop函数\r\n29.8 tcp-connect函数\r\n29.9 小结\r\n29.10 习题\r\n\r\n第30章 XTI:TCP服务器程序\r\n\r\n30.1 概述\r\n30.2 t-listen函数\r\n30.3 tcp-listen函数\r\n30.4 t-accept函数\r\n30.5 xti-accept函数\r\n30.6 简单的时间/日期服务器程序\r\n30.7 多个待处理连接\r\n30.8 xti-accept函数(修订版)\r\n30.9 小结\r\n30.10 习题\r\n\r\n第31章 XTI:UDP客户和服务器程序\r\n\r\n31.1 概述\r\n31.2 t-rcvudata和t-sndudata函数\r\n31.3 udp-client函数\r\n31.4 t-rcvuderr函数:异步错误\r\n31.5 udp-server函数\r\n31.6 分片读取数据报\r\n31.7 小结\r\n\r\n第32章 XTI选项\r\n\r\n32.1 概述\r\n32.2 t-opthdr结构\r\n32.3 XTI选项\r\n32.4 t-optmgmt函数\r\n32.5 检查选项是否受支持并获取缺省值\r\n32.6 获取和设置XTI选项\r\n32.7 小结\r\n\r\n第33章 流\r\n\r\n33.1 概述\r\n33.2 概貌\r\n33.3 getmsg和putmsg函数\r\n33.4 getpmsg和putpmsg函数\r\n33.5 ioctl函数\r\n33.6 TIP:传输提供者接口\r\n33.7 小结\r\n33.8 习题\r\n\r\n第34章 XTI:其他函数\r\n\r\n34.1 概述\r\n34.2 非阻塞I/O\r\n34.3 t-rcvconect函数\r\n34.4 t-getinfo函数\r\n34.5 t-getstate函数\r\n34.6 t-sync函数\r\n34.7 t-undind函数\r\n34.8 t-rcvv和t-rcvvudata函数\r\n34.9 t-sndv和t-sndvudata函数\r\n34.10 t-rcvreldata和t-sndreldata函数\r\n34.11 信号驱动I/O\r\n34.12 带外数据\r\n34.13 回馈传输提供者\r\n34.14 小结\r\n\r\n第5部分 附录\r\n\r\n附录A IPv4、IPv6、ICMPv4和ICMPv6\r\n\r\nA.1 概述\r\nA.2 IPv4头部\r\nA.3 IPv6头部\r\nA.4 IPv4地址\r\nA.5 IPv6地址\r\nA.6 ICMPv4和ICMPv6:网际控制消息协议\r\n\r\n附录B 虚拟网络\r\n\r\nB.1 概述\r\nB.2 MBone\r\nB.3 6bone\r\n\r\n附录C 调试技术\r\n\r\nC.1 系统调用跟踪\r\nC.2 标准因特网服务\r\nC.3 sock程序\r\nC.4 小测试程序\r\nC.5 tcpdump程序\r\nC.6 netstat程序\r\nC.7 lsof程序\r\n\r\n附录D 杂凑的源代码\r\n\r\nD.1 unp.h 头文件\r\nD.2 config.h头文件\r\nD.3 unpxti.h头文件\r\nD.4 标准错误处理函数\r\n\r\n附录E 部分习题解答\r\n附录F 参考文献\r\n附录G 函数和宏定义索引表\r\n附录H 结构定义索引表\r\n附录I 中英文对照词汇表