我注意到与 netcat 和 UDP 一起使用的奇怪行为。我启动了一个监听 UDP 端口的 netcat 实例(实例 1):
nc -lu -p 10000
所以我启动了另一个 netcat 实例(实例 2)并尝试将数据报发送到我的进程:
nc -u 127.0.0.1 10000
我看到了数据报。但是如果我关闭实例 2 并重新启动 netcat(实例 3):
nc -u 127.0.0.1 10000
我在实例 1 的终端上看不到数据报。显然,操作系统在实例 3 相对于实例 2 分配了不同的 UDP 源端口,问题就在那里:如果我使用相同的实例 2 源端口(例如 50000):
nc -u -p 50000 127.0.0.1 10000
netcat 的实例 1 再次接收数据报。UDP是一种无连接协议,为什么?这是标准的 netcat 行为吗?