websocket和http的区别

websocket和http的区别一 WebSocket 是什么 WebSocket 是 HTML5 规范提出的一种协议 目前除了完犊子的 IE 浏览器 其他浏览器都基本支持 他是一种协议 万变不离其宗 也是基于 TCP 协议的 和 HTTP 协议是并存的两种协议 WebSocket 是 HTML5 中的协议 HTML5WebSock 规范定义了 WebSocketsAP 支持页面使用 WebSocket 协议与远程主机进行全双工的通信 它引入了 WebSocket 接口并且定义了一个全双工的通信通道 通过一个单一的套接字在 Web 上进行操作 HTML5We

websocket和http的区别:1、WebSocket是双向通信协议,模拟Socket协议,可以双向发送或接受信息,而HTTP是单向的;2、WebSocket是需要浏览器和服务器握手进行建立连接的,而http是浏览器发起向服务器的连接。

一、WebSocket 是什么?

WebSocket是HTML5规范提出的一种协议;目前除了完犊子的IE浏览器,其他浏览器都基本支持。他是一种协议,万变不离其宗,也是基于TCP协议的;和HTTP协议是并存的两种协议。

WebSocket是HTML5中的协议。HTML5 Web Sockets规范定义了Web Sockets API,支持页面使用Web Socket协议与远程主机进行全双工的通信。它引入了WebSocket接口并且定义了一个全双工的通信通道,通过一个单一的套接字在Web上进行操作。

HTML5 Web Sockets以最小的开销高效地提供了Web连接。相较于经常需要使用推送实时数据到客户端甚至通过维护两个HTTP连接来模拟全双工连接的旧的轮询或长轮询(Comet)来说,这就极大的减少了不必要的网络流量与延迟。

要使用HTML5 Web Sockets从一个Web客户端连接到一个远程端点,你要创建一个新的WebSocket实例并为之提供一个URL来表示你想要连接到的远程端点。

该规范定义了ws://以及wss://模式来分别表示WebSocket和安全WebSocket连接,这就跟http:// 以及https:// 的区别是差不多的。

一个WebSocket连接是在客户端与服务器之间HTTP协议的初始握手阶段将其升级到Web Socket协议来建立的,其底层仍是TCP/IP连接。

二、WebSocket与Socket的关系

Socket其实并不是一个协议,而是为了方便使用TCP或UDP而抽象出来的一层,是位于应用层和传输控制层之间的一组接口。

“Socket是应用层与TCP/IP协议族通信的中间软件抽象层,它是一组接口,提供一套调用TCP/IP协议的API。

在设计模式中,Socket其实就是一个门面模式,它把复杂的TCP/IP协议族隐藏在Socket接口后面,对用户来说,一组简单的接口就是全部,让Socket去组织数据,以符合指定的协议。”

当两台主机通信时,必须通过Socket连接,Socket则利用TCP/IP协议建立TCP连接。TCP连接则更依靠于底层的IP协议,IP协议的连接则依赖于链路层等更低层次。

WebSocket就像HTTP一样,则是一个典型的应用层协议。

在这里插入图片描述
相同点

都是一样基于TCP的,都是可靠性传输协议。

都是应用层协议。

区别

WebSocket是双向通信协议,模拟Socket协议,可以双向发送或接受信息。HTTP是单向的。

WebSocket是需要浏览器和服务器握手进行建立连接的。而http是浏览器发起向服务器的连接,服务器预先并不知道这个连接。

联系

WebSocket在建立握手时,数据是通过HTTP传输的。但是建立之后,在真正传输时候是不需要HTTP协议的。

总结:

在WebSocket中,只需要服务器和浏览器通过HTTP协议进行一个握手的动作,然后单独建立一条TCP的通信通道进行数据的传送。

WebSocket连接的过程是:

首先,客户端发起http请求,经过3次握手后,建立起TCP连接;http请求里存放WebSocket支持的版本号等信息,如:Upgrade、Connection、WebSocket-Version等;

然后,服务器收到客户端的握手请求后,同样采用HTTP协议回馈数据;

最后,客户端收到连接成功的消息后,开始借助于TCP传输信道进行全双工通信。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/203083.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月19日 下午10:37
下一篇 2026年3月19日 下午10:37


相关推荐

  • Eigen库学习教程(全)

    Eigen库学习教程(全)说明:本教程主要是对eigen官网文档做了一个简要的翻译,参考了eigen官网以及一些博主的技术贴,在此表示感谢。Eigen是一个高层次的C++库,有效支持线性代数,矩阵和矢量运算,数值分析及其相关的算法。Eigen是一个开源库,从3.1.1版本开始遵从MPL2许可。1.Eigen安装及使用1.1安装eigen3在linux下的安装教程可以参考下面链接:eigen安装教程1.2CMakeLists.txt编写eigen库仅由一些头文件组成,十分的神奇。用cmake管理项目的时候,只需要在

    2022年10月19日
    5
  • mysql connector 如何使用_MySQL Connector/Net 的简略使用

    mysql connector 如何使用_MySQL Connector/Net 的简略使用mysqlConnector/Net的简单使用首先,新建工程(WindowsApplication)然后,增加引用(MySql.Data)注意:根据使用.net版本的不同而选择MySql.Data版本之后,放置控件3个TextBox,2个ComboBox,1个DataGridView等等密码框设置下拉框设置数据格设置连接按钮代码:stringconnStr=string.Format…

    2022年7月15日
    20
  • SpringBoot2+Netty+WebSocket(netty实现websocket,支持URL参数)

    SpringBoot2+Netty+WebSocket(netty实现websocket,支持URL参数)关于NettyNetty是一个利用Java的高级网络的能力,隐藏其背后的复杂性而提供一个易于使用的API的客户端/服务器框架。MAVEN依赖 <dependencies> <!–https://mvnrepository.com/artifact/io.netty/netty-all–> <dependency> <g…

    2022年7月11日
    17
  • 关于Eclipse没有server选项的解决办法

    关于Eclipse没有server选项的解决办法一直在用 Idea 最近想用 Eclipse 搭一些简单的 web 项目 可是用 Eclipse 配置 tomcat 时 发现配置中没有 server 选项 分享一下解决办法 问题原因 本人电脑上安装的是 EclipseforJa 没有安装 JavaEE 插件 所以配置中没有 server 选项 Window gt Preferences 解决方法一 查看 Eclipse 的版本号 Help gt AboutEclipse 添加 server 插件 Help gt

    2026年3月20日
    2
  • mysql存储long型数据_int数据类型

    mysql存储long型数据_int数据类型MySQL的数值数据类型可以大致划分为两个类别,一个是整数,另一个是浮点数或小数。许多不同的子类型对这些类别中的每一个都是可用的,每个子类型支持不同大小的数据,并且MySQL允许我们指定数值字段中的值是否有正负之分或者用零填补。表列出了各种数值类型以及它们的允许范围和占用的内存空间。类型大小范围(有符号)…

    2026年1月31日
    4
  • 2021电赛F题智能送药小车方案分析(openMV数字识别,红线循迹,STM32HAL库freeRTOS,串级PID快速学习,小车自动返回)[通俗易懂]

    2021电赛F题智能送药小车方案分析(openMV数字识别,红线循迹,STM32HAL库freeRTOS,串级PID快速学习,小车自动返回)[通俗易懂]2021电赛F题智能送药小车方案分析(openARTmini数字识别加循迹融合代码,STM32HAL库freeRTOS,串级PID快速学习,小车自动返回)附有工程代码链接,分析详细,工程完善

    2022年8月31日
    4

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号