MST

星途 面试题库

面试题:网络编程 - WebSocket的连接建立过程

请描述WebSocket从客户端发起请求到服务端建立连接的完整过程,包括涉及的HTTP请求头信息以及握手机制。
31.1万 热度难度
后端开发网络编程

知识考点

AI 面试

面试题答案

一键面试
  1. 客户端发起请求
    • 客户端通过HTTP协议发起一个特殊的HTTP请求,请求的URL指向WebSocket服务端地址。
    • 关键HTTP请求头信息
      • Upgrade: websocket:表示客户端希望将当前的HTTP连接升级为WebSocket连接。
      • Connection: Upgrade:配合Upgrade头,表明客户端想要进行连接升级。
      • Sec - WebSocket - Key:由客户端随机生成的Base64编码的16字节值,用于安全握手。
      • Sec - WebSocket - Version:指定客户端支持的WebSocket协议版本,常见的如13
  2. 服务端响应
    • 服务端收到请求后,如果支持WebSocket协议,会返回一个HTTP响应。
    • 关键HTTP响应头信息
      • Upgrade: websocket:表明服务端同意将连接升级为WebSocket连接。
      • Connection: Upgrade:同样表明连接升级。
      • Sec - WebSocket - Accept:服务端将客户端发送的Sec - WebSocket - Key与一个固定字符串258EAFA5 - E914 - 47DA - 95CA - C5AB0DC85B11拼接,然后进行SHA - 1哈希计算,再进行Base64编码,得到的值作为Sec - WebSocket - Accept头的值返回给客户端。
  3. 握手机制
    • 客户端收到服务端的响应后,会验证Sec - WebSocket - Accept头的值。如果验证通过,客户端和服务端之间的WebSocket连接就建立成功了。此时,连接从HTTP协议转换为WebSocket协议,后续双方就可以通过WebSocket协议进行双向通信,不再使用HTTP协议的请求 - 响应模式。