Prévia do material em texto
4ºAula Tcp/Ip – A Camada Inter - Rede Objetivos de aprendizagem ao término desta aula, vocês serão capazes de: • compreender o funcionamento do protocolo iP e saber diferenciar suas versões; • entender o que causa fragmentação de datagramas e como é feita a remontagem dos datagramas fragmentados; • verificar o que é roteamento e identificar os seus tipos; • aprender como se monta uma tabela de roteamento; • perceber o que são Sistemas autônomos e identificar seus tipos e protocolos; • compreender o protocolo iCMP e suas mensagens. Caros alunos e alunas! Continuando nossos estudos sobre a arquitetura TCP/iP, iremos estudar a camada responsável pelo tráfego de dados e o seus protocolos. lembre-se de que dúvidas poderão surgir no decorrer dos estudos! Quando isso acontecer, anote, acesse a plataforma e utilize as ferramentas “quadro de avisos” ou “fórum” para interagir com seus colegas de curso ou com seu tutor. Sua participação é muito importante e estamos preparados para ensinar e aprender com seus avanços. Bons estudos! 30Introdução a Redes II Seções de estudo 1- O Protocolo iP 2- Funções da Camada 1- O Protocolo IP 1. Introdução a camada inter-rede da arquitetura TCP/IP é equivalente à terceira camada do modelo OSI, a camada de rede, mas operando em modo sem conexão (orientado a datagramas). Como vimos na aula anterior a Internet é uma coleção de redes interconectadas, e o objetivo dessa camada é realizar a interconexão entre essas redes, permitindo que um host em uma determinada rede consiga se comunicar (enviar pacotes) como outro host em outra rede. as ligações físicas entre essas redes são realizadas por dispositivos chamados de gateways ou roteadores pode ser visualizada na figura 1. Figura 1 – Exemplo de Inter-redes Fonte: acervo Pessoal. O protocolo dessa camada é o IP e a sua função e transferir blocos de dados, chamados de datagramas de uma origem a um destino. O serviço oferecido pelo protocolo IP é sem conexão, sendo a comunicação não confiável. Os dados entregues pela camada superior (a de transporte) poderão ser fragmentados em vários datagramas. Cada um pode seguir por um caminho diferente, podendo chegar em ordem diferente, serem duplicados, perdidos e cada datagrama ser novamente fragmentado. Caso ao chegar no destino falte algum datagrama, nenhum procedimento de recuperação ou aviso de erro é realizado em nível de camada de inter- rede. Compete à camada superior detectar se houve erro na transmissão (geralmente pela utilização de timeout). a tarefa do protocolo IP é transportar datagramas da melhor maneira possível de uma origem até um destino, independente se estiverem em uma mesma rede ou em outras redes. O processo de transmissão começa com a camada de transporte recebendo os dados e dividindo-os em datagramas, teoricamente cada um pode ter 64 kbytes de tamanho, mas geralmente esse tamanho é de 1500 bytes. Esses datagramas são transmitidos pela camada inter-rede, sendo possível serem fragmentados novamente durante o percurso. Quando chegam ao destino esses datagramas são remontados e entregues à camada de transporte. 1.2. Formato do pacote vamos estudar o formato dos datagramas IP, que consiste de duas partes: cabeçalhos e dados. O cabeçalho possui uma parte fixa (com tamanho de 20 bytes) e uma parte opcional (com tamanho máximo de 40 bytes). Sendo assim o tamanho mínimo que um cabeçalho pode ter é de 20 bytes e o máximo de 60 bytes. a estrutura do datagrama iP é mostrada na figura 2. Figura 2 – Datagrama IP Fonte: acervo Pessoal. O campo VERSION indica a versão do protocolo iP a que o datagrama pertence. O campo HLEN informa o tamanho do cabeçalho em múltiplo de 4 bytes. O valor mínimo é 5 (20 bytes) e o máximo é 15 (60 bytes). O campo SERVICE TYPE é composto por três partes: a primeira (3 bits), chamada de precedence indica prioridade (de 0-normal a 7-pacote de controle de erro), três flags (retardo, taxa de transferência e confiabilidade) permite que o host indique o que é mais prioritário e 2 bits que não são utilizados. Teoricamente, os roteadores baseado nas informações fornecidas por esse campo permitirão escolher por qual rota o datagrama deverá ser despachado (linha com alta taxa de transferência, linha com menos retardo, etc). Na prática, a maioria dos roteadores ignora esse campo. O campo TOTAL LENGTH informa o tamanho total do datagrama (cabeçalho+dados) em bytes, sendo o maior valor de 65.536 bytes. atualmente esse valor é aceitável, mas com as constantes evoluções nas velocidades das redes serão necessários datagramas maiores. O campo IDENTIFICATION permite que o host de destino identifique a qual datagrama pertence o fragmento. Todos os datagramas que foram fragmentados possuem o mesmo número de identificação. O campo FLAGS é composto por três bits, o primeiro não é utilizado, o segundo é chamado de DF (don’t fragment) se estiver ativo (valor igual a 1) indica aos roteadores que ele não pode ser fragmentado, pois o host de destino não conseguirá remontá-lo. O terceiro bit, chamado de MF (more fragments) se estiver ativo (valor igual a 1) indica que existem mais fragmentos, o último fragmento tem valor igual a 0. 31 O campo FRAGMENT OFFSET indica a posição (em múltiplo de 8 bytes) que o fragmento ocupa no datagrama original. Com essa informação é possível remontar o datagrama, mesmo que os fragmentos cheguem em ordem inversa. Caso falte algum fragmento fica impossibilitando a remontagem do datagrama original, causando o descarte dos outros fragmentos. O campo TIME TO LIVE é um contador, por todo roteador que o datagrama passar ele é decrementado, ao chegar a zero o datagrama é descartado e um aviso é enviado ao emissor. Isso evita que um datagrama fique vagando indefinidamente. O campo PROTOCOL informa qual o protocolo de alto nível foi utilizado para criar o dado que está sendo transportado. O campo HEADER CHECKSUM contém o somatório de verificação do cabeçalho. A cada roteador é recalculado, pois o campo time to live é modificado. Os campos SOURCE/DESTINATION IP ADDRESS contêm os endereços IP de origem e destino, respectivamente. O campo OPTION é a parte variável do cabeçalho IP, inserido para que permitir que sejam incluídas novas informações em versões futuras. Cada opção começa com um código de 1 byte que a identifica, seguido por 1 byte informando o tamanho e uma quantidade variável de bytes contendo as informações específicas. O código de identificação é composto por três partes: cópia (1 bit), informa se a opção deve ou não ser copiadas aos outros fragmentos, classe informa a classe da opção (tabela 1) e número da opção (tabela 2). Tabela 1 – Classe da Opção Classe Descrição 0 Controle da rede e Datagramas 1 Reservado para uso futuro 2 Depuração e medição 3 Reservado para uso futuro Fonte: acervo Pessoal. Tabela 2 – Número das Opções Classe Número da Opção Tamanho Descrição 0 0 Não aplicado Fim da lista de opções 0 1 Não aplicado Nenhuma operação 0 3 Variável Loose Sourcing Routing (lista contendo os roteadores por onde o datagrama deverá passar, mas podendo passar por outros roteadores). 0 7 Record Route (é colocado todos os endereços dos roteadores por onde o datagrama passou). 0 9 Strict Source Routing (lista contendo os roteadores por onde o datagrama deverá passar, obrigatoriamente). 2 4 Time Stamp (Similar ao Record route, mas é registrado o dia/hora que o datagrama passou). Fonte: acervo Pessoal. O campo DATA contém os dados provenientes da camada superior. 1.3. Fragmentação O tamanho de um datagrama IP pode ser de até 64 Kbytes. Mas o tamanho máximo dos quadros na camada de interface com a rede é menor do que esse valor. O tamanho máximo que um quadro Ethernet pode transportar é 1500 bytes e 4500 bytes para o FDDi. a esse tamanho máximo que pode ser transportado em um campo de dados damos o nome de MTU (Maximum Transmition Unit). a fragmentação pode ocorrerna máquina de origem ou em qualquer roteador por onde o datagrama irá passar. isso acontece devido ao fato dos roteadores possuírem mais de uma interface de rede, podendo cada uma ter um MTU de valor diferente, caso o tamanho do datagrama a ser transmitido seja maior que o MTU da interface por onde deve ser despachado ele será fragmentado novamente. Note que um datagrama já fragmentado pode sofrer uma nova fragmentação. Uma vez fragmentado, ele será remontado somente no host de destino. assim, tomemos com exemplo a figura 3. Temos que transmitir um datagrama de 1600 bytes (1580 bytes de dados + 20 bytes do cabeçalho). através de um enlace Ethernet ele é quebrado em dois datagramas (um de 1500 e outro de 120), ao chegar a um roteador que possui o MTU igual a 512 bytes, o primeiro fragmento é novamente fragmentado em três novos fragmentos (dois de 512 bytes e um de 456 bytes). agora, então, o datagrama original tem quatro fragmentos. ao passar por outro roteador que possui MTU igual a 4500 bytes eles não serão fragmentados. Notem que não há a remontagem dos fragmentos. Eles são passados para frente fragmentados. a remontagem será realizada somente no destino. Figura 3 – Fragmentação Fonte: acervo Pessoal. 32Introdução a Redes II a remontagem é realizada utilizando-se como parâmetros os campos OFFSET e o bit MF. O campo offset indica a posição em bytes do fragmento dentro do datagrama original. Na figura 4 temos um exemplo de um datagrama com o tamanho 3520 bytes sendo fragmentado em outros três datagramas. Notem que o campo offset, no primeiro fragmento, é igual a zero, ou seja, início do datagrama original, o segundo deve ser inserido na posição 1480 e o terceiro na 2960. Note que se o terceiro fragmento chegasse antes do segundo não haveria problema, pois o destino saberia em qual posição ele deveria ser inserido na remontagem. Caso o segundo fragmento fosse fragmentado novamente em três outros (dois de 512 bytes e um de 456, por exemplo) teríamos os seguintes OFFSETs: 1480, 1996 e 2504. Não interferindo na remontagem final do datagrama. Figura 4 - Fragmentação de Datagrama IP Fonte: acervo Pessoal. 1.4. O protocolo IP versão 6 (IPv6) O iPv6 é a nova versão do protocolo iP. O motivo principal para o seu desenvolvimento foi devido ao esgotamento de endereços iPv4. Os primeiros estudos sobre o provável esgotamento começaram a ser feitas no ano de 1990. O problema da escassez de endereços começou com a divisão do endereçamento em classes, somente a classe a detém quase metade dos endereços iPv4 válidos. lembrando que são apenas 128 redes classe a e a maioria foram distribuídas para grandes empresas, como por exemplo: HP, iBM e aT&T. aliado a isso temos o aumento vertiginoso do número de usuários e dispositivos que se conectaram a rede. Foram tomadas algumas medidas paliativas, medidas essas que apenas retardaram o esgotamento de endereços, foram elas: • Utilização do conceito de máscaras associados a endereços com o intuito de abolir a classificação de classes. Estudamos sobre esse conceito nessa mesma aula. • A utilização do protocolo DHCP. Esse protocolo permite que um dispositivo não necessite que se atribua um endereço iP a sua interface. ao ser ligado o dispositivo obteria um endereço iP através do serviço de DHCP. Com isso um provedor poderia atribuir o mesmo endereço iP a diferentes clientes (claro que o mesmo endereço não seria utilizado simultaneamente). Dessa maneira cada cliente não necessitaria de um endereço iP exclusivo. • A utilização do serviço de NAT. Estudamos anteriormente sobre esse serviço. Houve uma economia muito grande de endereços iP válidos com a utilização dessa técnica. Pois as empresas teriam milhares de equipamentos utilizando endereços iP privados que compartilhariam através do NaT um único endereço iP válido. Esse serviço quebra a filosofia da comunicação fim-a-fim da Internet, pois a comunicação necessita de um interlocutor. Essas soluções apenas retardaram o esgotamento de endereços iP. Hoje a iaNa (organismo responsável pelo controle da distribuição de endereços iP no mundo) não dispõe mais de endereços iPv4. as principais alterações em relação ao iPv4 são: • Endereçamento: O iPv6 utiliza endereços de 128 bits contra os 32 utilizados pelo iPv4. Foi introduzido mais uma tipo de endereço: anycast. • Cabeçalho mais enxuto: O cabeçalho contém menos campos que a versão anterior. Possibilitando a redução da carga de processamento dos roteadores. Com isso, os roteadores conseguem rotear mais pacotes por unidade de tempo. • Classificação e controle de fluxo: foi introduzido um campo a mais no cabeçalho que idêntica o tipo de tráfego (áudio, vídeo, dados, etc) permitindo que um determinado tipo de tráfego tenha preferência sobre outro. • Mecanismos de criptografia e autenticação: foram criados cabeçalhos específicos para dar suporte a criptografia e autenticação. • Fragmentação: a fragmentação agora ocorrerá somente no host de origem e não mais nos roteadores intermediários. antes do envio o host de origem descobre qual o MTU mínimo do caminho por onde o pacote irá trafegar. Com esse dado ele já fragmenta o pacote na origem. • ICMPv6 com mais tipos de mensagens, como a descoberta do MTU. • Suporte a datagramas jumbo: o tamanho máximo do campo de dados do protocolo IPv4 é de 64KBytes. O IPv6 permite que se transmita dados com tamanhos maiores que esse. 1.4.1. O Cabeçalho IPv6 O cabeçalho do IPv4 possui um tamanho mínimo de 20 bytes e máximo de 60 bytes. Contém doze campos sendo que um campo era exclusivo para informar opções complementares. O cabeçalho do IPv6 possui um tamanho fixo de 40 bytes. É composto por oito campos: • Versão (Version): possui o tamanho de quatro bits. indica a versão do protocolo iP, no caso do iPv6 o valor é 6. 33 • Classe de Tráfego (Traffic Class): possui o tamanho de oito bits. Utilizado para identificar que o pacote pertence a uma determinada classe de serviço permitindo assim que o pacote tenha tratamento diferenciado (por exemplo, uma prioridade maior). • Identificador de Fluxo (Flow Label): possui o tamanho de vinte bits. Utilizado para identificar que o pacote pertence a um fluxo de comunicação de uma determinada aplicação. • Tamanho dos Dados (Payload Lenght): possui o tamanho de 16 bits, indica o tamanho (em bytes) dos dados que se segue ao cabeçalho. Caso o dado seja um datagrama jumbo, esse valor é zero. O tamanho do datagrama será especificado pelo cabeçalho de extensão hop-by-hop. iremos falar mais sobre cabeçalhos de extensão mais a frente. • Próximo Cabeçalho (Next Header): possui o tamanho de oito bits. Era o antigo campo protocolo no iPv4. Esse campo indica qual o próximo cabeçalho que se segue ao final do cabeçalho IPv6. O iPv6 introduziu uma maneira nova de adicionar informações adicionais no cabeçalho. No iPv4 isso era feito através do campo opções. Por questões de dinamismo o iPv6 aboliu esse campo e criou o que chamamos de cabeçalhos de extensão. Ao final do cabeçalho iPv6 terá um outro cabeçalho, que pode ser o do protocolo da camada superior que está sendo transportado pelo datagrama iP (TCP ou UDP) ou um cabeçalho de extensão que contém informações adicionais. Todos os cabeçalhos de extensão possuem o campo “Próximo Cabeçalho”. assim várias opções podem ser informadas ao destino. Os roteadores intermediários processarão somente o primeiro cabeçalho de extensão (Hop- by- Hop) os demais serão processados apenas no host de destino. Dessa maneira, os roteadores não perdem tempo analisando opções que não lhe dizem respeito. Novas opções podem ser criadas no futuro apenas criando novos cabeçalhos de extensão sem a necessidade de alterar o cabeçalho base. logo percebemos que existe uma ordem hierárquica no que diz respeito a sequência em que os cabeçalhos de extensão deverão ser apresentados. Em ordem hierárquica os cabeçalhos de extensãosão: • Opções Hop-by-Hop: O valor para essa opção no campo next header no cabeçalho base é 0. Utilizado para indicar que o pacote necessita de tratamentos especiais. Também utilizado para indicar que é transportado um datagrama jumbo. • Opções de Roteamento: Identificado pelo valor 43 no campo Next Header no cabeçalho base. Essa opção é utilizada para dar suporte a mobilidade no iPv6. • Opções de Fragmentação: Identificado pelo valor 44 no campo Next Header no cabeçalho base. Essa opção será utilizada pelo host de destino na remontagem dos datagramas fragmentados. • Cabeçalho de Autenticação: Identificado pelo valor 51 no campo Next Header no cabeçalho base. • Cabeçalho de Encapsulamento de segurança de Dados (Authentication Header e Encapsulating Security Payload): Identificado pelo valor 52 no campo Next Header no cabeçalho base. Juntamente com o cabeçalho anterior garante a integridade dos dados transmitidos (o conteúdo que chegou ao destino é o que realmente foi gerado pela origem) e autenticidade (garante que o emissor é realmente quem diz ser). • Opções de destino (Destination Options): Identificado pelo valor 60 no campo Next Header no cabeçalho base. É utilizado para dar suporte a mobilidade no iPv6. Todos os cabeçalhos de extensão são opcionais, são utilizados apenas caso o host de origem necessite informar opções adicionais, como por exemplo, a ocorrência de fragmentação ou prover a autenticidade e integridade do dado transportado. Ao final do cabeçalho de extensão será encadeado o cabeçalho do protocolo da camada superior que está sendo transportado: TCP (Identificado pelo valor 6 no campo Next Header no cabeçalho anterior) ou UDP (Identificado pelo valor 17 no campo Next Header no cabeçalho anterior), por exemplo. • Limite de Encaminhamento (Hop Limit): Possui tamanho de oito bits. indica quantos saltos que o pacote IPv6 pode dar (a quantidade de roteadores por onde o mesmo poderá passar) antes de ser descartado. • Endereço de Origem (Source Address): Possui o tamanho de 128 bits. indica o endereço lógico de origem. • Endereço de Destino (Destination Address): Possui o tamanho de 128 bits. indica o endereço lógico de destino. 1.4.2. Transição do IPV4 para O IPV6 a transição do iPv4 para o iPv6 está sendo feita de forma gradual, dado visto que a imensidão da internet uma troca imediata de protocolos é impensável. Não está ocorrendo na velocidade desejada, ainda é muito tímido o tráfego de pacotes da nova versão. Em nível de Brasil, analise o tráfego do iPv4 pelo gráfico do site http://ptt.br/cgi- bin/all e confronte com o do iPv6: http://ptt.br/transito_ipv6.php. O que veremos é com o passar do tempo que o iPv4 acabará caindo em desuso, pois a nova versão é mais robusta e mais rápida, e os novos serviços que por ventura venham a ser lançados serão feitos apenas para a nova versão. O período de coexistência de ambos os protocolos poderá durar indefinidamente. Para permitir a interoperabilidade (permitir que um protocolo se comunique com o outro) entre ambos os protocolos foram criadas as seguintes técnicas: • Pilha dupla de protocolos: Todos os sistemas operacionais atualmente suportam as duas versões do protocolo. O que é chamado de pilha dupla de protocolos. a máquina possui endereços tanto iPv4 quanto iPv6. Ou seja, a máquina “fala” ambos os 34Introdução a Redes II protocolos. Técnica da pilha dupla Fonte: apostila de curso básico iPv6 oferecido pelo comitê ipv6.br. • Tunelamento: Permite que pacotes iPv6 sejam transportados pelo protocolo iPv4 utilizando assim a infraestrutura já existente. Essa técnica é utilizada para que hosts em redes iPv6 separadas por redes iPv4 se comuniquem. Ou que hosts em redes iPv6 se comuniquem com hosts em redes iPv4. Essa técnica exige que exista um interlocutor entre as duas redes. Técnica de tunelamento Fonte: apostila de curso básico iPv6 oferecido pelo comitê ipv6.br. • Tradução: É utilizada para permitir que hosts que possuam apenas uma versão do protocolo se comuniquem. 1.4.3. ENDEREÇaMENTO O endereços iPv6 são compostos por 128 bits, o que pode gerar até 340.282.366.920.938.463.463.374.607.431.76 8.211.45340.282.366.920.938.463.463.374.607.431.768.211.4 56 (alguém se propõe a ler esse número?) endereços. Como estudamos anteriormente, os endereços iPv4 são compostos por 32 bits, dispostos em grupos de quatro octetos (grupo de oito bits) separados por um ponto, na forma: n.n.n.n Onde, n é um número decimal entre 0 e 255 Os endereços iPv6 são representados por oito grupos de 16 bits cada um separados por dois pontos “:”. Cada grupo de 16 bits é representado por dois números hexadecimais. São escritos na forma: HH:HH:HH:HH:HH:HH:HH:HH Onde cada H representa um número hexadecimal. Exemplo: 2001:abcd:0000:0000:5c20:9bff:fe56:49fd vamos começar a entender o endereçamento iPv6. O endereço é dividido em duas partes, a primeira formada pelos quatro primeiros grupos representa a rede e a segunda formada pelos quatro últimos representa a interface de rede dentro dessa rede. No exemplo acima temos: 2001:abcd:0000:0000 – identifica a rede 5c20:9bff:fe56:49fd – identifica a interface dentro da rede Continuando a decifrar o endereço iPv6 vamos nos ater a parte que identifica a rede. Ela é subdividida em outras duas partes: uma chamada de prefixo global e outra chamada de identificador da sub-rede (também chamado de id da subrede). Não existe uma regra geral que defina o tamanho de cada uma, pois existem vários tipos de endereços iPv6 (que veremos mais a frente) e para cada tipo o prefixo global e o id da sub-rede possuem tamanhos distintos. Mas no exemplo dado acima temos que o prefixo global é 2001:abcd e o id da sub-rede é 0000:0000. você deve estar se perguntando o porquê dessas subdivisões. O motivo é que os endereços são organizados de forma hierárquica para facilitar e agilizar o serviço de roteamento. Representam uma região dentro do globo e a identificação de um provedor dentro dessa região. Dessa maneira, ao olharmos para o prefixo global, saberemos se o endereço está nos Estados Unidos, Brasil ou qualquer outro lugar do planeta. Os endereços iPv6 são muito longos. Podemos fazer algumas abreviações, seguindo as seguintes regras: • Omitir os zeros à esquerda; • Representar zeros contínuos com: “::” uma única vez. Tomando nosso endereço, exemplo anterior, podemos abreviá-lo das seguintes maneiras: 2001:abcd:0:0:5c20:9bff:fe56:49fd 2001:abcd::5c20:9bff:fe56:49fd Na primeira simplificação apenas omitimos os zeros à esquerda e no segundo representamos os zeros contínuos com um duplo “dois pontos” (::). 35 Olhemos outros exemplos. fe00:0000:0000:0000:5c20:9bff:fe56:0cfd pode ser abreviado como: fe00::5c20:9bff:fe56:cfd ou fe00:0:0:0:5c20:9bff:fe56:cfd Notem que abreviamos o último grupo (0cfd), omitimos o zero a esquerda. Quando temos zeros contínuos é preferível a primeira abreviação! Outro detalhe é que podemos substituir os zeros contínuos pelos duplo dois pontos apenas uma única vez. assim é incorreto abreviar o endereço 2001:abcd:0:0:5c20:0000:0000:0cfd por 2001:abcd::5c20::cfd. Outro detalhe é que devemos omitir somente zeros à esquerda. assim também seria incorreto abreviar o endereço 2001:ab cd:0:0:5c20:9bff:fe56:490d pelo endereço 2001:abcd:0:0:5c20:9bff:fe56:49d, pois não há como saber se essa abreviatura corresponde a 2001:abcd:0:0:5c20:9 bff:fe56:490d ou a 2001:abcd:0:0:5c20:9bff:fe56:049d. 1.4.4. Tipos de Endereçamento IPv6 O iPv6 possui três tipos de endereçamento: • Unicast: similar ao do IPv4 identifica uma única interface. Um pacote endereçado a um endereço unicast será entregue a apenas uma interface. • Multicast: esse tipo de endereço também existe no IPv4 e representa um conjunto de interfaces. Um pacote endereçado para um endereço multicast será entregue para as interfaces que fazem parte daquele grupo. • Anycast: esse tipo de endereçamento não existiano IPv4. É similar ao multicast. Um endereço anycast representa um grupo de interfaces, porém ao se enviar uma mensagem a um endereço anycast irá receber o pacote a interface do grupo que está mais próxima da origem. ao requisitar um vídeo no site do youtube você é redirecionado para um servidor mais próximo de você, porém isso hoje é feito utilizando um servidor central que fará o redirecionamento. Com o IPv6 sua requisição irá direto para o servidor mais próximo, sem a necessidade de um processamento central. Tornando mais eficiente e rápido o acesso. a seguir estudaremos melhor cada um desses tipos. 1.4.5. Endereços Unicast São vários os tipos de endereços UNiCaST, temos alguns que não são mais utilizados, outros utilizados para propósitos especiais e outros para uso normal. Os de propósito especiais são: • Loopback: semelhante ao loopback do IPv4 é utilizado para se referenciar a própria máquina. É representado por ::1 (0:0:0:0:0:0:0:1) • Endereço Não Especificado: indica a ausência de endereço. É representado por :: (0:0:0:0:0:0:0:0) • Endereço IPv4 mapeado: utilizado na transição entre iPv4 e iPv6 para que hosts que utilizem esses protocolos se comuniquem. É representado pelo prefixo ::FFFF: seguido pelo endereço IPv4. Por exemplo: ::FFFF:192.168.1.1. • Endereços utilizados na transição: Os endereços começados pelos prefixos 2002:: e 2001:0000:: são utilizados pelos mecanismos de tunelamento 6to4 e Teredo, respectivamente. • Os endereços utilizados em documentação: Os endereços iniciados por 2001:db8:: são utilizados em documentação, exemplos e testes e não são roteáveis pela Internet. Os endereços iniciados pelos seguintes prefixos não são mais utilizados e não são roteáveis: • 3ffe:: - Endereços de testes utilizados no início da implantação do iPv6. • ::abcd – Esses endereços foram utilizados para mapear endereços iPv4 em endereços iPv6. Foi susbstituído pela representação vista anteriormente (::FFFF:abcd). • fec0:: - Substituídos pelos endereços Unicast ULA que iremos ver mais a frente. Os endereços para utilização normal são: • Local Link: Utilizado para identificar uma interface dentro da rede local onde a mesma está conectada. Não é roteável, ou seja, não há como se comunicar com uma máquina que se encontra em outra rede através de um endereço do tipo local link. Ele serve unicamente para a comunicação entre máquinas da mesma rede local. Os endereços desse tipo começam com o prefixo fe80:0:0:0 (ou fe80::) seguido pelo identificador da interface no formato iEEE EUi-64 (iremos ver esse formato mais a frente). Como por exemplo: fe80::219:bbff:fec6:71a5 onde: fe80::- prefixo de rede 219:bbff:fec6:71a5 – identificador da interface (formato EUI-64) • Global Local (Unique Local Address-ULA): Quase semelhante ao anterior, não é roteável globalmente, porém é roteável apenas na rede local ou em um conjunto de redes locais (por exemplo, uma intranet). O propósito desse tipo de endereçamento é permitir que máquinas em um determinado conjunto de redes se comuniquem. Os formatos desses endereços podem ser: FCHH:HHHH:HHHH: : ou FDHH:HHHH:HHHH::: Os dígitos HH são dígitos hexadecimais gerados aleatoriamente. Quando o endereço se iniciar por FC significa que os prefixos HH foram gerados localmente. Se iniciar por FD significa que foram gerados por um organismo central. • Global Unicast: são similares aos endereços públicos do IPv4. São roteáveis globalmente. Ou seja, são os endereços que são alcançáveis globalmente dentro 36Introdução a Redes II da internet. a faixa desses endereços é: de 2000:0000:0000:0000:0000:0000:0000:0000 a 3fff:ffff:ffff:ffff:ffff:ffff:ffff:ffff Agora vamos aprender como gerar o identificador da interface (últimos 4 grupos do endereço IPv6) baseado na recomendação IEEE EUI-64. Para gerar esse identificador utiliza-se o endereço físico da interface de rede (endereço MAC), estudado na aula 1. São compostos por 6 bytes (48 bits). Cada byte é expresso em um valor hexadecimal. Como por exemplo: 00:19:bb:c6:71:a4. O identificador de rede será obtido da seguinte forma: • Os três últimos bytes do identificador serão os três últimos bytes do endereço MaC. Por enquanto o identificador ficará da assim: ::c6:71a4 . • São inseridos os bytes fffe. Agora o identificador está da seguinte forma: :ff:fec6:71a4. • adicione agora o segundo e terceiro byte do endereço MAC (19:bb). Agora o identificador está da seguinte maneira: 19:bbff:fec6:71a4. • agora falta a última etapa. Pega-se o primeiro byte, transforma em binário e inverte-se o sétimo bit (se for 1 vira 0, se 0 vira 1). 00 em binário é 00000000. invertendo o sétimo bit, temos: 00000010 que em hexadecimal é 02. Logo o identificador da interface ficará: 0219:bbff:fec6:71a4. Relembrando sobre o endereçamento IPv6. vimos que é composto por oito grupos de dois bytes cada um. Os quatro primeiros grupos identificam a rede e os quatro últimos identificam a interface de rede. Foram justamente esses quatro últimos números que aprendemos a gerar através da recomendação EUi-64. O endereço unicast do tipo link local para a interface acima ficaria: fe80::0219:bbff:fec6:71a4. A figura abaixo ilustra outro exemplo de cálculo de um identificador de interface baseado na recomendação IEEE EUI-64. Nesse exemplo o endereço MaC utilizado é o F4:6D:04:47:2F:67 e o identificador de Interface resultante é F66D:04FF:FE47:2F67. 2- Funções da Camada 2.1. Roteamento Como estudado na aula anterior, a arquitetura TCP/ IP foi desenvolvida pensado na interconexão de redes, para permitir que um host comunique-se com outro não importando quantas redes existam entre os dois. ao processo de encontrar o caminho (não sendo necessariamente o melhor) damos o nome de roteamento. Chamamos de roteador ou gateway o equipamento que conecta duas ou mais redes fisicamente. a decisão de roteamento é realizada tanto pelos roteadores quanto pelos hosts. O roteamento consiste em decidir por onde enviar o datagrama baseado no endereço do destinatário. Existem dois tipos de roteamento: o direto e o indireto. 2.2. Roteamento Direto O roteamento direto acontece quando os dois hosts se encontram na mesma rede física. Nesse caso não é necessária a utilização de um roteador. O host de origem verifica se o endereço pertence à mesma rede sua e através do protocolo ARP descobre o seu endereço físico e despacha o datagrama em sua rede. Caso o endereço não faça parte de sua rede é necessário realizar o roteamento indireto. 2.3. Roteamento Indireto O roteamento indireto é utilizado quando a máquina de destino não se encontra na mesma rede da máquina de origem. Nesse caso, a mensagem terá que passar por um ou vários roteadores até alcançar o destino. O transmissor, ao identificar que o destino se encontra em outra rede, deverá encaminhar o datagrama para o roteador de sua rede e este, por sua vez, se encarrega de encaminhar o datagrama para o destino. 2.4. Tabela De Roteamento Cada máquina, seja ela host ou roteador, possui uma tabela de rotas. Essa tabela possui uma lista contendo um par (rede, gateway) que indica qual o gateway que deverá ser utilizado para chegar a rede especificada. a decisão que um host deve tomar ao enviar um datagrama é: primeiro verificar se o destino se encontra na mesma rede. Se a resposta for sim, deverá descobrir o endereço físico do destino e realizar a entrega direta. Caso não se encontre na mesma rede, deverá encontrar o endereço físico do roteador que fará essa entrega e encaminhar o datagrama para o ele. A figura 5 ilustra seis redes interconectadas. Figura 5 – Seis redes interconectadas Fonte: acervo Pessoal. a tabela de roteamento do gateway G é dada na tabela 3: Destino Entregar em 10.0.0.0 20.0.0.5 20.0.0.0 Direto interface 1 30.0.0.0 Direto interface 2 40.0.0.0 30.0.0.7 50.0.0.0 30.0.0.737 60.0.0.0 30.0.0.7 Note que o gateway 30.0.0.7 é utilizado várias vezes para se encontrar outras redes. Podemos reescrever essa mesma tabela da seguinte forma: Destino Entregar em 10.0.0.0 20.0.0.5 20.0.0.0 Direto interface 1 30.0.0.0 Direto interface 2 default 30.0.0.7 Incluímos uma nova definição, a da rota default (ou gateway padrão), que será usada sempre que nenhuma outra rota for encontrada na tabela de roteamento local. 2.5. Sistemas autônomos até agora demos exemplos de interconexão de redes simples. imaginem em nível de Brasil, quantas redes interconectadas nós temos. Nesse cenário temos redes de universidades que estão conectadas ao backbone da RNP ou a backbone das operadoras de telecomunicações ou conectadas a ambos. Temos também empresas conectadas a backbone de operadoras. Chamamos de Sistemas Autônomos (AS) a um conjunto de redes interconectadas sob o domínio ou administração de uma entidade. Essa entidade decide qual protocolo de roteamento irá ser utilizado em seus roteadores, qual parâmetro (menor retardo, hops, confiabilidade, etc) será utilizado como métrica. Podemos classificar os AS em três tipos: • AS Stub: é um AS que está conectado somente a um outro AS. Pode ser uma empresa ou universidade conectada a um backbone. • AS multiconectado: é um AS que possui conexões com vários outros aS, mas se recusa a transportar tráfego de um AS para outro. Como, por exemplo, uma empresa multinacional que tem conexão com backbones nacionais e internacionais. • AS de trânsito: similar aos multiconectados, mas realizam o tráfego de um AS a outro. 2.5.1. IGP Os protocolos de roteamento utilizados dentro dos AS são chamados de IGP (interior gateway protocol). E os roteadores que trocam informações de roteamento somente com os roteadores internos ao AS são chamados de vizinhos interiores. Os principais e mais utilizados protocolos IGP são: RIP, OSPF e IRGP. Os dois primeiros são protocolos abertos (não têm suas patentes requeridas) e o último é de propriedade da CISCO e utilizado em seus roteadores. 2.5.2. EGP Os roteadores que interconectam os AS são chamados de roteadores de borda, e os protocolos de roteamento utilizado por eles são: EGP (exterior gateway protocol) e BGP (border gateway protocol). Enquanto o protocolo IGP preocupa-se em encontrar o melhor caminho dentro do AS, o EGP preocupa-se em apenas achar um caminho, não importando se é o melhor ou não. Isso se deve à dificuldade em decidir qual é o melhor caminho, pois cada AS utiliza uma métrica diferente. O protocolo BGP proporciona o controle de política de acesso aos AS multiconectados. Com isso, um AS pode definir regras como, por exemplo: o tráfego de um determinado AS não poderá passar por aqui. Para se alcançar o AS y utilize o AS x, tráfego do AS y não poderá passar pelo AS z, e assim por diante. 2.6. Protocolo ICMP Outro protocolo do nível inter-rede é o ICMP (Internet Control Message Protocol). Sua função é permitir que os gateways reportem erros ou enviem mensagem de controle. O destino final de uma mensagem ICMP é a camada inter-redes e não as superiores. O protocolo ICMP somente informa os erros e não os corrige. O protocolo ICMP é encapsulado em um datagrama IP. Cada mensagem ICMP tem um formato próprio, mas todas contêm os campos abaixo: • TYPE: identifica a mensagem. Ocupa 8 bits. • CODE: fornece mais informações sobre a mensagem. Ocupa 8 bits. • CHECKSUM: usado pra verificação do pacote. Ocupa 16 bits. a seguir veremos alguns tipos de mensagens ICMP. 2.6.1. Echo Request e Echo Reply É utilizado para verificar se uma máquina está ativa ou não. A figura 6 mostra o formato da mensagem. O campo TYPE recebe o valor 8 se for um ECHO REQUEST, 0 se for ECHO REPLY. Os campos IDENTIFIER e SEQUENCE NUMBER identificam qual mensagem foi enviada e qual está sendo recebida. O campo OPTIONAL DATA é opcional e pode conter dados como, por exemplo, o tempo gasto para se alcançar uma máquina. Figura 6 – mensagem tipo Echo Request e Echo- Reply Fonte: acervo Pessoal. 2.7. Destino não alcançável Utilizado para informar que um destino (host ou rede) não está alcançável. O formato da mensagem está ilustrado na figura 7. O campo CODE carrega o motivo da mensagem. 38Introdução a Redes II Valor Significado 0 Rede não alcançável 1 Host não alcançável 2 Protocolo não alcançável 3 Porta não alcançável 4 Fragmentação necessária e BIT DF presente. 5 Rota de origem falhou 6 Rede de destino desconhecida 7 Host de destino desconhecido 8 Host de origem isolado 9 Comunicação proibida com a rede de destino 10 Comunicação proibida com o host de destino 11 Rede inalcançável para ToS 12 Host inalcançável para ToS Figura 7 – Mensagem de destino não alcançável Fonte: acervo Pessoal. 2.8. Controle de Fluxo e de Congestionamento Um gateway utiliza uma mensagem do tipo QUENCHE para avisar ao remetente que pare de enviar mais pacotes, pois está com suas filas de envio de pacotes cheias e não tem mais espaço para armazenar novos pacotes, tendo que descartar os novos pacotes que chegarem. a Figura 8 ilustra essa mensagem. O campo INTERNET HEADER conterá o endereço do gateway problemático, mais 64 bits do datagrama. Figura 8 – Mensagem tipo Quenche Fonte: acervo Pessoal. Chegou o momento de relembrar o que aprendemos. Retomando a aula 1- O Protocolo IP Nessa primeira seção, estudamos o formato do protocolo iP, vimos a sua estrutura e seu funcionamento. vimos as diferenças entre a versão quatro e a versão seis desse protocolo. Estudamos também o processo de fragmentação de datagramas, qual a sua causa e como é feita a remontagem dos mesmos ao chegar ao destino. 2- Funções da Camada Nessa seção, aprendemos sobre roteamento, vimos sobre os dois tipos de roteamento existentes: direto e indireto. Estudamos o papel de um gateway em uma rede. aprendemos sobre os sistemas autônomos, seus tipos e protocolos utilizados. E por último estudamos o protocolo iCMP, utilizado para que sejam trocadas informações de controle entre máquinas na rede. Estudamos as diversas mensagens transportadas por esse protocolo. Youtube. CPRE - Entendendo o iPv6. Disponível em: http://www.youtube.com/watch?v=rQPwMtT89uQ. acesso em: 03/01/2013. YouTube. Entenda como vai funcionar o iPv6. Disponível em: http://www. youtube.com/watch?v=B_f_ G5xo6ok. acesso em: 01/03/2013. Youtube. Webcast Microsoft - Roteamento iP - Preparatório Exame infraestrutura Disponível em: http://www.youtube.com/ watch?v=rMZ02eaZRFM. acesso em: 01/03/2013. Vale a pena assistir RNP. Portal iPv6 Brasil. Disponível em: http://www. ipv6.br. acesso em: 01/03/2013. RNP. Roteamento: O que é importante Saber. Disponível em: http://www.rnp.br/newsgen/9705/n1-1. html. acesso em: 01/03/2013. Microsoft. Roteamento iP. Disponível em: http:// technet.microsoft.com/pt-br/library/cc785246(v=ws.10). aspx. acesso em: 01/03/2013. De alexandre, Cleber Martin; ascenso, Eduardo. Sistemas autônomos (aS) Brasileiros – introdução. Disponível em: ftp://ftp.registro.br/pub/gter/gter28/07- asbr.pdf. acesso em: 01/03/2013. Filippetti, Marco. afinal, o que é um Sistema autônomo (aS)?. Disponível em: http://blog.ccna.com. br/2009/11/10/afinal-o-que-e-um-sistema-autonomo-as/. acesso em: 01/03/2013. Vale a pena acessar Vale a pena