Como os sockets lidam com roteadores?

1

(Não tenho certeza se isso deve estar no site unix stackexchange ...)

Quando eu faço um socket eu uso o IPv4 e um número de porta. Então, se eu conheço ambos, mas há um roteador configurado (em uma rede doméstica; apenas aprendendo sobre soquetes e experimentando), como eu acessaria um cliente nessa LAN? Então, digamos que eu esteja em um amigo em seu computador, e eu quero conectar a um soquete no computador da minha casa que está na minha LAN, se eu usar meu endereço IP público como o host do soquete, como ele saberia ir para meu computador? Preciso configurar o encaminhamento de porta ou algo no roteador? (usando C e Python, se isso importa)

    
por Marty 14.03.2012 / 06:06

5 respostas

1

Sim, o roteador precisa saber o encaminhamento de pacotes recebidos para o seu computador. Isso geralmente é feito de uma das seguintes maneiras:

  • Zona desmilitarizada: o roteador encaminha todo o tráfego de entrada para um host designado
  • Encaminhamento de porta estática, em que determinadas portas voltadas para fora são sempre roteadas para hosts específicos pelas regras configuradas no roteador
  • Encaminhamento de porta dinâmico em que os padrões de tráfego de entrada ou saída acionam o roteamento de portas externas específicas para hosts específicos (por exemplo, se uma máquina faz uma conexão com um determinado host da Internet em uma determinada porta, encaminhar um determinado intervalo de portas de entrada para essa porta) máquina)
  • Universal Plug & Play ou NAT-PMP, onde uma máquina em sua rede configura automaticamente o encaminhamento para serviços que está hospedando (normalmente usado por clientes BitTorrent)
por 14.03.2012 / 06:13
1

Uma solução de "modo fácil" seria configurar o ipv6 para todos os computadores envolvidos. Se os roteadores / ISPs não / não suportarem, você pode usar SixXs (ou similar) para conectividade de túnel ipv6 para suas caixas.

Em seguida, usando endereços ipv6, as coisas devem funcionar apenas .

    
por 14.03.2012 / 06:23
0

No seu lado, o roteador usa o NAT para saber quais portas externas correspondem a quais clientes internos.

No outro extremo, é necessário algum tipo de encaminhamento de porta.

    
por 14.03.2012 / 06:11
0

Estou falando aqui sobre os roteadores NAT, que são a maioria dos roteadores domésticos.

Se você estiver se conectando a uma porta em outro computador, ele deverá passar pelo roteador sem problemas, a menos que o roteador tenha bloqueado essa porta.

Se você espera que outro computador se conecte ao seu, é necessário tomar providências especiais no roteador para encaminhar uma porta específica para o seu PC.

A escolha da linguagem não faz diferença.

    
por 14.03.2012 / 06:12
0

A principal finalidade dos roteadores é fazer o roteamento da camada de internetwork (camada 2/3) (Internet Protocol v4 e / ou v6 e ICMP principalmente). Os soquetes têm a ver com a camada de transporte (camada 3/4) e, embora o roteador possa interagir com portas (o encaminhamento de porta é um exemplo), ele geralmente não se importa (portas de firewall no roteador seriam outro exemplo de onde seria, mas isso geralmente é feito com uma caixa completamente diferente chamada firewall ).

    
por 14.03.2012 / 13:50