Socket conecta-se a uma porta ligada ao IP vs localhost

4

Entendo que os sockets ligados a portas usando localhost não serão visíveis para a sub-rede porque a ligação não é com o endereço IP do nic. Os processos locais que se conectam a essa porta criarão um pipe unix em vez de um soquete IP. No entanto, se ligado ao endereço IP nic, a porta fica visível para a sub-rede. Eu quero aprender os tipos de conexões feitas ao se conectar a portas ligadas ao localhost e ao nic IP.

** Porta vinculada ao host local **

  • processo local conecta usando localhost cria um pipe unix
  • conexão do processo local usando nic IP cria um pipe unix
  • processo estrangeiro conectar usando nic IP não pode se conectar

** Porta vinculada a nic IP **

  • processo local conecta usando localhost cria um pipe unix
  • processo local conectado usando nic IP cria um soquete IP
  • processo estrangeiro conectar usando nic IP conecta e cria um soquete IP

As afirmações acima estão corretas? Estou revisando a programação de rede deste site:

link

na esperança de mais insight.

    
por sfanjoy 23.01.2014 / 15:54

2 respostas

2

Local processes connecting to such port will create a unix pipe instead of an IP socket.

Se um processo usa um pipe ou um soquete não depende da interface per se . Depende de quais serviços do sistema ele chama.

Para criar um pipe nomeado, o programa chama mkfifo (2). Para obter um descritor no arquivo, ele chama open (2). ls -l mostra um "p" nos bits de status de um fifo. Canais anônimos, criados com pipe (2), não têm nome e são invisíveis para processos sem um ancestral comum.

Para criar um soquete TCP, ele chama socket (2) e, em seguida, bind (2) para atribuir um nome a outros processos para se conectar. Se o argumento para ligar for um endereço externo, ele ficará visível para a rede, senão não.

Você pode estar pensando no endereço de loopback 127.0.0.1. Se o programa se vincular a isso, ele não estará visível ou acessível pela rede. Somente processos em execução na máquina host podem se ligar ou se conectar ao endereço de loopback.

Também é possível criar uma conexão TCP sobre algo que se parece um pouco com um arquivo, conhecido como soquete do domínio UNIX. Nesse caso, o argumento para bind (e connect ) tem um nome de arquivo. Como o nome aparece no sistema de arquivos, parece um pouco como um pipe, mas ls -l mostra um "s" entre os bits de status.

Se você está interessado em como todas essas distinções estranhas surgiram, o NetBSD distribui dois trabalhos que datam de sua invenção e ainda são relevantes hoje. Procure por um tutorial avançado de comunicação entre processos 4.4BSD e um tutorial introdutório de comunicação entre processos 4.4BSD na web.

    
por 01.02.2014 / 22:16
0

Acho que essas declarações estão corretas. Na verdade, você poderia confirmá-lo com um sniffer como o tcpdump. Se você pudesse ver o tráfego na interface "lo", isso significa que a conexão está usando um pipe unix. Por outro lado, se o tráfego for detectado em "ethX", isso significa que está usando uma conexão de rede.

    
por 27.01.2014 / 21:06

Tags