我正在尝试通过 UDP 端口 6666 进行通信(目标是为 netconsole 设置一个侦听器,但这在这里并不重要)。
在听力方面,nc -luv 6666
. 在发送方,nc -uv LISTENER_IP 6666
. 我可以发送和接收,生活是美好的。
现在我让监听器运行,但杀死发送者并启动另一个发送者。它立即终止。网络跟踪显示接收服务器发送了一个ICMP Port Unreachable。但是,听众仍然在听:
$ sudo ss -nlup|grep 6666
UNCONN 0 0 :::6666 :::* users:(("nc",pid=3417,fd=3))
我杀死接收器并运行一个新的。在我杀死发件人之前,一切都像以前一样工作。
发送者和接收者是同一网络上的物理机器。物理机和在其上运行的 VM 之间的相同测试会产生相同的结果。
如何解释这种行为?