Pelo que entendi, não há como enviar um pacote para um computador em uma rede local de fora da rede, a menos que conheçamos o mecanismo de roteamento empregado pelo roteador.
Supondo que tenhamos uma configuração assim:
Computador A, IP 192.168.1.2 (gateway padrão 192.168.1.1)
Computador-B, IP 192.168.1.3 (gateway padrão 192.168.1.1)
Roteador-C, IP 192.168.1.1 (IP externo 1.1.1.1)
Roteador-D (IP externo 2.2.2.2)
Computador A, Computador B e Roteador C pertencem à mesma rede local. O Roteador-D deseja enviar dados para o Computador-A, mas não pode fazer isso sem passar pelo Roteador-C.
Agora o roteador-C encaminhará pacotes para o computador A se a porta de destino for 1000 e encaminhará os pacotes para o computador-B se a porta de destino for 2000. Mas certamente, o único dispositivo que conhece esse mecanismo de roteamento é o próprio roteador-C! Nem o Computador A nem o Computador B sabem disso, certo?
Portanto, o roteador-D pode enviar um pacote ao computador-A se enviar um pacote ao roteador-C pela porta 1000, mas como o roteador-D deve saber enviar pacotes pela porta 1000 e não a porta 1001?
Como os programas ponto a ponto como o Bittorrent são aprovados nesse problema? A única solução que posso pensar é que o roteador-D envie o pacote ao roteador-C através de todas as portas, de modo que seja encaminhado para o computador-A, mas existe uma solução melhor?
fonte
Sua pergunta toca o coração da Internet e a própria definição de roteamento. No seu exemplo, o roteador D envia dados para o computador A com base em duas premissas:
Seu cenário parece assumir a primeira opção - o roteador D deseja enviar ao computador A. Mas como ele chega lá? Isso é feito através do uso de tabelas de roteamento que são compartilhadas pelos roteadores entre si.
O roteador C envia regularmente atualizações para todos os roteadores que conhecem - incluindo o roteador D - que "conhecem" a rede "192.168. *" (Na realidade - isso não aconteceria porque a rede não é roteada - é considerada privada. ignore isso.) Portanto, o roteador D já sabe que o roteador C conhece essa rede.
Portanto, quando os dados são destinados ao Computador A, eles são endereçados pela rede primeiro. Portanto, o roteador D pergunta: "Preciso encontrar a rede 192.168. *. Conheço? Não. Conheço alguém que conheça? Sim. O roteador C sabe. Como faço para acessar o roteador C? Através do meu 2.2. 2.2 interface ".
O roteador D envia os dados para o roteador C. O roteador C recebe e diz: "Oh, eu tenho dados do roteador D, mas é para a rede 192.168. Conheço essa rede? Sim, através da minha rede 192.168.1.1" encaminha.
Há algum outro trabalho a ser feito para resolver o endereçamento IP e MAC, mas estou cobrindo o roteamento, por si só, não o ARP e a rede local.
Você notará que sua primeira suposição - o roteador remoto deve conhecer o mecanismo de roteamento - não entra em jogo aqui. O roteador D não se importa se o roteador C estiver usando EIGRP, RIP, RIPv2, OSPF ou qualquer outra coisa. Tudo o que importa é que tenha uma atualização. (É claro que, como ele tem uma atualização é importante para garantir os dois estadia em sincronia. Mas, novamente, isso é uma questão diferente.)
Sua segunda suposição - que o número da porta é um fator no roteamento - também está incorreta. Os roteadores (geralmente) não precisam de informações de porta para tomar decisões de roteamento. (Isso mudou um pouco, devido a algumas novas tecnologias de rede e se aplica principalmente a firewalls e proxies, mas ainda assim a suposição mais ampla ainda se aplica a roteadores "verdadeiros").
Continuando com o seu exemplo, o roteador C encaminhará os dados na porta 1000 (de acordo com o seu cenário), porque é possível que exista um serviço no Computador A esperando dados nessa porta específica. Mas ele só sabe fazer isso porque o roteador D o enviou na porta 1000. E o roteador D somente o envia nessa porta porque o originador dos dados o enviou ao roteador D nessa porta.
Não entendo sua inclusão de programas bittorrent ou P2P como reflexo da pergunta que você faz. As mesmas explicações se aplicariam. Os roteadores também podem ser configurados com acionamento de porta, que associa um dispositivo (ou IP) específico a uma porta específica. De modo que, quando o tráfego chega na porta 1234, os roteadores sabem enviar dados ao dispositivo ABCD. Isso geralmente é associado a uma porta TCP de saída. ou seja, se eu enviar tráfego na porta 7890, o roteador sabe que o tráfego recebido estará na porta 1234 e o enviará para mim.
Mas o disparo de porta não está associado a decisões de roteamento (remotas) - em vez disso, refere-se à tabela interna de MAC / IP que o roteador usa para a LAN.
Atualização / edição : para responder e elaborar após seu comentário. O roteador D conhece o Computador A apenas pelo seu endereço IP (192.168.2.2). Mas o roteador C conhece o computador A pelo seu endereço IP e pelo seu endereço MAC. O MAC (controle de acesso à mídia) é um identificador exclusivo (geralmente ...) de 48 bits, definido pelo padrão internacional. Todo dispositivo conectado a uma LAN (com e sem fio) deve ter um endereço MAC exclusivo.
O roteador (Roteador C) associa o endereço IP e o endereço MAC juntos em uma tabela (a tabela de endereços MAC). Portanto, quando o tráfego entra no roteador C e o roteador percebe seu "local", ele faz uma pesquisa na tabela de endereços MAC. O roteador muda literalmente as informações de endereçamento do quadro.
Ele reconstrói (reescreve) as informações de destino da Camada 2 para ter o endereço MAC de destino do Computador A, mas mantém as informações de endereço IP (Camada 3) iguais.
Se a rota NÃO souber o endereço MAC. Ou não possui um relacionamento IP-MAC em sua tabela, ele faz algo chamado ARP (protocolo de resolução de endereço) para perguntar "Ei, todos nesta rede. Você tem esse endereço MAC?" Ou às vezes - "Todos, qual é o seu endereço MAC?"). O dispositivo / dispositivos apropriados responde e o roteador cria sua tabela IP-MAC.
fonte
Disparo de porta. Como um servidor da Web envia uma página para você depois que você a solicita? Porque você solicitou. Quando você solicita, o roteador sabe esperar uma resposta e, quando recebe, encaminha para o PC apropriado. Alguns programas são escritos para acionar uma abertura em antecipação a um sinal de um PC específico, mesmo que não esteja realmente a caminho.
Alguns modelos possuem um servidor central usado para comunicação básica. Por exemplo:
O servidor agora conhece todos os arquivos que o Client1 e o Client2 possuem.
O Cliente1 apenas enganou o roteador para abrir essa porta para o Cliente2.
Em alguns casos, como o BitTorrent ou o Napster original (iirc), é necessário encaminhar uma porta no seu roteador para que ele funcione da melhor maneira possível.
No caso de outros clientes saberem a qual porta se conectar inicialmente, é porque seu cliente informou ao enxame ou servidor qual porta você usa. O BitTorrent usa frequentemente um rastreador e que controla quais portas são usadas por quais clientes.
fonte