为什么有 HTTP 还需要 WebSocket?为什么不直接使用 TCP ?

为什么有 HTTP 还需要 WebSocket?

  1. HTTP 半双工、高开销(大量头部信息)
  2. 实时交互的场景(如在线游戏、实时聊天、股票更新等)WebSocket应运而生

TCP 协议本身支持全双工通信,允许双方在同一时间内主动发送和接收数据。然而,HTTP/1.1 在设计上采用了半双工模式

在 TCP 连接建立后,浏览器会发送 HTTP 请求,其中包含请求升级到 WebSocket 的特殊头部,如果服务器支持 WebSocket 并同意升级协议,握手完成后,连接从 HTTP 切换为 WebSocket ,双方就可以通过全双工方式自由传输数据

为什么不直接使用 TCP 而不是 WebSocket?

  1. 虽然TCP 也是全双工,但直接使用缺乏应用层协议
  2. 由于浏览器环境限制(直接使用原生 TCP 通信是不被允许)
  3. 防火墙兼容性:WebSocket 默认使用 HTTP/HTTPS 的 80 和 443 端口,而这些端口通常在网络中是开放的;直接使用 TCP 的其他端口(如 8080、12345 等)可能会被防火墙或代理阻断

你可能感兴趣的:(http,websocket,tcp/ip)