跳转至

搞明白网络!

处理 TCP 粘包问题

TCP 粘包问题

TCP 是一种传输层协议,具备面向连接、安全性和流式传输的特点。由于数据传输是基于流的,发送端和接收端的数据处理量和频率可能不一致。

基于这些特点,服务器在接收数据时可能会遇到以下情况:

  • 一次性接收到客户端发送的一个完整的数据包。
  • 一次性接收到客户端发送的多个数据包,由于每个包的长度不定,难以拆分。
  • 一次性接收到一个或多个完整数据包以及下一个数据包的一部分,导致难以拆分。
  • 一次性接收到半个数据包,下一次接收时又收到剩余部分和下一个数据包的一部分,情况更为复杂。
  • 另外,还有一些不可控因素:例如客户端和服务器的网速差异,导致发送和接收的数据量不一致。

上述现象被称为 TCP 的粘包问题。

检查/测试方式

  1. 拉取 NetWork 仓库到本地。
  2. 进入项目目录,按照 README 文件中的说明进行环境配置。
  3. 运行测试脚本,观察测试结果。

C/C++ Simple FTP

设计一个基于 RFC959 FTP 协议的 Linux FTP 服务器:FTP 任务要求

Golang

TODO

设计一个简易的 RPC 框架