Baixe o app para aproveitar ainda mais
Prévia do material em texto
Redes de Computadores Prof. M.Sc Fabiano Costa Teixeira U N I D A D E 4 4 Camada de Rede 4.1 Considerações Iniciais Na unidade de ensino anterior foi tratada a camada de enlace. Com a tecnologia Ethernet foi visto como é realizada a comunicação entre computadores adjacentes. No entanto, isso não basta para a construção de redes de computadores mais complexas, pois é preciso que computadores geograficamente separados e sem um enlace em comum entre eles sejam capazes de se comunicar. A camada de rede tem a função de permitir que a comunicação possa ser estabelecida independentemente da quantidade de enlaces que são necessários para que dois equipamentos possam trocar dados: essa tarefa é denominada de roteamento. Dessa forma, talvez, essa seja a unidade de ensino que os estudantes mais gostem de tomar conhecimento, pois é verificado como as coisas são possíveis na mais famosa rede que existe: a INTERNET. São fornecidas algumas animações que ilustram algumas situações. Recomenda-se que elas sejam vistas para facilitar a compreensão dos assuntos aqui abordados. 4.2 História Como tudo na vida, as redes de computadores também possuem uma história. Em anos passados os sistemas públicos de telefonia eram constituídos de uma maneira bastante organizada e, por conseqüência, centralizada [1]. Veja a figura 1: nesse exemplo era inevitável a existência de um elemento centralizador que constituía um único caminho entre dois elementos. Isso era uma enorme dor de cabeça para muita gente, principalmente os militares. Por que? Imagine que o sistema da figura 1 representa uma infra-estrutura de comunicação utilizada em um país durante uma guerra. Se o ponto central sofresse uma ataque e fosse destruído haveria a desconexão entre inúmeros pontos porque não havia um caminho alternativo [1]. Figura 1: Organização de uma rede de computadores com elemento centralizador. Baseado em [1] Com esse problema a ser resolvido o requisito era a construção de uma rede que apresentasse uma estrutura não centralizada e com diferentes possíveis caminhos entre dois elementos, formando algo parecido com a imagem da figura 2. Figura 2: Estrutura com caminhos diferentes entre dois nós. Baseado em [1] Para isso, por volta de 1967, a agência norte americana para projetos avançados de pesquisa (ARPA), sob o comando do então diretor o Sr. Larry Roberts, começou a pesquisar formas de construir uma rede capaz de superar panes em determinados equipamentos. Essas pesquisas culminaram na criação da ARPANET. A ARPANET já apresentava características muito interessantes, no entanto possuía restrições quanto à comunicação entre redes diferentes, o que motivou os pesquisadores a construirem protocolos que foram utilizados na criação das redes TCP/IP, que são hoje o coração da internet. 4.3 Formas de Comutação Na camada de rede é possível realizar a comunicação entre computadores geograficamente distribuídos e sem um enlace único interligando ambos os nós. Dessa forma, para que um pacote saia de sua origem e chegue ao destino final é preciso que ele passe por inúmeros nós intermediários, os quais devem receber o pacote e encaminhar adiante. Repare na figura 3: para um dado sair da máquina do usuário e chegar ao servidor web, foi preciso que o pacote passasse pelos roteadores r1, r2 e r3. Figura 3: Comunicação entre máquina cliente e servidora por meio de intermediários É importante observar que quando duas máquinas trocam dados, muitos pacotes precisam ser trocados entre elas. Imagine a transferência de um arquivo bastante grande. Para realizar essa tarefa esse arquivo é dividido em pedaços pequenos e cada um é transmitido utilizando um pacote. A forma de comutação consiste no mecanismo que é utilizado para determinar o caminho dos dados entre dois computares, havendo duas possibilidades: a comutação por circuitos virtuais e a comutação por pacotes. Analise a rede da figura 4. Note que um pacote enviado pela máquina A poderia fazer diferentes caminhos até chegar à máquina B. Quando a comutação por circuitos virtuais é utilizada, antes do início da transmissão é determinado um caminho (circuito) que será utilizado durante toda a transferência de dados. Considerando a rede da figura 4, como exemplo, poderia ser estipulado o circuito virtual com o seguinte caminho: A, R1, R5, R3, B. Dessa forma, todos os pacotes trocados pelas máquinas A e B passariam por esse caminho. Figura 4: Rede com diversos caminhos diferentes entre dois computadores Quando a comutação por pacotes é utilizada a história acontece de forma diferente. A decisão sobre o caminho a ser percorrido é tomada para cada pacote transmitido. Dessa forma, na transmissão de um arquivo entre as máquinas A e B, um pacote poderia fazer o caminho A, R1, R4, B e o próximo seguir por A, R1, R2, R3, R4, B e assim sucessivamente. Ambas as formas de comutação possuem vantagens e desvantagens. Uma situação interessante para se analisar as formas de comutação são as situações de congestionamento. Mas, o que é congestionamento em uma rede de computadores? Em um sistema de trânsito, o que provoca o congestionamento de uma rua? Simples: o número de carros que trafegam pela rua é maior que o suportado por ela. Em redes de computadores algo semelhante acontece: o número de pacotes circulando pela rede é maior que a capacidade que ela tem em comutá-los. Quando a comutação por circuitos é utilizada é possível definir os circuitos de forma que o tráfego seja balanceado entre os inúmeros roteadores existentes no caminho, aumentando a probabilidade de evitar-se uma situação de congestionamento. No entanto, conforme visto anteriormente, uma vez que um circuito é definido ele é mantido até o final da transmissão e todos os pacotes passam por ele. Se a demanda pela construção por circuitos for muito grande chegará um momento em que todas as “tentativas de drible” serão esgotadas e o estabelecimento de novos circuitos, inevitavelmente, congestionará a rede. No momento que uma transmissão termina um circuito é desfeito. Porém pode acontecer de inúmeros circuitos serem finalizados em uma parte da rede, deixando-a livre e outros muitos continuarem em uso em outra parte, mantendo essa parte congestionada. Como os circuitos permanecem até o final da transmissão, nesse caso uma parte da rede estaria livre e outra congestionada. Usando a comutação por pacotes é mais difícil evitar o congestionamento de uma rede, pois como não se sabe por onde os pacotes passarão é complicado realizar a reserva de recursos. No entanto, se uma parte da rede torna-se congestionada os pacotes podem tomar caminhos diferentes, procurando aqueles com menos tráfego. De maneira resumida, a comutação por circuitos é melhor na tentativa e evitar congestionamento e pior quando um congestionamento é formado. A comutação por pacotes tem problemas para tentar evitar o congestionamento, mas se ele acontecer é possível contorná-lo. Uma outra situação que pode-se analisar é quanto à ordem dos pacotes. Supondo um sistema onde não existem perdas de pacotes nem necessidade de retransmissão de dados, em um circuito virtual todos os pacotes de uma transmissão seguem o mesmo caminho, o que por conseqüência faz com que eles cheguem na mesma ordem no destino final. Uma vez que na comutação por pacotes cada pacote pode pegar um caminho diferente é possível que um pacote A que é enviado antes de B pegue um caminho mais longo, chegando atrasado no destinatário, causando a desordem das informações, o que precisa de tratamento. 4.4 Protocolo IP O protocolo IP é responsável pela implementação da camada de rede que é utilizada na maioria das redes atuais, inclusive na internet. Nessa unidade de ensino é apresentada a versão 4 (IPv4) desse protocolo, masa versão 6 já é uma realidade.´ Uma das principais funções do protocolo IP é o roteamento de pacotes na rede. Para isso, é importante o entendimento das formas de endereçamento, super-redes, sub-redes, entre outros. Esse documento apresenta uma visão superficial desse protocolo, sendo necessária uma consulta à bibliografia para um melhor aprofundamento. 4.4.1 Endereçamento IP A camada de rede já está localizada na rede lógica. Dessa forma, nesse ponto os nós são endereçados logicamente, o que permite que o administrador da rede faça alterações nesse endereço a qualquer momento de acordo com sua necessidade. O endereço IP é um endereço lógico composto por 32 bits e cada equipamento (roteador, computador, etc) na internet precisa ter no mínimo um endereço IP. É possível verificar o endereço de rede de uma máquina com o Windows por meio do comando ipconfig. Esse comando apresenta um endereço composto por 4 números como, por exemplo, 192.168.1.35. Poderia uma máquina ter mais de um endereço IP? Cada endereço IP é associado a uma interface de rede e uma mesma máquina pode possuir mais de uma placa de rede. Além disso, uma mesma placa de rede pode possuir mais de um endereço IP associado a ela, mas jamais um mesmo endereço IP associado a mais de uma placa de rede. Toda vez que um nó recebe um pacote IP é realizada a comparação do endereço de destino do pacote e do endereço IP do nó. Se o pacote tiver sido endereçado para aquela máquina o pacote é processado e seu conteúdo enviado para a camada de transporte. No entanto, ao contrário da camada de enlace, se o pacote não for endereçado para esse nó nem sempre o pacote será descartado. É possível que o nó que está processando o endereço esteja no caminho entre a origem e o destino do pacote, sendo preciso encaminhar o mesmo para que ele possa prosseguir seu caminho até o destino. Uma vez que o protocolo IP é responsável pelo roteamento dos pacotes na internet, as decisões quanto ao encaminhamento de um pacote são tomadas em função de seu endereço de destino. É possível realizar uma analogia desse processo com o trabalho realizado pela empresa de correios que realiza a entrega das correspondências convencionais. Suponha que uma carta é enviada de Poços de Caldas para Manaus. Será que existe um meio de transporte (compare isso ao enlace) nos correios que sai de Poços de Caldas e vai diretamente para Manaus? Provavelmente não. Sendo assim, a carta passará por diversas agências do correios até chegar ao seu destino. O endereço do destinatário existente na carta é o dado que deve ser analisado pelas agências dos correios durante o manuseio da correspondência. No entanto, as agências dos correios se interessam por partes diferentes desse endereço. Imagine que no exemplo da correspondência enviada de Poços para Manaus a carta é enviada da cidade origem para São Paulo. A agência dos correios de São Paulo não se interessa em saber o nome da rua e muito menos o número da casa do destinatário da carta. Ela se interessa em saber apenas a cidade para onde a carta será enviada, pois é esse dado que ela precisa para determinar para qual agência o próximo envio será realizado. O nome da rua e o número da casa são de interesse apenas da agência de Manaus, pois é ela que realizará a entrega final da correspondência. Com essa análise é possível perceber que o endereço do destinatário de uma carta possui duas partes diferentes: a parte que identifica a cidade e aparte que identifica uma casa dentro dessa cidade. O IP permite a existência de inúmeras redes que podem comunicar entre si, por isso Internet. Dessa forma, o endereço IP, de maneira semelhante ao endereço do destinatário da carta, apresenta dois tipos de informação: o endereço de uma rede (Net-ID) e o endereço de uma máquina (Host- ID) dentro dessa rede. Se para um dado ser enviado de uma máquina A para uma máquina E é preciso passar pelos roteadores B e C, esses roteadores não devem ser preocupar com o endereço da máquina destino do pacote, mas sim com o endereço da rede de destino, pois a missão dos intermediários é fazer com que o pacote seja entregue ao roteador (D, por exemplo) dessa rede. O roteador da rede de destino que deverá se preocupar com o endereço da máquina para que o pacote possa chegar ao seu destino final. 4.4.1.1 Classes de Endereçamento Conforme visto anteriormente o endereço IP é dividido em Net-ID e Host-ID, que identificam, respectivamente, o endereço da rede destino e o endereço do host dentro da rede destino. No entanto, quantos bits são destinados ao Net-ID e quantos são destinados ao Host-ID? Em função da classe do endereço são definidos os números de bits para cada uma dessas partes do endereço. São cinco classes diferentes de endereços: A, B, C, D e E. Sendo que as classes A, B e C são utilizadas para endereçamento convencional, a classe D para multicasting e a E está reservada para uso futuro. A figura 5 ilustra como as classes são organizadas e a quantidade de bits para Net-ID e Host-ID. Figura 5: Classes de endereçamento É importante perceber que no início do endereço alguns bits são reservados para a identificação da classe, sendo 0 para classe A, 10 para B, 110 para C e assim sucessivamente. Para facilitar a memorização da identificação das classes pode-se verificar a quantidade de bits 1 consecutivos existentes no início do endereço. Se não houver nenhum bit 1 trata-se da classe A. Se houver um apenas é classe B, dois classe C, três classe D e, finalmente, 4 bits de valor 1 consecutivos no início do endereço indica a utilização da classe E. Analisando a figura 5 pode-se verificar a capacidade de endereçamento de cada classe. Note que a classe A permite a utilização de 7 bits para o endereçamento de redes. Sendo assim, com essa classe pode-se endereçar 27 (128) redes diferentes e 224 (16.777.216) hosts em cada rede (esse número sofrerá uma pequena alteração que será vista logo a seguir). A classe B possui 14 bits para endereçamento de rede, permitindo 214 (16.384) redes diferentes que podem abrigar 216 (65.536) hosts cada uma. Possuindo 21 bits para o Net-ID a classe C permite 221 (2.097.152) redes distintas e 28 (256) hosts em cada rede. Note que a quantidade de bits para o Host-ID é a diferença entre o número total de bits do endereço IP (32) para a somatória do número de bits do Net-ID e do número de bits de identificação da classe. Sendo assim, para a classe A, por exemplo, há 7 bits para o Net-ID e 1 para a identificação da classe, consumindo um total de 8 bits. Como o endereço tem 32 bits, sobram 24 para o Host-ID. Por isso, a classe A pode ter 224 hosts em cada rede. É possível perceber que a classe de endereço define claramente a quantidade de redes que ela permite e a quantidade de hosts em cada rede. A classe A permite a existência de um pequeno número de redes onde cada uma tem uma quantidade muito grande de hosts, ao passo que a classe C permite o endereçamento de muitas redes onde cada uma tem poucos hosts. E a classe B fica em um ponto intermediário. Com isso é fácil saber qual faixa de endereços é mais cara para ser adquirido por uma empresa. A figura 6 apresenta as faixas de endereçamento existentes para cada uma das classes apresentadas acima. Figura 6: Faixas de endereçamento 4.4.1.2 Endereços Reservados Com a versão 4 do IP (IPv4), o número de endereços distintos é insuficiente para atribuir um endereço IP para cada máquina existente no planeta. Isso ocorre por alguns motivos e entre eles é interessante destacar a quantidade de bits existentes para endereçamento nessa versão do protocolo e o fato de que muitas instituições compram faixas de endereços IP e não as utilizam por completo, inviabilizando o uso de vários endereços. Imagine uma empresa que compra uma classe B para endereçar500 computadores. Quantos endereços são “desperdiçados”? Para tentar minimizar esse problema foram definidas algumas faixas de endereço que não trafegam pela Internet. Quando é dito que não “trafegam pela internet” significa que se algum roteador da rede mundial recebe um pacote IP com endereço de origem ou destino preenchido com um endereço IP reservado esse pacote é descartado imediatamente. Sendo dessa forma, é possível que computadores confinados em redes internas diferentes possam ter o mesmo IP reservado, pois jamais comunicarão entre si. A tabela ilustrada na figura 7 apresenta algumas faixas reservadas bastante conhecidas (para uma relação completa, consulte a bibliografia). Figura 7: Endereços IP reservados Há uma faixa de endereços reservados que possui um propósito bastante interessante: endereça a própria máquina! Essa faixa endereça a rede 127.0.0.0 e é chamado de loopback. O endereçamento da própria máquina é útil para realizar experimentos e testar aplicações em uma única máquina. Você deve estar confuso, pois seu computador possui um endereço IP reservado, mas consegue acessar a Internet. Na seção sobre o NAT (Network Address Translation) essa dúvida será resolvida. 4.4.1.3 Endereços de Rede e Broadcasting Todos os computadores de uma mesma rede lógica possuem o mesmo Net-ID, sendo diferenciados uns dos outros pelo Host-ID. No entanto, há dois valores para o Host-ID que não endereçam nenhum host: são os endereços de rede e de broadcasting. Utiliza-se o endereço de rede quando é preciso apenas identificar uma rede lógica, sem citar nenhum host. Lembre-se do exemplo dos correios apresentado anteriormente. De forma parecida os roteadores que estão entre uma máquina origem e a rede da máquina destino precisam identificar apenas o endereço de rede do endereço de destino de um pacote IP. Para se obter o endereço de rede referente a um endereço IP é bastante simples: dado um endereço IP qualquer, transforme-o em bits e verifique quais são os bits referentes ao Net-ID e quais são aqueles que representam o Host-ID. Uma vez realizada esse identificação, mantenha intactos os bits do Net-ID e de identificação da classe do endereço e transforme para o valor 0 todos os bits do Host-ID. Veja o exemplo abaixo: Endereço IP na base decimal: 192.168.10.5 Endereço IP na base binária: 11000000. 10101000. 00001010. 00000101 Analisando o inicio do endereço na base binária constata-se a existência de dois bits seguidos com o valor 1. Isso quer dizer o que? Quer dizer que se trata de um endereço da classe C. Sendo assim, sabe-se que esse endereço possui 8 bits para o Host-ID (lembre-se que o Host-ID são sempre os bits menos significativos). Dessa forma, transforma-se esses bits do Host-ID para o valor 0 e mantém-se os demais para que seja encontrado o endereço de rede. Endereço IP da rede em binário: 11000000. 10101000. 00001010. 00000000 Endereço IP da rede em decimal: 192.168.10.0 Utilizando o protocolo IP dois computadores só podem trocar pacotes entre si quando estão na mesma rede lógica. Caso contrário é preciso que exista algum intermediário que faça parte de ambas as redes e realize a função de roteamento entre elas. A figura 8 ilustra duas máquinas que estão em redes lógicas diferentes: 192.168.5.0 e 192.168.6.0. Dessa forma, é impossível que as máquinas se comuniquem diretamente. Por isso existe um roteador ou gateway que participa de ambas as redes. Sendo assim, todo pacote trocado entre as máquinas é encaminhado pelo roteador. Figura 8: Comunicação entre diferentes redes lógicas Outra questão bastante interessante é o fato de muitas vezes ser preciso que um mesmo pacote IP seja entregue para todos os computadores de uma determinada rede lógica. Esse tipo de envio de pacotes é chamado de broadcasting e precisa ser identificado no endereço de destino do pacote. Para que um endereço IP possa ser definido como broadcasting é preciso que todos os bits referentes ao Host-ID sejam definidos com o valor 1. Dessa forma, se for fornecido um endereço IP qualquer de uma máquina de uma rede lógica é possível determinar qual o endereço de broadcasting dessa rede. De volta ao exemplo anterior: Endereço IP na base decimal: 192.168.10.5 Endereço IP na base binária: 11000000. 10101000. 00001010. 00000101 Endereço IP de broadcasting em binário: 11000000. 10101000. 00001010. 11111111 Endereço IP de broadcasting em decimal: 192.168.10.255 Quando um pacote é endereçado como broadcasting ele trafega normalmente pelos roteadores intermediários, pois eles se preocupam apenas com o endereço de rede. No entanto, quando esse pacote chega à rede destino ele será entregue para todos os computadores lá existentes. Por fim, pode-se notar que dos possíveis endereços gerados com os bits do Host-ID um é utilizado para endereçamento de rede (todos os bits com valor 0) e outro para broadcasting (todos os bits com valor 1). Sendo assim, para se calcular o número máximo de hosts em uma determinada rede deve-se descontar esses dois endereços. Por isso, pode-se realizar o cálculo do número máximo de hosts (m) da seguinte forma: m=2h-2, onde h é o número de bits do Host-ID. 4.4.1.4 Máscara de Rede A máscara de rede é utilizada para informar qual é a separação de Net-ID e Host-ID de um endereço IP. Essa máscara possui 32 bits (igual ao endereço IP) e cada bit existente informa se o bit de mesma posição do endereço IP é referente ao Net-ID ou Host-ID. Se o bit na posição i da máscara possui o valor 1 ele indica que o bit da posição i do endereço IP é referente ao Net-ID. Caso for 0 indica Host-ID. No entanto, os bits referentes à identificação da classe do endereço são tratados como Net-ID. De volta ao exemplo: Endereço IP na base decimal: 192.168.10.5 Endereço IP na base binária: 11000000. 10101000. 00001010. 00000101 Sabe-se que somente os 8 últimos bits são referentes ao Host-ID e os demais ao Net-ID, dessa forma a máscara de rede seria a seguinte: Máscara de rede na base binária: 11111111. 11111111.11111111.00000000 Máscara de rede na base decimal: 255.255.255.0 Como outro exemplo, considere a classe B de endereçamento. Essa classe possui 16 bits para endereçar a rede (Net-ID) e 16 bits para endereçar os hosts. Dessa forma, tem-se a seguinte máscara de rede padrão para a classe: Máscara de rede na base binária: 11111111.11111111.00000000.00000000 Máscara de rede na base decimal: 255.255.0.0 4.4.1.5 Sub-Redes É comum que as instituições adquiram faixas de endereços IP para endereçarem suas estações de trabalho. No entanto, por diversos motivos como, por exemplo, segurança, os administradores dessas redes preferem que os departamentos sejam organizados em redes lógicas diferentes. Estando os departamentos organizados em redes lógicas diferentes é impossível que máquinas se de departamentos distintos se comuniquem sem que seja por meio de um gateway (roteador, por exemplo). Isso facilita o gerenciamento de segurança, pois é possível realizar filtros que determinem quais tipos de pacotes podem trafegar entre elas. Se a empresa adquire uma faixa de endereços IP, esses compartilham a mesma rede lógica quando a máscara padrão é utilizada. Como fazer para dividir essa rede em redes lógicas distintas? Na infra-estrutura interna é possível que o administrador da rede altere a máscara de rede de maneira e modificar a quantidade de bits utilizada para Net-ID e Host-ID. Essas alterações são “vistas” somente na rede da instituição, não sendo consideradas pelos roteadores existentes na internet. Imagine que uma determinada empresa adquiriu uma faixa de endereços IP da classe B. Essa classe de endereços oferece 16 bits para Net-ID e 16 para Host-ID. Suponha que o administrador deseja dividir as máquinas em duas redes lógicasdistintas. Para isso, ele altera a máscara de rede e define que o Net-ID agora possui 17 bits e o Host-ID apenas 15. Dessa forma os 16 bits originais da máscara padrão identificam a rede para o mundo externo e o 17º bit identifica a rede internamente. Uma vez que esse bit pode assumir dois valores diferentes (0 e 1), foram criadas duas sub-redes lógicas, utilizando a máscara 255.255.128.0. Conforme foi observado no parágrafo anterior, o número de bits retirados do Host-ID para representarem o Net-ID determinam o número de sub-redes criados. Pode-se calcular o número de sub-redes criadas por meio da fórmula s=2n, onde n representa os bits utilizados para construir a sub-rede. Mas, qual é o número máximo de bits que pode ser utilizado para construir sub-redes? Se a utilização dos bits para construção de sub-redes resultar em uma máscara onde apenas 1 bit é dedicado a Host-ID jamais será possível endereçar máquinas, pois ao retirar o endereço de rede e o endereço de broadcast não sobrariam endereços a serem utilizados pelos nós da rede. Dessa forma, pode-se realizar a criação de sub-redes até o ponto onde sejam reservados no mínimo 2 bits para o Host-ID. Nesse caso, 2 bits permitem a criação de 4 endereços distintos: dois para os hosts da rede, um para o endereço da rede propriamente dita e um para o endereço de broadcasting. Veja a animação “Sub-Redes” para obter um exemplo ilustrado sobre a construção de sub- redes. Para que a conversão seja realizada corretamente deve-se levar em consideração a manipulação de bits citada anteriormente. Considerando o caso da animação, tem-se os seguintes dados: Endereço de rede usando máscara padrão: 170.200.0.0 Máscara de rede padrão em decimal: 255.255.0.0 Máscara de rede padrão em binário: 11111111.11111111.00000000.00000000 Ao alterar a máscara de rede para admitir duas sub-redes a máscara da sub-rede fica da seguinte forma: Máscara de sub-rede em binário: 11111111.11111111.10000000.00000000 Máscara de sub-rede em decimal: 255.255.128.0 Imagine uma máquina com o seguinte endereço IP: 170.200.129.5. A qual sub-rede ela pertence? Veja só a análise: Endereço IP em binário: 10101010.11001000.10000001.00000101 A máscara de sub-rede define que os 17 primeiros bits são referentes ao Net-ID. Sendo assim o endereço de rede fica da seguinte forma: Endereço de rede em binário: 10101010.11001000.10000000.00000000 Endereço de rede em decimal: 170.200.128.0 E o endereço de broadcasting para a sub-rede onde essa máquina se encontra? Como ficaria? Endereço de broadcasting em binário: 10101010.11001000.11111111.11111111 Endereço de broadcasting em decimal: 170.200.255.255 Com essa mesma máscara de rede é interessante considerar a máquina com endereço IP 170.200.1.5. Acompanhe a análise abaixo: Endereço IP em binário: 10101010.11001000.00000001.00000101 A máscara de sub-rede define que os 17 primeiros bits são referentes ao Net-ID. Sendo assim o endereço de rede fica da seguinte forma: Endereço de rede em binário: 10101010.11001000.00000000.00000000 Endereço de rede em decimal: 170.200.0.0 E o endereço de broadcasting para a sub-rede onde essa máquina se encontra? Como ficaria? Endereço de broadcasting em binário: 10101010.11001000.01111111.11111111 Endereço de broadcasting em decimal: 170.200.127.255 4.4.1.6 Super Redes Muitas vezes é possível que uma instituição tenha um número de estações que uma classe C não consegue comportar. Como exemplo, considere uma empresa com 300 máquinas. Para esse caso, a solução que vem em mente em primeiro lugar é a aquisição de uma classe B. No entanto o protocolo IP oferece um mecanismo que auxilia nessa situação: a criação de super-redes. Ao contrário do conceito de “sub-redes” onde se tem uma rede e deseja-se dividi-la, o conceito de “super-rede” permite unir duas redes lógicas distintas em uma única. Porém, da mesma forma que nas “sub-redes” essa união é vista somente pela rede interna da instituição. Como exemplo considere uma empresa que fez a aquisição de duas faixas de endereços IP classe C: 200.25.8.0 e 200.25.9.0. É interessante realizar uma breve análise dessas duas faixas: Endereço de rede em decimal: 200.25.8.0 Endereço de rede em binário: 11001000. 00011001. 00001000.00000000 Endereço de rede em decimal: 200.25.9.0 Endereço de rede em binário: 11001000. 00011001. 00001001.00000000 Máscara de rede padrão em decimal: 255.255.255.0 Máscara de rede padrão em binário: 11111111.11111111.11111111.00000000 Nessa situação sabe-se que o Net-ID é construído pelos 24 primeiros bits (de acordo com a máscara). No entanto, note que as faixas tem o Net-ID diferenciado pelo 24º bit (está em negrito). O que aconteceria se a máscara de rede fosse 255.255.254.0 (considerando apenas 23 bits para o Net- ID)? Computadores identificados com as faixas de endereços citadas pertenceriam à mesma rede lógica, a SUPER-REDE. De maneira semelhante ao conceito de sub-redes, essa alteração da máscara para gerar uma super-rede é vista somente na infra-estrutura interna. Se um pacote fosse enviado para o IP 200.25.8.0 e outro para o IP 200.25.9.0, os roteadores da Internet “pensariam” que os pacotes são para redes distintas. No entanto, o roteador da empresa de destino pode possui endereços IP de ambas as redes na mesma interface (lembra que um mesmo endereço físico pode ser associado a vários endereços lógicos?), sendo assim desse ponto para frente, na rede interna, tudo vira uma rede só. 4.4.2 Fragmentação de Pacotes Conforme foi visto na unidade de ensino anterior, toda tecnologia de enlace possui um tamanho limite de dados que podem ser trafegados em um único frame. Esse limite é conhecido como MTU. Foi visto também que, na maioria das vezes, para que dois computadores geograficamente separados possam se comunicar é preciso que mais de um enlace seja utilizado sob coordenação da camada de rede. No entanto, imagine a situação da figura 8: a máquina do usuário quer enviar um datagrama com tamanho total de 1500 bytes para o servidor web. O enlace existente entre o usuário e o roteador 1 possui MTU igual a 1500, o que permite que o pacote seja inserido por inteiro dentro de um único frame, que é enviado ao roteador 1. Só que o roteador 1 precisa enviar esse dado para o roteador 2, e nesse enlace o MTU é igual a 600. Para que isso seja possível é preciso fragmentar o datagrama! Figura 9: Enlaces com MTUs diferentes Ao realizar a fragmentação o protocolo IP divide o datagrama em pacotes menores que possam ser trafegados pelas tecnologias de enlace até o destino final. Ao realizar a remontagem do datagrama original no destinatário o IP deve saber quais os pacotes são referentes ao mesmo datagrama. Para isso ele faz uso de um campo chamado IDENTIFICATION que possui o mesmo valor em todos os fragmentos de um mesmo datagrama. Uma vez que a comutação é realizada por pacotes em uma rede IP, é possível que os pacotes resultantes da fragmentação de um datagrama sigam rotas diferentes e, por conseqüência, disso podem chegar fora da ordem. Por esse motivo é utilizada um campo chamado FRAGMENT OFFSET que determina a posição de um pacote no datagrama original. Como exemplo, considere o cenário da figura 8: o roteador 1 precisa gerar um pacote p1 e um pacote p2, cada um com 600 bytes de tamanho e um pacote p3 com 300 bytes. O off-set de p1 é 0, pois é o início do datagrama. Como p1 termina no off-set 599, o off-set de p2 é 600 e, por conseqüência, de p3 é 1200. Já foi dito como o protocolo IP consegue identificar os fragmentos de um datagrama e a ordem deles. No entanto, resta um problema: como saber se todos os fragmentos de um datagrama foram recebidos? O pacote que representa cada fragmento possui um campo chamado MF (MORE FRAGMENTS). Esse campo tem afunção de dizer se depois dele existe mais algum fragmento do mesmo datagrama. Sendo assim, é fácil perceber que somente o último fragmento (no caso do exemplo anterior, p3) terá o campo MF com valor 0, os demais terão valor 1. Com essas informações é possível saber o primeiro fragmento pelo FRAGMENT OFFSET com valor 0 e o último pelo MORE FRAGMENTS com valor 0. Para saber se todos os fragmentos foram recebidos basta observar se entre o primeiro e o último fragmentos há lacunas não preenchidas. Em alguns casos deseja-se que um pacote não possa ser fragmentado. Por isso, existe um flag no pacote IP chamado DF (Don’t Fragment). Quando esse flag está definido com o valor 1, se algum roteador receber um pacote e verificar que o mesmo necessita ser fragmentado para poder ser encaminhado adiante é realizado um descarte do pacote. 4.4.3 Formato do Datagrama IP Todo datagrama IP possui um cabeçalho e a área dos dados. A figura 10 apresenta o formato. Figura 10: Formato do Datagrama IP Abaixo são apresentadas as funções de cada campo: • VERS: Versão do protocolo ao qual o datagrama pertence. Nesse caso, versão 4. • HLEN: Tamanho, em palavras de 32 bits, do cabeçalho. O mínimo é 5 e o máximo 15. Esse campo teve que ser inserido no projeto, basicamente, por conta do campo OPTIONS, o qual pode existir ou não e se existir pode ter tamanho variado. • SERVICE TYPE: No projeto original esse campo serviria para realizar a diferenciação de serviços de maneira que um pacote de um tipo de serviço pudesse ter prioridade diferente de outros pacotes. No entanto, com o tempo os roteadores deixaram de analisá-lo para tornar o processo de roteamento mais eficaz. • TOTAL LENGTH: Tamanho total do pacote considerando o cabeçalho e a área de dados. • IDENTIFICATION: Utilizado para determinar a qual datagrama original um fragmento pertence. • FLAGS: Existem 3 flags no cabeçalho. o Um não utilizado. o DF: Don’t Fragment. Significa que o datagrama não pode ser fragmentado. o MF: Significa se o fragmento é o último do datagrama (0) ou não (1). • FRAGMENT OFFSET: Determina em qual posição no datagrama a ser remontado que o fragmento deve ser inserido. • TIME-TO-LIVE: Determina a quantidade máxima de hops que um pacote pode utilizar para chegar nó destino. • PROTOCOL: Determina para qual protocolo de transporte o conteúdo do pacote deve ser entregue. • HEADER CHECKSUM: Utilizado para validar os dados do cabeçalho. • SOURCE IP ADDRESS: Endereço IP da máquina que enviou o pacote. • DESTINATION IP ADDRESS: Endereço IP da máquina de destino. • OPTIONS: Projetado para uso futuro. Permite que novas implementações o utilize para algo não estabelecido na implementação original. • DATA: Dados propriamente ditos. 4.4.4 ARP Quando se fala sobre o endereçamento IP trata-se daquele endereço lógico que é colocado no pacote. Porém, esse pacote é inserido dentro de um frame que trafegará pelo enlace adotado. Conforme foi visto na unidade anterior, a tecnologia de enlace faz o tratamento do endereço físico (MAC Address), de forma que um frame deve ser endereçado para a placa de rede do computador que deverá receber as informações. Agora, analisando os dois endereços (IP e MAC Address), é preciso que o frame seja endereçado para a placa de rede que tem associado a ela o endereço IP estipulado no pacote transportado. Uma maneira para resolver essa questão é a construção de uma tabela onde é possível relacionar IP x MAC Address. Dessa forma, toda vez que um pacote deve ser enviado para um determinado endereço IP é feita uma consulta nessa tabela e verificado o MAC Address correspondente que será colocado no frame. No entanto, manter essa tabela estática nas máquinas geraria um problema de flexibilidade. Pois, se fosse preciso alterar o endereço IP de uma máquina seria preciso realizar a alteração em todas as tabelas. A criação de uma tabela centralizada facilitaria a manutenção, mas criaria um ponto crítico de falhas na rede. Para resolver essas questões entra em cena o ARP: Address Resolution Protocol. Esse protocolo descentralizado tem a função de manter, dinamicamente, em cada máquina da rede a tabela ARP, que faz o relacionamento entre IP x MAC Address. Toda vez que o IP vai solicitar à camada de enlace o envio de um pacote ele realiza uma consulta nessa tabela para informar para qual MAC o frame deve ser endereçado. Mas, como a tabela é dinâmica, ao ligar o computador ela está vazia. O que é feito quando um MAC é procurado e não encontrado nessa tabela? O protocolo ARP se encarrega de descobrir o MAC Address relacionado a um determinado endereço IP. Para isso, ele monta uma mensagem com uma pergunta do tipo “Qual é o MAC Address da máquina que possui o IP x ?”, onde x é o IP desejado. Essa requisição do protocolo ARP é inserida em um frame que é endereçado para broadcasting. Sendo assim, todas as placas de rede o recebem e passam a requisição para o processo ARP em execução na máquina. No entanto, somente a máquina que possui o endereço IP solicitado na requisição responde com uma mensagem enviada diretamente à máquina que fez a “pergunta”, a qual insere o dado na sua tabela local. A animação “Protocolo ARP” ilustra o funcionamento desse protocolo. 4.5 Roteamento Essa talvez seja uma das mais importantes tarefas da camada de rede. Conforme tem sido mostrado, entre dois computadores pode haver diversos caminhos que um pacote pode seguir. Um roteador não decide qual é o caminho completo que um pacote deve percorrer até o destino final. Ele necessita saber apenas qual é o próximo roteador que deve processar o pacote. Cada nó que um pacote passa entre a origem e o destino é denominado de “hop”. Por isso, o roteamento onde cada roteador se preocupa com o próximo nó a processar o pacote é denominado de roteamento “Next-Hop”. Para que o roteador possa saber qual é o próximo nó a processar ele utiliza uma tabela chamada de tabela de roteamento, a qual contém informações que são utilizadas na decisão do “Next-Hop”. Na internet existe um número muito grande de computadores. Se essas tabelas armazenassem informações sobre cada computador seu tamanho seria gigante impossibilitando que os equipamentos pudessem realizar um roteamento de pacotes com um tempo tolerante. Sendo assim, as tabelas armazenam apenas informações sobre as redes (por isso é importante o endereço de rede, que pode ser calculado com base em um endereço IP). Dessa forma, um pacote é recebido, o endereço IP de destino é analisando para se calcular o endereço de rede. Alguns algoritmos são propostos para determinar as tabelas de roteamento. Basicamente eles podem ser divididos em duas classes: a) Algoritmos não adaptativos: Nesse caso as tabelas são definidas estaticamente e se alguma mudança acontecer na rede é preciso a intervenção do administrador para realizar a mudança. b) Algoritmos adaptativos: São os algoritmos que vão alterando as tabelas de acordo com a situação atual da rede. Dessa forma, se a rede sofrer alguma alteração as tabelas são automaticamente alteradas. 4.5.1 Gateway Padrão Em algumas situações a camada de rede não sabe o que fazer com um determinado pacote. Quando isso pode acontecer? Como exemplo pode-se citar duas situações: a) Uma máquina de uma rede local deseja enviar um dado utilizando a Internet. Nesse caso a camada de rede da máquina conhece apenas a rede local, sendo assim ela precisa enviar esse pacote para que “alguém” o encaminhe e esse “alguém” é o gateway padrão. b) Um roteador recebe um pacote e não possui em suas tabelas nenhuma informação que o permita decidir qual é o “Next-Hop”. Sendo assim, o dado é enviado para o gateway padrão. 4.5.2 Roteamento com Vetor de Distância Conforme apresentado por [1], o roteamentocom vetor de distância consiste na existência, em cada roteador, de uma tabela (vetor) que determina as redes de destino, qual é o “Next-Hop” e o custo para alcançar o destino. Muitas vezes é imaginado que o custo entre duas máquinas é apenas o número de “hops” entre elas. Isso não é correto. Imagine que para um pacote sair do nó A e ir até E ele tem dois caminhos: A=>B=>D=>E e A=>C=>E. O número de “hops” no primeiro caso é 3 e no segundo apenas 2. No entanto, no primeiro caso todos os enlaces são compostos por fibra ótica e o segundo por conexões discadas. Qual seria o mais rápido? Dessa forma, o cálculo do custo é realizado por meio de uma função que considera uma gama de elementos Agora, como será que essas tabelas são definidas? Será que alguém precisa intervir manualmente? Esse algoritmo é adaptativo, ou seja, ele trabalha de forma autônoma de acordo com a situação da rede. A geração utiliza um algoritmo bastante interessante. Cada nó conhece seus vizinhos (os nós adjacentes) e o custo para chegar até eles. Dessa forma, ocorre algo parecido com uma “fofoca”: cada nó começa a “contar” paras os vizinhos quais são os nós que ele conhece e o custo para chegar até cada um deles. Com isso cada nó começa saber as redes de destino que ele consegue atingir por meio de cada vizinho. Como exemplo, considere a figura 11 onde há três nós distintos: A, B e C. Imagine que os nós B e C enviam suas tabelas para o nó A. Ao receber as tabelas, A analisa aquela tabela recebida por C e chega à conclusão: “Tenho um custo 5 para chegar até C e de lá até B o custo é 2. Sendo assim, para eu ir até B via C, tenho um custo total de 7. Para ir até B eu tenho um custo 2 e de lá até C o custo é 2, o que significa que para eu ir para C via B tenho um custo de 4. Então, se precisar enviar um pacote para C, basta encaminhá-lo para B que estarei fazendo o melhor possível”. Figura 11: Análises das possíveis rotas Com esse raciocínio básico as tabelas podem ser montadas. E cada vez que um roteador recebe uma nova tabela de algum de seus vizinhos ele realiza todas as análises para verificar se por aquele nó algum destino pode ser alcançado com um custo menor. A figura 12 apresenta um cenário onde é demonstrada a montagem da tabela de roteamento do nó J. Figura 12: Exemplo de montagem das tabelas de roteamento. Fonte [1] Repare que J possui uma tabela onde são definidos os custos para enviar um pacote para cada um de seus vizinhos. Observe a análise feita por J quando ele deseja verificar qual deve ser o “Next-Hop” quando o destino do pacote for o nó B. J tem um custo 8 para alcançar A e esse um custo 12 para chegar em B. Dessa forma, para J alcançar B via A o custo total é de 20. Para alcançar B por intermédio de I, o custo total seria de 46, por H seria 43 e assim sucessivamente. Dessa forma, para chegar em B o melhor custo é 20, quando A é utilizado como “Next-Hop”. Note que quando um roteador recebe uma tabela do vizinho e a processa, a partir desse momento ele conhece seus vizinhos e os vizinhos dos seus vizinhos. E isso vai acontecendo seguidamente de forma que a cada troca de tabela os roteadores vão ganhando mais informações sobre a rede. É comum que um link “caia”, comprometendo o enlace entre dois roteadores. Dessa forma, se um roteador tem um enlace indisponível é preciso “avisar” os roteadores que o utilizam como “caminho” para alguma rede que esse caminho não está disponível. Para fazer isso, esse roteador verifica quais são as redes para as quais ele utiliza esse link, coloca como custo o símbolo de infinito na tabela e a propaga. Assim, quando os outros roteadores processam essa tabela, qualquer rota tem um custo menor que o infinito e por isso as tabelas são alteradas. 4.5.3 Time to Live Muitas vezes deseja-se estabelecer o número máximo de hops que um pacote pode realizar até chegar ao destino. Como exemplo, imagine uma rede com três nós: A, B e C. Por algum motivo qualquer, o nó A possui em sua tabela de roteamento que o melhor caminho para chegar ao nó C é por meio do nó B. O nó B por sua vez possui em sua tabela que o melhor caminho para chegar em C é usando como “Net-Hop” o nó A. Sendo assim, quando o pacote destinado ao nó C chegar ao nó A ou ao nó B ele ficara em “loop”. O Time-to-Live é um número que existe no cabeçalho do pacote IP que determina o número máximo de hops que o pacote pode utilizar até chegar no destino. A cada roteador que o pacote passa esse número é decrementado. Caso o Time-to-Live chegue a zero e o nó destino ainda não foi alcançado o pacote é descartado e uma mensagem notificando o evento é enviada ao emissor original do pacote. 4.6 NAT Em uma rede interna é comum que as máquinas façam uso de endereços IP reservados. No entanto, é preciso que elas sejam capazes de se comunicarem com a Internet para que todos os serviços necessários possam ser fornecidos aos usuários. Uma vez que os pacotes contendo endereços reservados não são roteados na internet é preciso uma forma alternativa para isso. Para esse caso utiliza-se o NAT! O Network Address Translation é o processo que consiste em receber um pacote IP com um endereço IP reservado, trocar esse endereço por um válido e enviar o pacote. Quando uma resposta for recebida o processo inverso é feito. Agora, onde se deve realizar esse processo? Normalmente uma rede interna é composta pelas máquinas dos usuários e por um gateway que possui acesso à internet. Dessa forma, em todas as máquinas existe uma configuração dizendo qual é o endereço do gateway para quem um pacote IP deve ser enviado quando seu destino não é a própria rede lógica à qual o computador origem da mensagem faz parte. O envio do pacote para a internet não tem mistérios: o gateway recebe o pacote com o endereço de origem preenchido com o endereço reservado do computador da rede interna e o substitui pelo endereço válido que ele possui. A volta é complicada, pois em uma mesma rede interna pode existir inúmeros computadores que estão fazendo acesso à internet por meio do NAT. Então, quando um pacote chega qual o endereço reservado deve ser utilizado no pacote antes de enviá-lo para a rede interna? A maior parte do tráfego de dados existente atualmente é realizada utilizado o protocolo TCP ou o UDP, que possuem multiplexação de portas. O NAT mantém uma tabela com, basicamente, duas colunas: endereço IP interno e número de porta que a aplicação está usando. Quando uma mensagem é recebida de uma máquina da rede interna e deve ser enviada para a internet o NAT adiciona uma entrada nessa tabela informando o endereço IP reservado da máquina e a porta que a aplicação na máquina interna está utilizando atualmente. Feito isso, são realizadas suas alterações na mensagem antes de encaminhá-la para a internet: o endereço IP original é substituído pelo IP válido do gateway e o número de porta origem é substituído pelo número da linha da tabela onde o gateway inseriu os dados. Quando o pacote é enviado, se a máquina destino (na Internet) enviar uma resposta esta será direcionada ao IP do gateway + porta informada. Ao receber essa mensagem o gateway busca na tabela a linha com um número igual ao número da porta de destino da mensagem recebida pela internet, busca as informações originais, altera a mensagem e a envia para a rede interna. A animação funcionamento do NAT ilustra esse processo. 4.7 ICMP O ICMP (Internet Control Message Protocol) é um protocolo, assim como o ARP, da “turma” do IP. Ele é bastante utilizado para reportar eventos ocorridos na rede. Um exemplo de evento é o fato de um destino não conseguir ser alcançado por algum motivo como, por exemplo, o término do tempo de vida (time to live) do pacote, falta de rotas, etc. Nesses casos o roteador utiliza o protocolo ICMP para notificar o nó origem dopacote que não foi possível entregar o pacote para o destino. Para isso é feito uso de mensagens ICMP. A notificação é feita por mensagens que são relacionadas a determinados tipos de eventos. São exemplos dessas mensagens: Time exceed e Destination Unreachable, Esse protocolo também é utilizado para realizar testes na rede. Um exemplo muito comum de teste é verificar se um nó endereçado por um determinado IP está operante. Para isso é feito uso das mensagens echo request e echo reply do ICMP. Esse processo consiste em uma máquina enviar um echo request e esperar que a máquina que o receberá responda com um echo reply. Com isso, se vários mensagens echo request são enviadas é possível verificar a quantidade de respostas recebidas e analisar a taxa de perda de pacotes entre essas máquinas. Um exemplo da utilização das mensagens echo request/echo reply é o comando ping. Para testá-lo para digitar no console do seu computador: ping <destino>, onde destino é o endereço IP da máquina a ser testada. 4.8 Qualidade de Serviço Para falar de uma forma abrangente sobre qualidade de serviço em uma rede de computadores seria preciso uma unidade de ensino só para esse assunto. No entanto, nessa camada de rede há duas métricas que são de extrema importante que se tenha uma noção mínima. A primeira métrica a ser brevemente discutida é a Latência a qual determina o tempo que um pacote IP gasta entre o emissor e seu destino. A segunda é o Jitter, o qual determina a variação média da latência entre dois nós da rede. Em muitos casos é importante que a rede possua uma latência baixa para que determinadas aplicações sejam viáveis em função da velocidade de resposta necessária. No entanto, outras aplicações não são fortemente prejudicadas por uma rede com latência alta e sim por uma rede com uma variação grande da latência (Jitter). Em uma transmissão de áudio, por exemplo, a latência é algo que não tem um efeito muito grande, porém o Jitter é muito importante. Se uma rede apresenta latência alta, mas com baixa alteração, ao transmitir um stream de áudio haverá um tempo para que o som comece a ser reproduzido, mas depois a freqüência de chegada dos pacotes com o som digitalizado é regular, permitindo sua reprodução sem muitos problemas. Se houvesse uma variação grande da latência os pacotes chegariam em tempos muito diferentes, prejudicando a reprodução. É recomendada a leitura da bibliografia para um estudo mais aprofundado sobre qualidade de serviço em redes de computadores. 4.9 Considerações Finais Essa unidade de ensino teve um foco bastante grande no protocolo IP tendo em vista seu uso na Internet, a maior rede de computadores da atualidade. A versão 6 desse protocolo é uma realidade. Ela permite um número muito maior de endereços, o que facilitará a vida dos administradores de rede. Dessa forma, é interessante e recomendado que seja realizado um estudo sobre a nova versão desse protocolo de rede. Na próxima unidade será apresentada a camada de transporte, com o foco principal no protocolo TCP. Na unidade 5 é entendido como funciona o mecanismo de garantia de entrega, controles de congestionamento, entre outros.
Compartilhar