Assim a função da camada IP é descobrir como `rotear' os pacotes para seu destino final. Para tornar isto possível, cada interface na rede precisa de um `endereço IP'. Um endereço IP consiste de quatro números separados por pontos, como `167.216.245.249'. Cada número está entre zero e 255.
Interfaces na mesma rede tendem a ter endereços IP vizinhos. Por exemplo, `167.216.245.250' fica ao lado da máquina com endereço IP `167.216.245.249'. Lembre também que um roteador é um nó com interfaces em mais de uma rede, assim o roteador terá um endereço IP para cada interface.
Assim, a camada IP do kernel do Linux mantém uma tabela de diferentes `rotas', descrevendo como chegar aos diferentes grupos de endereços IP. O mais simples destes é chamado de `rota default' ou `rota padrão': se a camada IP não sabe o que fazer, esta é a rota para a qual enviar os pacotes. Você pode ver uma lista de rotas usando `/sbin/route'.
As rotas podem ou apontar para um link, ou um nó em particular que é conectado a outra rede. Por exemplo, quando você disca para o provedor de Internet, a tua rota default irá apontar para o link do modem, por que é lá onde o mundo inteiro está.
Rusty's ISP's ~~~~~~~~~~~~
Modem Modem { }
o------------------o { The Internet }
{ }
~~~~~~~~~~~~
Mas se você tem uma máquina permanente em sua rede que conecta ao mundo exterior, é um pouco mais complicado. No diagrama abaixo, minha máquina pode falar diretamente às máquinas de Tridge e Paul, e para o firewall, mas precisa saber que os pacotes destinados para o resto do mundo vão para o firewall, que irá então passar os mesmos adiante. Isto significa que você tem duas rotas> uma que diz `se está em minha rede, mande diretamente para ela' e uma rota default que diz `caso contrário, mande para o firewall'.
o Tridge's
| Work Machine ~~~~~~~~~~~~
Rusty's | { }
Work Machine o--------+-----------------o--{ The Internet }
| Firewall { }
| ~~~~~~~~~~~~
o Paul's
Work Machine
Existe mais um último detalhe: existe uma notação padrão para abrupar endereços IP, algumas vezes chamada de `endereço de rede' ou `network address'. Exatamente como um número de telefone pode ser dividido em código de área e o resto, podemos dividir um endereço IP em um prefixo de rede e o resto.
É comum as pessoas falar sobre `a rede 1.2.3', significando todos os 256 endereços de 1.2.3.0 a 1.2.3.255. Ou se esta não for uma rede grande o suficiente, eles podem chamar ela de `rede 1.2', o que significa todos os endereços de 1.2.0.0 a 1.2.255.255.
Normalmente nós não escrevemos `1.2.0.0 - 1.2.255.255'. Em vez disto, nós abreviamos isto para `1.2.0.0/16'. Esta notação esquisita `/16' (que é chamada de `netmask' ou `máscara de rede') pede uma pequena explicação.
Cada número entre os pontos em um endereço IP é na verdade um número de 8 dígitos binários (00000000 a 11111111): escrevemos o mesmo na forma decimal para tornar o mesmo mais legível para humanos. O `/16' significa que os 16 primeiros dígitos binários são o endereço de rede. Em outras palavras, a parte `1.2.' é a rede (lembre: cada dígito representa 8 dígitos binários). Isto significa que qualquer endereço IP começando com `1.2.' é parte da rede: `1.2.3.4' e `1.2.3.50' são, enquanto `1.3.1.1' não.
Para tornar a vida mais fácil, geralmente usamos redes terminando em `/8', `/16' e `/24'. Por exemplo, `10.0.0.0/8' é uma grande rede contendo qualquer endereço de 10.0.0.0 a 10.255.255.255 (mais de 16 milhões de endereços!). 10.0.0.0/16 é menor, contendo somente endereços IP de 10.0.0.0 a 10.0.255.55. 10.0.0.0/24 é ainda menor, contendo endereços de 10.0.0.0 a 10.0.0.255.
Para aumentar a confusão, existe outra forma de escrever netmasks. Podemos escrever elas como endereços IP:
10.0.0.0/255.0.0.0
Finalmente, é importante notar que o endereço IP mais alto em qualquer rede é reservado como sendo o `endereço de broadcast', que pode ser usado para mandar uma mensagem a todos na rede ao mesmo tempo.
Aqui temos uma tabela de máscaras de rede:
Short Full Maximum Comment
Form Form #Machines
/8 /255.0.0.0 16,777,215 Used to be called an `A-class'
/16 /255.255.0.0 65,535 Used to be called an `B-class'
/17 /255.255.128.0 32,767
/18 /255.255.192.0 16,383
/19 /255.255.224.0 8,191
/20 /255.255.240.0 4,095
/21 /255.255.248.0 2,047
/22 /255.255.252.0 1,023
/23 /255.255.254.0 511
/24 /255.255.255.0 255 Used to be called a `C-class'
/25 /255.255.255.128 127
/26 /255.255.255.192 63
/27 /255.255.255.224 31
/28 /255.255.255.240 15
/29 /255.255.255.248 7
/30 /255.255.255.252 3