Appearance
序言
网络编程:连接世界的能力
当你的 Node.js 应用不再是一个孤立的程序,而是需要与外部世界通信时——无论是接收用户请求、调用第三方 API、还是与其他服务交互——你就进入了网络编程的领域。
这本书将带你深入 Node.js 的网络编程能力,从最底层的 TCP/UDP 套接字,到高层的 HTTP/HTTPS 协议,再到现代的 HTTP/2 和 WebSocket,全面掌握 Node.js 的网络能力。
为什么要学习底层网络编程
你可能会问:有了 Express、Fastify 这样的框架,为什么还要学习底层的 net 和 http 模块?
答案是:理解底层,才能用好上层。
- 当你需要调优 HTTP 性能时,需要理解 TCP 连接复用
- 当你排查网络问题时,需要理解 Socket 的生命周期
- 当你设计实时通信时,需要理解 WebSocket 的原理
- 当你构建微服务时,需要理解服务间通信的各种模式
框架帮你封装了复杂性,但当问题出现时,只有理解底层原理,才能快速定位和解决。
Node.js 网络编程的独特优势
Node.js 在网络编程方面有着与生俱来的优势:
- 事件驱动:非阻塞 I/O 模型天然适合高并发网络应用
- 轻量级:单线程模型减少了并发编程的复杂性
- 生态丰富:从底层协议到高层框架,npm 生态应有尽有
- 全栈统一:前后端使用相同语言,降低通信层的理解成本
本书的核心内容
TCP/UDP 编程
从 net 和 dgram 模块开始,理解套接字编程的基本概念:连接、数据传输、错误处理。你将学会构建 TCP 服务器和客户端,理解 UDP 的适用场景。
HTTP 协议深度解析
不仅仅是使用 http 模块创建服务器,而是深入理解 HTTP 协议的方方面面:请求解析、响应构建、头部处理、编码格式、连接管理。
HTTPS 与 TLS
安全通信是现代 Web 的基础。你将学习证书管理、TLS 配置、HTTPS 服务器搭建,以及安全最佳实践。
HTTP/2 与现代协议
HTTP/2 带来了多路复用、服务器推送等特性。你将学习如何在 Node.js 中使用 HTTP/2,以及何时应该升级。
WebSocket 实时通信
从 ws 库的使用到 WebSocket 协议的原理,掌握实时双向通信的实现方式。
DNS 与网络工具
DNS 解析、网络诊断、代理配置等网络开发常用技能。
本书结构
第一部分:网络基础——协议层次、Socket 概念 第二部分:TCP 编程——net 模块详解 第三部分:UDP 编程——dgram 模块详解 第四部分:HTTP 深度解析——http 模块与协议细节 第五部分:HTTPS 与安全——TLS/SSL 配置与实践 第六部分:HTTP/2——现代协议的使用 第七部分:WebSocket——实时通信实现 第八部分:高级主题——DNS、代理、网络工具
目标读者
本书适合:
- 希望深入理解 Node.js 网络能力的开发者
- 需要构建高性能网络服务的工程师
- 正在设计实时通信系统的架构师
- 对网络协议感兴趣的开发者
本书假设你已经有 Node.js 开发经验,了解异步编程和 Stream 基础。
技术约定
- 基于 Node.js v20 LTS
- 涵盖 IPv4 和 IPv6
- 提供抓包分析和调试技巧
- 包含性能测试和优化建议
网络是后端的灵魂
如果说文件系统是后端的"存储",那么网络就是后端的"灵魂"。没有网络,后端服务就失去了存在的意义。
掌握网络编程,你将拥有连接世界的能力。
让我们开始构建连接的世界。