从层次上看数据的流动
名词与简写
MSS[RFC879]:Maximum Segment Size,最大报文段大小。运输层TCP协议的一个选项。不包含TCP首部
MTU:Maximum Transfer Unit,数据链路层规定所能传送的帧的数据部分长度上限,最大传输单元。数据链路层的协议数据单元为帧,如下图,MTU不包含首部与尾部
socket:套接字,根据RFC793的定义:端口号拼接到(concatenated with)IP地址即构成了套接字。
套接字 soket=(IP地址:端口号)
payload:有效荷载,可以理解为实际数据
TCP拆包发生的原因
- 应用程序write写入的字节大小大于套接口发送缓冲区大小
- 进行MSS大小的TCP分段
- 以太网帧的payload大于MTU进行IP分片
参考
- 《计算机网络(第7版)》-谢希仁
- 《Netty权威指南(第2版)》-李林锋