Pseudo devices
Uma forma interessante de enviar mensagens para um socket TCP ou UDP quando não se tem um cliente como netcat
ou socat
, é utilizando os pseudo-devices.
Os pseudo-devices são criados no filesystem e localizados em /dev
.
$ ls /dev
console fd mqueue ptmx random stderr stdout urandom
core full null pts shm stdin tty zero
Quando um TCP server é criado, podemos enviar uma mensagem a ele através de pseudo-devices, utilizando a mesma técnica de redirecionamento de streams que vimos com file descriptors e standard streams:
## Server
$ nc -lv 8080
Listening on 0.0.0.0 8080
O caminho padrão para um pseudo-device é:
/dev/[protocol]/localhost/[port]
Então enviamos a mensagem sem a necessidade de netcat
, apenas com pseudo-devices:
$ echo PING > /dev/tcp/localhost/8080

Note que assim que o server recebeu a mensagem, a conexão com o cliente foi encerrada e o processo do server foi terminado.
Se quisermos que o processo do server se mantenha em execução mesmo quando uma conexão de um cliente encerra, temos que indicar a opção -k
:
$ nc -lvk 8080

Reforçando que, conforme exemplo acima, cada nova conexão é atribuída a uma porta de rede diferente, caracterizando a capacidade full-duplex do TCP entre diferentes clientes.
Last updated