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