http websocket socket

TCP/IP协议栈主要分为四层:应用层 -> 传/运输层  -> 网络层  -> 数据链路层

 

HTTP协议(应用层):

是非持久化的,单向的网络协议,在建立连接后只允许浏览器向服务器发出请求后,服务器才能返回相应的数据。

如果需要即时通讯,只能通过轮询(即在特定的时间间隔 如1秒),由浏览器向服务器发送请求,然后服务器再将最新数据返回给浏览器。

缺点:轮询需要不断发送请求,而且通常HTTP request的Header是非常长的,为了传输一个很小的数据需要付出大的代价。过多不必要的请求,会浪费流量,占用服务器资源。

WebSocket 协议(应用层):

是HTML5一种新协议。它实现了浏览器与服务器全双工通信(full-duplex)。一开始的握手需要借助HTTP请求完成。在WebSocket中,只需要服务器和浏览器通过HTTP协议进行一个握手的动作,然后单独建立一条TCP的通信通道进行数据的传送。

连接过程 —— 握手过程

1. 浏览器、服务器首先需要三次握手,建立TCP连接,处在传输控制层。这是通信的基础,若失败后续都不执行。
2. TCP连接成功后,浏览器通过HTTP协议向服务器传送WebSocket支持的版本号等信息。(开始前的HTTP握手)
3. 服务器收到客户端的握手请求后,同样采用HTTP协议回馈数据。
4. 当收到了连接成功的消息后,通过TCP通道进行传输通信,长连接传输数据,必须加心跳!

Socket (抽象出来的一组接口):

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

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

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

总结:

Http:基于TCP连接,应用层协议,半双工(但有请求才会响应)

WebSocket:基于TCP连接,应用层协议,全双工,WebSocket传输数据前需借助Http协议进行握手

Socket: 是一组接口,对 TCP/IP 协议族的封装,可以使用 TCP、UDP协议来传递数据

问题:

WebSocket和Socket什么关系?

可以把WebSocket想象成HTTP,HTTP和Socket什么关系,WebSocket和Socket就是什么关系。

引用一下别人的图:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值