Antes de mais há que perceber que o IP é um protocolo L3 e não um simples número.
Actualmente o nivel 3 da Internet, também conhecido por nível de rede, é a camada que presta serviços ao L4 e pede serviços ao L2.
Basicamente a função do L3 é encapsular os pacotes TCP ou UDP da L4 e fazer o chamado routing, ou seja, arranjar o caminho óptimo para o destino, aqui podem-se usar várias estratégias para conhecer a rede.
No fim disto tudo o L3 terá de passar um pacote para o L2 com os seus dados, e é aqui que entra o endereço ip.
Para isto tudo funcionar definiu-se nos primórdios da internet que cada máquina teria de ter um endereço de ip único, á semelhança do endereço MAC que é usado pela L2.
E aqui criou-se um identificador binário com 32bits, ou seja 2^32 combinações únicas possíveis. Além disto separou-se estes endereços em classes.
Classe A : 1º bit a 0 , ficando com 24bits para identificar o Host e 8 bits para a rede
Classe B : bits iniciais 10 , ficando com 16 bits para host e 16 para rede.
Classe C : Bits iniciais 110, cm 24bits para rede e 8 para host
Aqui pode-se já ver um problema temos endereços da classe A que permitem 2^8 redes mas permitem um enorme numero de máquinas na rede algo como 2^24. E a classe C é o oposto desta muitas redes e poucos computadores por rede.
E no meio temos a classe B que está meio meio.
A estes endereços disponíveis tiram-se alguns reservados como o endereço de difusão loopback, privados etc.
Nota: os endereços privados não são regulados pela ICANN, mas estes endereços nunca podem ser usados para construir um pacote IP para fora da rede.
Isto resultava bem no inicio quando eram apenas umas centenas de instituições que se ligavam á internet.
Quando esta se massificou houve a necessidade de acabar com os endereços desperdiçados nas classes, principalmente na classe C, que só permitia 2^8 máquinas por rede.
Então criou-se o Classless Addressing.
A partir deste ponto a noção de classe de endereço praticamente acabou, o que provocou uma mudança relativamente grande nas tabelas de encaminhamento dos routers e na forma como os ip's eram atribuídos. Além disso teve-se de definir a mascara de rede, basicamente a mascara de rede indica que parte do endereço ip diz respeito à rede e qual a parte que diz respeito ao host. Agora uma instituição podia comprar um único endereço de classe C e construir centenas de sub-redes em cima dele
Isto criou muitos problemas que tiveram de ser resolvidos entre os quais.
-Tabelas de encaminhamento dos routers deixavam de ser válidas
-Teve-se de se criar o DHCP, pois neste caso é possível duas máquinas terem o mesmo endereço ip.Mas nunca duas máquinas terem o mesmo endereço ip na mesma rede! O DHCP previne estes casos, mas traz um inconveniente que é ter de adicionar um servidor DHCP a todas as redes.
-Dentro da rede usam-se endereços privados, estes endereços nunca podem sair num pacote para fora da rede.!!
Por exemplo o servidor DHCP do vosso ISP atribui-vos um endereço publico e dentro da vossa rede cada máquina tem um endereço privado, normalmente de "classe C" do tipo 192.xxx
Todos os pacotes para a vossa rede, seja para que máquina for tem sempre o endereço público.
- Devido a endereços privados não saírem para fora da rede criou-se as NATS, mas estas tem algumas desvantagens.
Desvantagens das NAts:
-Não cumprem com a ideia original da pilha de comunicaçõs que diz que um protocolo do nivel X não tem de conhecer a estrutura de dados de um nivel Y.
-A nat baseia-se na estrutura de dados do TCP e UDP, caso estes mudem as NAts simplesmente deixam de funcionar.
Mas como estas soluções todas já estavam saturadas, avançou-se com o IPV6, este já começou a ser estudado ainda antes das NAts e ips sem classes.
Agora em vez de 32bits para o endereço ip temos 128bits, ou seja 2^128 combinações possíveis.Além disso a estrutura do pacote IP também foi alterada, acrescentara-se campos novos e retirara-se outros que já não eram usados.
Não sei se me expliquei bem, mas um bom sitio para estudar isto, é num dos livros do Tannenbaum.
