TL; DR: você pode usar soquetes UDP no modo conectado ou permanecer desconectado, o que é uma opção de implementação dependendo, entre outros fatores, da simplicidade ou escalabilidade. Isso não alterará o conteúdo dos pacotes no fio ou conectará qualquer escolha feita.
netcat
usa bind(2)
na porta escolhida, usa somente uma vez recvfrom(2)
com a opção MSG_PEEK
para nem consumir os dados , recupera a fonte e, em seguida, usa connect(2)
para essa fonte, alterando o estado do soquete para ESTAB
e agora pode continuar com read(2)
e write(2)
chamadas.
Outras aplicações (por exemplo: socat UDP-RECVFROM:7777,fork -
em vez de socat UDP-LISTEN:7777 -
e obviamente openvpn) simplesmente nunca connect(2)
para a fonte e assim permanecer no estado UNCONN. Eles só usarão recvfrom(2)
e emitirão dados usando sendto(2)
.
Essa diferença de uso é parcialmente explicada em recv(2)
e < href="https://manpages.debian.org/stretch/manpages-dev/send.2.en.html"> send(2)
:
The send() call may be used only when the socket is in a connected state (so that the intended recipient is known). The only difference between send() and write(2) is the presence of flags. With a zero flags argument, send() is equivalent to write(2).