Existe algum tipo de representação no sistema de arquivos para portas de rede?

1

Digamos que eu queira alimentar alguns dados em uma determinada porta de rede criada no meu sistema e fazer isso manualmente. Existe alguma interface para isso no sistema de arquivos?
Talvez um tipo especial de arquivo que eu poderia escrever? Se não como tudo funciona?

(Eu estou fazendo essa pergunta apesar do risco de parecer ridículo e não fazer sentido algum. Eu aceitaria de bom grado o link para um bom artigo sobre o assunto.)

    
por Bibek_G 26.09.2015 / 05:45

1 resposta

3

Em suma

Você não pode fazer o que descreve de maneira a usar cat para gravar em um arquivo e enviá-lo pela rede. No entanto, existem ferramentas que podem fazer isso. Eu recomendo olhar em netcat ou socat (socat é mais flexível, mas um pouco mais confuso). Qualquer um provavelmente estará em seus repositórios de distribuição.

Explicação

No Linux, os soquetes IP existem no espaço do usuário e não possuem um arquivo no sistema de arquivos em si.

Para demonstrar isso, corri $ lsof -i :15115 (a porta 15115 está associada ao Skype):

COMMAND  PID     USER   FD   TYPE  DEVICE SIZE/OFF NODE NAME
skype   3836 eightbit   43u  IPv4 9020794      0t0  TCP *:15115 (LISTEN)
skype   3836 eightbit   44u  IPv4 9020795      0t0  UDP *:15115 

Portanto, o processo 3836 tem um descritor de arquivo numerado 43 para o soquete TCP 15115 (o 'u' significa apenas que o arquivo está aberto com permissões r + w).

Então, se eu fizer $ ls -l /proc/3836/fd/43 && file /proc/3836/fd/43 , obtenho:

lrwx------ 1 eightbit eightbit 64 Sep 26 00:37 /proc/3836/fd/43 -> socket:[9020794]
/proc/3836/fd/43: broken symbolic link to socket:[9020794]

Como você pode ver, o socket não é realmente um arquivo.

    
por 26.09.2015 / 08:23