TCP 连接是计算机网络中基于面向连接的传输层协议,它提供了可靠的数据传输服务。在 Node.js 中,我们可以使用 net
模块创建 TCP 服务器和客户端。本文将介绍 Node.js 中 TCP 连接的建立过程,包括三次握手和四次挥手。
三次握手
TCP 连接的建立需要进行三次握手,这三次握手的过程如下:
- 客户端发送 SYN 包,表示请求建立连接。
- 服务器接收到客户端的 SYN 包,发送 ACK 包和 SYN 包,表示同意建立连接。
- 客户端收到服务器的 ACK 包和 SYN 包,发送 ACK 包,表示连接成功建立。
下面是示例代码:
服务器端
-- -------------------- ---- ------- ----- --- - --------------- ----- ------ - ----------------------- -- - ------------------- ------------ ----------------- ---- -- - --------------------- ----- ---------- --- ---------------- -- -- - ------------------- --------------- --- --- ------------------ --- -- - -------------------- --------- --------- --- ------------------- -- -- - ------------------- ---------- ---
客户端
-- -------------------- ---- ------- ----- --- - --------------- ----- ------ - ---------------------- ----- ---- -- -- -- - ---------------------- -- --------- ------------------- ---- --------- --- ----------------- ---- -- - --------------------- ----- ---------- ------------- --- ---------------- -- -- - ------------------------- ---- --------- ---
在上面的示例代码中,服务器端代码中使用 net.createServer()
方法创建 TCP 服务器,并监听客户端连接的事件。客户端代码中使用 net.createConnection()
方法创建 TCP 客户端,并连接到服务器,发送数据后断开连接。
在执行代码后,可以看到下面的输出:
Server started Client connected Received data: Hello from client Client disconnected Disconnected from server
四次挥手
TCP 连接的关闭需要进行四次挥手,这四次挥手的过程如下:
- 客户端发送 FIN 包,表示请求关闭连接。
- 服务器接收到客户端的 FIN 包,发送 ACK 包,表示收到请求。
- 服务器发送 FIN 包,表示准备关闭连接。
- 客户端接收到服务器的 FIN 包,发送 ACK 包,表示同意关闭连接。
下面是示例代码:
服务器端
-- -------------------- ---- ------- ----- --- - --------------- ----- ------ - ----------------------- -- - ------------------- ------------ ----------------- ---- -- - --------------------- ----- ---------- --- ---------------- -- -- - ------------------- --------------- --------------- -- - ------------------- --------- --- --- --- ------------------ --- -- - -------------------- --------- --------- --- ------------------- -- -- - ------------------- ---------- ---
客户端
-- -------------------- ---- ------- ----- --- - --------------- ----- ------ - ---------------------- ----- ---- -- -- -- - ---------------------- -- --------- ------------------- ---- --------- ------------- --- ---------------- -- -- - ------------------------- ---- --------- ---
在上面的示例代码中,服务器端代码中使用 socket.on('end')
方法监听客户端断开连接的事件,并在事件处理函数中关闭服务器连接。客户端代码中使用 client.end()
方法关闭客户端连接。
在执行代码后,可以看到下面的输出:
Server started Client connected Received data: Hello from client Client disconnected Server closed Disconnected from server
总结
本文介绍了 Node.js 中 TCP 连接的建立过程,包括三次握手和四次挥手。在实际开发中,我们需要注意 TCP 连接状态的变化,并正确地关闭连接以避免出现资源泄漏等问题。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/64a49dba48841e9894108b84