HTTP与WebSocket都是属于应用层的通信协议,都是基于 TCP 协议来传输数据的。 Socket不是一种通信协议、而是一组调用的接口(API),位于应用层与传输层的一个抽象层(不属于OSI模型里面的层),Socket对TCP/UDP做了一定的封装。 图片来源:https://www.cnblogs.com/aspirant/p/11334957.html
- HTTP 协议有一个缺陷:通信只能由客户端发起,做不到服务器主动向客户端推送信息。
- WebSocket 协议它的最大特点就是,服务器可以主动向客户端推送信息,客户端也可以主动向服务器发送信息,是真正的双向平等对话,属于服务器推送技术的一种。
- 主机 A 的应用程序要能和主机 B 的应用程序通信,必须通过 Socket 建立连接,而建立 Socket 连接必须需要底层 TCP/IP 协议来建立 TCP 连接。建立 TCP 连接需要底层 IP 协议来寻址网络中的主机。我们知道网络层使用的 IP 协议可以帮助我们根据 IP 地址来找到目标主机,但是一台主机上可能运行着多个应用程序,如何才能与指定的应用程序通信就要通过 TCP 或 UPD 的地址也就是端口号来指定。这样就可以通过一个 Socket 实例唯一代表一个主机上的一个应用程序的通信链路了。服务端通过ServerSocket监听端口,客户端通过Socket向服务器端和对应的端口发送消息。
|