【什么是拆包和粘包?】

在这里插入图片描述

一、粘包

粘包(Packet Sticky)是指在TCP协议下,由于TCP是面向流的协议,发送方发送的两个数据包可能会被合并成一个数据包发送给接收方。

也就是说,原本两个独立的数据包在接收端被粘合成了一个数据包。

原因

  • TCP协议本身的特点:TCP是面向流的,它并不关心消息边界,只是将数据看作一连串的字节流进行传输。

  • Nagle算法:为了减少网络中分格较小的包的数量,TCP协议默认使用了Nagle算法,该算法会将较小的数据包合并起来发送。

解决方法

  • 使用定长包:每个数据包的大小固定,接收方按这个大小来读取数据。

  • 使用分隔符:在每个数据包的末尾添加特殊的分隔符,接收方通过识别分隔符来区分数据包。

  • 使用长度字段:在每个数据包的头部添加一个长度字段,表示该数据包的总长度,接收方根据这个长度来读取数据。

二、拆包

拆包(Packet Split)是指一个数据包在发送过程中被分成了多个数据包,也就是说,发送方发送的一个完整数据包在接收方被拆分成了多个数据包。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值