O
protocolo IP possui um grupo de endereços utilizados para finalidades especiais na configuração das redes. Esses endereços têm uma função específica e não devem jamais ser atribuídos a um host. Os endereços especiais são citados na RFC 1700.
Do ponto de vista do endereçamento IP uma rede é uma faixa contínua de endereços, usadas por hosts que compartilham o barramento entre si. Isso permite que um pacote possa ser enviado de um host para outro, dentro da mesma rede, sem necessidade de roteamento.
Levando em consideração que um endereço IP é formado por duas partes, uma relativa à rede e outra a um host nesta rede, podemos utilizar a notação simplificada { <rede>, <host> } para indicar um endereço IP especial. Esses campos podem assumir os valores <0> ou <-1>. Sendo que, a notação <-1> indica que todos os bits no campo estão configurados como 1 e a notação <0> indica que todos estão configurados como 0. São endereços especiais:
Cada um dos endereços especiais têm uma função particular dentro da configuração de uma rede. Vamos analisar o funcionamento destes endereços e entender a razão de sua existência.
Suponha uma típica rede classe C, com uma faixa de endereços IP entre 192.168.0.0 e 192.168.0.255. Essa faixa contínua de endereços aloca 256 endereços IP. Entretanto, destes somente 254 estão realmente disponíveis para atribuição aos hosts. O primeiro e o último endereço de uma faixa de endereços IP usados para definir uma rede (em qualquer classe) são sempre reservados para fins especiais.
O primeiro endereço é usado para definir o número da própria rede e o último para definir o endereço de difusão dirigida (directed broadcast). Assim, para se referenciar à rede basta configurar o espaço reservado para o host com o menor valor possível para a faixa. Neste caso, o valor será zero como, por exemplo, 192.168.0.0 na notação decimal ou na notação simplificada { rede, 0 }.
O endereço especial { rede, -1 } significa que todos os bits relativos ao campo do host estão definidos como 1. Esse endereço especial recebe o nome de endereço de difusão dirigida (directed broadcast) ou simplesmente endereço de broadcast.
Para entender a função do endereço de broadcast é preciso compreender dois tipos de tecnologias de transmissão utilizadas em redes de computadores. Nas redes do tipo ponto-a-ponto as conexões ocorrem entre pares de hosts. Esse tipo de tráfego é chamado de unicast. Nessas redes, todo o tráfego é restrito aos hosts diretamente envolvidos na comunicação. Podemos pensar na transmissão unicast como um canal privado utilizado pelas partes envolvidas na comunicação. Um exemplo de ligação ponto-a-ponto com tráfego do tipo unicast é a ligação de dois roteadores através de uma linha privada.
Outro tipo de tráfego de rede é chamado difusão ou broadcast. Nas redes por difusão (uma LAN Ethernet, por exemplo) um host envia um pacote no barramento e todos demais hosts do segmento o recebem. Entretanto, apenas o host de destino retira o pacote do barramento, trata e, se for o caso, responde. Os demais hosts ignoram o pacote.
Existe outro tipo de tráfego por difusão denominado multidifusão ou multicast. Nesse tipo de tráfego de rede os pacotes são enviados também por difusão. A diferença é que, agora, um grupo específico de hosts da rede pode receber e tratar os pacotes. A multidifusão é utilizada em situações em que determinados tipos de pacotes devem ser enviados para alguns hosts de uma rede.
Por exemplo, quando precisamos descobrir qual host fornece um certo serviço. O modo mais simples de fazer isso é endereçar um pacote com o endereço de broadcast da rede e enviá-lo solicitando ao hospedeiro do serviço que se identifique. O host que fornece o serviço irá responder à solicitação e os demais irão ignorar o pacote.
Podemos afirmar que o endereço de broadcast é sempre o último endereço dentro de uma faixa de endereços IP que definem uma rede. O endereço de broadcast não pode ser atribuído a nenhum host da rede e somente pode ser usado como endereço de destino, jamais como endereço de origem de um pacote.
Para descobrir o endereço de broadcast de uma rede basta definir a parte relativa ao host com o maior endereço possível de host dessa rede. Isso equivale a definir a parte de host do endereço com todos os bits marcados como 1. Por convenção, a notação simplificada utilizada para indicar o endereço de broadcast é "menos um" <-1>. Por exemplo, na rede 192.168.0.0 (classe C) o endereço de broadcast será 192.168.0.255, pois esse é o maior endereço de host possível nessa faixa de endereços IP.
Pacotes endereçados ao broadcast direto são roteáveis já que é possível determinar sua rede de destino. Todavia, por questões de segurança os administradores de rede, muitas vezes, não aceitam tráfego broadcast vindo de fora da rede. Isso visa evitar ataques de negação de serviço (DoS - Denial of Service) que utilizam mecanismos de broadcast direto para sondar a rede.
A RFC 1700 descreve o broadcast restrito, representado pelo endereço IP 255.255.255.255 na notação decimal ou { -1, -1 } na notação simplificada. Neste caso, tanto o campo rede quanto o de host estão totalmente preenchidos com 1. Os pacotes endereçados ao broadcast restrito não podem atingir outras redes. Pois, como não é possível determinar a rede de destino do pacote ele não pode ser encaminhado pelo roteador. Este endereço somente pode ser usado como endereço de destino e nunca como origem. Sua função é ser usado como broadcast restrito em uma LAN.
O endereço { 0, host } é utilizado em situações em que um host conhece seu número de host, mas desconhece qual é a sua rede. Endereços IP cuja parte da rede seja definida como zero, se referem à rede local. Este endereço somente pode ser usado como endereço de origem e nunca como destino.
O endereço 0.0.0.0 ou { 0, 0 } também é reservado para fins especiais. Durante a inicialização (boot) um host que utiliza endereçamento dinâmico DHCP - Dynamic Host Configuration Protocol - precisa enviar pacotes ao servidor DHCP para obter um endereço IP. Todavia, este host não sabe seu endereço de rede e sequer seu endereço de host, ainda assim ele é capaz de inicializar. Atribuindo a si mesmo o endereçamento 0.0.0.0, uma placa de rede é capaz de se referenciar à própria rede se identificado como "este host nesta rede" e, deste modo, obter a configuração do servidor DHCP. Substituindo em seguida esse endereço provisório e inválido, pelo endereço válido atribuído por DHCP.
Outro endereço especial (na verdade uma rede inteira) vai de 127.0.0.0 até 127.255.255.255 em notação decimal ou { 127, host } em notação simplificada. Esta faixa de endereços é reservada para a função de laço de retorno (loopback).
A principal função da interface de loopback é permitir que programas em desenvolvimento e que façam uso da pilha TCP/IP sejam testados sem interferir no funcionamento da rede. Isso significa que pacotes enviados para estes endereços não são transmitidos para o barramento da rede e sim direto da pilha TCP/IP para sua própria interface de rede. Estes pacotes são tratados como pacotes de entrada.
Outra função do loopback é servir de endereço para a execução local de um serviço. Tornando-o invisível aos demais hosts da rede.
Tradicionalmente, o endereço 127.0.0.1 é usado como endereço de loopback e recebe o nome de localhost. Todavia, qualquer endereço na rede { 127, 0 } poderia ser usado. Na prática, isso representou um desperdício de todos esses números de hosts, já que não podem ser atribuídos a outras funções.