码迷,mamicode.com
首页 > 其他好文 > 详细

tcp粘包是怎么产生的?

时间:2019-11-25 11:18:18      阅读:94      评论:0      收藏:0      [点我收藏+]

标签:get   选项   方法   tail   style   解决   协议   net   怎么   

1、什么是 tcp 粘包?

发送方发送的多个数据包,到接收方缓冲区首尾相连,粘成一包,被接收。

 

2、原因

TCP 协议默认使用 Nagle 算法可能会把多个数据包一次发送到接收方。

应用程读取缓存中的数据包的速度小于接收数据包的速度,缓存中的多个数据包会被应用程序当成一个包一次读取。

 

3、处理方法

发送方使用 TCP_NODELAY 选项来关闭 Nagle 算法

数据包增加开始符和结束,应用程序读取、区分数据包。

在数据包的头部定义整个数据包的长度,应用程序先读取数据包的长度,然后读取整个长度的包字节数据,保证读取的是单个包且完整。

 

参考


 


技术图片

 

所有资源资源汇总于公众号

技术图片

 

 

tcp粘包是怎么产生的?

标签:get   选项   方法   tail   style   解决   协议   net   怎么   

原文地址:https://www.cnblogs.com/ConstXiong/p/11926212.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!