O endereço Internet é composto por números de 32 bits, normalmente composto por 4 octetos (em decimal), ex:128.6.4.7.
Há no momento 3 tipos diferentes de endereços. O problema é que o endereço tem que indicar tanto a rede como o host dentro da rede. Percebeu-se que eventualmente haveriam muitas redes. Muitas delas seriam pequenas, mas provavelmente 24 bits seriam necessários para representar todas essas redes . Sentiu-se também que algumas redes muito grandes iriam precisar de 24 bits para representar todos os seus hosts. Isto representaria um endereço de 48 bits.
Mas os projetistas realmente queriam usar endereços de 32 bits. Então eles adotaram um truque. A suposição é que a maioria das redes serão pequenas. Então eles setaram três diferentes séries de endereços. Endereços começando de 1 até 126 usam somente o primeiro octeto para o número da rede. Os outros três octetos são disponíveis para o número do host. Assim 24 bits estão disponíveis para hosts. Estes números são usados para redes muito grandes. Mas só pode haver 126 dessas grandes redes. A Arpanet é uma, e há algumas poucas redes comerciais. Mas poucas organizações normais conseguem um desses endereços "classe A".
Para organizações não tão grandes, são usados endereços de "classe B" endereços de classe B usam os dois primeiros octetos para o número da rede. Assim o número da rede vai de 128.1 a 191.254. ( nós evitamos 0 e 255, por razões que veremos abaixo.) Nós também evitamos endereços começando por 127, já que ele é usado por muitos sistemas para propósitos especiais. Os últimos dois octetos são disponíveis para os endereços dos hosts. Isso suporta 64516 computadores, o que seria suficiente para a maior parte das organizações. (É possível pegar mais que um endereço classe B, se um não for suficiente).
Finalmente, endereços classe C usam três octetos para o número da rede, portanto indo de 192.1.1 a 233.254.254. Isto permite somente 254 hosts em cada rede, mas por outro lado permite que hajam muitas destas redes. Endereços acima de 223 são reservados para uso futuro, como classe D e E (que ainda não foram definidos).
Muitas grandes organizações acham conveniente dividir o número de suas redes em subredes.
Por exemplo, Rutgers tem um endereço de classe B, 128.6. Nós achamos conveniente usar o terceiro octeto do endereço para indicar em qual rede Ethernet está um determinado host.
Esta divisão não tem significado fora de Rutgers. Um computador em outra instituição trataria todos os datagramas endereçados para 128.6 da mesma maneira. Eles não olhariam para o terceiro octeto do endereço. Assim computadores fora de Rutgers não teriam diferentes rotas para 128.6.4 ou 128.6.5. Mas dentro de Rutgers, nós tratamos 128.6.4 e 128.6.5 como redes separadas.
De fato, gateways dentro de Rutgers têm entradas separadas para cada uma de suas sub redes, enquanto gateways fora de Rutgers tem somente uma entrada para 128.6.
Note que nós poderíamos fazer exatamente a mesma coisa usando um endereço classe C para cada rede Ethernet. No que diz respeito a Rutgers, seria igualmente conveniente termos vários endereços classe C. No entanto, usando endereços de classe C tornariam as coisa inconvenientes para o resto do mundo. Todas as instituições que quisessem conversar conosco teriam que ter uma entrada separada para cada uma de nossas redes. Se cada instituição fizesse isto, haveriam redes demais para qualquer gateway razoável tomar conta. Subdividindo uma rede classe B, nós escondemos nossa estrutura interna do resto do mundo, e evitamos este problema. Esta estratégia de sub rede requer recursos especiais no software de rede. Isto é descrito no RFC 950.
0 e 255 tem significados especiais. 0 é reservado para máquinas que não conhecem seus endereços. Em certas circunstâncias é possível que uma máquina desconheça o número da rede em que está, ou mesmo o seu próprio número de host. Por exemplo, 0.0.0.23 seria uma máquina que sabe que tem o número de host 23, mas não sabe em que rede.
255 é usado para "broadcast". Um broadcast é uma mensagem que você quer que todo o sistema da rede enxergue. Broadcasts são usados em algumas situações onde você não sabe com quem conversar. Por exemplo, suponha que você precise procurar um nome de host e pegar o seu endereço Internet. Algumas vezes você não sabe o endereço do servidor mais próximo. Neste caso você deve enviar uma requisição como broadcast. Há também casos onde um grande número de sistemas estão interesssados na informação. Neste caso é mais econômico enviar um único broadcast do que enviar datagramas individualmente para cada host que está interessado na informação. Para mandar um broadcast, você usa um endereço que é construído usando o seu endereço de rede, com um número para todos na parte do endereço correspondente ao número do host.
Por exemplo, se você está na rede 128.6.4, usaria 128.6.4.255 para broadcasts. Como isto é implementado depende do meio. Não é possível enviar broadcasts na Arpanet, ou em linhas ponto a ponto. No entanto isto é possível em redes Ethernet. Se você usar um endereço Ethernet com todos os seus bits l igados (todos 1), toda máquina na Ethernet irá prestar atenção neste datagrama.
Embora o endereço de broadcast oficial para a rede 128.6.4. seja 128.6.4.255, há alguns outros endereços que podem ser tratados como broadcasts por certas implementações.
Por conveniência o padrão também permite que 255.255.255.255.255 seja usado. Isto refere-se a todos os hosts da rede local. É geralmente mais simples usar o 255.255.255.255 ao invés de encontrar o número de rede para a rede local e formar um endereço de broadcast como 128.6.4.255.
Além disso, algumas implementações mais antigas podem usar o 0 ao invés do 255 para formar o endereço de broadcast. Tais implementações usariam o 128.6.4.0 ao invés de 128.6.4.255 como endereço de broadcast da rede 128.6.4.
Finalmente, algumas implementações antigas podem não entender sobre sub redes. Assim elas consideram que o número da rede sendo 128.6. Neste caso, elas irão assumir um endereço de broadcast 128.6.255.255 ou 128.6.0.0. Até que o suporte para endereços broadcasts sejam implementados apropriadamente, ele pode ser algo perigoso de se usar.
Já que o 0 e 255 são usados para endereços desconhecidos e broadcast, hosts normais nunca devem ter endereços contendo 0 ou 255. Endereços nunca devem começar com 0, 127 ou qualquer número acima de 223. Endereços violando essas regras são, algumas vezes, referenciados como "Marcianos", devido a rumores de que a Universidade Central de Marte está usando a rede 255...