Netty学习3(学习笔记)

Posted javaer开发者

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Netty学习3(学习笔记)相关的知识,希望对你有一定的参考价值。

TCP底层并不了解上层业务数据的具体含义,它会根据TCP缓冲区的实际情况进行包的划分,所以在业务上认为,一个完整的包可能会被TCP拆分成多个包进行发送,也有可能把多个小的包封装成一个大的数据包发送,这就是所谓的TCP粘包和拆包的问题。

问题产生的原因有三个

  • 应用程序write写入的字节大小大于套接口发送缓冲区大小。

  • 进行MSS大小的TCP分段

  • 以太网网帧的payload大于MTU进行IP分片


TCP粘包/拆包问题原因

可以利用LineBaseFrameDecoder + StringDecoder 来解决TCP的粘包/拆包问题。

分隔符和定长解码器的应用

DelimiterBasedFrameDecoder用于对使用分隔符结尾的消息进行自动解码,FixedLengthFrameDecoder用于对固定长度的消息进行自动解码。


以上是关于Netty学习3(学习笔记)的主要内容,如果未能解决你的问题,请参考以下文章

Netty学习笔记四:Echo服务和Netty项目的搭建

Netty 4.x学习笔记——线程模型

Netty 学习笔记四 了解缓冲区

Netty学习2(学习笔记)

Netty学习4(学习笔记)

Netty学习笔记15 Netty Attribute使用