WebSocket是什么?
websocket是html5规范提出的一种协议;它基于TCP和HTTP协议是并存的两种协议。
html5 web socket规范定义了webSocket API ,支持页面使用webSocket协议与远程主机进行全双工的通信,它引入了websocket接口并且定义了一个全双工的通信通道,通过单一的套接字在web上进行操作。 html5 web sockets 以最小的开销高效的提供了web链接,相较于经常使用推送实时数据到客户端甚至通过维护两个http链接来模拟全双工链接的旧的轮询或长轮询。极大的减少了不必要的网络流量与延迟。
websocket提供了一个url来表示想要链接的远程断电。该规范定义了ws://以及wss:// 从http协议的初始握手阶段升级到webSocket协议来建立,但底层依旧是TCP/IP链接。
socket是什么
网络上的通讯都是通过socket进行通讯的。
主要内容如下
-
网络中进程是如何通信的
-
socket是什么
-
socket的基本操作
3.1 socket()函数
3.2 bind()函数
3.3listen() connect()函数
3.4 accept()函数
3.5 read() write()函数
3.6 close()函数
4.socket中TCP的三次握手建立连接
5.socket中tcp四次挥手1. 网络中进程是如何通信的
本地的进程间通信有很多种方式,总体分为四类:
1、消息传递(管道、FIFO、消息队列)
2、同步(互斥量,条件变量、读写锁、文件和写记录所、信号量)
3、共享内存
4、远程过程调用
本地通过进程pid来唯一标识一个进程,网络层的ip地址可以唯一标识网络中的主机,而传输层的协议+端口可以唯一标识主机中的进程(程序) (ip地址,协议,端口)就可以标识网络的进程了。
什么是socket?
socket其实是基于linux的一切皆文件,socket其实就是一种特殊的文件
,socket 函数就是对其进行的操作(读写IO,打开关闭)
socket基本操作
socket()函数 用于创建一个socket描述符,唯一标识一个socket,这个socket描述字根文件描述字一样,后续的操作都有用到它,把它作为参数,通过它来进行一些读写操作。
三个参数 domain协议域 (INET6 LOCAL) type 类型 (stream raw ) protocal 指定协议
服务其在启动的时候都会绑定一个中所周知的地址(ip+端口号),用于提供服务,客户就可以通过它来链接服务其;而客户端就不用指定,有系统自动分配一个端口好和自身ip结合。客户端则是在listen之前bind()客户端随机生成一个
websocket与socket关系
socket并不是一个协议,而是为了方便使用TCP或UDP而抽象出来的一层,位于应用层和传输层之间的一组接口。socket利用TCP ,TCP则利用了IP
WEBSOCKET与HTTP的关系
相同点:
1.都是基于TCP,可靠性传输协议
2.都是应用层协议
不同点:
1.websocket是双向通信协议,模拟socket协议,可以双向发送或接受信息,HTTP是单项的
2.websocket需要浏览器和服务器握手进行建立链接的,而http是浏览器发起向服务器的链接,服务器预先不知道这个链接