随笔分类 - 网络通信
摘要:1. Netty中的缓冲 在Netty中并没有使用Java自带的ByteBuffer,而是自己实现提供了一个缓存区来用于标识一个字节序列,并帮助用户操作原始字节或者自定义的POJO。 Java NIO的ByteBuffer问题 长度固定,不能动态扩展和收缩 只有一个标识位置的指针,读写时要手动调用相
阅读全文
摘要:1. Channel Channel是Netty的核心概念之一,它是Netty网络通信的主体,由它负责同对端进行网络通信、注册和数据操作等功能。 1.1 工作原理 如上图所示: 一旦用户端连接成功,将新建一个channel同该用户端进行绑定 channel从EventLoopGroup获得一个Eve
阅读全文
摘要:1 Proactor和Reactor Proactor和Reactor是两种经典的多路复用I/O模型,主要用于在高并发、高吞吐量的环境中进行I/O处理。 I/O多路复用机制都依赖于一个事件分发器,事件分离器把接收到的客户事件分发到不同的事件处理器中,如下图: 1.1 select,poll,epol
阅读全文
摘要:问题原因 跨域是指从一个域名的网页去请求另一个域名的资源。浏览器出于安全的考虑,不允许不同源的请求: 解决方法 CORS CORS是一个W3C标准,全称是"跨域资源共享"(Cross origin resource sharing)。它允许浏览器向跨源服务器,发出XMLHttpRequest请求,从
阅读全文
摘要:1 HTTP协议协商 1.1 NPN NPN:Next Protocol Negotiation,是由Google公司开发的用于SPDY进行协议协商扩展。 协商过程: 服务端在收到客户端的client hello后,把自己支持的协议通过Server Hello 发送给客户端 客户端拿到清单后,选择一
阅读全文
摘要:1 Java IO 1.1 Java IO 1.1.1 IO IO,即输入(Input)输出(Output)的简写,是描述计算机软硬件对二进制数据的传输、读写等操作的统称。 按照软硬件可分为: 磁盘IO 内存IO 网络IO 按照处理的方式可分为: 同步IO 非阻塞IO 异步IO 按照数据类型可分为:
阅读全文
摘要:1 HTTP1.0/1.1与HTTPS的不足 1.1 HTTP1.0/1.1不足 单路连接 HTTP 协议的最大弊端就是每个 TCP 连接只能对应一个 HTTP 请求,即每个 HTTP 连接只请求一个资源,浏览器只能通过建立多个连接来解决。此外在 HTTP 中对请求是严格的先入先出(FIFO)进行的
阅读全文
摘要:HTTP学习三:HTTPS 1 HTTP安全问题 HTTP1.0/1.1在网络中是明文传输的,因此会被黑客进行攻击。 1.1 窃取数据 因为HTTP1.0/1.1是明文的,黑客很容易获得用户的重要数据,比如密码: 1.2 篡改数据 攻击者可以修改转账账户、金额等进行非法交易。 1.3 仿冒站点 攻击
阅读全文
摘要:1 HTTP介绍 HTTP协议(HyperText Transfer Protocol,超文本传输协议)是用于从WWW服务器传输超文本到本地浏览器的传送协议。 它的发展是万维网协会(World Wide Web Consortium)和Internet工作小组IETF(Internet Engine
阅读全文
摘要:1.HttpServer,Http服务启动类,用于初始化各种线程和通道public class HttpServer { public void bind(int port) throws Exception { EventLoopGroup bossGroup = new Ni...
阅读全文