Socket与WebSocket

我们开发的网络应用程序位于应用层,TCP和UDP属于传输层协议,在应用层如何使用传输层的服务呢?在应用层和传输层之间,则是使用套接字来进行分离。
Socket位于TCP/IP之上,通过Socket可以方便的进行通信连接。对外屏蔽了复杂的TCP/IP。

1.1 套接字Socket : 完成两个应用程序之间的数据传输
套接字Socket.png

建立 网络通信 连接至少要一对端口号(socket)。socket本质是 编程接口(API),对TCP/IP的封装,TCP/IP也要 提供 可供程序员做网络开发所用的接口,这就是Socket编程接口;HTTP是轿车,提供了封装或者显示数据的具体形式( text/html... );Socket是发动机,提供了 网络通信 的能力。

socket层位置.png
1.2 WebSocket与Socket的关系

Socket是应用层与TCP/IP协议族通信的中间软件抽象层,它是一组接口( 不是协议,为了方便使用TCP或UDP而抽象出来的一层,是位于应用层和传输控制层之间的一组接口 )。
在设计模式中,Socket其实就是一个门面模式,它把复杂的TCP/IP协议族隐藏在Socket接口后面。利用TCP/IP协议建立TCP连接。(TCP连接则更依靠于底层的IP协议,IP协议的连接则依赖于链路层等更低层次。)
WebSocket则是一个典型的应用层协议。可以把WebSocket想象成HTTP,HTTP和Socket什么关系,WebSocket和Socket就是什么关系。

1.3 HTTP和WebSocket

HTTP以往的双向通信解决方案会造成资源浪费,
HTTP的基本模型是一个Request对应一个Response
HTTP的长连接,本质上还是Request/Response消息对,并不是真的TCP长连接,而WebSocket 则实现真的TCP长连接

HTTP的长连接模型.png

WebSocket的目的是取代HTTP在双向通信场景下的使用,而且它的实现方式有些也是基于HTTP的(WS的默认端口是80和443)。现有的网络环境(客户端、服务器、网络中间人、代理等)对HTTP都有很好的支持,所以这样做可以充分利用现有的HTTP的基础设施,有点向下兼容的意味。
简单来讲,WS协议有两部分组成:握手和数据传输

传统 HTTP 请求响应客户端服务器交互图
WebSocket 请求响应客户端服务器交互图

参考:什么是Socket?简单点,通俗易懂的?
参考:WebSocket与socket的区别
参考:刨根问底HTTP和WebSocket协议(二)

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。