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에서 얻은 데이터만 보냅니다.