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协议详解 -> 正文阅读

[网络协议]websocket协议详解

websocket是什么?

websocket是一种浏览器与服务器进行全双工通信的网络技术,属于 应用层协议。它 基于TCP传输协议,并 复用HTTP 的握手通道,用来弥补HTTP协议在持久通信能力上的不足。

  • ws 默认端口:80
  • wss 默认端口:443
  • Websocket 通过HTTP协议握手

websocket的特点有哪些?

  1. 节省资源开销,HTTP请求每次都要携带完整的头部,此项开销显著减少了;
  2. 更强的实时性,由于协议是全双工通信,所以服务器可以主动给客户端推送数据,相对于HTTP请求需要等待客户端发起请求服务端才能响应,延迟明显更少;
  3. 保持连接状态,能够记录用户状态,通信时可以省略部分状态信息,不像HTTP每次都需要携带用户认证信息;
  4. 更好的二进制支持,Websocket定义了二进制帧,相对HTTP,可以更轻松地处理二进制内容。

websocket如何建立连接?

websocket 通过 HTTP 请求建立握手,状态码为 101(协议升级)

  1. 客户端:申请协议升级

客户端先发起协议升级请求,采用的是HTTP数据格式,且只支持GET方法

GET / HTTP/1.1
Host: localhost:8080
Origin: http://127.0.0.1:3000
Connection: Upgrade
Upgrade: websocket
Sec-WebSocket-Version: 13
Sec-WebSocket-Key: w4v7O6xFTi36lq3RNcgctw==

重点请求首部意义如下:

  • Connection: Upgrade:表示升级协议
  • Upgrade: websocket:表示升级到websocket协议。
  • Sec-WebSocket-Version: 13:表示websocket的版本。如果服务端不支持该版本,需要返回一个Sec-WebSocket-Versionheader,里面包含服务端支持的版本号。
  • Sec-WebSocket-Key:与后面服务端响应首部的Sec-WebSocket-Accept是配套的,提供基本的防护,比如恶意的连接,或者无意的连接。

注意,上面省略了非重点请求首部

  1. 服务器:响应协议升级

服务端返回内容如下,状态代码101表示协议切换。到此完成协议升级,后续的数据交互都按照新的协议来。

HTTP/1.1 101 Switching Protocols
Connection:Upgrade
Upgrade: websocket
Sec-WebSocket-Accept: Oy4NRAQ13jhfONC7bP8dTKb4PTU=

websocket心跳机制是什么?

WebSocket为了保持客户端与服务端的实时双向通信,需要确保客户端与服务端之间的TCP通道保持连接没有断开。然而,对于长时间没有数据往来的连接,如果依旧长时间保持着,可能会浪费包括的连接资源。

但不排除有些场景,客户端、服务端虽然长时间没有数据往来,但仍需要保持连接。这个时候,可以采用心跳来实现。

  • sender - > receiver:ping
  • receiver - > sender:pong

ping、pong的操作,对应的是WebSocket的两个控制帧,opcode分别是0x9、0xA。

websocket应用场景有哪些?

  1. 即时通信
  2. 直播
  3. 游戏
  4. 在线协同工具(例如语雀笔记、腾讯文档等)
  5. 实时数据拉取和推送
  6. 地图

(凡是需要数据实时传输的一般都会使用到websocket)

websocket与http的区别

相同点:

  1. 都是基于TCP协议进行数据传输
  2. 都属于应用层协议

不同点:

  1. websocket是双向通信协议,而HTTP是单向通信
  2. websocket是有状态的,而HTTP是无状态的

联系点:

websocket在建立握手时,数据是通过HTTP协议传输的(HTTP只进行了握手动作),

但是握手之后,单独建立了一条TCP通信通道,之后数据都是基于TCP协议直接传输,不需要HTTP协议了。

websocket与socket的区别

可以理解为张三和张三丰的关系

  1. Socket 是传输控制层的接口,用户可以通过 Socket 来操作底层 TCP/IP 协议簇通信。
  2. WebSocket 是一个完整的应用层协议。
  3. Socket 更灵活,WebSocket 更易用。
  4. 两者都能做即时通讯

Jmeter编写的websocket脚本

websockt 脚本.jmx

YKID.csv

?

  网络协议 最新文章
使用Easyswoole 搭建简单的Websoket服务
常见的数据通信方式有哪些?
Openssl 1024bit RSA算法---公私钥获取和处
HTTPS协议的密钥交换流程
《小白WEB安全入门》03. 漏洞篇
HttpRunner4.x 安装与使用
2021-07-04
手写RPC学习笔记
K8S高可用版本部署
mySQL计算IP地址范围
上一篇文章      下一篇文章      查看所有文章
加:2022-10-17 13:08:02  更:2022-10-17 13:08:22 
 
开发: 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/25 21:51:11-

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