了解 WebSocket 和 TCP :有何不同

WebSocket — 双向通讯的艺术

WebSocket Illustration

简要概述

WebSocket 代表着WebSocket通讯协议,提供了一条用于客户端和服务器间实现实时、双向、全双工通信的渠道。在WebSocket引入之前,网页应用的数据更新依赖于频繁的轮询,这种做法不仅效率低下,还带来了巨大的网络资源浪费。相比之下,WebSocket的出现为网页应用提供了一种更快、更简便和资源利用率更高的数据交换方式。

WebSocket主要特征包括:

  • 互动性:支持从客户端到服务器端,也支持从服务器端到客户端的不间断数据流动。
  • 即时更新:可以实现页面的即时更新而无需刷新。
  • 低延迟:通过最小化网络流量和减少数据传输来提高性能,使得延迟降到最低。
  • 高兼容性:大多数现代浏览器都支持WebSocket通信。
  • 加密传输:通过TLS/SSL机制保障数据传输安全。
  • 跨平台灵活性:WebSocket可在多种开发语言和不同平台上实施,并支持移动端应用。

在前端的实施

通过WebSocket API,开发者在网页应用中得以使用WebSocket。这个API包含如下组件:

  • WebSocket对象:负责创建WebSocket连接的 JavaScript 对象。
  • WebSocket事件:包括:
    • open:连接成功后触发。
    • close:连接关闭时触发。
    • message:接收消息时触发。
    • error:连接发生错误时触发。
  • WebSocket属性:对象的属性包括readyState、bufferedAmount等。

除了API接口,还有如协议升级和数据帧格式的多个WebSocket规范,确保了不同的实现能够互通。

TCP 协议

TCP Illustration

基本概述

传输控制协议(TCP)是一种可靠的、基于连接的通讯协议,广泛应用于互联网传输中。它确保网络层的数据安全有效传递,并负责传输层的数据传递管理。

TCP的核心特性包括:

  • 可靠传输:确保数据包能完整且准确的到达目的地。
  • 连接型服务:在数据传输前需建立连接并在结束后断开连接。
  • 流量控制:调整数据传输速度,防止网络拥堵。
  • 拥堵控制:降低数据传输速度以缓解网络拥堵。
  • 数据包头部负担:需要额外头部信息来维护连接状态和控制流量,导致每个包的有效载荷减少。

工作原理

TCP的工作机制涉及:

  • 将数据分割成多个包并附加必要的头部信息,如源地址、目标地址和序列号等。
  • 接收方收到数据包后,校验完整性,确认无误后发送 ACK 回复。
  • 发送方接收 ACK 信号,以确定数据成功传递。

WebSocket 与 TCP 的异同

加深理解 WebSocket 和 TCP 关系

WebSocket 作为运行于TCP之上的一种高效通信协议,它提供了长期开启的客户端和服务器之间双向通信通道,与TCP三次握手过程类似。WebSocket的握手通过HTTP完成。建立后,通道保持开放以进行数据交换,确保了TCP协议的可靠性和流量控制。

核心差异

WebSocket和TCP之间的主要差异可总结为:

  • 建立连接: WebSocket除了经典的TCP三次握手以外,还需要 HTTP 协议头中的Upgrade字段以升级至WebSocket连接。
  • 数据传输单位: WebSocket更倾向于以消息为单位传输数据,而TCP则是字节流。
  • 数据处理: WebSocket相对于TCP,添加了数据压缩和消息分片的额外处理。
  • 实时性: 保持连接状态下的WebSocket通讯协议具备更高的实时交互能力。

调试 TCP 及 WebSocket 接口实例

Apifox 软件为例,下文将展现如何发送TCP和WebSocket请求。

调试 TCP 示例

发送TCP请求需要:

  • 建立请求,并填入URL、请求方法、名称。
  • 在运行页面发送请求。

Apifox TCP Request

  • 若需Mock数据,切换至本地Mock环境。

Apifox TCP Mock

新建及测试 WebSocket 连接

在Apifox中创建一个WebSocket请求步骤包括:

  • 点击创建按钮。
  • 输入WebSocket服务的地址。
  • 填写消息内容和参数。

WebSocket Create Request

发送消息和参数给服务器,以及如何保存WebSocket请求的步骤:

  • 输入Message中的内容将被传输至服务器。
  • 使用Params传输参数或查询字符串。
  • 保存请求便于后续使用。

WebSocket Save Request

建立并发送WebSocket请求:

  • 与服务端建立WebSocket连接。
  • 发送消息并接收服务器回应。

WebSocket Open Connection

  • 服务端接收连接后的反馈信息。

WebSocket Feedback

  • 使用Apifox发送消息,服务端像客户端一样可发送返回信息,例如时间戳。

WebSocket Communication

总结

通过深入理解WebSocket和TCP协议,我们得以为Web应用开发提供实时、高效的通信解决方案。WebSocket在TCP的稳固基础上加入了全双工通信特性,为用户交互和实时数据传输开辟了新天地。利用Apifox等工具的便利性,开发者能够轻松地调试和优化这些协议的应用,确保现代Web应用的通信无缝且高效。

知识扩展

  • WebSocket 与 Socket、TCP、HTTP 的关系及区别
  • WebSocket 和 HTTP 的区别深解

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/363908.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Web实战丨基于Django的简单网页计数器

文章目录 写在前面Django简介主要程序运行结果系列文章写在后面 写在前面 本期内容 基于django的简单网页计数器 所需环境 pythonpycharm或vscodedjango 下载地址 https://download.csdn.net/download/m0_68111267/88795604 Django简介 Django 是一个用 Python 编写的高…

第十四届蓝桥杯大赛软件赛省赛(C/C++ 大学B组)题解

尝试再做一次,我记得还是有点难,我会尽量多写一点解析,尽量让基础比较弱的友友也能看懂,希望能给你带来帮助 目录 1. 日期统计 题目描述 解题思路 具体代码 2. 01 串的熵 题目描述 解题思路 具体代码 3. 冶炼金属 题目…

正点原子--STM32中断系统学习笔记(2)

引言 上篇帖子STM32中断系统学习笔记(1)是理论,这篇帖子开始实战,目标是通过按键实现LED的控制。 1.工程建立 以正点原子HAL库 实验1 跑马灯实验为基础,复制工程,在“Drivers--BSP”目录下建立EXTI文件夹,并创建ext…

2024美国大学生数学建模竞赛A-F题完整思路+配套代码数据+后续高质量参考论文更新

The Mathematical Contest in Modeling (MCM) The Interdisciplinary Contest in Modeling (ICM) 24美赛【完整每问手把手详细思路可修改50页多种思路版本word版保奖论文】配套升级求解代码可视化图表 美赛A-F题完整版获取见文末 下文包含:2024美国大学生数学建模…

美区或其他外区Appstore账号AppleID注册教程,简单快速,苹果必备!

▍前言 现在越来越多的APP在国区APPstore下架,如果想有更好的使用体验,不得不去外区下载APP,那就需要一个外区的apple id,注册也很简单,今天大鹏通过电脑ipad给大家注册一个,建议大家直接使用iPhone或者iPa…

JVM性能分析工具——Arthas及火焰图的使用

Arthas的使用 Arthas常用命令Arthas的安装Linux压测工具Apache Bench安装火焰图的使用火焰图如何分析火焰图的互动 Arthas常用命令 help :查看所有命令dashboard :仪表板,查看线程的CPU信息等heapdump :不同类对象占用内存比重&a…

【微服务核心】Spring Cloud

文章目录 1. 简介2. 微服务项目搭建2.1 父工程2.2 提供者子工程2.3 热部署配置2.4 消费者子工程2.5 项目重构 3. 服务注册与发现3.1 Eureka 服务注册与发现3.1.1 单机版工程搭建3.1.2 单机版改集群版3.1.3 服务发现3.1.4 保护模式 3.2 ZooKeeper 服务注册与发现3.3 Consul 服务…

【五】【C++】类与对象(三)

const只读 在 C 中,const 关键字用于声明一个变量为常量,意味着一旦被初始化之后,它的值就不能被改变。 声明常量: 使用 const 关键字可以声明变量为常量。这意味着这个变量的值不能被修改。 const int MAX_SIZE 100; 指针与…

【江科大】STM32:MPU6050介绍

文章目录 MPU6050介绍结构图MPU6050参数硬件电路模块内部结构框图数据帧格式寄存器地址 MPU6050介绍 MPU6050是一个6轴姿态传感器,可以测量芯片自身X、Y、Z轴的加速度、角速度参数,通过数据融合,可进一步得到姿态角,常应用于平衡…

【智慧工业】东胜物联定位与跟踪解决方案,为方案商提供蓝牙网关、信标等物联网智能硬件设备

利用东胜物联的蓝牙网关我们的合作伙伴在德国的建筑工地成功实施了基于物联网蓝牙的员工出勤和跟踪管理解决方案,该解决方案简化了员工时间表并增强了工作流程,为经理和主管提供了更多时间来专注于项目洞察,并提高了员工的效率、绩效和生产力…

C++引用、内联函数、auto关键字介绍以及C++中无法使用NULL的原因

文章目录 一、引用1.1 引用概念1.2 引用特性1.3 常引用1.4 使用场景1.4.1 做参数1.4.2做返回值 1.5 引用和指针的区别1.6 小结一下 二、内联函数2.1 内联的概念2.2 内联的特性2.3 【面试题】 三、auto关键字(C11)3.1 类型别名思考3.2 auto简介 四、auto的使用细则4.1 基于范围的…

Linux系统——防火墙

一、防火墙的认识 引言 安全技术 入侵检测系统(Intrusion Detection Systems):特点是不阻断任何网络访问,量化、定位来自内外网络的威胁情况,主要以提供报警和事后监督为主,提供有针对性的指导措施和安全…

假期刷题打卡--Day20

1、MT1173魔数 一个数字,把他乘以二,会得到一个新的数字,如果这个新数字依然由原数中那些数字组成,就称原数为一个魔数。输入正整数N,检查它是否是一个魔数,输出YES或者NO。 格式 输入格式: …

SpringBoot RestTemplate 设置挡板

项目结构 代码 BaffleConfig /*** Description 记录配置信息* Author wjx* Date 2024/2/1 14:47**/ public interface BaffleConfig {// 是否开启挡板的开关public static boolean SWITCH true;// 文件根目录public static String ROOT_PATH "D:\\TIS\\mock";// …

ElementUI Form:Select 选择器

ElementUI安装与使用指南 Select 选择器 点击下载learnelementuispringboot项目源码 效果图 el-select.vue&#xff08;Select选择器&#xff09;页面效果图 项目里el-select.vue代码 <script> export default {name: el_select,data() {return {options: [{value…

LeetCode刷题:使用栈解决150. 逆波兰表达式求值

给你一个字符串数组 tokens &#xff0c;表示一个根据 逆波兰表示法 表示的算术表达式。 请你计算该表达式。返回一个表示表达式值的整数。 注意&#xff1a; 有效的算符为 、-、* 和 / 。每个操作数&#xff08;运算对象&#xff09;都可以是一个整数或者另一个表达式。两个…

泰迪智能科技大模型微调项目训练营已开营

泰迪智能科技大模型微调项目训练营开营 跟张良均老师学大数据人工智能 项目一&#xff1a;医疗诊疗对话意图识别 项目二&#xff1a;中医问答系统 项目三&#xff1a;某平台股票评论情感识别 学习流程&#xff1a; 项目一&#xff1a;医疗诊疗对话…

validator 对象校验,自定义校验实现

一、导入validator工具需要的jar包 <dependency><groupId>org.hibernate</groupId><artifactId>hibernate-validator</artifactId><version>4.1.0.Final</version></dependency><dependency><groupId>javax.valid…

SketchBook 2022下载安装教程,保姆级教程,操作简单,小白也能轻松搞定,附安装包和工具

前言 Autodesk SketchBook是一款新一代的自然画图软件&#xff0c;软件界面新颖动人&#xff0c;功能强大&#xff0c;仿手绘效果逼真&#xff0c;笔刷工具分为铅笔&#xff0c;毛笔&#xff0c;马克笔&#xff0c;制图笔&#xff0c;水彩笔&#xff0c;油画笔&#xff0c;喷枪…

原来你的Windows自带沙盒功能!

什么是Windows沙盒&#xff1f; Windows沙盒是一种虚拟化技术&#xff0c;允许用户在安全隔离的环境中运行不受信任的应用程序。它是Windows 10操作系统的一个特性&#xff0c;旨在提高系统的安全性&#xff0c;防止潜在的威胁对主系统造成影响。 启用Windows沙盒 确保系统满…