gpt4 book ai didi

node.js - netcat 不发送最终 FIN 来关闭连接

转载 作者:可可西里 更新时间:2023-11-01 02:34:14 24 4
gpt4 key购买 nike

我正在玩自制的 nodejs tcp 服务器,并在 Linux 下用 netcat 测试它的行为。建立连接后,服务器会在线下发送“测试”字符串并关闭套接字。我希望 netcat 通过发送适当的 tcp 数据包关闭其一侧的连接,但它没有!这是我所做的:

nc -v localhost 9000

之后整个对话是这样的:

netcat --> server (SYN)
netcat <-- server (SYN, ACK)
netcat --> server (ACK)
netcat <-- server (PSH, ACK)
netcat --> server (ACK)
netcat <-- server (FIN, ACK)
netcat --> server (ACK)

在这一点上,我希望 netcat 发送 FIN,但它从来没有。连接在一侧卡在 FIN-WAIT-2,在另一侧卡在 CLOSE-WAIT。

如果我用 telnet 尝试同样的事情:

telnet localhost 9000

它的行为符合预期,并在收到“测试”字符串后终止连接。

问题是为什么 netcat 的行为不同?

最佳答案

netcat 被设计为在双方关闭连接之前一直工作。你仍然有一侧是开放的。

当服务器关闭与 FIN 的连接时,连接仍处于半打开状态,您可以在其中发送数据,服务器可以接收数据。连接将保持此状态,直到您关闭 netcat 的标准输入(键入 Ctrl-D),这会使它向服务器发送 FIN 数据包。

关于node.js - netcat 不发送最终 FIN 来关闭连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27947776/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com