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

W.Richard Stevens

出版时间

2010-06-01

ISBN

9787115228406

评分

★★★★★
书籍介绍
这不是一本读起来轻松的书,却是一本读过之后很难忘记的书。它最打动人的地方,在于把套接字从“一个API”还原成一套贯穿操作系统的设计:TIME_WAIT状态为何存在、包裹函数如何简化错误处理、内核如何在队列里排队等待accept——这些细节让你真正理解每一次系统调用背后发生了什么。读者反复提到,初读吃力、第六章就卡住是常态,而重读时配合内核源码与man手册,才会恍然:它讲的不过是一个简单的system call。正因如此,它更适合有一定编程功底、愿意花一个月精读的后台开发者,而非只想调用封装库的初学者。它真正的价值,是帮你建立从传输层到内核的完整图景,而非速成技巧。
作者简介
W. Richard Stevens(1951—1999) 国际知名的UNIX和网络专家,备受赞誉的技术作家。生前著有《TCP/IP详解》(三卷)、《UNIX环境高级编程》和《UNIX网络编程》(两卷),均为不朽的经典著作。 Bill Fenner AT&T实验室的主要技术人员,专攻IP多播、网络管理和测量,他是IETF路由的领域主管之一,负责审批作为RFC出版的所有路由相关文档。 Andrew M. Rudoff Sun公司的资深软件工程师,专攻网络、操作系统内核、文件系统和高可用性软件体系结构。
AI导读
核心看点
  • UNIX网络编程权威经典,涵盖TCP/UDP/SCTP协议详解。
  • 提供大量可运行代码,强调通过实践深入理解网络概念。
  • 深入剖析套接字API、I/O模型及服务器设计范式。
读者共识
  • 被誉为网络编程圣经,讲解透彻,代码清晰,必读经典。
  • 将API与协议细节紧密联系,让人知其然并知其所以然。
  • 虽内容厚重且部分翻译存疑,但技术深度无可替代。
精彩摘录
  • "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%可靠的协议;它提供的是数据的可靠投递或者故障的可靠通知。"
目录
第一部分 简介和tcp/ip
第1章 简介 2
1.1 概述 2
1.2 一个简单的时间获取客户程序 5
1.3 协议无关性 9

显示全部
用户评论
第一次看比较吃力,到第六章就看不动了;第二次在看过&lt;Linux内核网络栈源代码情景分析&gt;和&lt;man select pselect poll epoll&gt;之后再来看这个,几乎没什么好说的了,或者说就是一个简单的system call的example,恩,就是这样。
连续两周,昼夜不断。从第三部分以后粗略地看,SCTP,多播,路由没用过,没看明白,等回来再补
网络编程圣经
网络后台开发的必读经典,需要一定编程功底和时间。争取一个月读完 p.s 终于读完了,果然是经典,讲解透彻,代码清晰,例子生动详实
终于读完了第一卷,煌煌巨著,如那灌顶的醍醐,与APUE相得益彰。除了个别瑕疵,译者翻译的也很好,包含一些纠错与他本人的理解。要想成为网络编程专家,这本书不得不读啊。Stevens先生高屋建瓴,让人高山仰止。可惜先生英年早逝。遥拜先生!
对网络编程理解+1,尤其是最后得编程范式
经典
unpv1 经典作品,tcp udp io复用等概念事无巨细的列出来,适合深入研究网络编程的同学,当然有着socket-&gt;套接字 这种难受的翻译问题,不过大体上不影响阅读。其他章节基本上泛读即可,了解概念
这本书不只是参考man,而是从开发者的角度描述了unix网络程序可能遇到的问题,而且科普了一些计算机网络和os发展历史。但是有些地方还是解释的不够细节 比如close_wait为什么等待2MSL而不是更长或更短大时间。值得5分。
经典教材,不期望一次读透,学而时习之。
下载
收藏