关于计算机网络的说明 - WebSocket

      最后更新:2021-11-28 07:01:33 手机定位技术交流文章

      文章目录

      • 题引开篇
      • WebSocket
        • Web 软件库概览
        • “请求答复”方法有缺陷。
        • Web 套件特征
          • "全双工"通道
          • 二进制帧结构
          • 服务发现
        • 握手的 Web Socket 的手。
          • 客户端请求
          • 服务器升级协议
          • 服务器响应
        • 一些WebSocket的缺点
        • 一些WebSocket的缺点

      题引开篇

      为什么使用 HTTP 的 WebSocket?

      WebSocket

      Web 软件库概览

      WebSocket是一种轻量级网络通信协议,以TCP为基础,与HTTP具有同等地位。

      在学习HTTP时,HTTP的许多缺点得到了优化,例如团队头堵塞困难,而WebSocket的创建主要是为了优化请求--回答“为克服HTTP的局限性而创建的通信方法.webSocket”的询问。当学习HTTP时,HTTP的许多缺点得到了优化,例如团队头堵塞问题,而WebSocket的创建主要是为了优化请求――回应“通信模式”的问题。

      “请求-回应”通讯模式有什么问题?

      “请求答复”方法有缺陷。

      • “请求答复”使用“半小时”的频道,只允许同时进行一项活动,从而降低传输效率。
      • HTTP服务器只能对客户的要求作出“被动”反应,无法单独向客户发送数据。

      这使得HTTP难以在需要“实时通讯”的领域使用, 如动态网站、即时聊天、网络游戏等。

      在采用WebSocket之前,浏览器将利用四舍五入的民意测验,不断向服务器发送HTTP的要求,如果四舍五入更为频繁,这种民意测验可被视为类似于“实时通讯”。

      Web 套件特征

      Web 套件特征主要有三个:

      • “全双工”通道
      • 二进制帧结构
      • 服务发现

      "全双工"通道

      做更有效率的实时通讯就是全职工作

      二进制帧结构

      WebSocket 语法、语义和 HTTP 都不同。

      WebSocket的头由四个部分组成:

      • 结束标志位
      • 操作码
      • 帧长度
      • 掩码

      我们不妨特别研究以下框架结构:

      image-20211127154109148
      • FIN: 与 HTTP/2 的“ End_Stream” 的“ 消息结束” 信号牌相当, 表示完全的数据传播。 一条信息可以分为多个框架, 收件人可以看到 FIN, 并且可以将前框拼凑成一个完整的信息 。
      • RSV: 保留现在毫无用处,
      • 操作代码:代码代表框架类型,例如,1表示框架内容为纯文本,2表示框架内容为二进制数据,8表示连接已关闭,9和10分别表示PING和PONG连接。
      • MASK: 指示框架内容是使用不同操作加密的还是使用操作加密的( xor ) 。 当前 WebSocket 标准要求客户端使用掩码发送数据, 而服务器没有 。
      • 有效载荷单:这是另一个长度的代码,最少7位元,最多7+64位元,等于另外8个字节,因此WebSocket框架最多可能有264位字节。
      • 面具钥匙:如果使用面具,由“MASK”以上标记决定的面具钥匙是4字节的随机整数;否则,它不存在。

      服务发现

      WebSocket 的 URI 格式与 HTTP 类似, 但是 WebSocket 使用“ ws” 和“ws” 作为 URI 格式的初始协议名称, 分别标明明确和加密的 WebSocket 协议。 默认端口为 80 和 443 。

      握手的 Web Socket 的手。

      WebSocket 和 HTTP 之间的另一个主要相对轮廓是 WebSocket 使用 HTTP 自己的“ 程序升级” 功能来逃避浏览器沙箱、网络防火墙等等 。

      客户端请求

      WibSocket 握手与传统 HTTP Get 请求相似,

      • "连接:升级," 暗示协议必须“升级”。
      • “升级:网餐”是指 WebSocket 协议的升级。

      此外,为了防止HTTP定期通信被“无意中识别”为 WebSocket, 在握手电文中增加了两个额外的认证信头字段(bbed“Challenges”):

      • Sec-WebSocket-Key:Base64代码的16字节随机序列,用作基本验证密钥。
      • Sec-WebSocket-Version: 协议版本的编号现在必须是 13 才能运行 。

      服务器升级协议

      服务器收到HTTP请求并观察了以上四个字段,理解这不是常规的Get请求,而是WebSocket的升级请求,因此,服务器没有遵循标准的HTTP程序,而是建立了一个特殊的“101切换项目”,以回应报告,提醒客户,然后用WebSocket协议取代HTTP。

      服务器响应

      WebSocket 的握手回复信息同样以特定格式提供, 字段“ sec- WebSocket- Acception” 用于验证客户端的请求, 并避免错误连接 。

      为此,重新计算了SHA-1摘要,并将“Sec-WebSocket-Key”的值附在请求的头条标题上,并附有专用UUID“258EAFA5-E914-47DA-95CA-C5AB0DC85B11”。

      当客户收到回复信息时,使用同样的技术来评价匹配值是否相等,如果是,则用同样的技术来表示返回的信息实际上是来自在握手期间连接的服务器,认证是成功的。

      握手完成后, 下一个传输是 WebSocket 格式的二进制框架, 而不是 HTTP 消息 。

      一些WebSocket的缺点

      握手期间连接并经过适当认证的服务器是返回电文的收件人。

      握手完成后, 下一个传输是 WebSocket 格式的二进制框架, 而不是 HTTP 消息 。

      一些WebSocket的缺点

      WebSocket在应用程序级别上使用时,其使用方式与“TCPSocket”相似,因为“TCPSocket”太“原始”,用户无法处理连接、缓存、状态和比 HTTP 更加复杂的状态。

      本文由 在线网速测试 整理编辑,转载请注明出处,原文链接:https://www.wangsu123.cn/news/13855.html

          热门文章

          文章分类