Socket与WebSocket

Socket是什么?

套接字(socket)是一个抽象层,建立在传输层应用层之间。应用程序可通过它发送或接收数据,对其进行像对文件一样的打开、读写和关闭等操作(来自Unix/Linux“一切皆文件”的思想)。套接字允许应用程序将I/O插入到网络中,并与网络中的其他应用程序进行通信。

  • 网络套接字是IP地址端口的组合。套接字Socket=(IP地址:端口号)
  • 完成两个应用程序之间的数据传输。
  • 独立于协议的网络编程接口。

在这里插入图片描述
在网络应用程序设计时,由于TCP/IP的核心内容被封装在操作系统中,如果应用程序要使用TCP/IP,可以通过系统提供的TCP/IP的编程接口来实现。在Windows环境下,网络应用程序编程接口称作Windows Socket。为了支持用户开发面向应用的通信程序,大部分系统都提供了一组基于TCP或者UDP的应用程序编程接口(API),该接口通常以一组函数的形式出现,也称为套接字(Socket)。

[ 中间插入补充 ] TCP/IP协议簇中的TCP UDP IP

  • TCP/IP模型:它将软件通信过程抽象化为四个抽象层,采取协议堆栈的方式,分别实现出不同通信协议。因为其中两个出名的协议这样命名,其实改协议簇中包含很多协议,在网络体系结构可以看到。
  • 网络层(IP):ip地址可以唯一标识网络周中的主机
  • 传输层(TCP,UDP):协议+端口可以唯一标识主机中的应用程序(进程)
  • TCP(传输控制协议)面向可靠连接,三次握手建立连接,四次握手关闭连接。点对点的连接。
  • UDP(用户数据报协议)面向无连接。一对一,一对多,多对一,

套接字分类

  • 流式套接字(SOCK-STREAM):提供一种可靠的、面向连接的双向数据传输服务。实现了数据无差错、无重复的发送。使用TCP协议
  • 数据报套接字(SOCK-DGRAM):提供一种不可靠、无连接的双向数据传输服务。数据在传输过程中可能会丢失或重复,并且不能保证在接收端按发送顺序接收数据,通信效率高。使用UDP协议
  • 原始套接字(SOCK-RAW)

套接字调用流程

在这里插入图片描述

WebSocket

  • WebSocket protocol 是HTML5一种新的协议。双向通信协议,它实现了浏览器与服务器全双工通信(full-duplex)。一开始的握手需要借助HTTP请求完成。
  • HTTP协议及缺陷:单向的网络协议,在建立连接后只允许浏览器像服务端发送requst请求,服务端给出回应。当需要即时通讯时,通过轮询在特定的时间间隔(如1秒),由浏览器向服务器发送Request请求,然后将最新的数据返回给浏览器。
  • WebSocket和Http一样属于应用层协议,建立在TCP之上。

思考一下:WebSocket和Socket是不同的,socket是一个抽象的套接字概念,用于连接应用层和传输层,websocket是和http类似的。

套接字
一、Socket技术详解
C++与C++ socket通讯实现
TCP、UDP、HTTP、SOCKET、WebSocket之间的区别
WebSocket介绍和Socket的区别
阮一峰的网络日志–WebSocket教程

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值