本书是网络编程领域的经典著作,全面介绍了UNIX/Linux下的网络编程技术。书中涵盖了TCP/IP协议、套接字编程、并发服务器、I/O复用、高级I/O、非阻塞I/O、多线程网络编程等内容。本书以大量的代码示例和详细的解释帮助读者掌握网络编程的核心技术。
关联抽象层级
本教材覆盖以下抽象层级,帮助你建立从底层到顶层的完整知识体系。
为什么读这本书
网络编程是现代软件开发的基础技能。本书是学习网络编程的权威教材,帮助你深入理解网络协议和编程技术。
🎯AI 时代的学习建议
在 AI 能生成代码的今天,读这本书的价值不在于"学会写代码",而在于建立判断 AI 输出的能力。当你理解了低级代码、虚拟机代码、高级语言的核心原理,你就能:
- •判断 AI 生成的代码是否符合底层约束 — 当 AI 推荐一段"优化"方案时,你能从汇编语言的角度判断它是否真的有效
- •向 AI 提出正确的问题 — 理解低级代码、虚拟机代码、高级语言的设计动机,让你能精准描述问题,而不是模糊地求助
- •在 AI 方案遇到瓶颈时定位根因 — 当 AI 推荐的架构方案在流量峰值下崩溃,你能从编程语言出发,推导出正确的取舍
阅读策略:不要试图记住所有细节。重点理解每一章的设计动机(为什么需要这个抽象?)和边界条件(什么情况下会失效?)。这些是 AI 无法替代你判断的部分。
理论-实践双轨学习路径
在 AI 代码生成能力快速演进的今天,掌握低级代码、虚拟机代码、高级语言的本质概念比以往任何时候都更具战略价值。如何在 AI 时代系统性地掌握这些本质概念?我们推荐"理论-实践"双轨学习路径:
理论轨道:从经典教材中找 What 和 Why
通过经典教材深入理解每一层的核心概念(What)、设计动机(Why)与边界条件。理解为什么需要这个抽象?什么情况下会失效?这些是 AI 无法替代你判断的部分。
实践轨道:从交互沙盒中找 How
通过交互沙盒亲手操作、观察行为变化、建立工程直觉(How)。当你既理解了理论,又积累了实践经验,便能在 AI 生成的代码出现性能瓶颈时快速定位根因,在架构设计面临权衡时做出基于原理的决策。
💡 核心洞察:这正是从"AI 使用者"进阶为"AI 驾驭者"的关键能力——在 AI 生成的代码出现问题时快速定位根因,在架构设计遇到瓶颈时做出正确取舍。当你同时具备理论深度与实践经验,你才能成为驾驶 AI 机车的大牛。
章节导览
简介
网络编程基础
本章是全书的导论,介绍了网络编程的基本概念和TCP/IP协议族的整体架构。你将了解什么是套接字(socket)、客户端-服务器模型的基本思想,以及本书的组织方式。Stevens以他标志性的严谨风格,从OSI模型和TCP/IP模型的对比开始,建立起网络编程的知识框架。理解这些基础概念,是后续深入学习网络编程的前提。
TCP/IP协议族
协议基础
本章系统介绍TCP/IP协议族的核心协议。你将了解IP层负责寻址和路由、TCP层负责可靠传输、UDP层提供轻量级传输服务。理解各层协议的功能和相互关系,是编写正确网络程序的基础。Stevens通过大量的实例和图解,帮助你建立对协议栈的直观认识。
套接字编程简介
Socket基础
本章详细介绍套接字编程的核心API:socket、bind、listen、accept、connect。你将理解每个函数的参数含义、返回值、以及它们在TCP通信流程中的调用顺序。这是网络编程的基础,掌握这些API是编写任何网络程序的前提。Stevens通过详细的流程图和代码示例,帮助你建立清晰的概念。
基本的TCP套接字编程
TCP编程
本章深入讲解TCP套接字的数据传输操作:read、write、close,以及连接管理细节。你将学习如何处理部分读/写、如何正确关闭连接(四次挥手)、以及TCP的各种边界情况。这些是编写健壮网络程序的关键。
TCP客户/服务器程序示例
实例分析
本章通过一个完整的TCP回显服务器示例,展示网络编程的实战技巧。你将学习如何处理并发连接、如何进行错误处理、以及如何编写健壮的网络代码。Stevens从最简单的迭代服务器开始,逐步改进为并发服务器,展示各种设计选择的权衡。
I/O复用
多路复用
本章是网络编程的核心章节,讲解I/O多路复用技术。当一个进程需要同时处理多个连接时,I/O复用允许进程在多个描述符上等待,任一描述符就绪时立即返回。你将深入学习select、poll和epoll三种机制,理解它们的原理、性能差异和适用场景。epoll是现代高性能网络服务器(如Nginx、Redis)的基础。
基本UDP套接字编程
UDP编程
本章讲解UDP套接字编程。UDP是无连接、不可靠的传输协议,适用于对延迟敏感但可以容忍丢包的场景(如DNS查询、视频流、在线游戏)。你将学习UDP的sendto/recvfrom函数、UDP与TCP的区别、以及UDP编程的注意事项。
套接字选项
高级配置
本章讲解套接字选项的设置和查询。套接字选项可以控制套接字的各种行为:地址复用、超时设置、缓冲区大小、keepalive等。理解这些选项,能让你编写更健壮、更高效的网络程序。
高级套接字编程
高级技术
本章讲解高级套接字编程技术:原始套接字、广播、多播。原始套接字允许直接访问网络层协议,用于实现ping、traceroute等工具。广播和多播用于一对多通信,适用于服务发现、视频分发等场景。
UNIX域协议
本地通信
本章讲解UNIX域套接字——用于同一主机上进程间通信的机制。与网络套接字不同,UNIX域套接字使用文件路径作为地址,不经过网络协议栈,因此性能更高。你将学习流套接字和数据报套接字两种类型,以及UNIX域套接字的高级特性(如传递文件描述符)。
简介
网络编程基础
本章是全书的导论,介绍了网络编程的基本概念和TCP/IP协议族的整体架构。你将了解什么是套接字(socket)、客户端-服务器模型的基本思想,以及本书的组织方式。Stevens以他标志性的严谨风格,从OSI模型和TCP/IP模型的对比开始,建立起网络编程的知识框架。理解这些基础概念,是后续深入学习网络编程的前提。
TCP/IP协议族
协议基础
本章系统介绍TCP/IP协议族的核心协议。你将了解IP层负责寻址和路由、TCP层负责可靠传输、UDP层提供轻量级传输服务。理解各层协议的功能和相互关系,是编写正确网络程序的基础。Stevens通过大量的实例和图解,帮助你建立对协议栈的直观认识。
套接字编程简介
Socket基础
本章详细介绍套接字编程的核心API:socket、bind、listen、accept、connect。你将理解每个函数的参数含义、返回值、以及它们在TCP通信流程中的调用顺序。这是网络编程的基础,掌握这些API是编写任何网络程序的前提。Stevens通过详细的流程图和代码示例,帮助你建立清晰的概念。
基本的TCP套接字编程
TCP编程
本章深入讲解TCP套接字的数据传输操作:read、write、close,以及连接管理细节。你将学习如何处理部分读/写、如何正确关闭连接(四次挥手)、以及TCP的各种边界情况。这些是编写健壮网络程序的关键。
TCP客户/服务器程序示例
实例分析
本章通过一个完整的TCP回显服务器示例,展示网络编程的实战技巧。你将学习如何处理并发连接、如何进行错误处理、以及如何编写健壮的网络代码。Stevens从最简单的迭代服务器开始,逐步改进为并发服务器,展示各种设计选择的权衡。
I/O复用
多路复用
本章是网络编程的核心章节,讲解I/O多路复用技术。当一个进程需要同时处理多个连接时,I/O复用允许进程在多个描述符上等待,任一描述符就绪时立即返回。你将深入学习select、poll和epoll三种机制,理解它们的原理、性能差异和适用场景。epoll是现代高性能网络服务器(如Nginx、Redis)的基础。
基本UDP套接字编程
UDP编程
本章讲解UDP套接字编程。UDP是无连接、不可靠的传输协议,适用于对延迟敏感但可以容忍丢包的场景(如DNS查询、视频流、在线游戏)。你将学习UDP的sendto/recvfrom函数、UDP与TCP的区别、以及UDP编程的注意事项。
套接字选项
高级配置
本章讲解套接字选项的设置和查询。套接字选项可以控制套接字的各种行为:地址复用、超时设置、缓冲区大小、keepalive等。理解这些选项,能让你编写更健壮、更高效的网络程序。
高级套接字编程
高级技术
本章讲解高级套接字编程技术:原始套接字、广播、多播。原始套接字允许直接访问网络层协议,用于实现ping、traceroute等工具。广播和多播用于一对多通信,适用于服务发现、视频分发等场景。
UNIX域协议
本地通信
本章讲解UNIX域套接字——用于同一主机上进程间通信的机制。与网络套接字不同,UNIX域套接字使用文件路径作为地址,不经过网络协议栈,因此性能更高。你将学习流套接字和数据报套接字两种类型,以及UNIX域套接字的高级特性(如传递文件描述符)。
学习资源
关联沙盒实验
汇编游乐场
AssemblyPlayground
交互式汇编语言环境。编写简单的汇编程序,观察寄存器变化和内存访问,理解低级代码如何控制硬件。
虚拟机探索器
VmExplorer
可视化字节码执行过程。观察栈式虚拟机如何执行字节码指令,理解跨平台运行的原理。
编译器实验室
CompilerLab
交互式编译器可视化。输入高级语言代码,观察词法分析、语法分析、代码生成的全过程。
SQL 游乐场
SQLPlayground
交互式 SQL 查询实验室。通过挑战学习 SELECT、JOIN、聚合、子查询等 SQL 核心语法。
Bomb Lab
BombLab
CSAPP 炸弹实验室。阅读 x86-64 汇编代码,通过 6 个关卡拆除炸弹,掌握二进制调试技能。
Wireshark HTTP 实验室
WiresharkHttpLab
计算机网络 HTTP 抓包分析实验室。分析真实 HTTP 请求/响应报文,学习请求方法、状态码、头部字段、缓存控制等核心概念。
标签
常见问题
UNIX网络编程(第3版)是什么?
UNIX网络编程(第3版)(UNIX Network Programming)是W. Richard Stevens、Bill Fenner、Andrew M. Rudoff编写的计算机科学经典教材,由Addison-Wesley出版。本书是网络编程领域的经典著作,全面介绍了UNIX/Linux下的网络编程技术。书中涵盖了TCP/IP协议、套接字编程、并发服务器、I/O复用、高级I/O、非阻塞I/O、多线程网络编程等内容。本书以大量的代码示例和详细的解释帮助读者掌握网络编程的核心技术。
为什么要读UNIX网络编程(第3版)?
AI 能帮你写代码,但不能帮你建立工程直觉。UNIX网络编程(第3版)帮你深入理解网络编程、TCP/IP、Socket的核心概念和设计动机,让你能判断 AI 生成的代码是否符合设计约束。
UNIX网络编程(第3版)适合什么水平的学习者?
UNIX网络编程(第3版)适合想要深入研究的资深工程师。建议先完成入门和进阶阶段的学习。
UNIX网络编程(第3版)有多少章?主要内容是什么?
UNIX网络编程(第3版)共 10 章,涵盖简介、TCP/IP协议族、套接字编程简介等核心主题。每章都配有详细的导读和核心概念解析。
如何配合交互沙盒学习UNIX网络编程(第3版)?
建议采用理论-实践双轨学习法:从UNIX网络编程(第3版)中找 What 和 Why,从交互沙盒中找 How。学完教材一章后,打开对应层级的沙盒亲手操作验证。这种学习方式建立的工程直觉,是 AI 无法替代的。