UNIX 网络编程:第3版

UNIX 网络编程:第3版
作 者: 史蒂文斯 芬纳 鲁道夫 杨继张
出版社: 清华大学出版社
丛编项: 北京科海培训中心图书
版权说明: 本书为公共版权或经版权方授权,请支持正版图书
标 签: UNIX
ISBN 出版时间 包装 开本 页数 字数
未知 暂无 暂无 未知 0 暂无

作者简介

  作者:W.RichardStevens国际知名的Unix和网络专家,《TCP/IP详解》(三卷本)作者W.RichardStevens(1951-1999),是国际知名的Unix和网络专家;受人尊敬的计算机图书作家;同时他还是广受欢迎的教师和顾问。Stevens先生1951年生于赞比亚,他的家庭曾多次搬迁,最终定居于南非。早年,他就读于美国弗吉尼亚州的费什本军事学校,后获得密歇根大学学士、亚利桑那大学系统工程硕士和博士学位。他曾就职于基特峰国家天文台,从事计算机编程;还曾在康涅狄格州纽黑文市的健康系统国际公司任主管计算机服务的副总裁。Stevens先生不幸病逝于1999年9月1日,他的离去是计算机界的巨大损失。UNIX环境高级编程(第2版)>>更多作品

内容简介

本书第1版和第2版由已故UNIX网络专家W.RichardStevens博士独自编写。本书是3版,由世界著名网络专家BillFenner和AndrewM.Rudoff执笔,根据近几年网络技术的发展,对上一版进行全面修订,增添了IPv6的更新过的信息、SCTP协议和密钥管理套接口的内容,删除了X/Open传输接口的内容。.本书全面深入地介绍了如何使用套接口API进行网络编程。全书从对套接口API的综合讨论开始,论述了基本编程内容后,即转入高级套接口编程的相关主题,包括IPv4与IPv6的互操作性、UNIX域协议、非阻塞I/O、路由套接口、广播、多播、线程、原始套接口、数据链路访问等,对于客户/服务器程序的各种设计方法也作了完整的探讨,最后还对流这种设备驱动机制作了深入分析。在附录中给出了IPv6、ICMPv6、虚拟网络等内容以及部分习题答案。..本书内容详尽且具权威性,几乎每章都提供精选的习题,是计算机和网络专业高年级本科生和研究生的首选教材,本书也可作为网络研究和开发人员的自学教材和参考书。...UNIX网络编程卷I套接字联网API(英文版第三版)

图书目录

第1部分简介和TCP/IP

第1章简介(1)

1.1概述(1)

1.2一个简单的时间获取客户程序(4)

1.3协议无关性(9)

1.4错误处理:包裹函数(10)

1.5一个简单的时间获取服务器程序(11)

1.6书中客户/服务器程序例子索引表(14)

1.7OSI模型(16)

1.8BSD网络支持历史(17)

1.9测试用网络及主机(18)

1.10Unix标准(21)

1.1164位体系结构(24)

1.12小结(25)

1.13习题(26)

第2章传输层:TCP、UDP和SCTP(27)

2.1概述(27)

2.2总图(27)

2.3UDP:用户数据报协议(30)

2.4TCP:传输控制协议(30)

2.5SCTP:流控制传输协议(31)

2.6TCP连接的建立和终止(32)

2.7TIME_WAIT状态(38)

2.8SCTP关联的建立和终止(39)

2.9端口号(43)

2.10TCP端口号与并发服务器(45)

2.11缓冲区大小及限制(47)

2.12标准因特网服务(52)

2.13常见因特网应用的协议使用(53)

2.14小结(54)

2.15习题(55)

第2部分基本套接口编程

第3章套接口编程简介(56)

3.1概述(56)

3.2套接口地址结构(56)

3.3值结果参数(62)

3.4字节排序函数(64)

3.5字节操纵函数(67)

3.6inet_aton、inet_addr和inet_ntoa函数(68)

3.7inet_pton和inet_ntop函数(69)

3.8sock_ntop和相关函数(71)

3.9readn、writen和readline函数(73)

3.10小结(77)

3.11习题(78)

第4章基本TCP套接口编程(79)

4.1概述(79)

4.2socket函数(79)

4.3connect函数(82)

4.4bind函数(84)

4.5listen函数(87)

4.6accept函数(92)

4.7fork和exec函数(94)

4.8并发服务器(96)

4.9close函数(98)

4.10getsockname和getpeername函数(99)

4.11小结(101)

4.12习题(101)

第5章TCP客户/服务器程序例子(103)

5.1概述(103)

5.2TCP回射服务器程序:main函数(104)

5.3TCP回射服务器程序:str_echo函数(105)

5.4TCP回射客户程序:main函数(106)

5.5TCP回射客户程序:str_cli函数(106)

5.6正常启动(107)

5.7正常终止(109)

5.8POSIX信号处理(110)

5.9处理SIGCHLD信号(113)

5.10wait和waitpid函数(115)

5.11accept返回前连接夭折(119)

5.12服务器进程终止(120)

5.13SIGPIPE信号(122)

5.14服务器主机崩溃(123)

5.15服务器主机崩溃后重启(124)

5.16服务器主机关机(124)

5.17TCP程序例子小结(125)

5.18数据格式(126)

5.19小结(129)

5.20习题(130)

第6章I/O复用:select和poll函数(131)

6.1概述(131)

6.2I/O模型(131)

6.3select函数(137)

6.4str_cli函数(修订版)(142)

6.5批量输入(144)

6.6shutdown函数(146)

6.7str_cli函数(再修订版)(148)

6.8TCP回射服务器程序(修订版)(149)

6.9pselect函数(154)

6.10poll函数(155)

6.11TCP回射服务器程序(再修订版)(158)

6.12小结(160)

6.13习题(161)

第7章套接口选项(162)

7.1概述(162)

7.2getsockopt和setsockopt函数(162)

7.3检查选项是否受支持并获取缺省值(165)

7.4套接口状态(168)

7.5通用套接口选项(169)

7.6IPv4套接口选项(182)

7.7ICMPv6套接口选项(184)

7.8IPv6套接口选项(184)

7.9TCP套接口选项(186)

7.10SCTP套接口选项(189)

7.11fcntl函数(198)

7.12小结(200)

7.13习题(201)〖LM〗

第8章基本UDP套接口编程(203)

8.1概述(203)

8.2recvfrom和sendto函数(204)

8.3UDP回射服务器程序:main函数(205)

8.4UDP回射服务器程序:dg_echo函数(205)

8.5UDP回射客户程序:main函数(207)

8.6UDP回射客户程序:dg_cli函数(208)

8.7数据报的丢失(208)

8.8验证接收到的响应(209)

8.9服务器进程未运行(211)

8.10UDP程序例子小结(212)

8.11UDP的connect函数(214)

8.12dg_cli函数(修订版)(218)

8.13UDP缺乏流量控制(219)

8.14UDP中的外出接口的确定(222)

8.15使用select函数的TCP和UDP回射服务器程序(223)

8.16小结(225)

8.17习题(225)

第9章基本SCTP套接口编程(227)

9.1概述(227)

9.2接口模型(227)

9.3sctp_bindx函数(231)

9.4sctp_connectx函数(233)

9.5sctp_getpaddrs函数(233)

9.6sctp_freepaddrs函数(233)

9.7sctp_getladdrs函数(234)

9.8sctp_freeladdrs函数(234)

9.9sctp_sendmsg函数(234)

9.10sctp_recvmsg函数(235)

9.11sctp_opt_info函数(235)

9.12sctp_peeloff函数(236)

9.13shutdown函数(236)

9.14通知(237)

9.15小结(242)

9.16习题(243)

第10章SCTP客户/服务器程序例子(244)

10.1概述(244)

10.2SCTP一到多式流分回射服务器程序:main函数(244)

10.3SCTP一到多式流分回射客户程序:main函数(246)

10.4SCTP流分回射客户程序:sctpstr_cli函数(248)

10.5探究头端阻塞(249)

10.6控制流的数目(255)

10.7控制终结(255)

10.8小结(257)

10.9习题(257)

第11章名字与地址转换(258)

11.1概述(258)

11.2域名系统(258)

11.3gethostbyname函数(261)

11.4gethostbyaddr函数(264)

11.5getservbyname和getservbyport函数(265)

11.6getaddrinfo函数(269)

11.7gai_strerror函数(274)

11.8freeaddrinfo函数(275)

11.9getaddrinfo函数:IPv6(275)

11.10getaddrinfo函数:例子(276)

11.11host_serv函数(278)

11.12tcp_connect函数(279)

11.13tcp_listen函数(282)

11.14udp_client函数(286)

11.15udp_connect函数(289)

11.16udp_server函数(290)

11.17getnameinfo函数(291)

11.18可重入函数(293)

11.19gethostbyname_r和gethostbyaddr_r函数(296)

11.20作废的IPv6地址解析函数(297)

11.21其他网络相关信息(298)

11.22小结(299)

11.23习题(300)

第3部分高级套接口编程

第12章IPv4与IPv6的互操作性(302)

12.1概述(302)

12.2IPv4客户与IPv6服务器(302)

12.3IPv6客户与IPv4服务器(306)

12.4IPv6地址测试宏(308)

12.5源代码可移植性(309)

12.6小结(310)

12.7习题(310)

第13章守护进程和inetd超级服务器(311)

13.1概述(311)

13.2syslogd守护进程(311)

13.3syslog函数(312)

13.4daemon_init函数(315)

13.5inetd守护进程(318)

13.6daemon_inetd函数(324)

13.7小结(325)

13.8习题(326)

第14章高级I/O函数(327)

14.2套接口超时(327)

14.3recv和send函数(332)

14.4readv和writev函数(333)

14.5recvmsg和sendmsg函数(334)

14.6辅助数据(338)

14.7排队的数据量(342)

14.8套接口和标准I/O(342)

14.9高级轮询技术(345)

14.10T/TCP:事务目的TCP(350)

14.11小结(352)

14.12习题(353)

第15章Unix域协议(354)

15.1概述(354)

15.2Unix域套接口地址结构(354)

15.3socketpair函数(356)

15.4套接口函数(357)

15.5Unix域字节流客户/服务器程序(358)

15.6Unix域数据报客户/服务器程序(360)

15.7描述字传递(361)

15.8接收发送者的凭证(368)

15.9小结(371)

15.10习题(371)

第16章非阻塞I/O(373)

16.1概述(373)

16.2非阻塞读和写:str_cli函数(修订版)(374)

16.3非阻塞connect(384)

16.4非阻塞connect:时间获取客户程序(384)

16.5非阻塞connect:Web客户程序(387)

16.6非阻塞accept(395)

16.7小结(397)

16.8习题(397)

第17章ioctl操作(398)

17.1概述(398)

17.2ioctl函数(398)

17.3套接口操作(400)

17.4文件操作(400)

17.5接口配置(401)

17.6get_ifi_info函数(402)

17.7接口操作(412)

17.8ARP高速缓存操作(413)

17.9路由表操作(415)

17.10小结(415)

17.11习题(416)

第18章路由套接口(417)〖

18.1概述(417)

18.2数据链路套接口地址结构(418)

18.3读和写(418)

18.4sysctl操作(426)

18.5get_ifi_info函数(429)

18.6接口名字和索引函数(432)

18.7小结(437)

18.8习题(437)

第19章密钥管理套接口(438)

19.1概述(438)

19.2读和写(439)

19.3倾泻安全关联数据库(440)

19.4创建静态安全关联(443)

19.5动态维护安全关联(449)

19.6小结(452)

19.7习题(453)

第20章广播(454)〖

20.1概述(454)

20.2广播地址(455)

20.3单播和广播的比较(457)

20.4使用广播的dg_cli函数(459)

20.5竞争状态(462)

20.6小结(469)

20.7习题(470)

第21章多播(471)

21.1概述(471)

21.2多播地址(471)

21.3局域网上多播和广播的比较(475)

21.4广域网上的多播(477)

21.5源特定多播(479)

21.6多播套接口选项(480)

21.7mcast_join和相关函数(485)

21.8使用多播的dg_cli函数(489)

21.9接收IP多播基础设施会话声明(490)

21.10发送和接收(494)

21.11SNTP:简单网络时间协议(497)

21.12小结(501)

21.13习题(501)

第22章高级UDP套接口编程(503)

22.1概述(503)

22.2接收标志、宿IP地址和接口索引(503)

22.3数据报截断(509)

22.4何时改用UDP代替TCP(509)

22.5给UDP应用增加可靠性(511)

22.6捆绑接口地址(521)

22.7并发UDP服务器(525)

22.8IPv6分组信息(527)

22.9IPv6路径MTU控制(530)

22.10小结(531)

22.11习题(531)

第23章高级SCTP套接口编程(533)

23.1概述(533)

23.2自动关闭的一到多式服务器程序(533)

23.3部分递送(534)

23.4通知(536)

23.5无序的数据(540)

23.6捆绑地址子集(540)

23.7确定对端和本端地址信息(542)

23.8给定IP地址找出关联ID(545)

23.9心搏和地址不可达(546)

23.10关联剥离(547)

23.11定时控制(548)

23.12何时改用SCTP代替TCP(550)

23.13小结(551)

23.14习题(551)

第24章带外数据(553)

24.1概述(553)

24.2TCP带外数据(553)

24.3sockatmark函数(560)

24.4TCP带外数据小结(565)

24.5客户服务器心博函数(566)

24.6小结(570)

24.7习题(571)

第25章信号驱动I/O(572)〖HT5”SS〗〖ST5”BZ〗〖WT5”BZ〗

25.1概述(572)

25.2套接口的信号驱动I/O(572)

25.3使用SIGIO的UDP回射服务器程序(574)〖HT5”SS〗〖ST5”BZ〗〖WT5”BZ〗

25.4小结(580)

25.5习题(580)

〗第26章线程(581)〖HT5”SS〗〖ST5”BZ〗〖WT5”BZ〗

26.1概述(581)

26.2基本线程函数:创建和终止(582)

26.3使用线程的str_cli函数(584)

26.4使用线程的TCP回射服务器程序(586)

26.5线程特定数据(590)

26.6Web客户与同时连接(597)

26.7互斥锁(600)

26.8条件变量(604)

26.9Web客户与同时连接(续)(607)

26.10小结(609)

26.11习题(609)

第27章IP选项(611)〖HT5”SS〗〖ST5”BZ〗〖WT5”BZ〗

27.1概述(611)

27.2IPv4选项(611)

27.3IP源路径选项(613)

27.4IPv6扩展头部(620)

27.5IPv6步跳选项和目的地选项(621)

27.6IPv6路由头部(625)

27.7IPv6粘附选项(630)

27.8历史性IPv6高级API(631)

27.9小结(632)

27.10习题(632)

第28章原始套接口(633)〖HT5”SS〗〖ST5”BZ〗〖WT5”BZ〗

28.1概述(633)

28.2原始套接口创建(633)

28.3原始套接口输出(634)

28.4原始套接口输入(636)

28.5ping程序(638)

28.6traceroute程序(650)

28.7一个ICMP消息守护程序(663)

28.8小结(677)

28.9习题(678)

第29章数据链路访问(679)〖HT5”SS〗〖ST5”BZ〗〖WT5”BZ〗

29.1概述(679)

29.2BPF:BSD分组过滤器(679)

29.3DLPI:数据链路提供者接口(681)

29.4Linux:SOCK_PACKET和PF_PACKET(682)

29.5libpcap:分组捕获函数库(683)

29.6libnet:分组构造与输出函数库(684)

29.7检查UDP的校验和字段(684)

29.8小结(702)

29.9习题(703)

第30章客户/服务器程序设计范式(704)〖HT5”SS〗〖ST5”BZ〗〖WT5”BZ〗

30.1概述(704)

30.2TCP客户程序设计范式(706)

30.3TCP测试用客户程序(707)

30.4TCP迭代服务器程序(708)

30.5TCP并发服务器程序,每个客户一个子进程(709)

30.6TCP预先派生子进程服务器程序,accept无上锁保护(712)

30.7TCP预先派生子进程服务器程序,accept使用文件上锁保护(718)

30.8TCP预先派生子进程服务器程序,accept使用线程上锁保护(720)

30.9TCP预先派生子进程服务器程序,传递描述字(722)

30.10TCP并发服务器程序,每个客户一个线程(727)

30.11TCP预先创建线程服务器程序,每个线程各自accept(728)

30.12TCP预先创建线程服务器程序,主线程统一accept(730)

30.13小结(733)

30.14习题(734)

第31章流(735)〖HT5”SS〗〖ST5”BZ〗〖WT5”BZ〗

31.1概述(735)

31.2概貌(735)

31.3getmsg和putmsg函数(739)

31.4getpmsg和putpmsg函数(740)

31.5ioctl函数(741)

31.6TPI:传输提供者接口(741)

31.7小结(750)

31.8习题(750)

第4部分附录

〖HT5H〗〖ST5HZ〗〖WT5HZ〗附录AIPv4、IPv6、ICMPv4和ICMPv6(751)

A.1概述(751)

A.2IPv4头部(752)

A.3IPv6头部(753)

A.4IPv4地址(755)

A.5IPv6地址(759)

A.6ICMPv4和ICMPv6:网际控制消息协议(763)

〖BT3〗〖STHZ〗〖WTHZ〗附录B虚拟网络(767)〖HT5”SS〗〖ST5”BZ〗〖WT5”BZ〗

B.1概述(767)

B.2MBone(767)

B.36bone(769)

B.46to4:IPv6过渡(769)

〖BT3〗〖STHZ〗〖WTHZ〗附录C调试技术(772)〖HT5”SS〗〖ST5”BZ〗〖WT5”BZ〗

C.1系统调用跟踪(772)

C.2标准因特网服务(775)

C.3sock程序(775)

C.4小测试程序(778)

C.5tcpdump程序(778)

C.6netstat程序(778)

C.7lsof程序(779)

〖LM〗

〖BT3〗〖STHZ〗〖WTHZ〗附录D杂凑的源代码(780)〖HT5”SS〗〖ST5”BZ〗〖WT5”BZ〗

D.1unp.h头文件(780)

D.2config.h头文件(784)

D.3标准错误处理函数(788)

〖KH*2D〗〖HT5H〗〖ST5HZ〗〖WT5HZ〗附录E部分习题解答(792)〖KH*2D〗

附录F参考文献(824)〖KH*2D〗

附录G函数和宏定义索引表(832)〖KH*2D〗

附录H结构定义索引表(834)〖KH*2D〗

附录I中英文对照词汇表(836)