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).