Socket与WebSocket

作者: 程序猿李墨 | 来源:发表于2019-08-14 10:33 被阅读475次

我们开发的网络应用程序位于应用层,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协议(二)

相关文章

  • websocket与socket.io的那些事儿

    websocket与socket.io的那些事儿 1、WebSocket WebSocket协议是基于TCP的一种...

  • iOS WebSocket 使用 (SocketRocket)

    1. 关于Socket 与 WebSocket基本概念 关于Socket 我们都知道socket是套接字,描述ip...

  • WebSocket协议-原理篇

    本篇文章主要讲述以下几点: WebSocket的原理与机制 WebSocket与Socket.io WebSock...

  • Socket 与 WebSocket

    原文http://zengrong.net/post/2199.htm去年光棍节的时候,我写过一篇 quick-c...

  • WebSocket与Socket

    点击查看原文,走你)))))))))))))))))))) WebSocket介绍与原理 WebSocket pr...

  • WebSocket 与 Socket

    Context 需要使用ASP.NET的SignalR库,配合NATS和Redis实现大文件向前端的推送。文件发送...

  • Socket与WebSocket

    我们开发的网络应用程序位于应用层,TCP和UDP属于传输层协议,在应用层如何使用传输层的服务呢?在应用层和传输层之...

  • socket与WebSocket协议

    本文整理了对Socket与WebSocket协议的理解,基于WebSocket聊天室的实现及实现原理,Worker...

  • Socket, websocket, socket.io比较

    socket 是基于tcp上的websocket 是基于http上的socket.io 是基于websocket上的

  • WebSocked 基本用法

    WebSocket 原理 创建 WebSocket 对象。 Socket.readyState属性 WebSock...

网友评论

    本文标题:Socket与WebSocket

    本文链接:https://www.haomeiwen.com/subject/vxnwjctx.html