首页 > 其他分享 >webSocket和Socke

webSocket和Socke

时间:2023-06-14 09:57:39浏览次数:30  
标签:协议 webSocket Socket IP TCP Socke WebSocket 应用层

一、webSocket和Socket的概念介绍

1、socket翻译为套接字,socket是在应用层和传输层之间的一个抽象层,它把TCP/IP层复杂的操作抽象为几个简单的接口供应用层调用以实现进程在网络中通信。

2、WebSocket协议是基于TCP的一种新的网络协议,和http协议一样属于应用层协议,是一种让客户端和服务器之间能进行双向实时通信的技术。

二、webSocket和Socket的区别

1、原理上的区别:

Socket是传输控制层协议,WebSocket是应用层协议。

Socket是应用层与TCP/IP协议族通信的中间软件抽象层,它是一组接口(不是协议,为了方便使用TCP或UDP而抽象出来的一层,是位于应用层和传输控制层之间的一组接口)。

在设计模式中,Socket其实就是一个门面模式,它把复杂的TCP/IP协议族隐藏在Socket接口后面。利用TCP/IP协议建立TCP连接。(TCP连接则更依靠于底层的IP协议,IP协议的连接则依赖于链路层等更低层次。)

WebSocket则是一个典型的应用层协议。

2、灵活运用的程度不同:

WebSocket 更易用,而 Socket 更灵活。Socket是应用层与TCP/IP协议族通信的中间软件抽象层,它是一组接口。

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

主机 A 的应用程序要能和主机 B 的应用程序通信,必须通过 Socket 建立连接,而建立 Socket 连接必须需要底层 TCP/IP 协议来建立 TCP 连接。建立 TCP 连接需要底层 IP 协议来寻址网络中的主机。

网络层使用的 IP 协议可以帮助我们根据 IP 地址来找到目标主机,但是一台主机上可能运行着多个应用程序,如何才能与指定的应用程序通信就要通过 TCP 或 UPD 的地址也就是端口号来指定。这样就可以通过一个 Socket 实例唯一代表一个主机上的一个应用程序的通信链路了。

而 WebSocket 则不同,它是一个完整的 应用层协议,包含一套标准的 API 。

3、传输层次不同:

Socket 是传输控制层的接口。用户可以通过 Socket 来操作底层 TCP/IP 协议族通信。

网络中的 Socket 并不是什么协议,而是为了使用 TCP,UDP 而抽象出来的一层 API,它是位于应用层和传输层之间的一个抽象层。Socket 是对 TCP/IP 的封装;HTTP 是轿车,提供了封装或者显示数据的具体形式;Socket 是发动机,提供了网络通信的能力。

在 Unix 一切皆文件哲学的思想下,Socket 是一种"打开—读/写—关闭"模式的实现,服务器和客户端各自维护一个"文件",在建立连接打开后,可以向自己文件写入内容供对方读取或者读取对方内容,通讯结束时关闭文件。

WebSocket 是一种在单个 TCP 连接上进行全双工通信的协议。WebSocket 使得客户端和服务器之间的数据交换变得更加简单,允许服务端主动向客户端推送数据。

在 WebSocket API 中,浏览器和服务器只需要完成一次 HTTP 握手,两者之间就直接可以创建持久性的连接,并进行双向数据传输。

三、OSI七层协议

OSI是一个开放性的通信系统互连参考模型,他是一个定义得非常好的协议规范。OSI模型有7层结构,从上到下分别是 7 应用层 6 表示层 5 会话层 4 传输层 3 网络层 2 数据链路层 1 物理层。

七层协议 举例
应用层 例如HTTP、SMTP、SNMP、FTP、Telnet、SIP、SSH、NFS、RTSP、XMPP、Whois、ENRP
表示层 例如XDR、ASN.1、SMB、AFP、NCP
会话层 例如ASAP、TLS、SSH、ISO 8327 / CCITT X.225、RPC、NetBIOS、ASP、Winsock、BSD sockets
传输层 例如TCP、UDP、RTP、SCTP、SPX、ATP、IL
网络层 例如IP、ICMP、IGMP、IPX、BGP、OSPF、RIP、IGRP、EIGRP、ARP、RARP、 X.25
数据链路层 例如以太网、令牌环、HDLC、帧中继、ISDN、ATM、IEEE 802.11、FDDI、PPP
物理层 例如线路、无线电、光纤、信鸽

————————————————
版权声明:本文为CSDN博主「忆晨丶」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/cst522445906/article/details/117199630

标签:协议,webSocket,Socket,IP,TCP,Socke,WebSocket,应用层
From: https://www.cnblogs.com/lc5259/p/17479296.html

相关文章

  • C#-网络通讯框架(一)-HPSocket
    一、简介这里加一张图片 二、基础使用这里加一张图片1、TCP 2、UDP三、与线程池一起使用(TCP) 四、HPSocket扩展Easy组件(部分)  HPSocket.Net目前提供6个Easy组件和2个WebSocket组件ITcpPortForwardingIHttpEasyServerIHttpsEasyServerIHttpEasyAgentIHttpsEas......
  • nginx: [emerg] socket() [::]:80 failed (97: Address family not supported by prot
    nginx:[emerg]socket()[::]:80failed(97:Addressfamilynotsupportedbyprotocol),遇到这个问题,不用多想,基本都是配置了IPv6监听导致,也就是如下配置server{listen80default_server;listen[::]:80default_server;listen[::]:8......
  • 5.26日学习总结之网络编程socket
    Pythonsocket编程在网络上的教程较少,菜鸟中也只是给出了一小段描述,在此我推荐白羽黑夜socket编程|白月黑羽(byhy.net)其中的描写非常详细,本人也是在此学习的。socket又被称作套接字,可以简单的看作是两个地址(ip,port地址)之间通过socket的函数来进行传递数据。socket在客户端......
  • Python标准库socketserver使用线程混入实现异步TCP服务器
    功能描述:使用Python标准库socketserver中提供的ThreadingTCPServer实现异步TCP服务端程序,隐藏线程创建与管理细节,自动为每个客户端连接创建线程并处理数据。服务端代码: 客户端代码:......
  • Python标准库socketserver实现UDP协议时间服务器
    Python标准库socketserver进行了更高一级的封装,非常适合服务端代码的编写,本文通过改写时间服务器的案例来演示标准库socketserver的用法,更多案例最近会陆续推送。服务端代码: 客户端代码: 运行情况:   ......
  • webSocket-全双工通信协议
    1、springboot2.0集成webSocket项目结构maven依赖<parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.0.6.RELEASE</version>&......
  • websocket
    1.WebSocket介绍WebSocket是一种网络通信协议。RFC6455定义了它的通信标准。WebSocket是HTML5开始提供的一种在单个TCP连接上进行全双工通讯的协议。HTTP协议是一种无状态的、无连接的、单向的应用层协议。它采用了请求/响应模型。通信请求只能由客户端发起,服务......
  • 简单的WebSocket对话
    步骤选择一个WebSocket服务器,这里选择到的模块是ws模块npmiws创建一个WebSocket服务器新建一个server.js编写如下代码constWebSocket=require('ws');constwss=newWebSocket.Server({port:3000});wss.on('connection',(socket)=>{console.l......
  • 7.1 套接字(socket)
    套接字(socket)是计算机之间进行通信的一种技术,它允许不同主机上的进程之间进行数据交换。在Python中,我们可以使用socket模块来创建和使用套接字。首先,我们需要导入socket模块:importsocket在网络编程中,有两种主要类型的套接字:流套接字(StreamSockets)和数据报套接字(DatagramSoc......
  • web接收websocket
    data(){return{websock:null,wsuri:"ws://192.168.2.22:8025/test/fff",//WebSocket的后台地址actiones:{ssid:"fff"},//传入后台的数据};},created(){this.initWebSocket();//开启WebSocket},destroyed(......