天天看点

Http,Socket,Websocket--区别

简介

        本文介绍Http,Socket,Websocket的区别。

        Socket是抽象层,在应用层与运输层中间。所以本文重点对比HTTP与Websocket。

Http,Socket,Websocket--区别

Http与Websocket的对比

相同点

Http Websocket
相同点
所在层面 应用层(调用Socket,基于TCP) 应用层(模拟Socket,基于TCP)

不同点

Http Websocket
连接类型 短连接(浏览器控制,页面无法控制)。

长连接。

连接时间可编程,可永久连接(除非断网)。

通信方式 客服端发起请求,服务端才响应。服务端不能主动联系客户端,只能由客户端发起。(单向)

        只需要完成一次握手,两者之间就直接可以创建持久性的连接,并进行双向数据传输。

        不用再次发起网络请求,它允许服务端主动向客户端推送数据。

端口 默认为8080 默认情况下,Websocket协议使用80端口;运行在TLS之上时,默认使用443端口。

联系

WebSocket通过HTTP协议建立握手建立之后,使用TCP协议传输。

HTTP

短连接

在HTTP1.0中,客户端发送请求,服务器接收请求,双方建立连接,服务器响应资源,请求结束。

长连接

持久连接的特点是,只要任意一端没有明确提出断开连接,则保持 TCP 连接状态。

        HTTP1.1开始,默认采用持久连接,使用了一种叫做keepalive connections 的机制。在传输数据后仍然保持连接,当客户端再次获取数据时,直接使用刚刚空闲下来的连接,而无需再次握手,低线路负载,提高传输速度。

        Keep-Alive不会永久保持连接,它有一个保持时间,可以在不同的服务器软件(如Apache)中设定这个时间。实现长连接需要客户端和服务端都支持长连接。

       长连接优势:减少了连接请求,降低TCP阻塞,减少了延迟,实时性较好。

       长连接劣势:可能会影响性能,因为它在文件被请求之后还保持了不必要的连接很长时间。

Websocket

WebSocket连接的过程如下

  1. 首先,客户端发起http请求,经过3次握手后,建立起TCP连接;http请求里存放WebSocket支持的版本号等信息,如:Upgrade、Connection、WebSocket-Version等;
  2. 然后,服务器收到客户端的握手请求后,同样采用HTTP协议回馈数据;
  3. 最后,客户端收到连接成功的消息后,开始借助于TCP传输信道进行全双工通信。

其他网址​

​​WebSocket原理浅析与实现简单聊天 - 个人文章 - SegmentFault 思否​​

继续阅读