SOCKS、Socket、WebSocket的区别

1.SOCKS是协议

SOCKS是防火墙安全会话转换协议(Protocol for sessions traversal across firewall securely),是客户端和服务端之间的代理协议。

举例来说,Bill希望通过互联网与Jane沟通,但他们的网络之间存在一个防火墙,Bill不能直接与Jane沟通,所以Bill连接到他的网络上的SOCKS代理服务器,告诉它他想与Jane创建连接,SOCKS代理服务器打开一个能够穿过防火墙的连接,并促进Bill与Jane之间的通信。

2.套接字(Socket)是API

套接字(Socket)原本是由BSD UNIX开发的,后来被移植到了Windows的Winsock以及嵌入式操作系统中。

应用程序在使用TCP或UDP通信时,会使用到操作系统提供的类库,这种类库被称为API(Application Programming Interface,应用程序接口)。套接字(Socket)不是协议,就是这种 API,换句话说,套接字(Socket)是实实在在的程序。

使用TCP或UDP通信时,会广泛使用套接字(Socket)的API,应用程序利用套接字(Socket),可以设置对端的IP地址、端口号,并实现数据的发送与接收。

3.WebSocket是协议

WebSocket协议是客户端与服务端之间的全双工通信协议,于2011年12月11日被IETF定为RFC 6455标准。

WebSocket与HTTP一样,都属于应用层协议。但我们已经有了HTTP协议,为什么还另外需要一个协议呢?

答案很简单,因为HTTP协议有一个缺陷:通信每次都只能由客户端发起。

举例来说,如果我们想了解今天的天气,只能是客户端向服务端发出请求,然后服务端返回查询结果。HTTP协议做不到服务端主动向客户端推送信息。

WebSocket的最大特点就是,客户端与服务器之间只需完成一次握手,两者之间就可以创建持久性的连接,并进行双向数据传输。客户端可以主动向服务端发送信息,服务端也可以主动向客户端推送信息,是真正的双向平等对话。

但是,WebSocket与HTTP有一点是一样的,首次连接的发起方仍是客户端。

原创文章,作者:huoxiaoqiang,如若转载,请注明出处:https://www.huoxiaoqiang.com/experience/httpexp/10034.html

(12)
huoxiaoqiang的头像huoxiaoqiang
上一篇 2021年11月26日 15:02
下一篇 2021年12月3日 23:38

相关推荐

发表回复

登录后才能评论