SubEndereços IP {IP SubAddresses.doc} A multiplicação de subredes de área local (LANs) detidas por uma única organização veio colocar problemas à estrutura de endereços - hierárquica a dois níveis - acabada de discutir. Considere-se, com efeito, algum sítio de uma rede de Área ampla (WAN) que, mediante uma ou várias gateways, viabiliza o acesso a várias subredes locais. Como conceber o endereço-IP de um vulgar computador ligado a uma dessas subredes? Várias soluções se apresentam: Uma solução passaria pela atribuição, pelo NIC, de um Número de Rede a cada subrede… mas intui-se a subsequente explosão no tamanho das tabelas de encaminhamento nos nós da WAN… Para o evitar, poderia, antes, atribuir-se o mesmo Número de Rede a todas as subredes, e atribuir um Número a cada computador, independentemente da LAN a que pertencesse… mas intui-se a complexidade adicional necessária para se discernir a LAN em que reside um computador… Uma terceira solução, simples e eficiente, e que acabou por vingar (cfr RFC 950), é a seguinte: do ponto de vista do exterior, a todas aquelas subredes deverá corresponder um mesmo Número de Rede; quanto a algum computador interligado a alguma delas, o seu endereço local deve ser pensado como desenrolando-se em duas partes: o Número da Subrede a que está ligado, e o Número de Computador nessa subrede, cfr. esquema abaixo representando um endereço-IP completo: Número de Rede Número de Subrede Número de Computador Na WAN, o encaminhamento é feito com base no Número de Rede; já na rede de subredes, o encaminhamento até à subrede particular é feito com base num Número estendido, consistindo no par Número de Rede // Número de Subrede. Admitindo-se que não se altera o número de bits ocupado pelo Número de Rede (para não alterar o software de encaminhamento no seio da WAN), um par de questões fica por esclarecer: • qual o comprimento a atribuir ao Número de Subrede; fixo ou variável? • em que posição, no seio do Endereço completo deve ele aparecer? ao centro, como se figura acima, ou, antes, à esquerda ou à direita?… como se estrutura? Em ordem a proporcionar às organizações a maior flexibilidade no estabelecimento dos endereços das subredes e computadores -, o método enfim preferido foi o de usar uma Máscara de Endereço: a cada subrede está associada uma Máscara de bits que precisa, no endereço total, quais os bits que especificam a subrede a que está interligado. Na prática, essa Máscara consiste em 32 bits, assim preenchidos: - 0 nas posições reservadas para veicular o endereço local do computador; - 1 em todas as outras (isto é, que veiculam a rede e subrede). Por exemplo, a máscara 11111111 11111111 11111100 00000000 significa que os 22 primeiros bits do endereço-IP identificam a rede e subrede, e os restantes 10 identificam o computador. Com este método, os bits do Número de uma Subrede não necessitam estar adjacentes uns aos outros, como se exemplificou acima: podem estar dispersos no seio do endereço. Tal máscara, ignorada no seio da Internet, precisa ser conhecida apenas localmente; com ela, advém facilitado, para um computador, discernir a quem enviar um datagrama destinado a um computador no sítio em questão: começa por determinar o And entre a Máscara e o seu próprio Endereço; depois, confronta-o com o And entre a Máscara e o Endereço do destinatário; se fôrem iguais, envia-o directamente, que o interlocutor deve estar conectado à mesma Rede-Local; caso contrário, envia-o para a gateway de acesso à subrede de destino. Tabela de Endereços {Address Table.doc} Cada gateway necessita deter uma tabela que estabeleça o que fazer com um datagrama que entretanto lhe seja entregue. No caso mais geral, essa gateway providenciará o acesso a outras gateways e, subentendido que ela dá acesso a alguma rede local, aos computadores que lhe estão ligados. Depreende-se, por conseguinte, que a tabela acima referida conterá dois tipos de entradas: - entradas do tipo (rede,-), concebidas a propósito de datagramas que são destinados a outra rede que não a local: para cada rede remota conhecida, caracterizam a interface física que dá acesso à gateway por onde há-de prosseguir um datagrama cujo destino é tal rede; - entradas do tipo (-,computador), concebidas a propósito de datagramas que são destinados à rede local a que a gateway dá acesso: caracterizam a porta local a que está interligado o computador a que se destina o datagrama. Quando um datagrama chega à gateway, esta deduz, do respectivo endereço de destino, qual a rede última a que o datagrama deve ser enviado; - se se trata de uma outra rede, remota, consulta as entradas do primeiro tipo, (rede,-), e despacha o datagrama para a interface física que lhe está associada (se, eventualmente, não dispuser, na tabela, de entrada correspondente à rede de destino do datagrama, despacha-o para uma gateway que, supostamente, detenha mais informações…); - ao invés, se se trata da própria rede local a que a gateway dá acesso, consulta as entradas do segundo tipo, (-,computador), e envia o datagrama directamente para a interface física associada ao computador de destino do datagrama. Abra-se um parêntesis para se apreciar a simplicidade do algoritmo acima - e, particularmente, a contenção do tamanho das tabelas: não existem entradas do tipo (rede,computador), a gateway necessita apenas conhecer o que fazer com redes remotas e computadores locais. Aquando da introdução de subredes, a alteração a fazer às tabelas é diminuta: é bastante a substituição de entradas do segundo tipo por entradas dos tipos (-,subrede,-) e (-,-,computador): o que a gateway necessita agora é discernir como fazer chegar os datagramas às demais subredes locais e aos seus próprios computadores locais. Concretamente, para uma gateway discernir como deve enviar um datagrama destinado a um computador no sítio em questão: começa por determinar o And entre a Máscara e o seu próprio Endereço; depois, confronta-o com o And entre a Máscara e o Endereço do destinatário; se fôrem iguais, envia-o directamente, que o interlocutor deve estar conectado à mesma subrede local; caso contrário, há que enviá-lo para a gateway de ligação à subrede de destino. Considere-se, por ex., numa rede de subredes cuja Máscara é 255.255.252.0, uma gateway, dando acesso à rede de endereço 131.12.28 (que, pode o leitor conferi-lo, é a subrede 7 da rede 131.12); - admita-se que lhe foi entregue um datagrama destinado ao endereço 131.12.29.15; executando o And entre este e a Máscara, obtém-se 131.12.28.0 - certificando que o datagrama se destina à própria subrede a que a gateway dá acesso; então, pode enviar-se directamente o datagrama para o computador de destino (no caso, o de endereço local 1.15); - admita-se agora que foi entregue à gateway um datagrama destinado ao endereço 131.12.20.15; executando o And entre este e a Máscara, obtém-se 131.12.20.0 - certificando que o datagrama se destina a uma outra subrede, que não aquela a que a gateway dá acesso (no caso, a subrede 5); há então que enviá-lo para a gateway que dá acesso a essoutra subrede.