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の正しい動作かどうか疑問に思います。 stdinで送信されるパケット以外にどのパケットも表示できないのはなぜですか?
ベストアンサー1
UDPを使っているからです。パケットが送信される前に、UDP に接続設定はありません。つまり、実際のデータが送信されたときにのみパケットを表示できます。 netcatはstdinから取得したデータのみを送信します。