出版时间:2010-6 出版社:人民邮电出版社 作者:W.Richard Stevens,Bill Fenner,Andrew M. Rudoff 页数:804 译者:杨继张
Tag标签:无
前言
概述 本书面向的读者是那些希望自己编写的程序能使用称为套接字(socket)的API进行彼此通信的人。有些读者可能已经非常熟悉套接字了,因为这个模型几乎已经成了网络编程的同义词,但有些读者可能仍需要从头开始学习。本书想达到的目标是向大家提供网络编程指导。这些内容不仅适用于专业人士,也适用于初学者;不仅适用于维护已有代码,也适用于开发新的网络应用程序;此外,还适用于那些只是想了解一下自己系统中网络组件的工作原理的人。 书中的所有示例都是在Unix系统上测试通过的真实的、可运行的代码。但是,考虑到许多非Unix的操作系统也支持套接字API,因而我们选取的示例与所讲述的一般性概念,在很大程度上是与操作系统无关的。几乎每种操作系统都提供了大量的网络应用程序,如网页浏览器、电子邮件客户端、文件共享服务器等。我们按常规的划分方法把这些应用程序分为客户程序和服务器程序,并在书中多次编写了相应的小型示例。 面向Unix介绍网络编程自然免不了要介绍Unix本身和TCP/IP的相关背景知识。需要更详尽的背景知识时,我们会指引读者查阅其他书籍。本书中经常提到以下4本书,我们将其简记如下: APUE:Advanced Programming in the UNIX Environment [Stevens 1992]; TCPv1:TCP/IP Illustrated, Volume 1 [Stevens 1994]; TCPv2:TCP/IP Illustrated, Volume 2 [Wright and Stevens 1995]; TCPv3:TCP/IP Illustrated, Volume 3 [Stevens 1996]。 其中TCPv2包含了与本书内容密切相关的细节,它描述并给出了套接字API中网络编程函数(socket、bind、connect等)的真实4.4BSD实现。如果已经理解某个特性的实现,那么在应用程序中使用该特性就更有意义了。 与第2版的区别 从20世纪80年代开始,套接字就差不多是现在这个样子了。时至今日,套接字仍然是网络API的首选,其最初的设计的确值得称道。因此,当读者发现我们对出版于1998年的第2版又做了不少改动时,可能会觉得惊讶。本书中所做的改动归纳如下。 新版本包含了IPv6的最新信息。在第2版出版时,IPv6尚处于草案阶段,这些年来已经有所发展。 更新了全部函数和示例的描述,以反映最新的POSIX规范(POSIX 1003.1-2001),即Single Unix Specification Version 3。 删去了X/Open传输接口(XTI)的内容。这个API已经不常用了,连最新的POSIX 规范也不再提到。 删去了事务TCP协议(T/TCP)的内容。 新增了三章用于描述一种相对较新的传输协议——SCTP。这个可靠的面向消息的协议能够在两个端点之间提供多个流,并为多归属技术提供传输层支持。该协议最初是为了在因特网上传输电话信号而设计的,但它的一些特性可以用于许多应用。
内容概要
本书是一部UNIX网络编程的经典之作!书中全面深入地介绍了如何使用套接字API进行网络编程。全书不但介绍了基本编程内容,还涵盖了与套接字编程相关的高级主题,对于客户/服务器程序的各种设计方法也作了完整的探讨,最后还深入分析了流这种设备驱动机制。 本书内容详尽且具权威性,几乎每章都提供精选的习题,并提供了部分习题的答案,是网络研究和开发人员理想的参考书。
作者简介
W.Richard Stevens国际知名的Unix和网络专家,《TCP/IP 详解》(三卷本)作者W.Richard Stevens(1951-1999),是国际知名的Unix和网络专家;受人尊敬的计算机图书作家;同时他还是广受欢迎的教师和顾问。
书籍目录
第一部分 简介和TCP/IP 第1章 简介 第2章 传输层:TCP、UDP和SCTP 第二部分 基本套接字编程 第3章 套接字编程简介 第4章 基本TCP套接字编程 第5章 TCP客户/服务器程序示例 第6章 I/O复用:select和poll函数 第7章 套接字选项 第8章 基本UDP套接字编程 第9章 基本SCTP套接字编程 第10章 SCTP客户/服务器程序例子 第11章 名字与地址转换第三部分 高级套接字编程 第12章 IPv4与IPv6的互操作性 第13章 守护进程和inetd超级服务器 第14章 高级I/O函数 第15章 Unix域协议 第16章 非阻塞式I/O 第17章 ioctl操作 第18章 路由套接字 第19章 密钥管理套接字 第20章 广播 第21章 多播 第22章 高级UDP套接字编程 第23章 高级SCTP套接字编程 第24章 带外数据 第25章 信号驱动式I/O 第26章 线程 第27章 IP选项 第28章 原始套接字 第29章 数据链路访问 第30章 客户/服务器程序设计范式 第31章 流 附录A IPv4、IPv6、ICMPv4和ICMPv6 附录B 虚拟网络 附录C 调试技术 附录D 杂凑的源代码 附录E 精选习题答案 参考文献索引
章节摘录
插图:我们将在本章较深入地讨论SCTP,查看SCTP提供的更多特性和套接字选项。我们将讨论多个论题,包括故障检测的控制、无序的数据以及通知。本章通章提供了多个代码例子,以展示如何使用SCTP的某些高级特性。SCTP是一个面向消息的协议,递送给用户的是部分的或完整的消息。部分消息的递送前提是应用进程选择向对端发送大消息(譬如大于套接字缓冲区一半大小)。部分消息被递送给应用进程之后,多个部分消息组合成单个完整消息并不由SCTP负责。在应用进程看来,一个消息既可以由单个输入操作接收,也可以由若干个相继的输入操作接收。我们将通过一个作为例子的函数说明处理这种部分递送机制的一个方法。SCTP服务器程序既可以迭代运行,也可以并发运行,这取决于应用程序开发人员选取的套接字式样。SCTP还提供了从一到多式套接字抽取某个关联并使其成为一到一式套接字的方法。本方法允许构造既可迭代运行又可并发运行的服务器程序。回顾我们在第10章中编写的服务器程序,它不保持任何关联状态,因为它依赖客户程序关闭关联。依赖客户关闭关联存在这样的弱点:要是客户打开一个关联后从不发送任何数据,将发生什么?服务器不得不将资源分配给从不使用这些资源的客户。懒惰的客户会无意中造成对于SCTP实现的拒绝服务攻击。
媒体关注与评论
“所有人都非常期待这本书,因为它完美地结合了实践经验、历史视角以及在本领域浸淫多年才能获得的透彻理解。阅读本书是一种享受,我收获颇丰。相信大家定会有同感。” ——Sam Leffler,FreeBSD基金会副主席 “这部著作在计算机科学领域里的传奇得以延续,Bill Fenner和Andrew Rudoff居功至伟。” ——Art Sedighi “这套书是学习网络编程最好的书。全世界最最好的,远超群伦。” ——S. Devasundaram “这本书不会让你一夜之间成为专家,但它终究会让你成为专家。” ——John Nguyen
编辑推荐
《UNIX网络编程(卷1):套接字联网API(第3版)》中顶级网络编程专家Bill Fenner和Andrew M. Rudoff应邀执笔,对W. Richard Stevens的经典作品进行修订。书中吸纳了近几年网络技术的发展,增添了IPv6、SCTP协议和密钥管理套接字等内容,深入讨论了最新的关键标准、实现和技术。书中的所有示例都是在UNIX系统上测试通过的真实的、可运行的代码,继承了Stevens一直强调的理念:“学习网络编程的最好方法就是下载这些程序,对其进行修改和改进。只有这样实际编写代码才能深入理解有关概念和方法。”读者可以从图灵网站《UNIX网络编程(卷1):套接字联网API(第3版)》网页免费注册下载这些示例的源代码。 《UNIX网络编程(卷1):套接字联网API(第3版)》为UNIX网络编程提供全面的指导,是网络研究和开发人员公认的权威参考书,无论网络编程的初学者还是网络专家都会大受裨益。
图书封面
图书标签Tags
无
评论、评分、阅读与下载
UNIX网络编程 卷1:套接字联网API(第3版) PDF格式下载