
网络协议
这是我的昵称。。
。。。。。。。。。。。。。。。。。。
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
粘包/半包问题
什么是 TCP 粘包半包? 假设客户端分别发送了两个数据包 D1 和 D2 给服务端, 由于服务端一次读取到的字节 数是不确定的, 故可能存在以下 4 种情况。 (1) 服务端分两次读取到了两个独立的数据包, 分别是 D1 和 D2, 没有粘包和拆包; (2) 服务端一次接收到了两个数据包, D1 和 D2 粘合在一起, 被称为 TCP 粘包; (3) 服务端分两次读取到了两个数据包, 第一次读取到了完整的 D1 包和 D2 包的部分 内容, 第二次读取到了 D2 包的剩余内容, 这被称为 TCP 拆原创 2020-11-05 15:55:31 · 212 阅读 · 0 评论 -
netty---ByteBuf
ByteBuf ByteBuf API 的优点: 它可以被用户自定义的缓冲区类型扩展; 通过内置的复合缓冲区类型实现了透明的零拷贝; 容量可以按需增长(类似于 JDK 的 StringBuilder) ; 在读和写这两种模式之间切换不需要调用 ByteBuffer 的 flip()方法; 读和写使用了不同的索引; 支持方法的链式调用; 支持引用计数; 支持池化。 ByteBuf 维护了两个不同的索引, 名称以 read 或者 write 开头的 ByteBuf 方法, 将会 推进其对应的索引, 而名称以 s原创 2020-11-05 15:37:52 · 421 阅读 · 0 评论 -
netty组件----Bootstrap
Bootstrap 网络编程里, “服务器” 和“客户端” 实际上表示了不同的网络行为; 换句话说, 是监 听传入的连接还是建立到一个或者多个进程的连接。 因此, 有两种类型的引导: 一种用于客户端(简单地称为 Bootstrap) , 而另一种 (ServerBootstrap) 用于服务器。 无论你的应用程序使用哪种协议或者处理哪种类型的数据, 唯一决定它使用哪种引导类的是它是作为一个客户端还是作为一个服务器。 比较 Bootstrap 类 ServerBootstrap 将绑定到一个端口, 因为服务原创 2020-11-05 15:27:48 · 287 阅读 · 1 评论 -
netty组件---ChannelPipeline 和 ChannelHandlerContext
ChannelPipeline 和 ChannelHandlerContextChannelPipeline 接口 当 Channel 被创建时, 它将会被自动地分配一个新的 ChannelPipeline。 这项关联是永久 性的; Channel 既不能附加另外一个 ChannelPipeline, 也不能分离其当前的。 在 Netty 组件 的生命周期中, 这是一项固定的操作, 不需要开发人员的任何干预。 使得事件流经 ChannelPipeline 是 ChannelHandler 的工作, 它们是在原创 2020-11-05 15:25:03 · 305 阅读 · 0 评论 -
netty组件---ChannelHandler
ChannelHandler 接口 从应用程序开发人员的角度来看, Netty 的主要组件是 ChannelHandler, 它充当了所有 处理入站和出站数据的应用程序逻辑的容器。 ChannelHandler 的方法是由网络事件触发的。 事实上, ChannelHandler 可专门用于几乎任何类型的动作, 例如将数据从一种格式转换为另 外一种格式, 例如各种编解码, 或者处理转换过程中所抛出的异常。 举例来说, ChannelInboundHandler 是一个你将会经常实现的子接口。 这种类型的 Ch原创 2020-11-05 15:19:43 · 404 阅读 · 0 评论 -
netty组件---EventLoop 和 EventLoopGroup
回想一下我们在 NIO 中是如何处理我们关心的事件的? 在一个 while 循环中 select 出事 件, 然后依次处理每种事件。 我们可以把它称为事件循环, 这就是 EventLoop。 interface io.netty.channel. EventLoop 定义了 Netty 的核心抽象, 用于处理网络连接的生命周期中所发 生的事件。 io.netty.util.concurrent 包构建在 JDK 的 java.util.concurrent 包上。而 io.netty.channel 包 中原创 2020-11-05 15:16:25 · 516 阅读 · 0 评论 -
netty组件--Channel、EventLoop(Group)和 ChannelFuture
Channel、EventLoop(Group)和 ChannelFuture Netty 网络抽象的代表: Channel—Socket; EventLoop—控制流、 多线程处理、 并发; ChannelFuture—异步通知。 Channel 和 EventLoop 关系如图: Channel 接口 基本的 I/O 操作(bind()、 connect()、 read()和 write()) 依赖于底层网络传输所提供的原 语。 在基于 Java 的网络编程中, 其基本的构造是类 Socket。 Ne原创 2020-11-05 15:13:07 · 528 阅读 · 0 评论 -
netty组件初步了解
EventLoop(Group) 、Channel Channel 是 Java NIO 的一个基本构造。 它代表一个到实体(如一个硬件设备、 一个文件、 一个网络套接字或者一个能够执行一 个或者多个不同的 I/O 操作的程序组件) 的开放连接, 如读操作和写操作 目前, 可以把 Channel 看作是传入(入站) 或者传出(出站) 数据的载体。 因此, 它 可以被打开或者被关闭, 连接或者断开连接。 EventLoop 暂时可以看成一个线程、 EventLoopGroup 自然就可以看成线程组。事件和 C原创 2020-11-05 14:42:13 · 103 阅读 · 0 评论 -
第一个netty程序
netty 分为客户端和服务端代码 1、先看服务端代码 public class EchoServer { //指定服务端绑定的端口 private final int port; public EchoServer(int port) { this.port = port; } public static void main(String[] args) throws InterruptedException { int原创 2020-11-05 14:39:48 · 168 阅读 · 0 评论 -
HTTP
HTTP HTTP 协议是 Hyper Text Transfer Protocol(超文本传输协议) 的缩写,是用于从万维网 (WWW:World Wide Web ) 服务器传输超文本到本地浏览器的传送协议。 HTTP 协议 我们使用 http 来访问 Web 上某个资源, 比如 html/文本、 word、 avi 电影、 其他资源。 官方协议网站: https://tools.ietf.org/html/rfc2608 HTTP 使用统一资源标识符(Uniform Resource Identifi原创 2020-10-26 09:37:55 · 169 阅读 · 0 评论 -
TCP 概述
TCP(Transmission Control Protocol) 是面向连接的通信协议, 通过三次握手建立连接, 然后才能开始数据的读写, 通讯完成时要拆除连接, 由于 TCP 是面向连接的所以只能用于端 到端的通讯。 TCP 提供的是一种可靠的数据流服务, 数据有可能被拆分后发送, 那么采用超时重传机 制是和应答确认机制是组成 TCP 可靠传输的关键设计。 而超时重传机制中最最重要的就是重传超时(RTO, Retransmission TimeOut) 的时间选 择, 很明显, 在工程上和现实中网络环原创 2020-10-26 09:25:23 · 293 阅读 · 0 评论 -
网络编程基础知识
1、网络协议 计算机网络是什么? 随着计算机技术发展, 计算机的体积和价格都在下降, 之前计算机多用于研究机构, 现 阶段逐步进入一般的公司用于办公。 原来计算机之间传输数据需要通过软盘等第三方存储介 质进行转存, 人们需要将数据直接通过通信线路传输, 来缩短传输时间, 于是计算机网络开 始诞生, 并逐渐发展为现在巨大的 Internet。 定义和分类 计算机网络的标准定义是: 利用通信线路将地理上分散的、 具有独立功能的计算机系统 和通信设备按不同的形式连接起来, 以功能完善的网络软件及协议实现资源共享和原创 2020-10-26 09:22:44 · 379 阅读 · 0 评论 -
TCP网络协议学习
计算机网络体系结构 OSI七层模型 开放系统互连参考模型 (Open System Interconnect 简称OSI)是国际标准化组织(ISO)和国际电报电话咨询委员会(CCITT)联合制定的开放系统互连参考模型,为开放式互连信息系统提供了一种功能结构的框架。其目的是为异种计算机互连提供一个共同的基础和标准框架,并为保持相关标准的一致性和兼容性提供共同的参考。这里所说的开放系统,实质上指的...原创 2019-07-02 19:29:49 · 306 阅读 · 0 评论