TCP粘包/拆包发生的原因

从层次上看数据的流动

1

名词与简写

MSS[RFC879]:Maximum Segment Size,最大报文段大小。运输层TCP协议的一个选项。不包含TCP首部
MTU:Maximum Transfer Unit,数据链路层规定所能传送的帧的数据部分长度上限,最大传输单元。数据链路层的协议数据单元为帧,如下图,MTU不包含首部与尾部
2
socket:套接字,根据RFC793的定义:端口号拼接到(concatenated with)IP地址即构成了套接字。

套接字 soket=(IP地址:端口号)

payload:有效荷载,可以理解为实际数据

TCP拆包发生的原因

  1. 应用程序write写入的字节大小大于套接口发送缓冲区大小
  2. 进行MSS大小的TCP分段
  3. 以太网帧的payload大于MTU进行IP分片

3

参考

  1. 《计算机网络(第7版)》-谢希仁
  2. 《Netty权威指南(第2版)》-李林锋
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值