Como um roteador rastreia conexões? Quando você envia uma solicitação http, ela vai para o roteador, que é então enviada para outro roteador, etc., pela Internet; mas então como ele sabe ir para o servidor, a porta é encaminhada para um balanceador de carga? Finalmente, quando o pacote volta, como ele sabe que deve voltar para o pc porque o pacote foi enviado de volta para o roteador e não para o pc? É possível estabelecer uma conexão com um pc controlado por um roteador, de fora desse roteador, ou seja, você pode direcionar um pacote para um pc não conectado diretamente à internet?
Responder1
Estou tentando responder a esta velha pergunta na esperança de ajudar alguém que procura algo assim. Além disso, por favor, deixe-me saber se cometi algum erro.
Para que as informações fluam do seu computador para um servidor web na Internet, existem vários componentes, dispositivos e algoritmos diferentes em jogo, mas vamos nos concentrar nos algoritmos de rede que tornam isso possível.
Acredito que existem principalmente duas tecnologias da Internet que desempenham o papel mais importante em tornar possível o fluxo de informações entre o seu computador e um servidor web da Internet. O protocolo de roteamento e NAT.
Vamos nos concentrar no pacote IP, pois é a unidade de dados na qual o protocolo de roteamento e o NAT funcionam.
- Quando o pacote IP enviado do seu navegador para o servidor de Internet chega ao roteador doméstico, ele é inspecionado e tem seu IP de origem alterado do IP da LAN local do remetente original para o IP público do roteador doméstico e então roteado para o destino IP. Esta tradução está registrada notabela de conexões.Este é o trabalho do NAT.
- Se o destino fizer parte da rede do IP público do roteador, ele será enviado para esse IP, caso contrário, será avaliado na tabela de roteamento para uma correspondência. Se o roteador não conseguir encontrar um, ele encaminhará o pacote para seu próprio gateway padrão. Esse processo continua até que um roteador encontre uma correspondência.É aqui que o protocolo de roteamento entra em ação.
- Se nenhuma rota for encontrada, uma mensagem ICMP Destination Unreachable-Host Unreachable será enviada ao host de origem.
- Uma vez encontrado o host final, ele aceita os pacotes IP que desencapsula, processa a solicitação contida nele e então envia de volta uma resposta. A resposta terá em seu IP de destino o IP do roteador de origem.
- A resposta seguirá o mesmo processo seguido pela solicitação até chegar ao originador. Observe que quando os pacotes seguem uma determinada rota até seu destino, eles NÃO precisam necessariamente seguir a mesma rota de volta.
- Depois de atingir o IP da Internet de destino, o roteador compara o tráfego de entrada com sua tabela de conexão, realiza a tradução reversa e encaminha os pacotes para a máquina apropriada.
É assim que os pacotes IP fluem do navegador para o servidor web de destino.
- Existem 4 conexões porque acho que a página que abri usou 4 solicitações diferentes para construir a página.
- O cliente que inicia a conexão pode usar qualquer porta de origem disponível. Esta porta será reservada como temporariamente em uso até que ambas as máquinas concordem em encerrar a conexão. A IANA sugere usar o intervalo 49152 a 65535 para as chamadas 'portas efêmeras'. Os servidores Web geralmente são executados na porta 80, a porta padrão para o tráfego HTTP, para que os clientes enviem suas solicitações para visualizar uma página da Web para essa porta.
- No roteador doméstico, a raia é um instantâneo da tabela de conexão do roteador.
- Na raia do servidor SuperUser há um instantâneo das conexões estabelecidas com o servidor.
A tabela de conexão garante exclusividade usando principalmente a combinação de IP de origem, porta de origem, IP de destino e porta de destino. Obviamente, o fator mais importante para determinar a exclusividade é a porta de origem, portanto, caso um host interno diferente tente usar uma porta de origem existente, o roteador altera essa porta e anota essa alteração na tabela de conexões.
Isso deve responder a todas as suas perguntas, exceto esta,É possível estabelecer uma conexão com um pc controlado por um roteador, de fora desse roteador, ou seja, você pode direcionar um pacote para um pc não conectado diretamente à Internet?
Se você conhece a porta NAT usada no roteador para um IP de Internet específico e é capaz de falsificar os pacotes IP e enviá-los para o roteador enquanto o roteador tem sua porta NAT aberta, então teoricamente deveria ser possível, mas tenho certeza que a maioria dos roteadores usam mais parâmetros para identificar a exclusividade e autenticidade dos pacotes IP.
Usei as seguintes referências para construir minha resposta:
Responder2
Os roteadores conectam redes por meio de gateways ou interfaces, de forma simplista:
Do I know where this packet should go?
yes - is it one of mine?
yes - send to appropriate interface.
no - send on to next gateway
no - return a packet saying unreachable
Seu roteador doméstico executará um software de rastreamento de conexão – ele manterá uma lista de conexões com as quais as máquinas da sua rede têm conversado na Internet. Assim saberá os endereços e portas para retornar as respostas.
Os pacotes TCP possuem um campo especial que pode conter o endereço da máquina original. O roteador usa algo chamado mascaramento para inserir seu endereço de retorno, e a máquina de destino também o inclui. Isso pode economizar um pouco de trabalho no rastreador de conexão, mas também revelar endereços IP internos para o servidor remoto.
O retorno de pacotes UDP, por outro lado, depende do módulo rastreador de conexão do roteador para retornar respostas à máquina original. Era um problema difícil de resolver até alguns anos atrás.
Novas conexões de entrada não terão nenhuma entrada no rastreador de conexão, então o roteador não saberá para onde enviá-lo, a menos que receba instruções de encaminhamento específicas para esse tipo de pacote, e você encontrará em todos os roteadores uma maneira de poder especifique qual máquina da sua rede receberá novas solicitações para a porta 80, por exemplo.
O TCP é um protocolo complexo e surpreendente orientado por estado, os pacotes não precisam seguir as mesmas rotas, podem ser divididos em pedaços menores, chegar fora de ordem, com correção de erros solicitando o reenvio de pacotes individuais, e o fluxo de dados pode ser remontados com os aplicativos em cada extremidade sem perceber quaisquer dificuldades, a menos que sejam grandes demais para afetar o desempenho. Muitos PhDs foram obtidos através disso!
Responder3
Para entender o roteamento, primeiro você deve ter uma compreensão doModelo OSIe você também deve ter uma compreensão deCIDR.
Isso será bastante básico:
Quando um pacote sai de um computador em uma rede doméstica padrão, o computador sabe que é uma rede privada e entende que o destino final está fora da rede por causa do CIDR e, assim, envia o pacote para o gateway padrão. O gateway padrão analisa o IP e o envia pela cadeia de roteadores até atingir a rede de destino (com base nas informações de IP no cabeçalho do pacote), esse gateway o encaminhará para o IP correto na rede (às vezes isso é baseado na porta nos detalhes do pacote, às vezes apenas o IP, dependendo do servidor/rede distante). Quando a informação solicitada é devolvida, seu roteador sabe para qual computador ela vai por causa de uma porta que foi escolhida para marcar a sessão e sabe a qual IP privado aquela sessão pertence. Há muito mais do que isso, mas esta é uma explicação de alto nível para entender o conceito de roteamento. Tenho certeza de que outros me corrigirão ou acrescentarão isso.
O que importa para a resposta à sua pergunta, sim, é possível, você só precisa saber o IP público do ponto final e a porta que a conexão precisa ser feita. O roteador será responsável por saber para qual computador encaminhar aquela porta para chegar ao servidor da rede privada (com base nas regras NAT).
Responder4
Não tenho certeza se estou entendendo corretamente, mas darei meu melhor palpite. Você perguntou "É possível estabelecer uma conexão com um PC controlado por um roteador?" Presumo que você esteja se referindo ao acesso remoto. Você pode usar algo como vnc ou área de trabalho remota ou algo assim. Se você está falando de dois PCs conectados pela Internet, dê uma olhada na VPN. Se você quer dizer um atribuindo um ip de outro, então isso seria uma conexão servidor/cliente e através de uma WAN teria que ser algo como uma VPN.
O pacote TCP contém as informações para o destino da LAN dentro do pacote.