docs: 全面审查并修正所有章节文档内容

- 修正各章节中的错别字和术语错误(如 IPv4 大写规范、接收/接受区分等)
- 补充和完善部分习题答案
- 优化技术描述的准确性和专业性
- 合并所有章节内容到根 README.md

新增文件:
- CLAUDE.md: 项目开发指南
- .claude/agents/content-reviewer.md: 内容审查 subagent
- .claude/agents/merger.md: 文档合并 subagent

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
riba2534
2026-01-05 15:28:29 +08:00
parent f163bca3a9
commit d44ecdf807
23 changed files with 1933 additions and 825 deletions

View File

@@ -121,7 +121,7 @@ UDP 程序中,调用 sendto 函数传输数据前应该完成对套接字的
前面说得 TCP 数据传输中不存在数据边界,这表示「数据传输过程中调用 I/O 函数的次数不具有任何意义」
相反UDP 是具有数据边界的下一,传输中调用 I/O 函数的次数非常重要。因此,输入函数的调用次数和输出函数的调用次数应该完全一致,这样才能保证接收全部已经发送的数据。例如,调用 3 次输出函数发送的数据必须通过调用 3 次输入函数才能接收完。通过一个例子来进行验证:
相反UDP 是具有数据边界的协议,传输中调用 I/O 函数的次数非常重要。因此,输入函数的调用次数和输出函数的调用次数应该完全一致,这样才能保证接收全部已经发送的数据。例如,调用 3 次输出函数发送的数据必须通过调用 3 次输入函数才能接收完。通过一个例子来进行验证:
- [bound_host1.c](https://github.com/riba2534/TCP-IP-NetworkNote/blob/master/ch06/bound_host1.c)
- [bound_host2.c](https://github.com/riba2534/TCP-IP-NetworkNote/blob/master/ch06/bound_host2.c)
@@ -186,9 +186,9 @@ connect(sock, (struct sockaddr *)&adr, sizeof(adr));
> 以下答案仅代表本人个人观点,可能不是正确答案。
1. **UDP 为什么比 TCP 快?为什么 TCP 传输可靠而 TCP 传输不可靠?**
1. **UDP 为什么比 TCP 快?为什么 TCP 传输可靠而 UDP 传输不可靠?**
为了提供可靠的数据传输服务TCP 在不可靠的IP层进行流控制而 UDP 缺少这种流控制。所以 UDP 是不可靠的连接
为了提供可靠的数据传输服务TCP 在不可靠的IP层进行流控制而 UDP 缺少这种流控制。所以 UDP 是不可靠的传输方式
2. **下面不属于 UDP 特点的是?**
@@ -200,6 +200,8 @@ connect(sock, (struct sockaddr *)&adr, sizeof(adr));
4. **UDP 套接字和 TCP 套接字可以共存。若需要,可以同时在同一主机进行 TCP 和 UDP 数据传输。**
5. 针对 UDP 函数也可以调用 connect 函数,此时 UDP 套接字跟 TCP 套接字相同,也需要经过 3 次握手阶段。
第2句和第5句不属于 UDP 的特点即这两句话是错误的。第2句错误是因为 UDP 只需一个套接字就可以向多个目标传输数据第5句错误是因为 UDP 调用 connect 函数只是注册目标地址信息,不会进行 TCP 那样的三次握手过程。
3. **UDP 数据报向对方主机的 UDP 套接字传递过程中IP 和 UDP 分别负责哪些部分?**
IP的作用就是让离开主机的 UDP 数据包准确传递到另一个主机。但把 UDP 包最终交给主机的某一 UDP 套接字的过程则是由 UDP 完成的。UDP 的最重要的作用就是根据端口号将传到主机的数据包交付给最终的 UDP 套接字。