新接的游戏是c语言的,采用了websocket进行数据传输。为了防止和socket和HTTP互相混淆。记录一下
WebSocket
Websocket是一个持久性化的协议,模拟socket的一种服务器端和客户端的双向通信,需要通过HTTP1.1的握手进行连接
特点:
- Html5协议的一部分
- 服务器端可以主动向客户端进行通信
- 基于tcp
- 和Http一样都是应用层的协议
- 只需要连接一次,就可以达到双向通信
- 建立连接后采用帧传递
- ws/wss 统一资源符
- 需要借助http的三次握手进行连接
概念图:
为什么要引入WebSocket?
由于Http协议(Http1.1比1.0多了一个keep-alive的属性)是无状态的,所以服务器端无法记录http请求,这样要达成伪长连接的话就需要如下两种方式:
ajax轮询
通过ajax定时发送新请求,无论请求是否能获取到新的资源都会返回,在请求结束的时候都会持续wait状态一段时间,这样就会极大的增加服务器的负担。
long pool
轮询模式,是一种阻塞模式,请求后台没有新资源则阻塞,直至有新的资源或者是请求超时则返回。
以上两种方法都会极大的浪费资源,和增加负担,所以引入了WebSocket协议
HTTP协议
HTTP是一个非持久化的,且是无状态的协议
特点:
- 一个请求一个回应,无法主动发送信息
- 基于TCP/IP协议
- 每次连接都需要握手
- Http1.1可以有多个请求,多个连接
概念图
OSI7层
第七层:应用层(Http,Ptp,Smtp等协议)
第六层:表示层(加密,解密,转换翻译等)
第五层:会话层(管理会话,例如:SSL/TLS/RPC/Socket)
第四层:传输层(TCP协议)
第三层: 网络层(IP协议)
第二层: 数据联络层(物理寻址)
第一层: 物理层(原始比特流传输)
Socket
特点
- 会话层
- 基于Tcp/Ip抽象出来的一个中间件接口,而非协议
- 做用是组织数据传输
Socket和WebSocket区别
- Socket是接口而WebSocket是协议
- socket在会话层,而websocket在应用层