Node.js 中 TCP 连接的建立过程

阅读时长 5 分钟读完

TCP 连接是计算机网络中基于面向连接的传输层协议,它提供了可靠的数据传输服务。在 Node.js 中,我们可以使用 net 模块创建 TCP 服务器和客户端。本文将介绍 Node.js 中 TCP 连接的建立过程,包括三次握手和四次挥手。

三次握手

TCP 连接的建立需要进行三次握手,这三次握手的过程如下:

  1. 客户端发送 SYN 包,表示请求建立连接。
  2. 服务器接收到客户端的 SYN 包,发送 ACK 包和 SYN 包,表示同意建立连接。
  3. 客户端收到服务器的 ACK 包和 SYN 包,发送 ACK 包,表示连接成功建立。

下面是示例代码:

服务器端

-- -------------------- ---- -------
----- --- - ---------------

----- ------ - ----------------------- -- -
  ------------------- ------------
  ----------------- ---- -- -
    --------------------- ----- ----------
  ---
  ---------------- -- -- -
    ------------------- ---------------
  ---
---

------------------ --- -- -
  -------------------- --------- ---------
---

------------------- -- -- -
  ------------------- ----------
---

客户端

-- -------------------- ---- -------
----- --- - ---------------

----- ------ - ---------------------- ----- ---- -- -- -- -
  ---------------------- -- ---------
  ------------------- ---- ---------
---

----------------- ---- -- -
  --------------------- ----- ----------
  -------------
---

---------------- -- -- -
  ------------------------- ---- ---------
---

在上面的示例代码中,服务器端代码中使用 net.createServer() 方法创建 TCP 服务器,并监听客户端连接的事件。客户端代码中使用 net.createConnection() 方法创建 TCP 客户端,并连接到服务器,发送数据后断开连接。

在执行代码后,可以看到下面的输出:

四次挥手

TCP 连接的关闭需要进行四次挥手,这四次挥手的过程如下:

  1. 客户端发送 FIN 包,表示请求关闭连接。
  2. 服务器接收到客户端的 FIN 包,发送 ACK 包,表示收到请求。
  3. 服务器发送 FIN 包,表示准备关闭连接。
  4. 客户端接收到服务器的 FIN 包,发送 ACK 包,表示同意关闭连接。

下面是示例代码:

服务器端

-- -------------------- ---- -------
----- --- - ---------------

----- ------ - ----------------------- -- -
  ------------------- ------------
  ----------------- ---- -- -
    --------------------- ----- ----------
  ---
  ---------------- -- -- -
    ------------------- ---------------
    --------------- -- -
      ------------------- ---------
    ---
  ---
---

------------------ --- -- -
  -------------------- --------- ---------
---

------------------- -- -- -
  ------------------- ----------
---

客户端

-- -------------------- ---- -------
----- --- - ---------------

----- ------ - ---------------------- ----- ---- -- -- -- -
  ---------------------- -- ---------
  ------------------- ---- ---------
  -------------
---

---------------- -- -- -
  ------------------------- ---- ---------
---

在上面的示例代码中,服务器端代码中使用 socket.on('end') 方法监听客户端断开连接的事件,并在事件处理函数中关闭服务器连接。客户端代码中使用 client.end() 方法关闭客户端连接。

在执行代码后,可以看到下面的输出:

总结

本文介绍了 Node.js 中 TCP 连接的建立过程,包括三次握手和四次挥手。在实际开发中,我们需要注意 TCP 连接状态的变化,并正确地关闭连接以避免出现资源泄漏等问题。

来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/64a49dba48841e9894108b84

纠错
反馈