A_99_网络编程
2021-04-17 12:21:13 0 举报
AI智能生成
全面、高效的知识图谱:A_99_网络编程!! 全面又深度的提升认知,达到实际应用的目的! 建议先纵观全局,掌握好大方向。 再根据自己的需要,针对性的学习某一个点,最后做到逐步由点及面。
作者其他创作
大纲/内容
高性能网络应用框架
Netty
Netty 是一个基于NIO的客户、服务器端编程框架
TCP和UDP的socket服务开发
netty/netty
Netty项目 - 事件驱动的异步网络应用程序框架http://netty.io/
MINA
高性能Java网络框架 MINA
支持基于 Java NIO 技术的 TCP/UDP 应用程序开发、串口通讯程序
技术分层
client
clientSocket
webSocket
网络
request
response
server
协议
TCP
socket
mina
netty
网络
response
request
其它
java.net
java.net.socket -websocket
java.net.socket -socket
java EE7 & tomcat7.0.62
javax.websocket
tomcat7
org.apache.catalina.websocket.WebSocketServlet
UDP
XMPP
http
Ajax
轮询
长轮询
流
多方式、优缺点
轮询
轮询:客户端定时向服务器发送Ajax请求,服务器接到请求后马上返回响应信息并关闭连接。
优点:后端程序编写比较容易。
缺点:请求中有大半是无用,浪费带宽和服务器资源。
实例:适于小型应用。
长轮询
长轮询:客户端向服务器发送Ajax请求,服务器接到请求后hold住连接,直到有新消息才返回响应信息并关闭连接,客户端处理完响应信息后再向服务器发送新的请求。
优点:在无消息的情况下不会频繁的请求,耗费资源小。
缺点:服务器hold连接会消耗资源,返回数据顺序无保证,难于管理维护。
实例:WebQQ、Hi网页版、Facebook IM。
长连接
长连接:在页面里嵌入一个隐蔵iframe,将这个隐蔵iframe的src属性设为对一个长连接的请求或是采用xhr请求,服务器端就能源源不断地往客户端输入数据。
优点:消息即时到达,不发无用请求;管理起来也相对方便。
缺点:服务器维护一个长连接会增加开销。
实例:Gmail聊天
Flash Socket
Flash Socket:在页面中内嵌入一个使用了Socket类的 Flash 程序JavaScript通过调用此Flash程序提供的Socket接口与服务器端的Socket接口进行通信,JavaScript在收到服务器端传送的信息后控制页面的显示。
优点:实现真正的即时通信,而不是伪即时。
缺点:客户端必须安装Flash插件;非HTTP协议,无法自动穿越防火墙。
实例:网络互动游戏。
新 web Socket
参考
websocket基础 - 上吧,少年 - 博客频道 - CSDN.NET
WebSocket与消息推送 - 张果 - 博客园
http、TCP/IP协议与socket之间的区别 - 梦想通 - 博客园
TCP/IP、Http、Socket的区别 - skyboy11yk的专栏 - 博客频道 - CSDN.NET
利用长轮询实现微信网页版扫码登录 - 瓶子里的小地盘 - 博客频道 - CSDN.NET
NIO
NIO的方式异步,服务器端用mina这个框架做管理
协议
XMPP
xmpp = socket+xml xmpp是将socket和xml封装了
TCP
什么是TCP连接的三次握手
第一次握手:客户端发送syn包(syn=j)到服务器,并进入SYN_SEND状态,等待服务器确认;
第二次握手:服务器收到syn包,必须确认客户的SYN(ack=j+1),同时自己也发送一个SYN包(syn=k),即SYN+ACK包,此时服务器进入SYN_RECV状态;
第三次握手:客户端收到服务器的SYN+ACK包,向服务器发送确认包ACK(ack=k+1),此包发送完毕,客户端和服务器进入ESTABLISHED状态,完成三次握手
握手过程中传送的包里不包含数据,三次握手完毕后,客户端与服务器才正式开始传送数据。
断开连接时服务器和客户端均可以主动发起断开TCP连接的请求,断开过程需要经过“四次握手”(过程就不细写了,就是服务器和客户端交互,最终确定断开)
http
HTTP协议即超文本传送协议(Hypertext Transfer Protocol ),是Web联网的基础,也是手机联网常用的协议之一,HTTP协议是建立在TCP协议之上的一种应用
TCP和UDP的区别
TCP是面向链接
TCP的三次握手在最低限度上(实际上也很大程度上保证了)保证了连接的可靠性
UDP不是面向连接
UDP传送数据前并不与对方建立连接,对接收到的数据也不发送确认信号,发送端不知道数据是否会正确接收,当然也不用重发,所以说UDP是无连接的、不可靠的一种数据传输协议
UDP的开销更小数据传输速率更高,因为不必进行收发数据的确认,所以UDP的实时性更好
技术
建立Socket连接至少需要一对套接字,其中一个运行于客户端,称为ClientSocket ,另一个运行于服务器端,称为ServerSocket
套接字之间的连接过程分为三个步骤:服务器监听,客户端请求,连接确认
网络由下往上分层
物理层、数据链路层、网络层、传输层、会话层、表示层和应用层
socket则是对TCP/IP协议的封装和应用(程序员层面上)
HTTP是应用层协议,主要解决如何包装数据
平时说的最多的socket是什么呢,实际上socket是对TCP/IP协议的封装,Socket本身并不是协议,而是一个调用接口(API)
CSDN上有个比较形象的描述:HTTP是轿车,提供了封装或者显示数据的具体形式;Socket是发动机,提供了网络通信的能力
长短连接
长连接
基础的就是建立java.net.Socket连接,自己制定协议来控制断开|webSocket
服务器端的实现老的有标准IO(java.net.*),新的有NIO(java.nio.*)
有具体业务时可以考虑一些成熟的协议来实现,如XMPP
短链接
HTTP连接本身的request/response模式设计就是短链接的,即服务器端响应之后断开连接。
0 条评论
下一页