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/24
pode ser alcançado diretamente sobreppp0
interface -
192.168.1.0/24
pode ser alcançado diretamente sobreeth0
interface -
10.42.0.0/16
pode ser alcançado passando por10.11.12.50
-
0.0.0.0/0
pode 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/24
e0.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
eth0
cable
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.254
que 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
eth0
cable
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.)