理解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消息对而产生的冗余头部信息。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
WebSocket 是一种基于 TCP 协议实现全双工通信的协议,它可以实现在客户端和服务器之间建立一个持久化的连接通道,使得客户端和服务器之间可以实时地进行双向通信。 在 WebSocket 中,客户端和服务器建立连接后,可以通过 send() 方法向对方发送消息,也可以通过 onmessage 事件来接收对方发送的消息。当客户端或服务器关闭连接时,会触发 onclose 事件。 WebSocket 的通信过程如下: 1. 客户端向服务器发送一个 HTTP 请求,请求头中包含 Upgrade 和 Connection 字段,值分别为 websocket 和 Upgrade。 2. 服务器接收到请求后,根据请求头中的字段,判断是一个 WebSocket 连接请求,然后向客户端返回一个状态码为 101 Switching Protocols 的响应,表示正在切换协议。 3. 客户端接收到服务器的响应后,也会向服务器发送一个类似的响应,表示已经切换到 WebSocket 协议,接下来的通信就可以直接通过 TCP 连接进行了。 配置 WebSocket 的过程主要有以下几步: 1. 在服务器上启用 WebSocket 协议支持,例如使用 Java 的 Tomcat 服务器,可以在 web.xml 文件中配置对 WebSocket 的支持。 2. 在客户端代码中创建 WebSocket 对象,指定要连接的服务器地址和端口号。 3. 在客户端代码中监听 WebSocket 的事件,例如 onopen、onmessage、onclose 等,以便在连接建立、收到消息、连接关闭等情况下进行相应的处理。 4. 在服务器端代码中处理 WebSocket 的请求,例如解析客户端发送的数据、向客户端发送数据等。 配置 wss(WebSocket Secure)需要使用 SSL 或 TLS 协议对 WebSocket 进行加密,使得通信过程中的数据可以被加密传输,防止被中间人窃取或篡改。具体配置方法与 HTTPS 类似,在服务器上安装证书,将服务器地址和端口号改为 wss:// 协议。在客户端代码中同样需要指定 wss:// 协议和服务器的证书信息。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值