前言:
我最近在学习网络编程的时候,找到了经典书籍《TCP/IP网络编程》,但是原书一共有407页之多!很难坚持读下去,所以我就想能不能把每章的精华总结出来,做成知识库呢?
受到之前很火的book-to-skill的启发,我把《TCP/IP网络编程》喂给了agent让他帮我总结了一个知识库出来,这里分享出来,供大家一起学习!😊
关于本项目 / About
本书是网络编程领域的经典入门与进阶读物。本仓库不是简单的读书笔记,而是把整本书(约 421 页、25 章 )拆解为一份可被 AI 助手直接调用的技能知识库(Skill) :以一个 SKILL.md 作为索引入口,把每一章凝练为独立的章节文件,并抽出术语表、模式库、决策速查表三类支撑文件。
目录结构 / Repository Structure
整个仓库就是一份 book-to-skill 知识库,没有额外代码目录,全部内容都是带锚点的 Markdown 笔记文件:
.
├── SKILL.md # 知识库入口:核心框架 + 章节索引 + 主题索引
├── chapters/ # 25 个章节学习笔记(每章一个文件)
│ ├── ch01-socket-fundamentals.md
│ ├── ch02-socket-types-protocols.md
│ ├── ch03-address-family-data-sequence.md
│ ├── ch04-tcp-server-client-1.md
│ ├── ch05-tcp-server-client-2.md
│ ├── ch06-udp-server-client.md
│ ├── ch07-graceful-disconnect.md
│ ├── ch08-domain-name-dns.md
│ ├── ch09-socket-options.md
│ ├── ch10-multiprocess-server.md
│ ├── ch11-interprocess-communication.md
│ ├── ch12-io-multiplexing-select.md
│ ├── ch13-various-io-functions.md
│ ├── ch14-multicast-broadcast.md
│ ├── ch15-socket-standard-io.md
│ ├── ch16-io-stream-separation.md
│ ├── ch17-epoll.md
│ ├── ch18-multithread-server.md
│ ├── ch19-windows-threads.md
│ ├── ch20-windows-thread-sync.md
│ ├── ch21-async-notify-io.md
│ ├── ch22-overlapped-io.md
│ ├── ch23-iocp.md
│ ├── ch24-http-server.md
│ └── ch25-advanced-topics.md
├── glossary.md # 关键术语与定义
├── patterns.md # 技术模式与设计方法
└── cheatsheet.md # 决策规则与速查表
如何使用 / How to Use
这是一份可被 AI 编程助手加载调用的 Skill。使用方式有三种:
- 不带参数 :直接加载核心框架(
SKILL.md中的 Core Frameworks)用于参考。 - 带主题 :询问
select、epoll、IOCP、shutdown等已索引主题,助手定位并读取对应章节后作答。 - 带章节号 :直接索要
ch05,加载指定章节。 - 浏览:问 "what chapters do you have?" 查看完整索引。
当你提问的主题未出现在核心框架中时,助手会先读取相关章节文件再回答。
核心框架速览 / Core Frameworks
SKILL.md 顶部沉淀了若干可直接复用的心智模型,举其要者:
- 套接字编程四步法 :
socket() → bind() → listen() → accept();客户端只需socket() + connect()。 - 三次握手与四次断开 :SYN/SYN+ACK/ACK 建立;FIN/ACK/FIN/ACK 断开;Time-wait 出现在主动断开方,用
SO_REUSEADDR规避端口占用。 - 流式 vs 数据报 :TCP(
SOCK_STREAM)可靠无边界,UDP(SOCK_DGRAM)不可靠有边界,按"完整性优先"还是"速度优先"决策。 - 字节序转换 :网络序=大端;发送前
htons/htonl,接收后ntohs/ntohl。 - 迭代→并发演进:迭代服务器 → fork → select → epoll → 多线程 → IOCP。
- 条件触发 vs 边缘触发:LT 持续通知,ET 仅状态变化通知一次,需配合非阻塞 I/O。
- 半关闭 :
shutdown(SHUT_WR)只关发送、保留接收,区别于close()同时关收发。
章节索引 / Chapter Index
| # | 标题 | 关键框架 |
|---|---|---|
| ch01 | 理解网络编程和套接字 | socket/bind/listen/accept/connect、文件描述符 |
| ch02 | 套接字类型与协议 | SOCK_STREAM、SOCK_DGRAM、协议族 |
| ch03 | 地址族与数据序列 | sockaddr_in、htons/htonl、inet_addr、INADDR_ANY |
| ch04 | 基于 TCP 的服务器端/客户端(1) | TCP 握手、迭代服务器、echo server |
| ch05 | 基于 TCP 的服务器端/客户端(2) | 应用层协议设计、粘包问题 |
| ch06 | 基于 UDP 的服务器端/客户端 | sendto/recvfrom、已连接 UDP |
| ch07 | 优雅地断开套接字连接 | shutdown、半关闭、SHUT_WR |
| ch08 | 域名及网络地址 | DNS、gethostbyname、hostent |
| ch09 | 套接字的可选项 | getsockopt/setsockopt、SO_REUSEADDR、TCP_NODELAY |
| ch10 | 多进程服务器端的实现 | fork、僵尸进程、SIGCHLD、waitpid |
| ch11 | 进程间通信 | pipe、单向/双向通信 |
| ch12 | I/O 多路复用 | select、fd_set、FD_SET/FD_ISSET |
| ch13 | 多种 I/O 函数 | send/recv、MSG_OOB、MSG_PEEK、readv/writev |
| ch14 | 多播与广播 | TTL、IP_MULTICAST_TTL、IP_ADD_MEMBERSHIP、SO_BROADCAST |
| ch15 | 套接字与标准 I/O | fdopen、fileno、fputs/fgets |
| ch16 | I/O 流分离 | dup/dup2、文件描述符复制、半关闭 |
| ch17 | 优于 select 的 epoll | epoll_create/ctl/wait、条件触发 vs 边缘触发 |
| ch18 | 多线程服务器端的实现 | pthread_create、mutex、semaphore、线程同步 |
| ch19 | Windows 平台下线程的使用 | CreateThread、内核对象、WaitForSingleObject |
| ch20 | Windows 平台下的线程同步 | CRITICAL_SECTION、Mutex、Event、Semaphore |
| ch21 | 异步通知 I/O 模型 | WSAAsyncSelect、窗口消息 |
| ch22 | 重叠 I/O 模型 | WSAOVERLAPPED、WSARecv/WSASend |
| ch23 | IOCP | CreateIoCompletionPort、GetQueuedCompletionStatus |
| ch24 | 制作 HTTP 服务器端 | HTTP 协议、GET/POST、状态码、Web 服务器 |
| ch25 | 进阶内容 | 学习路径、相关书籍 |
支撑文件 / Supporting Files
| 文件 | 用途 |
|---|---|
| glossary.md | 全书关键术语与定义汇总 |
| patterns.md | 可复用的技术模式与设计方法 |
| cheatsheet.md | 决策规则与 API 速查表 |
book-to-skill 方法论 / Methodology
本知识库遵循 book-to-skill 的四条核心原则:
- 原子性 Atomic:一章一文件,每个 Markdown 自带锚点,可被独立检索与调用。
- 可验证 Verifiable:核心框架给出明确决策规则(如 LT/ET 何时用、TCP/UDP 如何选)。
- 可检索 Searchable :
SKILL.md同时维护章节索引与主题索引,按主题即可定位到对应章节。 - 渐进式 Progressive:从单章框架到术语表、模式库、速查表,知识逐层沉淀,按需展开。
相关资源 / Resources
- 原书:尹圣雨《TCP/IP 网络编程》
- RFC 文档:rfc-editor.org
- Linux man pages:socket(2)、bind(2)、listen(2)、accept(2)、select(2)、epoll(7)
- Windows 套接字文档:Winsock / IOCP(Microsoft Learn)
说明 / Note
本仓库为个人学习整理,笔记结构与内容凝练自原书,仅供学习交流使用,请支持正版图书。