websocket怎么区分数据_全面理解WebSocket与Socket、TCP、HTTP的关系及区别_蓝戒的博客...

1.什么是WebSocket及原理

WebSocket是HTML5中新协议、新API。 WebSocket从满足基于Web的日益增长的实时通信需求应运而生,解决了客户端发起多个Http请求到服务器资源浏览器必须要在经过长时间的轮询问题,实现里多路复用,是全双工、双向、单套接字连接,在WebSocket协议下服务器和客户端可以同时发送信息。

原理:

WebSocket 同 HTTP 一样也是应用层的协议,但是它是一种双向通信协议,是建立在 TCP 之上的。

2.理解各种协议和通信层、套接字的含义

IP:网络层协议;(高速公路)

TCP和UDP:传输层协议;(卡车)

HTTP:应用层协议;(货物)。HTTP(超文本传输协议)是建立在TCP协议之上的一种应用。HTTP连接最显著的特点是客户端发送的每次请求都需要服务器回送响应,在请求结束后,会主动释放连接。从建立连接到关闭连接的过程称为“一次连接”。

SOCKET:套接字,TCP/IP网络的API。(港口码头/车站)Socket是应用层与TCP/IP协议族通信的中间软件抽象层,它是一组接口。socket是在应用层和传输层之间的一个抽象层,它把TCP/IP层复杂的操作抽象为几个简单的接口供应用层调用已实现进程在网络中通信。

Websocket:同HTTP一样也是应用层的协议,但是它是一种双向通信协议,是建立在TCP之上的,解决了服务器与客户端全双工通信的问题,包含两部分:一部分是“握手”,一部分是“数据传输”。握手成功后,数据就直接从 TCP 通道传输,与 HTTP 无关了。

*注:什么是单工、半双工、全工通信?

数据只能单向传送为单工;

数据能双向传送但不能同时双向传送称为半双工;

数据能够同时双向传送则称为全双工。

TCP/UDP区别:

TCP(传输控制协议,Transmission Control Protocol):(类似打电话)

面向连接、传输可靠(保证数据正确性)、有序(保证数据顺序)、传输大量数据(流模式)、速度慢、对系统资源的要求多,程序结构较复杂,

每一条TCP连接只能是点到点的,

TCP首部开销20字节。

UDP(用户数据报协议,User Data Protocol):(类似发短信)

面向非连接 、传输不可靠(可能丢包)、无序、传输少量数据(数据报模式)、速度快,对系统资源的要求少,程序结构较简单 ,

UDP支持一对一,一对多,多对一和多对多的交互通信,

UDP的首部开销小,只有8个字节。

标准的七层模型,即OSI(Open System Interconnection)参考模型:

简化的TCP/IP四层模型主要分为:应用层、传输层、网络层、数据链路层。

3.WebSocket和Http的关系和异同点

每个WebSocket连接都始于一个HTTP请求。 具体来说,WebSocket协议在第一次握手连接时,通过HTTP协议在传送WebSocket支持的版本号,协议的字版本号,原始地址,主机地址等等一些列字段给服务器端.

Upgrade首部,用来把当前的HTTP请求升级到WebSocket协议,这是HTTP协议本身的内容,是为了扩展支持其他的通讯协议。 如果服务器支持新的协议,则必须返回101.

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

相同点:

(1)都是建立在TCP之上,通过TCP协议来传输数据。

(2)都是可靠性传输协议。

(3)都是应用层协议。

不同点:

(1)WebSocket支持持久连接,HTTP不支持持久连接。

(2)WebSocket是双向通信协议,HTTP是单向协议,只能由客户端发起,做不到服务器主动向客户端推送信息。

4.那么为什么说http协议并不是一个持久连接的协议呢?

(1)Http的生命周期通过Request来界定,也就是Request一个Response,那么在Http1.0协议中,这次Http请求就结束了。在Http1.1中进行了改进,是的有一个Keep-alive,也就是说,在一个Http连接中,可以发送多个Request,接收多个Response。但是必须记住,在Http中一个Request只能对应有一个Response,而且这个Response是被动的,不能主动发起。

(2)WebSocket是基于Http协议的,或者说借用了Http协议来完成一部分握手,在握手阶段与Http是相同的。

5.WebSocket可以穿越防火墙吗?

WebSocket使用标准的80及443端口,这两个都是防火墙友好协议,Web Sockets使用HTTP Upgrade机制升级到Web Socket协议。HTML5 Web Sockets有着兼容HTTP的握手机制,因此HTTP服务器可以与WebSocket服务器共享默认的HTTP与HTTPS端(80和443)。

6.WebSocket和Socket

Socket 其实并不是一个协议,而是为了方便使用 TCP 或 UDP 而抽象出来的一层,是位于应用层和传输控制层之间的一组接口。 Socket本身并不是一个协议,它工作在OSI模型会话层,是一个套接字,TCP/IP网络的API,是为了方便大家直接使用。

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

而WebSocket则是一个典型的应用层协议。

7.WebSocket  HTTP和TCP/IP

WebSocket和HTTP一样,都是建立在TCP之上,通过TCP来传输数据。

8.Socket和TCP/IP

Socket是对TCP/IP协议的封装,像创建Socket连接时,可以指定使用的传输层协议,Socket可以支持不同的传输层协议(TCP或UDP),当使用TCP协议进行连接时,该Socket连接就是一个TCP连接。

参考文档:

1. https://www.imooc.com/article/44510?block_id=tuijian_wz

2. http://www.netpc.com.cn/2889.html

Websocket多客户端通信Demo 公司在做平台搭建,需要一个websocket的基础应用,由于websocket的实际业务场景多且复杂,所以并没有真的抽象出来一个底层的demo,只是做了一个比较基础的案例,适合初学者参考,并且标记了一些坑,是很多网上案例的bug。亲测成功的,希望对大家有帮助啦! 环境配置 1.首先介绍一下我的环境配置:windows7,jdk1.8,tomcat8.0.3,maven3.6,编辑器Idea 2.... 阅读详情

相关推荐

一文搞懂HTTPTCP,UDP,SocketWebSocket

转载:一文搞懂HTTPTCP,UDP,SocketWebSocket-技术教程-图南导航 一、这一大堆关键词之间到底有啥区别? 有名字就有定义,理解的前提从来都是对定义有所了解。就好比现在让你形容一下梯形的定义,如果你不知道定义,你就可能把平行四边形当做特殊的梯形处理,也就有可能把TCPSocket搞混,更加会纠结TCP连接Socket连接以及HTTP的长/短连接之间到底有啥区别。 其实有了区别才好理解。但在这之前首先得理清一个概念,那就是OSI七层模型,以及所谓的五层模型,四层模型到底是什么

beenles的博客 661

WebSocket区分不同客户端两种方法(HttpSession和@PathParam)

介绍     在使用websocket来制作多人即时聊天工具的时候,难免会遇到一个问题,如何区分不同的客户端。想要解决这个问题就等于是要解决这样一个问题:如何把当前登录用户的userId传给服务端呢?因为不同的客户端代表着不同的用户,做到了获取不同客户端的userId那么自然就把不同的客户端区分开来了。经过查找资料和试验,我找到了两种可行获取客户端userId的方法。一种是通过在Server取H

桐小目的秘密基地 3万+

网络游戏中使用TCP处理粘包的两种思路

TCP作为面向连接的、可靠的、基于字节流的传输层网络通讯协议,应用非常广泛。由于是基于字节流的网络协议,我们使用TCP协议进行网络通讯,底层会将发送的数据进行拆分组合,这样一般都会遇到粘包和半包的问题。一般我们为了解决粘包问题,解决粘包和半包问题有两种思路: 将发送数据封装成包,就像TCP协议一样加一个包头。 使用分隔符,对发送数据时在数据尾部加入分割符。 第一种方式处理粘包,可以在要发送数据的首部加2字节大小的包头储存数据包的长度,在数据结束位置加一个字节的包尾用来校验数据。校...

凌云天空的博客 820

Websocket如何获取httpSession,区分不同客户端

我们知道websocket协议http协议有些不同,websocket有自带的Session,但是跟http的Session是不一样的,而我们做有些web项目的时候,又需要知道当前是哪个用户,用以处理该用户的业务逻辑,或者是对该用户进行授权之类的,所以必须需要获取并知道http的Session,具体方法如下: 我们先附上代码,根据代码来讲解(具体解释在第三点): 2.1. 我们需要先创建...

搏·梦的博客 4056

websocket怎么区分数据_谈下WebSocket介绍,Socket区别

WebSocket 机制以下简要介绍一下 WebSocket 的原理及运行机制。WebSocket 是 HTML5 一种新的协议。它实现了浏览器服务器全双工通信,能更好的节省服务器资源和带宽并达到实时通讯,它建立在 TCP 之上,同 HTTP 一样通过 TCP 来传输数据,但是它和 HTTP 最大不同是:WebSocket 是一种双向通信协议,在建立连接后,WebSocket 服务器和 Brow...

weixin_39528029的博客 684

理解websocketsockethttp区别

1、为什么需要webSocket 很多网站为了实现推送技术,所用的技术都是轮询。轮询是在特定的的时间间隔(如每1秒),由浏览器对服务器发出HTTP请求,然后由服务器返回最新的数据给客户端的浏览器。 这种传统的模式带来很明显的缺点,即浏览器需要不断的向服务器发出请求查询是否有新消息,效率低。另外,HTTP请求可能包含较长的头部,其中真正有效的数据可能只是很小的一部分,显然这样会浪费很多的带宽等资源。 而比较新的技术去做轮询的效果是Comet。这种技术虽然可以双向通信,但依然需要反复发出请求。而且在Comet中

loongkingwhat的博客 1713

教你理解HTTPTCP,UDP,SocketWebSocket

一、这一大堆关键词之间到底有啥区别? 有名字就有定义,理解的前提从来都是对定义有所了解。就好比现在让你形容一下梯形的定义,如果你不知道定义,你就可能把平行四边形当做特殊的梯形处理,也就有可能把TCPSocket搞混,更加会纠结TCP连接Socket连接以及HTTP的长/短连接之间到底有啥区别。 其实有了区别才好理解。但在这之前首先得理清一个概念,那就是OSI七层模型,以及所谓的五层模型,四层模...

u011759340的博客 239

php websocket udp,1小时教你理解HTTPTCP,UDP,SocketWebSocket

谨以此文总结我站在iOS开发者角度对于以上关键词的形象理解,至于底层抽象的概念,别人用啥TCP/IP详解:卷一、卷二、卷三都讲不清楚,我也懒得浪费时间。前人栽树,后人乘凉,一个道理。一、这一大堆关键词之间到底有啥区别?有名字就有定义,理解的前提从来都是对定义有所了解。就好比现在让你形容一下梯形的定义,如果你不知道定义,你就可能把平行四边形当做特殊的梯形处理,也就有可能把TCPSocket搞混,更...

weixin_35452601的博客 177

搬砖:理解HTTPTCP,UDP,SocketWebSocket

https://blog.csdn.net/jek123456/article/details/60746835 一、这一大堆关键词之间到底有啥区别? 有名字就有定义,理解的前提从来都是对定义有所了解。就好比现在让你形容一下梯形的定义,如果你不知道定义,你就可能把平行四边形当做特殊的梯形处理,也就有可能把TCPSocket搞混,更加会纠结TCP连接Socket连接以及HTTP的长/短连接之...

hunter 234

java udp客户端 高并发_HTTPTCP,UDP,SocketWebSocket

一、这一大堆关键词之间到底有啥区别?有名字就有定义,理解的前提从来都是对定义有所了解。就好比现在让你形容一下梯形的定义,如果你不知道定义,你就可能把平行四边形当做特殊的梯形处理,也就有可能把TCPSocket搞混,更加会纠结TCP连接Socket连接以及HTTP的长/短连接之间到底有啥区别。其实有了区别才好理解。但在这之前首先得理清一个概念,那就是OSI七层模型,以及所谓的五层模型,四层模型到...

weixin_27442001的博客 456

TCP/IP网络协议的通俗理解Socket,Soap 、HTTP、MQTT、Websocket

话说两台电脑要通讯就必须遵守共同的规则,就好比两个人要沟通就必须使用共同的语言一样。一个只懂英语的人,和一个只懂中文的人由于没有共同的语言(规则)就没办法沟通。两台电脑之间进行通讯所共同遵守的规则,就是网络协议。 那么谁来制定这个网络协议? 国际标准化组织(ISO)定义了网络协议的基本框架,被称为OSI模型。要制定通讯规则,内容会很多,比如要考虑A电脑如何找到B电脑,A电脑在发送信息给B电脑时...

潜行者 1374

1小时教你理解HTTPTCP,UDP,SocketWebSocket

一、这一大堆关键词之间到底有啥区别? 有名字就有定义,理解的前提从来都是对定义有所了解。就好比现在让你形容一下梯形的定义,如果你不知道定义,你就可能把平行四边形当做特殊的梯形处理,也就有可能把TCPSocket搞混,更加会纠结TCP连接Socket连接以及HTTP的长/短连接之间到底有啥区别。 其实有了区别才好理解。但在这之前首先得理清一个概念,那就是OSI七层模型,以及所谓的五层

java的平凡之路 2694

[AI应用提效-174] - Web SocketTCP Socket比较

粘包 / 拆包:TCP 会合并小数据包(粘包)或拆分大数据包(拆包),需自定义 “分隔符”(如\n)或 “长度前缀”(如前 4 字节表示数据长度)解析;数据格式:需手动定义序列化规则(如 JSON、Protobuf),收发均需手动编解码。示例(自定义简单协议):c运行// 发送端:前缀4字节长度 + 数据// 发送长度// 发送数据// 接收端:先读长度,再读数据int len;// 读长度// 读对应长度的数据WebSocket基于 TCP 协议。

文火冰糖(王文兵)的博客 478

HTTPTCP/IP、SocketWebSocket区别

重温Socket的概念 Socket是通信的雨花石,支持TCP/IP协议的网络通信的基本操作单元。它是网络通信过程中端点的抽象表示,内含了网络通信须有的五中信息:连接使用的协议,本地主机的IP地址,本地进程的协议端口,远程主机的IP地址,远程进程的协议端口。独立的Socket是一对IP地址和端口。 Socket可以看成在两个程

Crystal_Plum9的博客 2102

WebSocketHTTPWebSocketSocket区别

WebSocketHTTPWebSocketSocket区别 最近在做一个IM 的项目,最近对于这块的理解比较模糊,这里对他们的不同和相同做一个区分,但是由于这个项目需要在IOS、Android和Web中多平台,最后选择了WebSocket; 这里有一张图详细介绍了 TCP/IP 协议族中的各个协议在 OSI模型 中的分布,一图胜千言(下图来自 科来) 1. WebSocket介绍 原...

weixin_34144450的博客 323
上一篇: acm运行时错误_运行吴恩达车辆检测时的错误
下一篇: es搜索 核心指标_Elasticsearch(es)集群运维可视化监控工具及核心指标
提灯可行1
博客等级 码龄7年 40粉丝 94原创
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值