Http、Socket与Websocket之间的区别
一、网络的七层模型与四层模型
在弄清楚 http、socket与 websocket 三者之间的关系之前,先来了解一下 网络ISO/OSI七层模型
和网络TCP/IP四层模型
,七层模型分别为物理层、数据链路层、网络层、传输层、会话层、表示层以及应用层,四层模型分别是链路层、传输层、网络层以及应用层,详细可见下图:
方便记忆和理解七层模型,可以这样一个假设,某海域有很多的小岛(小岛即物理层),人可以通过船只走水路从一座小岛到另一座小岛(水路即数据链路层),各式各样的水路交叉形成一个网状(即纵横交错的水路即网络层),人们通过这些纵横交错的水路运输货物(运输货物即传输层),货物交换的过程中小岛与小岛之间会产生很多交流(产生的就留即会话层),为了有条序的交换货物,需要有些约定(约定即表示层),各个小岛与小岛之间的约定可能会不太一样,需要有个统一的规范(规范即应用层);四层模型还是比较好记。可能假设不是特别的恰当,不过还是可以凑活一下,说了一堆废话,下面开始进入正题。
二、区别
socket:一个基于 TCP/IP 的套接字接口,其中 TCP 为传输层协议,IP 为网络层协议,socket是基于网络层和传输层之上的一个抽象层,http 协议与 websocket 协议都是基于该接口完成的数据交互。
http:一个基于 TCP/IP 的应用层协议,经过三次握手之后客户端与服务端发生请求响应事件,是一个短连接,数据传输完成之后即关闭连接。
websocket:一个基于 TCP/IP 的应用层协议,它和 http 协议一样,需要经历三次握手,但是不一样的是,握手之后,连接长存,只要服务器与客户端的服务存在,那么连接就一直存在,是个长链接,服务器可以通过该协议向客户端推送消息,是 H5 推出的一个新协议。
学习分享,一起成长!以上为小编的学习分享,若存在不当之处,请批评指正!