搞明白网络!
处理 TCP 粘包问题
TCP 粘包问题
TCP 是一种传输层协议,具备面向连接、安全性和流式传输的特点。由于数据传输是基于流的,发送端和接收端的数据处理量和频率可能不一致。
基于这些特点,服务器在接收数据时可能会遇到以下情况:
- 一次性接收到客户端发送的一个完整的数据包。
- 一次性接收到客户端发送的多个数据包,由于每个包的长度不定,难以拆分。
- 一次性接收到一个或多个完整数据包以及下一个数据包的一部分,导致难以拆分。
- 一次性接收到半个数据包,下一次接收时又收到剩余部分和下一个数据包的一部分,情况更为复杂。
- 另外,还有一些不可控因素:例如客户端和服务器的网速差异,导致发送和接收的数据量不一致。
上述现象被称为 TCP 的粘包问题。
检查/测试方式
- 拉取 NetWork 仓库到本地。
- 进入项目目录,按照 README 文件中的说明进行环境配置。
- 运行测试脚本,观察测试结果。
C/C++ Simple FTP
设计一个基于 RFC959 FTP 协议的 Linux FTP 服务器:FTP 任务要求
Golang
TODO
设计一个简易的 RPC 框架