UNIX网络编程 卷1:套接字联网API(第3版)

[美]W. 理查德•史蒂文斯(W. Richard Stevens)

出版时间

2014-06-01

ISBN

9787115367198

评分

★★★★★

标签

编程

书籍介绍

《UNIX环境高级编程(第3版)》是被誉为UNIX编程“圣经”的Advanced Programming in the UNIX Environment一书的第3版。在本书第2版出版后的8年中,UNIX行业发生了巨大的变化,特别是影响UNIX编程接口的有关标准变化很大。本书在保持前一版风格的基础上,根据最新的标准对内容进行了修订和增补,反映了最新的技术发展。书中除了介绍UNIX文件和目录、标准I/O库、系统数据文件和信息、进程环境、进程控制、进程关系、信号、线程、线程控制、守护进程、各种I/O、进程间通信、网络IPC、伪终端等方面的内容,还在此基础上介绍了众多应用实例,包括如何创建数据库函数库以及如何与网络打印机通信等。此外,还在附录中给出了函数原型和部分习题的答案。

《UNIX环境高级编程(第3版)》内容权威,概念清晰,阐述精辟,对于所有层次UNIX/Linux程序员都是一本不可或缺的参考书。

AI导读
核心看点
  • UNIX网络编程圣经,权威解析套接字API
  • 深入剖析TCP/UDP原理,涵盖I/O多路复用
  • 结合实例讲解阻塞与非阻塞I/O及信号处理
适合谁读
  • 从事UNIX/Linux系统开发的资深程序员
  • 希望深入理解网络底层原理的后端工程师
  • 具备C语言基础及一定网络编程经验的读者
读前提醒
  • 内容详实厚重,建议结合代码实践阅读
  • 无需通读全书,重点研读TCP/UDP核心章
  • 翻译偶有晦涩处,建议对照英文原版理解
读者共识
  • 内容极其详尽,是网络编程领域的权威参考
  • 适合当作工具书查阅,部分章节阅读难度较大
  • 配合实际项目阅读效果最佳,能解决疑难杂症

本导读基于书籍简介、目录、原文摘录、短评和书评生成,不等同于全文精读。

精彩摘录
  • "There are two reasons for the TIME_WAIT state: 1. To implement TCP's full-duplex connection termination reliably. 2. To allow old duplicate segments to expire in the network."
  • "既然发生错误时终止程序的运行是普遍的情况,我们可以定义包裹函数(wrapper function)来简化我们的程序。包裹函数调用实际函数,检查返回值,并在发生错误时终止进程。 int Socket(int family, int type, int protocol) { int n; if ( (n = socket(family, type, protocol)) < 0) err_sys("socket error"); return(n); }"
  • "even though addr is a char*, you actually want to pass in a pointer to a struct in_addr."
  • "If we refer to a service by its name in our code, instead of by its port number, and if the mapping from the name to port number is contained in a file (normally /etc/services), then if the port number changes, all we need to modify is one line in the /etc/services file instead of having to recompil"
  • "如果有多个客户连接同时到达,系统内核在最大数目的限制下把它们排入队列,然后每次返回一个给accept函数"
  • "网际协议簇,在TCP与UDP之间留有一个间隙,指出应用程序可以绕过传输层而直接使用IPv4或Ipv6,称为raw socket"
  • "Posix并不是一个单一标准 第一个Posix标准涉及:进程原语(fork, exec,信号及定时器),进程环境(用户ID,进程组),文件与目录(所有I/O函数),终端I/O,系统数据库(保密字文件和用户组文件),以及tar和cpio归档格式。"
  • "注意,TCP并不保证数据一定会被对方端点接收,因为这是不可能做到的。如果可能的话,TCP就把数据投递到对方端点,否则就(通过放弃重传并中止连接这一手段)通知用户。这么说来,TCP也不能被描述成是100%可靠的协议;它提供的是数据的可靠投递或者故障的可靠通知。"
作者简介
W. Richard Stevens,国际知名的UNIX和网络专家,备受赞誉的技术作家。生前著有多部经典的传世之作,包括《UNIX网络编程》(两卷本)、《TCP/IP详解》(三卷本)和本书第1版。 Stephen A. Rago,资深UNIX程序员,目前任NEC美国实验室存储系统集团研究员。之前是贝尔实验室的UNIX系统V版本4的开发人员之一。著有《UNIX系统V网络编程》,并曾担任本书第1版的技术审校和第2版的共同作者。 戚正伟,博士,上海交通大学软件学院副教授,微软亚洲研究院(2008)和美国CMU大学(2011-2012)访问学者。研究方向为系统软件和程序分析,著有《New Blue Pill深入理解硬件虚拟机》和《嵌入式GIS开发及应用》等书。 张亚英,博士,同济大学电子与信息工程学院计算机系副教授,研究方向为分布与移动计算、嵌入式系统以及系统软件等。 尤晋元,上海交通大学计算机科学及工程系教授、博士生导师。在科研方面,主要从事操作系统和分布对象计算技术方面的研究。在教学方面,长期承担操作系统及分布计算等课程的教学工作。主编和翻译了多本操作系统教材和参考书,包括《UNIX操作系统教程》、《UNIX高级编程技术》、《UNIX环境高级编程》和《操作系统:设计与实现》等。
目录
第1章 UNIX基础知识
1.1 引言
1.2 UNIX体系结构
1.3 登录
1.4 文件和目录

显示全部
用户评论
看完写网络编程就不虚啦~
看了tcp和服务器章节,非常详细,豁然开朗
首先,重点看了基本的套接字编程,主要包括TCP、udp、unix domain、raw、路由、密钥管理套接字。 其次,还重点看了ioctl网络相关选项、io阻塞、io多路复用模型、linux客户端服务器编程模型、BPF/DLPI分组捕获、ping/traceroute原理等章节。 相见恨晚,终于理解了网络通信原理,理解了go的net库后面的基本操作和netpoll的原理,特别适合不是做C开发的但是想了解网络编程的同学。
读完IO就收手吧😶
翻译的真的很认真啊,这么良心的翻译不多了。有很多译者的注释,指出了原书中的一些错误,比如书中对readline和read的混乱使用。赞一个!
见过翻译最负责的书了,有些名词自己翻译了一下,然后注释还给一堆自己的解释。然后书的内容也没得说,既讲了原理也贴了代码,还不厌其烦的解释代码,讲三次握手什么的,看过讲的最好的一本,比鸟哥的那本还强。
第一遍: 神作,大概看了遍,跑着运行一些章节的示例代码,没有具体跟着,后面有时间再回来跟着书中的内容走完。
非常nice,经典好书
反复用一个echo例子,深入浅出地讲解了socket编程的方方面面,牛逼。重点是io模型,tcp,udp,其他的可以放一放。在虚拟机中多装几种unix实现,比如Linux发行版Ubuntu、FreeBSD,Solaris等
下载
收藏