说一下 tcp 粘包是怎么产生的?(未完成)

Posted mjtabu

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了说一下 tcp 粘包是怎么产生的?(未完成)相关的知识,希望对你有一定的参考价值。

1、什么是 tcp 粘包?

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

 

2、原因

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

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

 

3、处理方法

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

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

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

以上是关于说一下 tcp 粘包是怎么产生的?(未完成)的主要内容,如果未能解决你的问题,请参考以下文章

tcp粘包是怎么产生的?

面试知识点八:网络

Java复习---网络

查漏补缺:socket编程:TCP粘包问题和常用解决方案(上)

TCP 粘包拆包

我想办理业务 但是中国移动显示我有未完成的请求 我想知道是啥未完成的请求 然后要怎么完成