我们开发的网络应用程序位于应用层,TCP和UDP属于传输层协议,在应用层如何使用传输层的服务呢?在应用层和传输层之间,则是使用套接字来进行分离。
Socket位于TCP/IP之上,通过Socket可以方便的进行通信连接。对外屏蔽了复杂的TCP/IP。
1.1 套接字Socket : 完成两个应用程序之间的数据传输
建立 网络通信 连接至少要一对端口号(socket)。socket本质是 编程接口(API),对TCP/IP的封装,TCP/IP也要 提供 可供程序员做网络开发所用的接口,这就是Socket编程接口;HTTP是轿车,提供了封装或者显示数据的具体形式( text/html... );Socket是发动机,提供了 网络通信 的能力。
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长连接
WebSocket的目的是
取代HTTP在双向通信场景下的使用
,而且它的实现方式有些也是基于HTTP的(WS的默认端口是80和443)。现有的网络环境(客户端、服务器、网络中间人、代理等)对HTTP都有很好的支持,所以这样做可以充分利用现有的HTTP的基础设施,有点向下兼容的意味。
简单来讲,WS协议
有两部分组成:握手和数据传输
。
参考:什么是Socket?简单点,通俗易懂的?
参考:WebSocket与socket的区别
参考:刨根问底HTTP和WebSocket协议(二)