Os pacotes não sabem nada - eles só carregam o endereço de destino; o caminho percorrido é decidido pelas tabelas de roteamento que são mantidas em seu computador, seu roteador e outros roteadores na Internet.
Quando um pacote é enviado do seu computador ...
-
O SO primeiro verifica se o endereço de destino está atribuído a qualquer interface de rede no seu computador. Se sim, o sistema operacional consome-o em si - o pacote não vai para lugar algum fora do computador.
-
Caso contrário, ele procura na tabela de roteamento todas as rotas que correspondem ao endereço de destino. Pode haver vários - o sistema operacional escolhe aquele com o maior "prefixo" correspondente.
-
Se não houver uma rota que corresponda ao endereço de destino, o pacote será descartado.
Por exemplo, se o seu próprio endereço for 192.168.1.1 ...
-
A tabela de roteamento do seu computador pode se parecer com:
-
10.11.12.0/24pode ser alcançado diretamente sobreppp0interface -
192.168.1.0/24pode ser alcançado diretamente sobreeth0interface -
10.42.0.0/16pode ser alcançado passando por10.11.12.50 -
0.0.0.0/0pode ser alcançado passando por192.168.1.254
O número após
/informa quantos bits comparar; veja notação do CIDR . Por exemplo. se for/16, os primeiros 16 bits de ambos os endereços (começando pelo bit mais à esquerda) devem ser iguais. Se for/0, nada é comparado, portanto, a rota corresponderá a qualquer endereço - essa é a "rota padrão".Tabelas de roteamento reais também têm métricas - por exemplo, se você conectou um laptop à LAN via Ethernet e Wi-Fi, ele teria duas rotas idênticas à mesma rede, mas a rota Ethernet teria métrica mais baixa, já que é mais rápido que o WiFi. Eu omiti as métricas aqui para simplificar.
-
-
se você pingar
192.168.1.5, o sistema operacional:- procure rotas para
192.168.1.5 - encontre rotas
192.168.1.0/24e0.0.0.0/0 - escolha a rota
192.168.1.0/24, pois ela tem um prefixo maior (24 > 0) - veja que a rota aponta para a interface
eth0 - envia o pacote pelo
eth0cable
O pacote passaria por Ethernet (ou WiFi, ou ...) diretamente para o computador de destino.
- procure rotas para
-
se você pingar
74.125.224.163, o sistema operacional:- procure rotas para
74.125.224.163 - encontre a rota
0.0.0.0/0 - veja que a rota tem o gateway
192.168.1.254 - procure as rotas para
192.168.1.254que também são acessadas diretamente (sem passar por um segundo gateway) - encontre a rota
192.168.1.0/24 - veja que a rota aponta para a interface
eth0 - envia o pacote pelo
eth0cable
O pacote passa por Ethernet (ou WiFi, ou ...) para
192.168.1.254(seu roteador doméstico), que então repete o mesmo processo usando suas próprias tabelas de roteamento e envia o pacote para o próximo salto (seu Roteadores do ISP). - procure rotas para
(Então, se você tivesse a mesma rede que o Google, não conseguiria mais acessar o Google, pois o caminho para sua própria rede sempre seria escolhido primeiro.)