Netty与TCP、HTTP、WebSocket协议简明摘要
来源:互联网 发布:vba是什么软件 编辑:程序博客网 时间:2024/05/18 11:03
1.同步阻塞I/O(BIO) NIO 伪异步I/O 异步I/O(AIO)
- NIO(非阻塞I/O):1个IO线程处理多个客户端连接,非阻塞,同步
- 同步阻塞IO:一个IO线程处理一个客户端连接,阻塞,同步
- 伪异步IO:M个线程处理N个客户端连接(其中M≥N),阻塞,同步
- 异步IO:不需要启动额外的IO线程,被动回调,非阻塞,异步
2.TCP粘包问题
TCP基于流的方式进行数据传输,由于底层的TCP无法理解上层的业务数据,因此需要上层的应用协议栈设计解决这个问题,如:
- 消息定长
- 在包尾增加回车换行符进行分割,如FTP协议
- 将消息分为消息头和消息体,消息头重包含表示消息总长度(或消息体长度)的字段
- 更复杂的应用层协议
用法:
解决粘包:LineBasedFrameDecoder和StringDecoder
自动完成以分隔符做技结束标志的消息的解码:DelimiterBasedFrameDecoder
自动完成对定长消息的解码:FixedLengthFrameDecoder
3.编解码(序列化)技术
- Protobuf:ProtobufDecoder仅负责解码,不支持读半包,因此需要使用
Netty提供的ProtobufVarint32FrameDecoder
继承Netty提供的通用半包解码器LengthFieldBasedFrameDecoder
继承ByteToMessageDecoder类,自己处理半包消息 - Marshalling:Netty的Marshalling编解码器支持TCP粘包和拆包处理,可以开发出与JBoss内部模块进行远程通信的程序,且支持一部非阻塞,降低了基于Netty开发的应用程序与JBoss内部模块对接的难度
4.HTTP协议开发
- Netty+HTTP+XML协议栈开发:;利用到了Java的XML数据绑定框架:JiBx
- SpringMVC+restful api+json协议栈开发:http://my.oschina.net/u/2273085/blog/481085
5.WebSocket协议开发
- HTTP协议的弊端:
- HTTP协议为半双工协议,客户端和服务端数据不能同时传输
- HTTP消息冗长繁琐
- HTTP对服务器的推送为长时间轮询 的方式,会占用很多的带宽和服务器资源
- WebSocket协议优点:
- 单一TCP连接,采用全双工模式通信
- 对代理、防火墙和路由器透明
- 没有头部信息、Cookie和身份验证
- 没有安全开销
- 通过ping/pong帧保持链路激活
- 服务器可以I主动传递消息给客户端,不再需要客户端轮询
6.Netty私有协议栈开发
- Java中常见的私有协议栈有:通过RMI进行RPC;通过Java的Socket+Java序列化的方式进行跨节点调用;利用开源的RPC框架进行RPC,如Facebook的Thrift,Apache的Avro等;利用标准的公有协议进行跨节点的服务调用,如HTTP+XML,RESTful+JSON或RESTful+WebService等
- 可靠性设计:心跳机制;重连机制;重复登录保护;消息缓存重发等
- 安全性设计:内部长连接采用基于IP地址的安全认证机制,服务端对握手请求消息的IP地址进行合法性校验;如果在白名单之内,则通过校验,否则拒绝连接。如果Netty协议栈在公网中使用,则采用严格的安全认证机制,如基于密钥和AES加密的用户名+密码认证机制,也可以采用SSL/TSL安全传输。
参考:
http://www.cnblogs.com/shanyou/p/4085802.html
《Netty权威指南》
1 0
- Netty与TCP、HTTP、WebSocket协议简明摘要
- TCP/IP协议,HTTP协议与webSocket协议区别
- TCP/IP协议,HTTP协议与webSocket协议区别
- netty实现websocket(一)----HTTP与WebSocket
- Websocket TCP/IP Http 协议的关系
- netty实现webSocket协议
- OAuth协议简明摘要
- HTTP协议与TCP协议
- WebSocket(4)-- WebSocket与TCP、Http的关系
- WebSocket(4)-- WebSocket与TCP、Http的关系
- WebSocket(4)-- WebSocket与TCP、Http的关系
- Http 协议,WebSocket 协议
- Netty之WebSocket协议开发
- Netty之WebSocket协议开发
- TCP/IP、UDP、HTTP、websocket协议等网络相关
- TCP协议摘要(-) 基础知识
- http协议与TCP/Ip
- http协议与webSocket协议的异同点
- 欢迎使用CSDN-markdown编辑器
- Maven生命周期
- 快速排序
- ActiveMQ: configure PostgreSQL for Message Persistence
- USACO1.5]回文质数 Prime Palindromes
- Netty与TCP、HTTP、WebSocket协议简明摘要
- CodeBlocks 调试及快捷键
- SDL_Surface表面
- Android滑动菜单特效实现,侧滑菜单实现
- org.hibernate.HibernateException: Could not obtain transaction-synchronized Session for current thre
- Android动画之Drawable Animation
- Oracle字符集引发文字化问题(一)
- Android软键盘遮挡的四种解决方案
- Apache Storm 简述