当前位置:网站首页>TCP的粘包拆包问题+解决方案
TCP的粘包拆包问题+解决方案
2022-08-05 06:13:00 【知识浅谈】
为什么TCP有而UDP没有粘包
1️⃣因为udp的数据包有保护边界。
2️⃣tcp是以字节流的形式,也就是没有边界,所以应用层的数据在传输层的时候就可能会出现粘包和拆包问题。
出现这种问题的原因图解
1️⃣字节流可以理解为一个双向的通道里流淌的数据,这个数据其实就是我们常说的二进制数据,简单来说就是一大堆 01 串。这些 01 串之间没有任何边界。
2️⃣应用层传到 TCP 协议的数据,不是以消息报为单位向目的主机发送,而是以字节流的方式发送到下游,这些数据可能被切割和组装成各种数据包,接收端收到这些数据包后没有正确还原原来的消息,因此出现粘包现象。
粘包情况
要发送的数据小于TCP发送缓冲区的大小,TCP将多次写入缓冲区的数据一次发送出去,将会发生粘包;

拆包情况
要发送的数据大于TCP发送缓冲区剩余空间大小,将会发生拆包;

拆包&粘包

解决方案
应用层措施
1️⃣封装固定包的大小。
2️⃣在包的结尾加上固定的字符,比如:FTP中的解决方法:末尾加上\r\n
3️⃣消息头+消息体。消息头中有消息体的长度。
4️⃣自定义。
边栏推荐
猜你喜欢

2022杭电多校六 1006-Maex (树形DP)

七夕!专属于程序员的浪漫表白

深入分析若依数据权限@datascope (注解+AOP+动态sql拼接) 【循序渐进,附分析过程】
D45_Camera assembly Camera

NACOS Configuration Center Settings Profile

MySQL的主从模式搭建

LaTeX image captioning text column automatic line wrapping

淘宝宝贝页面制作

After docker is deployed, mysql cannot connect

淘宝客APP带自营商城本地生活CPS外卖优惠电影票话费更新渠道跟单生活特权V3
随机推荐
NACOS Configuration Center Settings Profile
typescript66-分析partial的实现
MyCat配置文件
Using printf function in STM32
多用户商城多商户B2B2C拼团砍价秒杀支持小程序H5+APP全开源
技术分析模式(九)三重顶部和底部
【网友真实投稿】为女友放弃国企舒适圈,转行软件测试12k*13薪
获取预训练模型的网络输入尺寸
武田公司2022财年第一季度业绩强劲;正稳步实现全年的管理层指引目标
盒子模型小练习
《PyTorch深度学习实践》第十一课(卷积神经网络CNN高级版)
数据库多表关联插入数据
1, Citrix XenDesktop 2203 AD domain system installation (1)
《PyTorch深度学习实践》第十课(卷积神经网络CNN)
D41_buffer pool
【Go】IM系统Centrifugo
VSCode编写OpenCV
技术分析模式(十一)如何交易头肩形态
技术分析模式(八)双顶和底
typescript67-索引查询类型
