1. DNS 解析

2. 建立 TCP 连接

客户端

  1. 创建套接字:调用 socket() 创建一个 TCP 套接字。
  2. 连接服务器:调用 connect() 方法连接到服务器的 IP 地址和端口。

服务器

  1. 创建套接字:调用 socket() 创建一个 TCP 套接字。
  2. 绑定地址和端口:调用 bind() 方法将套接字绑定到特定的 IP 地址和端口。
  3. 监听连接:调用 listen() 方法,使套接字进入监听模式,等待客户端连接。
  4. 接受连接:调用 accept() 方法接受客户端连接,生成一个新的套接字用于通信。

3. 网卡处理

4. WebSocket 握手(Handshake)

客户端

  1. 发送握手请求:通过 TCP 连接发送包含特定头部信息的 HTTP 请求,如 Upgrade: websocketConnection: UpgradeSec-WebSocket-Key 等。

服务器

  1. 接收握手请求:通过 TCP 连接接收客户端的 HTTP 请求。
  2. 验证请求并生成响应:验证请求头信息并生成包含 101 Switching Protocols 状态码的响应,添加 Sec-WebSocket-Accept 头部信息。