TCP粘包与拆包是什么?

发布时间:2020-05-27 16:38:53 作者:鸽子
来源:亿速云 阅读:622

TCP粘包/拆包

什么是TCP粘包/拆包问题

TCP以流方式传输,是没有界限的一串数据,并没有消息边界。
- TCP传输数据时,会根据底层的TCP缓存区实际情况进行数据包划分:
- 1.业务上定义的完整数据(比方说一个完整的json串),可能会被TCP拆分成多个数据包进行发送(拆包)。
- 2.业务上特殊含义的独立数据,也有可能因为大小或者缓冲区原因,被TCP封装成一个大数据包发送(粘包)。

通过一个图来理解

TCP粘包与拆包是什么?

通过图我们可以发现,数据包接收有很多情况:
1、没有粘包拆包,终端2收到了完整的数据包A和数据包B。
2、终端2一次性读取到数据包A和数据包B,这就是粘包。
3、终端2读取到完整的数据包A和部分数据包B1,第二次才读取到数据包B剩余部分(数据包B2),这就是拆包。
4、类似第三点,数据包A也有可能分成两部分(A1、A2), 被前后读取。
5、假设数据包很大,那么可能产生多次拆包,如数据包A分N次被读取。

推荐阅读:
  1. php - tcp 粘包/拆包的案例分析
  2. Golang TCP粘包拆包问题的解决方法

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

tcp 粘包 tc

上一篇:BigDecimal的toString()的使用方法

下一篇:二分查找如何实现找出给定目标值在数组中的开始位置和结束位置

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》