01
TCP协议基础
TCP协议栈模型 · 报文格式 · 三次握手与四次挥手 · 可靠性机制
核心基础
02
粘包与拆包现象
什么是粘包/拆包 · 根本原因 · TCP是流式协议
概念原理
03
粘包拆包演示 · 粘包
C++ TCP服务端/客户端 · 演示粘包现象
实验C++
04
粘包拆包演示 · 拆包
C++ TCP服务端/客户端 · 演示拆包现象
实验C++
05
解决方案概览
固定长度法 · 特殊分隔符法 · 长度前缀法(TLV) · 自定义协议
总览设计
06
固定长度法
原理讲解 · C++代码实现 · 优缺点分析
方案实现
07
特殊分隔符法 · 基础
原理讲解 · 选择分隔符注意事项 · C++代码实现
方案分隔符
08
特殊分隔符法 · 转义与性能
转义处理 · 性能分析 · C++代码实现
进阶优化
09
长度前缀法(TLV) · 原理
原理讲解 · Header设计 · C++代码实现
TLV设计
10
长度前缀法 · 字节序
大端小端 · 网络字节序转换 · C++代码实现
网络字节序
11
自定义协议 · 设计
设计应用层协议 · 协议字段定义 · C++代码实现
协议设计
12
自定义协议 · 序列化
序列化与反序列化 · Protobuf/JSON负载 · C++实现
ProtobufJSON
13
缓冲区设计 · 环形缓冲区
环形缓冲区原理 · C++实现环形缓冲区
缓冲区性能
14
缓冲区设计 · 动态/链式
动态缓冲区 · 链式缓冲区 · C++代码实现
灵活内存
15
高性能缓冲区 · 零拷贝
内存池思想 · 零拷贝技术 · C++代码实现
高性能优化
16
非阻塞IO与粘包
select/poll/epoll模型 · 粘包处理 · C++实现
IO多路复用epoll
17
异步IO与粘包
C++20 Coroutines · asio库 · 粘包处理 · C++实现
协程asio
18
多线程环境与粘包
线程安全缓冲区 · 锁粒度控制 · C++代码实现
多线程并发
19
调试技巧 · 抓包分析
Wireshark抓包 · tcpdump · 日志打印策略
调试Wireshark
20
调试技巧 · 模拟异常
模拟网络延迟 · 丢包 · 乱序测试方法
测试模拟
21
实战项目一 · 聊天室协议
设计聊天室协议 · 解决粘包问题
实战聊天室
22
实战项目一 · 聊天室实现
服务端实现 · 客户端实现 · C++代码
实战C++
23
实战项目二 · 文件传输协议
设计文件传输协议 · 解决大文件粘包
实战文件
24
实战项目二 · 文件传输实现
服务端实现 · 客户端实现 · C++代码
实战大文件
25
实战项目三 · RPC框架协议
设计RPC协议 · 解决请求响应粘包
实战RPC
26
实战项目三 · RPC框架实现
服务端实现 · 客户端实现 · C++代码
实战RPC
27
性能对比 · 吞吐/延迟/内存
不同解决方案吞吐量 · 延迟 · 内存占用对比
性能对比
28
性能对比 · benchmark压测
使用benchmark工具压测 · 结果分析
压测分析
29
常见坑与避坑指南
半包处理 · 粘包误判 · 协议升级兼容性
经验避坑
30
总结与展望
TCP粘包拆包本质 · QUIC协议影响 · 未来趋势
总结QUIC