IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 网络协议 -> WebSocket 与 HTTP 关联的小知识~ -> 正文阅读

[网络协议]WebSocket 与 HTTP 关联的小知识~

1. 来源与出处

WebSocket 来自 H5,是 H5 新增的众多规范和 API 中的一个。HTTP 协议就只有 HTTP 协议。

2. 二者的关联

WebSocket 协议基于 TCP 协议(WebSocketHTTP 协议都基于 TCP 协议,TCP 协议相当于火车,WebSocketHTTP 相当于火车里的两个人),WebSocket 需要借助 HTTP 先建立连接,即客户端发送转换协议的请求,服务器转换协议并响应101,接下来再发送的请求 / 响应既是基于 Websocket 协议。

3. WebSocket 建立的是持久连接,而 HTTP 即使是1.1,建立的也只是长连接

持久连接 在连接建立后,只要不主动关闭,连接就可以始终保持。而 长连接 就必须依赖 心跳包 等维持连接。长连接 借助 长轮询 实现。

4. 长轮询与短轮询的区别

短轮询 在服务器没有新数据时,响应一个表示空的数据,有新数据就响应新数据,不论怎样都要立即响应。长轮询 在没有新数据时,一直处于 pending 状态,直到有新数据才响应。然后开启下一次请求响应。

5. 长连接与持久连接的本质区别

HTTP 协议中,即使是 长连接,也只是在一个请求中可以发送多组 request / response,一次 request 依旧只能对应一次 response,轮询发送 HTTP request 检测更新状态的过程始终少不了,也就始终少不了这本不必要的资源浪费,并且,每个 request / response 都需要携带 header。但 WebSocket持久连接 就可以在连接建立后,不再需要发送 HTTP request,还可以让服务器主动响应数据。

6. HTTP 协议是无状态的,WebSocket 可以忽略这一问题

HTTP 协议是无状态的,那么每次 HTTP 请求都少不了身份验证,但 WebSocket 只建立一次连接,那么就只需要发送一次请求,进行一次身份验证,也就忽略了这个问题。

7. 单工、半双工、全双工的区别?

  • 单工:数据仅支持一个方向的传输,同一时间,只有一方能接受或发送消息。
  • 半双工:允许数据在两个方向传播,但同一时间,只允许数据在一个方向传输。一种切换了方向的单工通信。
  • 全双工:允许数据同时在两个方向传输,同一时间,可以同时接收、发送消息。

8. 两种协议的实现的实时通信有什么区别?

HTTP 协议的 实时通信 是存在延迟的,借助 轮询 实现实时通信,始终都存在延迟,并且因为需要维持连接,会非常消耗带宽等资源。而 WebSocket 建立的通道不断开,双方随时都可以拿到最新的数据,这才是真正意义上的 实时通信

9. 什么是多路复用?

WebSocket 实现的 多路复用,即多个 URL 可以复用一个 WebSocket 连接。

10. WebSocket 连接可能会一种一种半死不活的状态

在连接的双方之间,有很多 路由节点,这些节点可能会自作主张断开 WebSocket 连接,又不通知双方。计算机网络协议栈 的实现中会产生一层一层的缓存,除非堆满这些缓存,否则双方都无法察觉。Ping/Pong Frame 即是用来解决这以问题的一个设计,Frame 只包含一些元数据,可以在不影响 Appliction 的情况下维持中间网络连接状态

  网络协议 最新文章
使用Easyswoole 搭建简单的Websoket服务
常见的数据通信方式有哪些?
Openssl 1024bit RSA算法---公私钥获取和处
HTTPS协议的密钥交换流程
《小白WEB安全入门》03. 漏洞篇
HttpRunner4.x 安装与使用
2021-07-04
手写RPC学习笔记
K8S高可用版本部署
mySQL计算IP地址范围
上一篇文章      下一篇文章      查看所有文章
加:2022-03-15 23:04:40  更:2022-03-15 23:05:55 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/26 6:41:46-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码