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

W.Richard Stevens

出版时间

2010-06-01

ISBN

9787115228406

评分

★★★★★
书籍介绍

这是一部传世之作!顶级网络编程专家Bill Fenner和Andrew M. Rudoff应邀执笔,对W. Richard Stevens的经典作品进行修订。书中吸纳了近几年网络技术的发展,增添了IPv6、SCTP协议和密钥管理套接字等内容,深入讨论了最新的关键标准、实现和技术。

书中的所有示例都是在UNIX系统上测试通过的真实的、可运行的代码,继承了Stevens一直强调的理念:“学习网络编程的最好方法就是下载这些程序,对其进行修改和改进。只有这样实际编写代码才能深入理解有关概念和方法。”读者可以从图灵网站(www.turingbook.com)本书网页免费注册下载这些示例的源代码。

本书为UNIX网络编程提供全面的指导,是网络研究和开发人员公认的权威参考书,无论网络编程的初学者还是网络专家都会大受裨益。

AI导读
核心看点
  • UNIX网络编程权威经典,涵盖TCP/UDP/SCTP协议详解。
  • 提供大量可运行代码,强调通过实践深入理解网络概念。
  • 深入剖析套接字API、I/O模型及服务器设计范式。
适合谁读
  • 网络研究与开发人员,尤其是UNIX/Linux平台从业者。
  • 希望深入理解网络底层原理及协议细节的程序员。
  • 具备一定编程基础,欲进阶掌握高性能服务器开发的读者。
读前提醒
  • 无需通读全书,重点研读TCP/UDP相关核心章节即可。
  • 建议结合APUE及Linux内核源码阅读,以深化理解。
  • 若中文翻译晦涩,建议对照英文原版阅读以获最佳体验。
读者共识
  • 被誉为网络编程圣经,讲解透彻,代码清晰,必读经典。
  • 将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%可靠的协议;它提供的是数据的可靠投递或者故障的可靠通知。"
作者简介
W. Richard Stevens(1951—1999) 国际知名的UNIX和网络专家,备受赞誉的技术作家。生前著有《TCP/IP详解》(三卷)、《UNIX环境高级编程》和《UNIX网络编程》(两卷),均为不朽的经典著作。 Bill Fenner AT&T实验室的主要技术人员,专攻IP多播、网络管理和测量,他是IETF路由的领域主管之一,负责审批作为RFC出版的所有路由相关文档。 Andrew M. Rudoff Sun公司的资深软件工程师,专攻网络、操作系统内核、文件系统和高可用性软件体系结构。
目录
第一部分 简介和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分。
经典教材,不期望一次读透,学而时习之。
下载
收藏