我不明白 netcat 的行为。假设我有一台主机充当服务器:
[root@localhost tmp]# nc -u -l -p 670
然后我尝试从客户端连接:
root@debian:/tmp# nc -u 192.168.0.109 670
同时我尝试捕获这些包:
[root@localhost sergio]# tcpdump -nn -i wlp7s0 port 670
仅当我发出以下命令时,我根本看不到任何数据包:
root@debian:/tmp# echo "Hola Mundo" | nc -u 192.168.0.109 670
[root@localhost sergio]# tcpdump -nn -i wlp7s0 port 670
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on wlp7s0, link-type EN10MB (Ethernet), capture size 65535 bytes
01:37:39.425276 IP 192.168.0.114.44287 > 192.168.0.109.670: UDP, length 12
我想知道这是否是 netcat 的正确行为。为什么除了从标准输入发送内容之外看不到任何数据包?
答案1
因为你使用的是UDP。在发送任何数据包之前,UDP 中没有连接设置,这意味着您只有在实际数据传输时才能看到数据包。 netcat 仅发送从 stdin 获取的数据。