GoMind Hub

网络编程

计算机知识思维导图:网络编程。网页展示前三层结构,可在线查看完整脑图并下载 GoMind 文件。

2026-08-25

计算机知识学习资料思维导图
## 网络编程
### 网络编程
#### NIO
##### NIO的方式异步,服务器端用mina这个框架做管理
#### 协议
##### XMPP
##### TCP
##### http
##### TCP和UDP的区别
#### 技术
##### 建立Socket连接至少需要一对套接字,其中一个运行于客户端,称为ClientSocket ,另一个运行于服务器端,称为ServerSocket
##### 套接字之间的连接过程分为三个步骤:服务器监听,客户端请求,连接确认
#### 网络由下往上分层
##### 物理层、数据链路层、网络层、传输层、会话层、表示层和应用层
##### socket则是对TCP/IP协议的封装和应用(程序员层面上)
##### HTTP是应用层协议,主要解决如何包装数据
##### 平时说的最多的socket是什么呢,实际上socket是对TCP/IP协议的封装,Socket本身并不是协议,而是一个调用接口(API)
##### CSDN上有个比较形象的描述:HTTP是轿车,提供了封装或者显示数据的具体形式;Socket是发动机,提供了网络通信的能力
#### 长短连接
##### 长连接
##### 短链接
#### 高性能网络应用框架
##### Netty
##### MINA
#### 技术分层
##### client
##### server
#### 多方式、优缺点
##### 轮询
##### 长轮询
##### 长连接
##### Flash Socket
##### 新 web Socket
#### 参考
##### websocket基础 - 上吧,少年 - 博客频道 - CSDN.NET
##### WebSocket与消息推送 - 张果 - 博客园
##### http、TCP/IP协议与socket之间的区别 - 梦想通 - 博客园
##### TCP/IP、Http、Socket的区别 - skyboy11yk的专栏 - 博客频道 - CSDN.NET
##### 利用长轮询实现微信网页版扫码登录 - 瓶子里的小地盘 - 博客频道 - CSDN.NET

> 仅展示前三层结构;请在线查看完整脑图或下载 GoMind 文件。

网络编程

网络编程
NIO的方式异步,服务器端用mina这个框架做管理
NIO
xmpp = socket+xml xmpp是将socket和xml封装了
XMPP
第一次握手:客户端发送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连接的三次握手
断开连接时服务器和客户端均可以主动发起断开TCP连接的请求,断开过程需要经过“四次握手”(过程就不细写了,就是服务器和客户端交互,最终确定断开)
TCP
HTTP协议即超文本传送协议(Hypertext Transfer Protocol ),是Web联网的基础,也是手机联网常用的协议之一,HTTP协议是建立在TCP协议之上的一种应用
http
TCP是面向链接
TCP的三次握手在最低限度上(实际上也很大程度上保证了)保证了连接的可靠性
UDP不是面向连接
UDP传送数据前并不与对方建立连接,对接收到的数据也不发送确认信号,发送端不知道数据是否会正确接收,当然也不用重发,所以说UDP是无连接的、不可靠的一种数据传输协议
UDP的开销更小数据传输速率更高,因为不必进行收发数据的确认,所以UDP的实时性更好
TCP和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模式设计就是短链接的,即服务器端响应之后断开连接。
短链接
长短连接
Netty 是一个基于NIO的客户、服务器端编程框架
TCP和UDP的socket服务开发
Netty项目 - 事件驱动的异步网络应用程序框架http://netty.io/
netty/netty
Netty
高性能Java网络框架 MINA
支持基于 Java NIO 技术的 TCP/UDP 应用程序开发、串口通讯程序
MINA
高性能网络应用框架
clientSocket
request
response
网络
webSocket
client
mina
response
request
网络
netty
java.net.socket -websocket
java.net.socket -socket
java.net
javax.websocket
java EE7 & tomcat7.0.62
org.apache.catalina.websocket.WebSocketServlet
tomcat7
其它
socket
TCP
UDP
XMPP
轮询
长轮询
流
Ajax
http
协议
server
技术分层
轮询:客户端定时向服务器发送Ajax请求,服务器接到请求后马上返回响应信息并关闭连接。
优点:后端程序编写比较容易。
缺点:请求中有大半是无用,浪费带宽和服务器资源。
实例:适于小型应用。
轮询
长轮询:客户端向服务器发送Ajax请求,服务器接到请求后hold住连接,直到有新消息才返回响应信息并关闭连接,客户端处理完响应信息后再向服务器发送新的请求。
优点:在无消息的情况下不会频繁的请求,耗费资源小。
缺点:服务器hold连接会消耗资源,返回数据顺序无保证,难于管理维护。
实例:WebQQ、Hi网页版、Facebook IM。
长轮询
长连接:在页面里嵌入一个隐蔵iframe,将这个隐蔵iframe的src属性设为对一个长连接的请求或是采用xhr请求,服务器端就能源源不断地往客户端输入数据。
优点:消息即时到达,不发无用请求;管理起来也相对方便。
缺点:服务器维护一个长连接会增加开销。
实例:Gmail聊天
长连接
Flash Socket:在页面中内嵌入一个使用了Socket类的 Flash 程序JavaScript通过调用此Flash程序提供的Socket接口与服务器端的Socket接口进行通信,JavaScript在收到服务器端传送的信息后控制页面的显示。
优点:实现真正的即时通信,而不是伪即时。
缺点:客户端必须安装Flash插件;非HTTP协议,无法自动穿越防火墙。
实例:网络互动游戏。
Flash Socket
新 web Socket
多方式、优缺点
websocket基础 - 上吧,少年 - 博客频道 - CSDN.NET
WebSocket与消息推送 - 张果 - 博客园
http、TCP/IP协议与socket之间的区别 - 梦想通 - 博客园
TCP/IP、Http、Socket的区别 - skyboy11yk的专栏 - 博客频道 - CSDN.NET
利用长轮询实现微信网页版扫码登录 - 瓶子里的小地盘 - 博客频道 - CSDN.NET
参考