IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 网络协议 -> Netty介绍与实战(三)之粘包拆包 -> 正文阅读

[网络协议]Netty介绍与实战(三)之粘包拆包

一、传统NIO架构

step1. 我们传统的nio架构已经解决了多路复用,零拷贝等问题,已经十分优秀了,那为什么我们现在Netty如此火热呢?

1) 首先他使用简单,基本上都是模板化,我们可以更专注业务。具体使用可参考Netty介绍及实战

2)社区活跃,成熟稳定。

3)提供编解码功能,和处理粘包、拆包的功能。

4)替我们修复了NIO的大量bug , 不需要考虑复杂的网络协议。

step2.什么是粘包、拆包?

1)上图我们可以看到,所有的message都会放到我们对应的缓冲区当中。

缓冲区:TCP在接受数据的时候,有一个滑动窗口来控制接受数据的大小,这个滑动窗口你就可以理解为一个缓冲区。
? ? ? ? case1:右上第一个消息:当一个消息过大,我们TCP缓冲区放不下了,那就会产生拆包,剩下的message会在下一次请求中传递过来。

? ? ? ? case2:右上第二第三条消息:每个message的长度比较小,TCP将多次写入的消息一次性的发送出去。

? ? ? ? case3:报文长度大于最大报文长度也会出现拆包。

二、Netty架构

step1.network application framework

?step2. Netty server architecture

?Step3.一个简单数据接收,响应的流程图

1)一个加密数据传输过来,首先经过我们的handler去找到对应的channel去处理,然后将报文交给解密的handler去解析报文,之后将数据传递给业务端,业务端处理之后,再次将响应报文encode之后传递出去(代码:Netty介绍及实战)。

Step4.netty如何处理粘包,拆包呢?

设想,如果一个数据来了如果我不知道数据的具体长度,我们怎么能精准的拆包呢。

所以我们可以在报文的头部,用一部分字节来去标记整条报文的长度,这样按照长度去读取,这样不就可以精准的获取到原始的每一条报文结构了么。于是Netty也提供了这个方法:

LengthFieldBasedFrameDecoder 它是基于消息头指定消息长度进行粘包拆包处理的。

还有其他不同类型的拆包方法,大家也可以再了解一下。如有错误欢迎指出,共同学习!

  网络协议 最新文章
使用Easyswoole 搭建简单的Websoket服务
常见的数据通信方式有哪些?
Openssl 1024bit RSA算法---公私钥获取和处
HTTPS协议的密钥交换流程
《小白WEB安全入门》03. 漏洞篇
HttpRunner4.x 安装与使用
2021-07-04
手写RPC学习笔记
K8S高可用版本部署
mySQL计算IP地址范围
上一篇文章      下一篇文章      查看所有文章
加:2022-04-22 19:15:05  更:2022-04-22 19:15:20 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/26 3:53:23-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码