理解websocket

OSI 模型与TCP/IP

开放式系统互联通信参考模型(英语:Open System Interconnection Reference Model,ISO/IEC 7498-1),简称为OSI模型。

分为7层,分别为为:物理层,数据链路层,网络层,传输层,会话层,表示层,应用层。

TCP/IP 参考模型可以看做是对 OSI 模型的一种简化,它将软件通信过程抽象化为四个抽象层。

1-4层为:网络接口层,网络层,传输层,应用层。

下图很好的诠释了OSI模型。

HTTP协议

HTTP分为短连接和长连接

在HTTP/1.0中默认使用短连接。也就是说,客户端和服务器每进行一次HTTP操作,就建立一次连接,任务结束就中断连接。当客户端浏览器访问的某个HTML或其他类型的Web页中包含有其他的Web资源(如JavaScript文件、图像文件、CSS文件等),每遇到这样一个Web资源,浏览器就会重新建立一个HTTP会话。

而从HTTP/1.1起,默认使用长连接,用以保持连接特性。使用长连接的HTTP协议,会在响应头加入这行代码:Connection:keep-alive

在使用长连接的情况下,当一个网页打开完成后,客户端和服务器之间用于传输HTTP数据的TCP连接不会关闭,客户端再次访问这个服务器时,会继续使用这一条已经建立的连接。Keep-Alive不会永久保持连接,它有一个保持时间,可以在不同的服务器软件(如Apache)中设定这个时间。实现长连接需要客户端和服务端都支持长连接。

HTTP协议的长连接和短连接,实质上是TCP协议的长连接和短连接。

WebScoket

WebSocket是HTML5开始提供的一种在单个TCP连接上进行全双工通讯的协议

WebSocket是用于在Web浏览器和服务器之间进行任意的双向数据传输的一种技术。WebSocket协议基于TCP协议实现,包含初始的握手过程,以及后续的多次数据帧双向传输过程。其目的是在WebSocket应用和WebSocket服务器进行频繁双向通信时,可以使服务器避免打开多个HTTP连接进行工作来节约资源,提高了工作效率和资源利用率。

WebSocket、HTTP 与 TCP

HTTP、WebSocket都是应用层协议,都是基于TCP协议来传输数据的。可以把这些高级协议理解成对 TCP 的封装。

既然都是使用TCP协议,那么HTTP和WebSocket的连接和断开,都要遵循 TCP 协议中的三次握手和四次挥手 ,只是在连接之后发送的内容不同和断开的时间不同。

WebSocket、HTTP 的区别

HTTP 协议是一种无状态的、无连接的、单向的应用层协议。它采用了请求/响应模型。通信请求只能由客户端发起,服务端对请求做出应答处理。HTTP 协议无法实现服务器主动向客户端发起消息。

websocket可以实现持久连接,它实现了双向同时通信。

网页实时数据更新的方式

为实现网页实时数据更新通常使用ajax轮询和长轮询,websocket

1.若使用ajax轮询,每次请求都要建立一个新的连接,HTTP底层使用的是TCP,那么每次都要使用三次握手建立TCP连接,即每一个request对应一个response,将造成极大的资源浪费

2.长轮询,即客户端发送一个超时时间很长的Request,服务器hold住这个连接,在有新数据到达时返回Response。服务器hold连接会消耗资源

3.websocket的持久连接,只需建立一次Request/Response消息对,之后都是TCP连接,避免了需要多次建立Request/Response消息对而产生的冗余头部信息。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章