随笔分类 - Java--网络模型
摘要:Netty 是由 JBOSS 提供的一个 Java 开源框架。 Netty 提供异步的、事件驱动的网络应用程序框架和工具 ,用以快速开发高性能 、 高可靠性的网络服务器和客户端程序。 Netty 框架是对 Java BIO 、 Java NIO 框架的再次封装。 Netty 框架是一个面向上层业务实
阅读全文
摘要:异步I/O (又称为 AIO )则是采用“订阅一通知”工作模式 : 即应用程序向操作系统注册I/O监听,然后继续做自己的事情。当操作系统发生I/O事件,并且准备好数据后 , 再主动通知应用程序,触发相应的函数。 异步I/O也必须由操作系统进行支持 。 微软Windows系统提供了一种异步I/O技术
阅读全文
摘要:多路复用I/O模型在应用层工作效率比我们俗称的 BIO 模型快的本质原因是,前者不再使用操作系统级别的“同步 I/O”模型 。 在 Linux 操作系统环境下, 多路复用 I/O 模型就是技术人员通常简称的 NIO 技术。多路复用I/O 目前具体的实现主要包括四种: select、 poll , e
阅读全文
摘要:由于应用程序级别并没有使用多线程技术,这就导致了应用程序只能一个一个地对Socket 套接字进行处理。这个 Socket 套接宇没有处理完,就没法处理下一个 Socket 套接字 。针对这个 问题还是可以进行改进的:让应用程序层面上各个 Socket 套接字的处理相互不影响 。 服务端代码 引入了多
阅读全文
摘要:对于阻塞方式的一种改进是在应用程序层面上将 “一直等待 ”的状态主动打开: 这种模式下,应用程序的线程不再一直等待操作系统的 I/O状态,而是在等待一段时间后就解除阻塞。如果没有得到想要的结果,则再次进行相同的操作 。 这样的工作方式,保证了应用程序的线程不会一直阻塞,而可以进行一些其他工作一一例如
阅读全文
摘要:当服务器收到客户端 X 的请求后(读取到所有请求数据后),将这个请求送入一个独立线程进行处理,然后主线程继续接收客户端 Y 的请求。 客户端一侧也可以使用一个子线程和服务器端进行通信。这样客户端主线程的其他工作就不受影响了,当服务器端有响应信息时再由这个子线程通过监听模式/观察模式或者类似的其他设计
阅读全文
摘要:很长一段时间内,大多数网络通信方式都是阻塞模式,即: · 客户端 向服务器端发出请求后,客户端会一直处于等待状态(不会再做其他事情),直到服务器端返回结果或者网络出现问题 。 · 服务器端同样如此,当在处理某个客户端 A 发来的请求时,另 一个客户端 B 发来的请求会等待,直到服务器端的处理线程完成
阅读全文
摘要:首先需要大致说明一下基础的IP/TCP报文( IP 报文和 TCP报文是两种不同的报文格式) ,以及链路层对 IP 数据的封装方式 链路层报文 链路层的数据格式有一个共同特点,都包括目标 MAC 地址和源 MAC 地址。如图 所示主要说明了最常用 的 Ethernet 帧(以太帧)的报文格式 。 网
阅读全文