# Introdução às Redes de Computadores/O protocolo IP

Os endereços físicos ( MAC) das placas de rede podem ser utilizados para comunicar-se com outras máquinas na própria rede, mas não além desta, pois o protocolo utilizado na camada física as limita. Para que distintas redes locais com tecnologias diferentes possam se comunicar é que foi criado o protocolo IP. Ou seja, este protocolo serve para abstrair os protocolos das camadas superiores (transporte e aplicação) da rede em que se encontram, tratando várias redes interconectadas como apenas uma.
Para conectar somente duas redes locais, normalmente um computador com duas placas de rede já basta. Este computador é comumente chamado de bridge, pois faz uma "ponte" entre as duas redes locais. Porém quando se deseja interligar várias LANs, o equipamento mais usado é um computador dedicado chamado roteador, cuja função principal é receber pacotes endereçados a redes diferentes da que estão e colocá-los na rede que esteja mais próxima de seu destino.

## O endereço IP

O endereço IP é um número de 32 bits, comumente exibido como octetos na base decimal (veja Conversão de base numérica) separados por pontos, dividido em um prefixo que identifica a rede onde está conectada a máquina e um sufixo que identifica cada máquina individualmente em sua rede. O endereço IP completo (prefixo da rede + sufixo da máquina) tem de ser único em todas as sub-redes que componham a rede maior.
Para melhorar o controle e o gerenciamento, os gestores dividiram os endereços IP na Internet em diversas classes com diferentes fronteiras entre o endereço da rede e o da máquina. Assim, cada rede, dependendo do número de máquinas que possuir, recebe um prefixo para as classes A, B ou C e gerencia o sufixo de forma que os endereços não se repitam, podendo também subdividir um sufixo em um novo endereço de sub-rede, caso esta passe a existir.
| Classe | 8 | 16 | 24 | 31 |
| A | Prefixo | Sufixo | Sufixo | Sufixo |
| B | Prefixo | Prefixo | Sufixo | Sufixo |
| C | Prefixo | Prefixo | Prefixo | Sufixo |
| D | Multicast | Multicast | Multicast | Multicast |
| E | Reservado para experimentação | Reservado para experimentação | Reservado para experimentação | Reservado para experimentação |
Portanto o espaço de endereçamento na internet é dividido da seguinte forma:
| Classe | Faixa de valores (primeiro octeto) | Número de endereços de rede | Número de máquinas em cada rede |
| A | 0 ~ 127 | 128 | 16.777.216 |
| B | 128 ~ 191 | 16.384 | 65.536 |
| C | 192 ~ 223 | 2.097.152 | 256 |
| D | 224 ~ 239 | - | - |
| E | 240 ~ 255 | ? | ? |
Este sistema de classes facilita o roteamento, pois dependendo da faixa em que se encontrar o primeiro octeto do endereço, se sabe quantos bits dele se referem a rede e quantos a máquina. Porém tira versatilidade do sistema. Fica-se limitado a 3 tamanhos de redes: grande (classe C), muito grande (classe B) ou exagerada (classe A). Conforme a internet crescia, se fez necessária a subdivisão dos espaços de endereçamento, para poder acomodar mais redes de menor tamanho. Então foi criado o CIDR (Classeless Interdomain Routing), que possibilita a utilização de qualquer número de bits para rede, devendo este número ser informado em um netmask.

## Máscaras de rede (endereçamento sem classe)

Netmask é a forma de se informar ao sistema operacional qual parte do endereço é referente à rede e qual é referente à máquina. Ele é formado com 1 na porção da rede do endereço e 0 na porção da máquina. Geralmente o netmask é escrito com o mesmo formato de um endereço IP (bits separados em octetos escritos na base decimal), mesmo não sendo o endereço.
Por exemplo, um netmask para uma rede de classe C é 255.255.255.0, já que apenas o último octeto dos endereços classe C são referentes à rede, os demais estão totalmente preenchidos por 1 pois (255)$_{10}$=(11111111)$_2$.
Os administradores frequentemente precisam subdividir o espaço de endereçamento recebido para a internet. Por exemplo: Suponha ter recebido um endereço de classe C 200.131.56 e precise separar o espaço para 4 sub-redes. Assim sendo, deve-se separar mais dois bits do último octeto para identificar as redes (00, 01, 10 e 11) e o netmask teria (11000000)$_2$ no último octeto; assim o netmask seria 255.255.255.192. Todos os endereços se iniciariam por 200.131.56, e teriam para o último octeto o seguinte:
| Sub-rede | De | Até |
| 1ª | (00000000)$_2$ = (0)$_{10}$ | (00111111)$_2$ = (63)$_{10}$ |
| 2ª | 01000000)$_2$ = (64)$_{10}$ | (01111111)$_2$ = (127)$_{10}$ |
| 3ª | (10000000)$_2$ = (128)$_{10}$ | (10111111)$_2$ = (191)$_{10}$ |
| 4ª | (11000000)$_2$ = (192)$_{10}$ | (11111111)$_2$ = (255)$_{10}$ |
O netmask, assim, é ideal para a extração do endereço de rede de um endereço IP. Basta um simples e (and) bit a bit entre o netmask e o endereço para a tarefa ser completada. Por esta tarefa ser realizada nos roteadores a cada pacote, para se decidir qual será a porta de destino, a eficiência é importante.
Entretanto, alguns sistemas usam uma grafia distinta desta, indicando o número de bits componentes do endereço de rede, por exemplo 200.131.56.207/24, onde o 24 após o endereço IP serve para indicar que os 24 primeiros bits do endereço referem-se a rede e, portanto, que os 8 restantes são referentes ao endereço da máquina.

## Entre a rede local e a de longa distância

A camada física possui um tipo próprio de endereçamento, portanto se faz necessária uma conversão do endereço IP para o protocolo utilizado nesta camada.

## Distribuição de Números IP no Brasil

Um número IP é constituído de quatro octetos, abrangendo assim, uma faixa de números que vai de 0.0.0.0 até 255.255.255.255. Deste espaço total, o Brasil foi conseguindo diversas parcelas no decorrer dos anos. Aproximadamente duas dezenas de redes foram alocadas no padrão chamado "class B", que fixa os dois primeiros octetos e permite que os dois últimos sejam usados ao talante de quem as recebeu. Uma rede "class B" tem, portanto, a possibilidade de 255*255 = 65000 números (máquinas) distintos. As redes "B" obtidas pelo Brasil foram solicitadas por instituições de ensino e pesquisa diretamente ao InterNIC. O grau de eficiência em seu uso hoje varia grandemente. Da USP ao Observatório Nacional, o uso dos "class B" vai de próximo a 10% a menos de 0,1% do número possível de endereços.
A partir de 1993 o InterNIC passou a não mais conceder redes tipo "B", dado seu precário aproveitamento e a iminente escassez de números para todos, e começou então a distribuição intensa de redes classe "C", onde apenas o último octeto pode ser variado pelo cliente. São redes que comportam teoricamente 255 endereços (máquinas).
A crescente pulverização do espaço de endereços em pequenas redes "C" levou a um outro, e não menos grave, problema: o crescimento descontrolado das tabelas de rotas. Afinal, a cada rede ("B" ou "C") pode corresponder uma rota específica e, portanto, cumpre alocar mais um elemento nas tabelas dos roteadores. A exigência de cada vez mais memória nos roteadores centrais da rede ameaçou a Internet com um bloqueio geral. A forma de contornar essa ameaça foi lançar mão de "agregados" de "class C", chamados blocos CIDR, ou "Classless Inter-Domain Routing". Usando o protocolo adequado a cada agregado associa-se uma única rota, e assim economiza-se memória nos roteadores. Daí advem o seguinte problema: a "coordenação" que um agregado CIDR precisa ter para ser efetivo. Ao se atribuir um agregado a uma rota, uma linha internacional que vai dos EUA ao Brasil por exemplo, é necessário que todos os endereços desse agregado sejam, de fato, atingíveis por essa rota. Assim, é quase obrigatório delegar a redistribuição do agregado para quem cuida da rota, de forma que ele distribua os endereços contidos no agregado aos usuários de sua rota.
O Brasil ganhou inicialmente um agregado de 1024 classes "C", de 200.17.0.0 até 200.20.0.0. Esse agregado foi dividido em dois, um associado à rota pela linha da Fapesp e outro associado à rota pela linha da UFRJ. Com a entrada da área comercial no cenário da Internet brasileira, foram requisitados mais endereços dentro da faixa que cabia ao Brasil. O InterNIC respondeu que a faixa de 200 estaria alocada à América Latina como um todo. Fez-se ver a eles que não existia maneira de coordenar a alocação de blocos da América Latina inteira, visto que existiam diversas portas de entrada (linhas internacionais) e diversas administrações locais. O InterNIC respondeu repassando ao Brasil metade do espaço latino-americano, que corresponde a faixa que vai de 200.128.0.0 até 200.255.0.0. São 32000 classes "C", além do que já havia sido anteriormente alocado. Isto corresponde a 8 milhões de endereços distintos que, se forem aproveitados em 10%, redundarão em 800.000 máquinas conectáveis. Note-se que o Brasil foi o primeiro, e até agora, único país da América Latina a ter autonomia para gerir seu espaço total e não precisa mais recorrer ao InterNIC a cada nova atribuição de endereço dentro dos agregados que recebeu. Essa autonomia conferiu agilidade, eficiência, e sobretudo, credibilidade, a par de responsabilidades.
Autor: Demi Getschko Em 20/03/1997