一文了解websocket和socket(论点:概念、流程、区别)

news/2024/11/14 12:09:51/

文章目录

  • 概念
    • Websocket
    • Socket
  • 通信流程
    • Websocket
    • Socket
  • 区别

🌞websocketsocket,字面意思的差别就是一个web,那么他俩之间到底有什么关系呢,以及区别是啥,接下来带大家详细了解一下

概念

Websocket

🍊WebSocket 是一种通信协议,用于通过 Internet 在客户端和服务器之间进行实时双向通信。它支持全双工通信,允许客户端和服务器同时发送和接收数据。

🍊WebSockets 被设计为在与 HTTP(端口 80)和 HTTPS(端口 443)相同的端口上工作,并且使用与 HTTP 和 HTTPS 相同的底层传输层,即传输控制协议 (TCP)。

🍊WebSockets 与传统 HTTP 通信的主要区别在于,HTTP 是一种请求-响应协议,客户端发送请求,服务器发送响应,而 WebSockets 允许客户端和服务器之间进行连续的双向通信。这意味着服务器无需客户端请求就可以向客户端推送数据,客户端无需等待响应即可向服务器发送数据。

🍊WebSockets 广泛用于在线游戏、聊天系统和股市数据更新等实时应用程序,其中低延迟和实时数据更新很重要。它们还用于需要实时通信的基于 Web 的应用程序,例如在线协作工具和交互式仪表板。

🍊WebSockets 为 Internet 上的实时应用程序提供了一种快速、高效和低延迟的通信解决方案。

Socket

       socket(套接字)是两个设备通过网络进行通信的端点。它是操作系统提供的抽象,允许应用程序使用标准化接口发送和接收数据。

套接字有多种用途,包括:

  1. 文件传输:套接字可用于通过网络在两个设备之间传输文件。
  2. 电子邮件检索:套接字可用于使用 POP 或 IMAP 协议从邮件服务器检索电子邮件。
  3. 远程过程调用 (RPC):套接字可用于调用远程过程,就好像它是本地过程一样。
  4. 通用通信:套接字可用于网络上两个应用程序之间的通用通信,例如交换消息或数据。

       socket套接字使用客户端-服务器架构,其中一个设备充当客户端,另一个充当服务器。客户端向服务器发起连接,服务器接受连接。一旦建立连接,客户端和服务器就可以来回发送数据。

       socket套接字可以是面向连接的,也可以是无连接的。面向连接的套接字(如 TCP 套接字)建立可靠的、面向流的连接,并保证所有发送的数据都按发送的顺序接收。无连接套接字(如 UDP 套接字)不建立持久连接,也不保证数据按发送顺序接收。

通信流程

Websocket

       WebSocket 是一种通信协议,它通过单个长期连接在客户端和服务器之间提供全双工通信。WebSocket 协议旨在解决传统 HTTP 请求-响应模型的局限性,该模型需要为每个新请求建立一个新连接。

以下是 WebSocket 通信的工作流程:

  1. 客户端通过向服务器发送 WebSocket 升级请求来启动连接,通常是通过 HTTP 连接。升级请求包含一个特殊的标头,表明客户端想要升级到 WebSocket 通信。
  2. 服务器响应升级请求,状态码为101,表示连接已成功升级为WebSocket通信。
  3. 从这一点开始,连接以全双工模式运行,这意味着客户端和服务器都可以随时向对方发送数据。WebSocket 协议提供了一种基于消息的通信模型,其中数据作为消息传输,而不是作为字节流传输。
  4. 消息使用紧凑的二进制格式传输,这比传统 HTTP 或 TCP 使用的基于文本的格式更有效。WebSocket 协议提供了一种机制,可以自动将大消息分成较小的数据包,并在另一端将数据包重新组合成原始消息。
  5. WebSocket 连接一直保持打开状态,直到客户端或服务器决定关闭它。关闭连接是一个简单的两步过程,包括发送关闭消息,然后等待另一端确认关闭消息。

       WebSocket 的主要优点是它能够在客户端和服务器之间提供实时的双向通信,而无需频繁建立和断开连接。这使得 WebSocket 成为需要实时更新的应用程序的理想选择,例如在线游戏、股票行情和聊天应用程序。

       ⚠️注意:由于 WebSocket 协议是一项相对较新的技术,它还没有像传统的 HTTP 和 TCP 那样得到广泛支持,可能需要在某些服务器和防火墙上进行特殊配置才能正常工作。

Socket

socket通信的流程可以分解为以下几个步骤:

  1. 初始化:客户端和服务器应用程序各自创建一个套接字并将其绑定到特定的端口号。端口号用于标识网络上的应用程序。
  2. 连接建立:客户端通过向服务器的IP地址和端口号发送请求来建立与服务器的连接。服务器接受连接并为客户端创建一个新套接字。
  3. 数据交换:一旦建立连接,客户端和服务器就可以使用套接字相互交换数据。数据以数据包的形式发送,数据包是通过网络传输的小数据单元。
  4. 优雅关闭:当客户端和服务器完成交换数据时,它们通过向另一方发送消息以指示它们正在关闭连接来优雅地关闭连接。
  5. 终止:连接关闭后,客户端和服务器可以终止各自的套接字。

       上述步骤提供了套接字通信的高级概述。实际上,实际通信中涉及的细节更多,例如错误处理、流量控制和缓冲。但是,基本步骤保持不变,套接字为网络通信提供了一个标准化接口,允许应用程序通过网络发送和接收数据。

区别

       Websocket 和 socket 的相似之处在于它们都用于通过网络进行通信,但两者之间存在一些差异:

相似之处:

  1. websockets 和 sockets 都为应用程序之间通过网络进行通信提供了标准化接口。
  2. websockets 和 sockets 都可以用于客户端和服务器之间的实时通信。

区别:

  1. 目的:Websockets 是专门为客户端(例如网络浏览器)和服务器之间的实时通信而设计的,而套接字可用于多种用途,包括文件传输、电子邮件检索和一般通信。
  2. 连接:Websockets 在客户端和服务器之间使用持久的双向连接,而套接字连接可能是单向或双向的,并且连接通常是短暂的。
  3. 握手:Websockets 使用握手过程来建立连接,其中包括从 HTTP 到 WebSockets 的协议升级。另一方面,套接字没有正式的握手过程,它们只是开始发送数据。
  4. 消息格式:Websockets 对消息使用二进制格式,而套接字可以使用二进制或 ASCII 文本。
  5. 延迟:与套接字连接相比,Websockets 具有更低的延迟,因为它们保持持久连接。

       总的来说,websockets 为实时通信提供了一种更现代、更高效、更灵活的解决方案,而 sockets 则更加通用,可用于多种目的。


http://www.ppmy.cn/news/21541.html

相关文章

面试官问 ,Mybatis SELECT 查询, 集合或者单个对象,如果数据库不存在数据,需要判空吗?

前言 于昨日下班时段,本人正在与生活作斗争,收到了金三银四一线作战小队成员紧急反应的战况问题。 不熟悉的或者是不知道怎么去看源码的看官,上车了。 正文 这面试题问的, 考察的是什么? ① mybatis框架的应用掌握情…

多位大厂专家鼎力推荐,44个微服务架构设计模式pdf,程序员福利

前言 本文的目标是让架构师和程序员学会使用微服务架构成功开发应用程序。 本文不仅讨论了微服务架构的好处,还描述了它们的弊端。读者将掌握如何在使用单体架构和使用微服务架构之间做出正确的权衡。 谁应该阅读本文? 本文的重点是架构和开发&#…

【C++】C++入门 命名空间 及输入与输出

前言 C是在C的基础之上,容纳进去了面向对象编程思想,并增加了许多有用的库,以及编程范式等。熟悉C语言之后,对C学习有一定的帮助。 C补充C语言语法的不足,以及对C语言设计不合理的地方进行优化,比如&#x…

Python数塔dp -A

Python——动态规划——数塔dp -A n数塔dp -A 问题引入 【问题描述】 在讲述DP算法的时候,一个经典的例子就是数塔问题,它是这样描述的: 有如下所示的数塔,要求从顶层走到底层,若每一步只能走到相邻的结点, 则经过的结点的数字之和最小是多少? 已经告诉你了,这是个…

筑基四层 —— 详解三子棋和扫雷

目录 一.修炼必备 二.三子棋详解 三.扫雷详解 四.三子棋和扫雷的完整代码 !!!恭喜你,成功突破至筑基四层!!! 一.修炼必备 1.入门必备:VS2019社区版,下载地址&#xff…

【JavaEE初阶】第九节.多线程 (基础篇)定时器(案例三)

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 前言 一、定时器概述、 二、定时器的实现 2.1 Java标准库 定时器的使用 2.2 自己模拟实现一个定时器 2.3 对自己实现的定时器的进一步优化 2.3.1 为何需要再进行优化 2…

【C++修炼之路】C++入门(中)—— 函数重载和引用

👑作者主页:安 度 因 🏠学习社区:StackFrame 📖专栏链接:C修炼之路 文章目录一、前言二、函数重载1、重载规则2、函数名修饰规则三、引用1、区分2、本质3、特性4、应用a、做参数b、做返回值5、效率比较6、常…

Git (2) :Git练习--分支的新建与合并

一.首先有个问题 ? 在进行git练习前,有个问题需要提下。。。。 csdn无法登录了。 查了一下资料,是因为CSDN服务器的各地相应速度不一样,辽宁的响应是超时的,所以通过在hosts文件中指定域名http://csdnimg.cn的服务器…