Como os PCs informam qual conexão de rede usar para se conectar à Internet?

2

Se o seu PC (assumir o Windows) estiver conectado através de uma LAN com fio e tiver um dongle USB que forneça a Internet 3G, como seu PC saberá qual conexão usar ao navegar na Web? O linux segue as mesmas regras do windows?

    
por rumz 09.09.2010 / 15:24

2 respostas

2

Sempre que várias conexões de rede estão envolvidas (em qualquer sistema operacional), a tabela de roteamento identifica qual conexão usar.

Vou explicar a tabela de roteamento usando um exemplo do Linux, mas o Windows é efetivamente o mesmo. A principal diferença é como ele rotula as interfaces.

Digamos que você tenha 3 conexões de rede conectadas a redes diferentes, como:

eth0 -> 10.0.0.0/24
eth1 -> 172.16.0.0/24
eth2 -> 192.168.0.0/24

Por padrão, conforme seu sistema configura as conexões de rede, ele adicionará rotas para cada uma dessas redes à sua tabela de roteamento. Aqui está um exemplo de tabela de roteamento para um servidor com as conexões mostradas acima:

Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
10.0.0.0        0.0.0.0         255.255.255.0   U     0      0        0 eth0
172.16.0.0      0.0.0.0         255.255.255.0   U     0      0        0 eth1
192.168.0.0     0.0.0.0         255.255.255.0   U     0      0        0 eth2
169.254.0.0     0.0.0.0         255.255.0.0     U     0      0        0 eth0
0.0.0.0         10.0.0.1        0.0.0.0         UG    0      0        0 eth0

Portanto, se você quiser se conectar a uma dessas redes, seu sistema Linux decidirá qual conexão usar com base na rede de destino. Se você deseja se conectar a um servidor com o IP 10.0.0.233, ele usará eth0. Se você quiser se conectar ao 192.168.0.4, ele usará o eth2.

Então, e as redes que não são especificamente listadas na tabela de roteamento? Bem, é aí que entra a rota padrão. Observe a última linha nessa tabela de roteamento:

Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
...
0.0.0.0         10.0.0.1        0.0.0.0         UG    0      0        0 eth0

A versão curta é que qualquer tráfego destinado a uma rede que não esteja especificamente listada na tabela de roteamento será enviado pela rota padrão. No exemplo acima, isso é eth0, enviando especificamente para o roteador em 10.0.0.1.

A versão mais longa é que as decisões de roteamento são baseadas no tamanho do prefixo da rede. Um determinado pacote seguirá a rota com o destino correspondente mais específico. Aqui está uma lista de exemplo de redes na notação CIDR que variam de mais a menos específicas:

10.100.4.0/24  <-- Most specific
10.100.0.0/16
10.0.0.0/8
0.0.0.0/0      <-- Least specific

Assim, dado um IP de destino de 10.100.6.231, o intervalo de correspondência mais específico na lista acima é 10.100.0.0/16, então a rota para essa rede seria seguida. Se o destino for 144.92.12.24, o intervalo de correspondência mais específico será 0.0.0.0/0 (que é a rota padrão). Depois que a decisão de roteamento é feita, o sistema enviará o tráfego pela conexão de rede apropriada.

Isso ficou um pouco longo, mas espero que isso explique as coisas. Em geral, a rota padrão decide qual conexão o tráfego da Internet passará. A rota padrão é configurada de forma diferente no Windows versus Linux, mas, no final das contas, tudo funciona no mesmo mecanismo de roteamento subjacente.

    
por 09.09.2010 / 17:52
1

Windows usando a ordem de vinculação

Esta é basicamente uma lista ordenada de conexões para tentar. O Windows tentará a primeira conexão e, se malsucedido, irá para o próximo, etc. Para a Internet, ele quase sempre usará o primeiro. A segunda conexão pode ser usada se você estiver em uma LAN e em uma WAN, e a segunda NIC se conecta a um determinado esquema de IP (192.168.4.X por exemplo) que não faz parte da primeira NIC.

Eu não sei o suficiente sobre redes Linux para resolver isso, mas algumas pesquisas rápidas mostram que ele pode funcionar de forma semelhante. Vou verificar mais um pouco e voltar com uma edição se tiver uma resposta definitiva.

EDITAR:

A resposta do

baumgart abaixo é melhor para o Linux ...

    
por 09.09.2010 / 15:30