我可以信任 UDP nc 命令的回显结果吗?

我可以信任 UDP nc 命令的回显结果吗?

语境 : 我想用 nc 命令测试 UDP 端口

会发生什么 : nc 命令在输出中不返回任何内容,当我输入时返回 0echo $?

哪个命令:

nc -vzu <ip> <port>
echo $?

问题是什么 : 我想知道我是否可以相信结果echo $?

版本 :

  • netcat :0.7.1-5.ph3.x86_64(在 vCenter 上)。
  • tcpdump-uw:版本 4.9.1-PRE-GIT_2017_09_22

我的想法 :

我知道UDP不验证数据包。

我已经在目标服务器上尝试过,但我什么也没收到echo "something" | nc -vu <ip> <port>tcpdump -i vmk0 -en udp

我认为 UDP 数据包发送成功,但从未到达目的地。

你怎么认为 ?

答案1

不同的nc版本或实现可能会显示不同的行为。您将需要测试特定命令的特定行为,nc以便理解它并确定是否可以信任结果。

例如,在我的nc版本中,当我尝试连接到某个开放的 UDP 端口时,它会写入:

$ nc -vzu <ip> <port>; echo exit status is: $?
Connection to <ip> <port> port [udp/*] succeeded!
exit status is: 0

并返回退出状态0

但是当我尝试连接到没有任何东西监听的端口时,它只返回退出状态1

$ nc -vzu <ip> <port>; echo exit status is: $?
exit status is: 1

为了确定您是否可以信任特定的退出状态nc命令的退出状态,请尝试连接到关闭的 UDP 端口。请注意,有效的 UDP 端口范围为4096-65535

你的情况,正如您所报告的,当您尝试连接关闭UDP端口在有效范围内,您的nc命令返回退出状态0(成功),这意味着您不能信任您的特定版本/实现的退出状态nc

相关内容