美文网首页程序员
websocket 探究

websocket 探究

作者: Jinwong | 来源:发表于2018-09-27 01:39 被阅读6次

1. websocket 是什么

Html开始提供一种浏览器与服务器进行全双工通信的网络技术,属于应用层协议。它基于TCP传输协议,并复用Http的握手通道

2. 优点

  • 支持双向通信,实时性更强
  • 更好的二进制支持
  • 较少的控制开销。创建连接后,客户端与服务端进行数据交换时,协议控制的数据包头部较小,而Http 协议每次通信都需要携带完整的头部。
  • 支持扩展。websocket协议定义了扩展,用户可以扩展协议或者实现自定义的子协议(比如支持自定义压缩算法)

3. 连接过程

WebSocket协议是基于TCP协议上的独立的通信协议,在建立WebSocket通信连接前,需要使用HTTP协议进行握手,从HTTP连接升级为WebSocket连接。浏览器和服务器只需要完成一次握手,两者之间就直接可以创建持久性的连接,并进行双向数据传输。

WebSocket定义了两种URI格式, “ws://“和“wss://”,类似于HTTP和HTTPS, “ws://“使用明文传输,默认端口为80,”wss://“使用TLS加密传输,默认端口为443。

连接过程如下:

  • 客户端建立到服务器的TCP连接
  • 客户端请求将当前TCP连接用作websocket
  • 服务器收到请求, 同意并确认将此 TCP 连接用作 websocket
  • 客户端收到确认, HTTP 协议通信结束
  • 双方使用 websocket 协议自由双向通信

4. 数据帧格式

Websocket在通信的最小单位为帧,由一个或者多个帧组成一条完整的消息。
发送端,将消息切割成多个帧,并发给服务端;接收端,接收消息帧,并将关联的帧重新组装成完整的消息。

当WebSocket的接收方收到一个数据帧时,会根据FIN的值来判断,是否已经收到消息的最后一个数据帧

FIN=1表示当前数据帧为消息的最后一个数据帧,此时接收方已经收到完整的消息,可以对消息进行处理。FIN=0,则接收方还需要继续监听接收其余的数据帧。

此外,opcode在数据交换的场景下,表示的是数据的类型。0x01表示文本,0x02表示二进制。而0x00比较特殊,表示延续帧(continuation frame),顾名思义,就是完整消息对应的数据帧还没接收完。

相关文章

  • websocket 探究

    1. websocket 是什么 Html开始提供一种浏览器与服务器进行全双工通信的网络技术,属于应用层协议。它基...

  • websocket

    websocket深入探究不过语言不是php.目前解析数据帧还有些问题~

  • WebSocket - 初入探究 与 实现

    前言 本文为初入研究 Websocket协议,对于真正应用中,各种语言都有实现库,建议采用库,而不是自己实现,本文...

  • WebSocket

    WebSocket Introduction WebSocket general:阮一峰的WebSocket 教程...

  • 2020-04-03

    ## webSocket初探 ## 目录 - 为什么WebSocket - 什么是WebSocket - WebS...

  • WebSocket

    WebSocket(1)---WebSocket介绍 一、为什么需要 WebSocket?初次接触 WebSock...

  • Spring和WebSocket整合详解

    Spring和WebSocket整合详解 官方主页 Spring WebSocket 概述 WebSocket 是...

  • WebSocket 的对象特性

    WebSocket对象特性 1readyState:WebSocket只读属性,表示WebSocket的连接状态。...

  • WebSocket 笔记

    WebSocket 笔记 WebSocket 握手客户端请求 Sec-WebSocket-Key: dGhlIHN...

  • WebSocket 概述和方案选型

    WebSocket测试工具:http://www.websocket-test.com/ Websocket是ht...

网友评论

    本文标题:websocket 探究

    本文链接:https://www.haomeiwen.com/subject/gwssoftx.html