diff --git a/docs/Netty/TCP粘拆包/TCP粘拆包问题及Netty中的解决方案.md b/docs/Netty/TCP粘拆包/TCP粘拆包问题及Netty中的解决方案.md index acf4b36..6047cd5 100644 --- a/docs/Netty/TCP粘拆包/TCP粘拆包问题及Netty中的解决方案.md +++ b/docs/Netty/TCP粘拆包/TCP粘拆包问题及Netty中的解决方案.md @@ -8,14 +8,14 @@ TCP 是个 “流” 协议,所谓流,就是没有界限的一串数据。TC ![avatar](../../../images/Netty/TCP粘包拆包问题.png) -假设客户端依次发送了两个数据包 DI 和 D2 给服务端,由于服务端一次读取到的字节数是不确定的,故可能存在以下 4 种情况。 +假设客户端依次发送了两个数据包 D1 和 D2 给服务端,由于服务端一次读取到的字节数是不确定的,故可能存在以下 4 种情况。 1. 服务端分两次读取到了两个独立的数据包,分别是 D1 和 D2,没有粘包和拆包; -2. 服务端一次接收到了两个数据包,DI 和 D2 粘合在一起,被称为 TCP 粘包; -3. 服务端分两次读取到了两个数据包,第一次读取到了完整的 DI 包 和 D2 包的部分内容,第二次读取到了 D2 包 的剩余内容,这被称为 TCP 拆包; +2. 服务端一次接收到了两个数据包,D1 和 D2 粘合在一起,被称为 TCP 粘包; +3. 服务端分两次读取到了两个数据包,第一次读取到了完整的 D1 包 和 D2 包的部分内容,第二次读取到了 D2 包 的剩余内容,这被称为 TCP 拆包; 4. 服务端分两次读取到了两个数据包,第一次读取到了 D1 包的部分内容,第二次读取到了 D1 包的剩余内容 和 D2 包的整包。 -如果此时服务端 TCP 接收滑窗非常小,而 数据包 DI 和 D2 比较大,很有可能会发生第 5 种可能,即服务端分多次才能将 D1 和 D2 包 接收完全,期间发生多次拆包。 +如果此时服务端 TCP 接收滑窗非常小,而 数据包 D1 和 D2 比较大,很有可能会发生第 5 种可能,即服务端分多次才能将 D1 和 D2 包 接收完全,期间发生多次拆包。 ### TCP 粘包/拆包发生的原因