CENTRO ESTADUAL DE ENSINO TECNOLOGICO “PAULA SOUZA” FACULDADE DE TECNOLOGIA DE LINS CURSO SUPERIOR DE TECNOLOGIA EM REDES DE COMPUTADORES CLÁUDIA QUINTO FELIX UMA ABORDAGEM SOBRE O PROBLEMA DA FALTA DE ALOCAÇÃO DE ENDEREÇOS NA INTERNET. LINS/SP 1º SEMESTRE/2011 CENTRO ESTADUAL DE ENSINO TECNOLOGICO “PAULA SOUZA” FACULDADE DE TECNOLOGIA DE LINS CURSO SUPERIOR DE TECNOLOGIA EM REDES DE COMPUTADORES CLÁUDIA QUINTO FELIX UMA ABORDAGEM SOBRE O PROBLEMA DA FALTA DE ALOCAÇÃO DE ENDEREÇOS NA INTERNET. Trabalho de Conclusão de Curso apresentado à Faculdade de Tecnologia de Lins para obtenção do Título de Tecnólogo(a) em Redes Computadores. Orientador: Prof. Dr. Renato Correia de Barros LINS/SP 1º SEMESTRE/2011 de Dedico este trabalho aos meus pilares: meus pais, Ivone Quinto e Benedito Felix, e ao meu amor, Philippe Gimenes Garcia. Vocês são a razão da minha vida e sem vocês eu não estaria aqui. AGRADECIMENTOS Nesta oportunidade venho agradecer a todos que de maneira direta ou indireta contribuíram para que eu tivesse forças para superar todos os obstáculos que encontrei nesses anos de faculdade. Mais uma vez agradecer meus pais Ivone e Benedito; e o Philippe que me apoiaram e fizeram tudo que foi possível para que eu tivesse tempo e tranqüilidade para me dedicar aos estudos. Mãe se um dia eu me tornar metade da mulher que você é, eu já estarei realizada. Pai, obrigada por insistir nos meus estudos. Philippe, obrigada por me amar e me ensinar que as dificuldades nunca são grandes demais. Amo muito vocês. Todos meus familiares que acreditaram e confiaram em mim. Meus amigos de faculdade, Lígia, José Renato, Priscilla, André, e todos os outros que sempre estavam lá quando eu precisei, nas horas boas e ruins, de risadas e dores de cabeça. Aos “meninos inteligentes da sala” vocês têm uma grande parte na minha conquista. E minha querida amiga Kellyn que esteve comigo em momentos difíceis. Agradeço ao meu orientador Renato, ao Paulinho meu antigo orientador que foi quem me inspirou a idéia e aos professores Júlio e Naylor que me ajudaram muito nas minhas horas de desespero total. Agradeço também a Deus que olha por mim e me guia. Enfim agradeço a todos. RESUMO Este trabalho tem como objetivo geral analisar o Internet Protocol (IP) em suas versões 4 e 6, sendo que nele é feita uma abordagem sobre o início da Internet e a utilização do Transmission Control Protocol/Internet Protocol (TCP/IP), a expansão inesperada, os problemas com o IPv4 decorrentes desse fato, as soluções adotadas de maneira temporária e permanente com a implementação do IPv6. Decorrente da expansão inesperada da Internet notou-se que o espaço de endereçamento IPv4 que contava com 32 bits seria insuficiente para atender a demanda por endereços IP. Porém como este fato foi notado poucos anos após o uso da Internet ter se tornado global, algumas soluções foram elaboradas para evitar que o problema iminente da possível escassez de endereços prejudicasse a rede mundial de computadores, são elas: Classeless Inter-Domain Routing (CIDR), Network Address Translation (NAT), Dynamic Host Configuration Protocol (DHCP), Variable Lenght Subnet Masks (VLSM), as sub-redes, o uso de endereços privados e também a solução final, o IP Next Generation (IPng) ou IPv6 que oferece 128 bits de espaço para alocação de endereços na Internet. O uso dessas tecnologias adiou a necessidade de se implementar de imediato o IPv6, pois foi uma maneira de economizar endereços. Porém com a distribuição dos últimos cinco blocos para as organizações regionais que ocorreu em fevereiro de 2011, o IPv6 já está sendo implementado. O presente trabalho foi realizado através de pesquisas bibliográficas e elaboração de um estudo de caso onde foi exemplificada a configuração de uma rede virtual com endereços IPv6, sendo que estes são IPv4 que foram convertidos. Já que durante a fase de transição que tem duração prevista de aproximadamente 10 anos eles poderão ser utilizados de maneira embutida no IPv6 para que haja compatibilidade. Em suma a pesquisa realizada mostra todos os aspectos relevantes a tecnologias já utilizadas e também mostra um ponto de partida para estudos futuros sobre a nova tecnologia da Internet. Palavras chaves: IPv4, IPv6, sub-redes. ABSTRACT This paper aims at analyzing the Internet Protocol (IP) versions 4 and 6, which generates an approach is made on the beginning of the Internet and use the Transmission Control Protocol / Internet Protocol (TCP / IP), the unexpected expansion the problems with IPv4 due to this fact, the solutions adopted in a temporary and permanent implementation of IPv6. Unexpected due to the expansion of the Internet noted that the IPv4 address space that had 32-bit would be insufficient to meet demand for IP addresses. But as this fact was noted a few years after the use of the Internet have become global, some solutions are designed to prevent the impending problem of scarcity of addresses can undermine the global computer network, they are: Classeless Inter-Domain Routing (CIDR ), Network Address Translation (NAT), Dynamic Host Configuration Protocol (DHCP), Variable Length Subnet Masks (VLSM), sub-networks, the use of private addresses and also the final solution, the IP Next Generation (IPng) or IPv6 which provides 128 bits of space for allocating Internet addresses. The use of these technologies has delayed the need to immediately implement IPv6, because it was a way to save addresses. But with the distribution of the last five blocks to regional organizations that occurred in February 2011, IPv6 is already being implemented. This work was done through literature searches and preparation of a case study which was exemplified configuration of a virtual network with IPv6 addresses, and these are IPv4 that have been converted. Since during the transition phase that is expected to last about 10 years they can be used in an IPv6 built in for compatibility. In short, the survey shows all relevant aspects of the technologies already in use and also shows a starting point for future studies on the new Internet technology. Keywords: IPv4, IPv6 subnets. LISTA DE ILUSTRAÇÕES Figura 3.1: Posicionamento e operação do NAT............................................... 40 Figura 4.1: Cabeçalho principal com campos obrigatórios do IPv6................... 50 Figura 4.2: Cabeçalho do IPv4........................................................................... 53 Figura 4.3: Formato do endereço Ethernet de 48 bits....................................... 62 Figura 5.1: Comando para instalar o IPv6 no Windows XP............................... 66 Figura 5.2: Instalação do IPv6 a partir da interface gráfica................................ 67 Figura 5.3: Atribuição de um endereço IPv6 no Windows XP........................... 68 Figura 5.4: Comando ipconfig............................................................................ 68 Figura 5.5: Atribuição de um endereço IPv6 no Ubuntu.................................... 69 Figura 5.6: Ping a partir do Windows XP........................................................... 70 Figura 5.7: Ping a partir do Ubuntu.................................................................... 71 Figura 5.8: Inserindo IPv4 no conversor online.................................................. 72 Figura 5.9: IPv6 convertido................................................................................ 72 Figura 5.10: IPv6 condensado........................................................................... 73 Figura 5.11: IPv6 alternativo.............................................................................. 73 LISTA DE TABELAS Tabela 2.1: Distribuição de classes.................................................................. 26 Tabela 2.2: Notação Hexadecimal e decimal com ponto.................................. 27 Tabela 3.1: Máscaras padrão............................................................................ 31 Tabela 3.2: Divisão da rede 229.45.32.0 em 16 sub-redes............................... 33 Tabela 3.3: Endereços Privados........................................................................ 37 Tabela 4.1: Cabeçalhos de extensão................................................................. 54 Tabela 4.2: Divisão Proposta dos endereços IPv6 em tipos.............................. 59 LISTA DE QUADROS Quadro 2.1: Formato de endereços IP............................................................... 25 Quadro 4.1: Formato do cabeçalho de hop-by-hop para jumbogramas............ 55 Quadro 4.2: Cabeçalho de extensão para roteamento...................................... 56 Quadro 4.3: Codificação do endereço IPv4 em um endereço IPv6................... 60 Quadro 4.4: Divisão do endereço Unicast......................................................... 61 LISTA DE ABREVIATURAS E SIGLAS ADSL – Asymmetric Digital Subscriber Line. APIPA – Automathic Private IP Address. ARP – Address Resolution Protocol. ARPANET – Advanced Research Projects Agency NETwork. BOOTP – BOOTstrap Protocol. BSD – Berkeley Software Distribution. CERN – Conseil Européen pour la Recherche Nucléaire. CIDR – Classeless Inter-Domain Routing. CLNP – Connection-Less Network Protocol. CSNET – Computer Science NETwork. DARPA – Defense Advanced Research Projects Agency. DCA – Defenses Communication Agency. DHCP – Dynamic Host Configuration Protocol. DNS – Domain Name System. IANA – Internet Assigned Numbers Authority. ICANN – Internet Corporation for Assigned Names and Numbers. ICCB – Internet Control and Configuration Board. IEEE – Institute of Electrical and Electronics Engineers. IETF – Internet Engineering Task Force. IP – Internet Protocol. IPv4 – Internet Protocol version 4. IPv6 – Internet Protocol version 6. ISP – Internet Service Provider. LACNIC – Latin American and Caribbean Internet Addresses Registry. LAN – Local Area Network. MILNET – Military Net. NAT – Network Address Translation. Nic.br – Núcleo de Informação e Coordenação do Ponto BR. NSF – National Science Foundation. NSFNET – National Science Foudation NETwork. OSPF –Open Shortest Path First. RARP – Reverse Address Resolution Protocol. RFC – Request For Comments. RIP – Routing Information Protocol. RIR – Regional Internet Registry. TCP/IP – Transmission Control Protocol/Internet Protocol. UDP – User Datagram Protocol. URSS –União das Repúblicas Socialistas Soviéticas. VLSM –Variable Lenght Subnet Masks. WWW – World Wide Web. SUMÁRIO INTRODUÇÃO .......................................................................................................... 15 1 INÍCIO DA INTERNET E SUA POPULARIZAÇÃO ................................................ 18 2 ENDEREÇAMENTO IP (INTERNET PROTOCOL) ................................................ 24 2.1 SURGIMENTO DO PROBLEMA RELATIVO AO ESGOTAMENTO DOS ENDEREÇOS IPv4 ................................................................................................... 28 3 SOLUÇÕES PARA O ESGOTAMENTO DO IPv4 .................................................. 30 3.1 SUB-REDES ....................................................................................................... 31 3.2 CIDR (CLASSELESS INTER-DOMAIN ROUTING) ............................................ 33 3.3 VLSM (VARIABLE LENGTH SUBNET MASKS) ................................................. 34 3.4 ENDEREÇOS PRIVADOS .................................................................................. 37 3.5 NAT (NETWORK ADDRESS TRANSLATION) ................................................... 37 3.6 DHCP (DYNAMIC HOSTS CONFIGURATION PROTOCOL) ............................. 43 4 IPv6 ........................................................................................................................ 46 4.1 RECURSOS DO IPv6.......................................................................................... 48 4.2 O CABEÇALHO PRINCIPAL DO IPv6 ................................................................ 49 4.3 CABEÇALHOS DE EXTENSÃO ......................................................................... 54 4.4 TRÊS TIPOS DE ENDEREÇOS BÁSICOS DO IPv6 .......................................... 57 4.5 PROPOSTA DE ATRIBUIÇÃO DE ESPAÇO DE ENDEREÇOS IPv6 ................ 58 4.6 TRANSIÇÃO E ENDEREÇOS IPv4 EMBUTIDOS .............................................. 59 4.7 ENDEREÇOS NÃO ESPECIFICADOS E DE LOOPBACK ................................. 60 4.8 ESTRUTURA DO ENDEREÇO UNICAST .......................................................... 61 4.9 IDENTIFICADORES DE INTERFACE................................................................. 61 4.10 ENDEREÇOS LOCAIS...................................................................................... 63 4.11 AUTOCONFIGURAÇÃO E REMUNERAÇÃO................................................... 63 5 FUNCIONAMENTO E CONFIGURAÇÃO DO IPv6 ................................................ 65 5.1 INSTALAÇÃO E CONFIGURAÇÃO O PROTOCOLO IPv6 ................................ 65 5.1.1 Windows XP ..................................................................................................... 66 5.1.2 Ubuntu .............................................................................................................. 69 5.2 REALIZAÇÃO DE TESTE DE COMUNICAÇÃO ................................................. 70 5.2.1 Ping a partir do Windows XP ............................................................................ 70 5.2.2 Ping a partir do Ubuntu..................................................................................... 71 5.3 CONVERSÃO DE ENDEREÇOS IPv4 EM IPv6 ................................................. 71 CONCLUSÃO............................................................................................................ 74 REFERÊNCIAS BIBLIOGRÁFICAS .......................................................................... 76 15 INTRODUÇÃO Devido ao rápido crescimento da Internet e o endereçamento com classe, os endereços Internet Protocol version 4 (IPv4) disponíveis estão se esgotando rapidamente. (FOROUZAN , 2008) Segundo Tanenbaum (2003), antes de entrar na discussão sobre o esgotamento de endereços IP, é necessário lembrar alguns aspectos do funcionamento de uma rede. A definição de rede é simples - um conjunto de computadores e outros equipamentos interligados, que são capazes de se comunicar utilizando para isso um conjunto de regras, chamadas de protocolos. O (IP) é um protocolo específico projetado para ligar diferentes redes, tornando possível a comunicação entre elas. A Internet foi definida pelo Federal Networking Council norte-americano em 1995, como sendo o conjunto de redes de computadores interligadas pelo Transmission Control Protocol e o Internet Protocol (TCP/IP), que permite o acesso a informações e todo tipo de transferência de dados), onde cada computador possui um numero identificador único chamado endereço IP. Quando a Internet surgiu era apenas uma rede acadêmica com cerca de 100 computadores interligados, e como não foi projetada para o uso comercial, segundo Farrel (2005), o Internet Engineering Task Force (IETF), uma comunidade internacional e aberta que se preocupava com a evolução da arquitetura da Internet e seu perfeito funcionamento, começou a prever que o crescimento acelerado por volta de 1993 aparentemente poderia fazer com que seu espaço de endereçamento se esgotasse e 2 ou 3 anos, já aí previa-se um possível colapso. Contudo, segundo o autor, as previsões iniciais de esgotamento não ocorreram tão rápido quanto era calculado, pois foram desenvolvidas uma série de 16 tecnologias, que serviram para amenizar o problema como soluções temporárias, para o problema trazido pelo crescimento acelerado de hosts na Internet. No entanto, França (2005) afirma que essas soluções não são totalmente eficazes e tampouco suficientes. A grande rede mundial ainda continua se expandindo, e a adoção dessas soluções de emergência não tem acompanhado o seu ritmo. Em verdade, elas até atrapalham o desenvolvimento de novas tecnologias. Porém segundo Rodrigues (2010) essas tecnologias utilizadas em conjunto reduziram a demanda de novos endereços IP, de forma que o esgotamento previsto na década de 1990 ainda não ocorreu. Porém nos dias atuais encontra-se uma situação crítica, pois o IANA previa o esgotamento para 2010, e o LACNIC previa que ocorresse em algum momento entre 2012 e 2014. Mas, de acordo com Marsan (2011) os últimos blocos IPv4 foram distribuídos para as Regional Internet Registry (RIR) em fevereiro de 2011. Este trabalho tem como objetivo principal esclarecer a questão do esgotamento dos endereços IP da versão 4, onde será feita uma explanação sobre o mesmo, os motivos que levaram a sua escassez e esgotamento iminente de espaços para alocação dos endereços na Internet, suas soluções temporárias até chegar ao IPv6 como solução definitiva. Dentre os objetivos específicos estão: conhecer o IPv4, sua importância e função na Internet desde o início; entender os motivos que levaram a escassez e o esgotamento de seus endereços; discutir as soluções paliativas adotadas para amenizar o problema causado pela escassez de endereços IPv4 válidos; analisar a solução final, o IPv6, compreender seu funcionamento, suas características, melhorias, implementação e configuração. No que se refere à metodologia, a composição deste trabalho é feita a partir de revisões bibliográficas de diversos autores, tais como: Tanenbaum, Comer, Farrel, Vasconcelos; Vasconcelos, Scrimger et al, entre outros e estudos especializados no assunto, para que se tenha nele uma base para estudos futuros. É importante analisar esta questão, pois caso ocorresse o esgotamento dos endereços IPv4 e não houvesse uma solução adequada, aconteceria um colapso na Internet. Este tema está sendo alvo de muitos estudos e já está sendo implementado, portanto é necessário conhecê-lo. O resultado dessa pesquisa é mostrado a partir de uma implementação foi realizada a configuração do IPv6 em uma rede virtual e seu funcionamento será exemplificado através de um teste de 17 conexão simples. No primeiro capítulo é abordada a história da Internet desde o seu início como um projeto de segurança em meados da Guerra Fria. É feita uma explanação de seu desenvolvimento em meios acadêmicos e militares analisando também a sua abertura para o mundo que resultou em uma expansão e crescimento inesperados. No segundo capítulo é feita uma análise do protocolo IP, em sua versão 4, ou IPv4, responsável por endereçar cada máquina na rede desde o início da Internet, onde são mostradas suas principais características sobre funcionamento, distribuição, espaço e utilização. O terceiro capítulo aborda o surgimento do problema da escassez e iminente falta de espaço para alocação de endereços IPv4 causado pela grande demanda. O quarto capítulo faz uma análise sobre o IP version 6 ou IPv6, ressaltando sua características, melhorias em relação ao IPv4 e compatibilidade entre os dois protocolos. Já o quinto capítulo é realizada a implementação de uma rede virtual com endereços IPv6, relatando a configuração em sistemas operacionais já disponíveis e seu funcionamento. Conclui-se este trabalho com a retomada dos fatos que levaram a sua realização e se os objetivos foram alcançados. E para finalizá-lo, é feito um levantamento de possíveis continuações relacionadas a este trabalho, para que o novo protocolo de endereçamento da Internet seja mais conhecido e disseminado. 18 1 INÍCIO DA INTERNET E SUA POPULARIZAÇÃO Este capítulo abordará a história da Internet, começando do seu surgimento em meados da Guerra Fria, passando por seus estudos em Universidades, sua popularização e expansão. A história da Internet começou no final da década de 1950, no auge da Guerra Fria, quando as duas maiores potências do mundo na época, Estados Unidos e União das Repúblicas Socialistas Soviéticas (URSS), buscavam avanços tecnológicos. Surgiu aí, um projeto de uma agência norte-americana de pesquisa, o Defense Advanced Research Projects Agency (DARPA), com o principal objetivo de interligar os computadores de seus departamentos de pesquisa, a fim de que esta interligação sobrevivesse mesmo no caso de acontecer uma guerra nuclear. (COMER, 2006) De acordo com Comer (2006) o DARPA, criou a Advanced Research Projects Agency NETwork (ARPANET), que foi a rede que deu origem à Internet, que era responsável por interligar quatro instituições: Universidade da Califórnia, Universidade de Los Angeles e Santa Bárbara, o Instituto de Pesquisa de Stanford e a Universidade de Utah, e teve início em 1969 nos Estados Unidos. A qual usava interconexões de linha alugada ponto-a-ponto convencional, mas então a DARPA financiou a exploração da comutação de pacotes na ARPANET. O temor do ataque inimigo nunca aconteceu, mas o que o Departamento de Defesa dos Estados Unidos não sabia era que tinha acabado de dar o pontapé inicial para o maior fenômeno do século. Ficou sendo o único meio de comunicação que em apenas quatro anos conseguiria atingir cerca de 50 milhões de pessoas. Comer (2006) ainda afirma que da tecnologia DARPA, nasceu o TCP/IP um conjunto 19 de padrões de rede que especifica os detalhes de como os computadores se comunicam, além de um conjunto de convenções para interconexões de redes e encaminhamento de tráfego. O TCP/IP é a tecnologia básica da Internet, que conecta mais de 650 milhões de computadores em praticamente todos os lugares povoados do mundo. O que torna o TCP/IP tão fantástico é que foi adotado mundialmente e com isso o aumento da Internet em níveis globais foi enorme. O TCP/IP teve seu início na década de 70, porém a arquitetura e os protocolos só tomaram a forma que tem hoje por volta de 1977-79. (COMER, 2006) Segundo o autor, em 1979, foi criado um comitê denominado Internet Control and Configuration Board (ICCB), que de uma maneira informal coordenava e guiava o projeto dos protocolos e de arquitetura da Internet. Este comitê se reunia regularmente até 1983, quando foi reorganizado. Comer (2006, p.4) explica que “a Internet de forma global começou por volta de 1980, quando a DARPA começou a converter máquinas conectadas às suas redes de pesquisa aos protocolos TCP/IP”. Em seu funcionamento pleno a ARPANET rapidamente começou a crescer e se tornou o backbone, ou seja, o centro da nova Internet e foi usada para diversas das primeiras experiências feitas com o TCP/IP. A transição para a tecnologia da Internet se tornou completa em 1983, quando a secretaria de Defesa dos Estados Unidos determinou que todos os computadores que fossem conectados em redes de longa distância utilizassem o TCP/IP, ao mesmo tempo a Defenses Communication Agency (DCA) decidiu dividir a ARPANET em duas redes separadas, uma para continuar a pesquisa e uma para comunicação militar. A parte que ficou para continuar a pesquisa manteve seu nome, já a parte para comunicação militar que era um pouco maior ficou conhecida como MILNET (Military Net), ou seja, a rede militar. (COMER, 2006) Segundo Comer (2006), para encorajar pesquisadores universitários a adotar e usar os novos protocolos, a DARPA disponibilizou à eles uma implementação com um baixo custo. Nessa época a maior parte dos departamentos de computação estava executando uma versão do sistema operacional UNIX disponível no Berkeley Software Distribution (BSD) da Universidade da Califórnia, que normalmente era chamado de Berkeley UNIX o BSD UNIX. A DARPA financiou 90% dos departamentos de ciência da computação das universidades. E seu novo protocolo 20 chegou numa época particularmente significativa, pois muitos desses departamentos estavam acabando de adquirir o segundo ou terceiro computador de seus laboratórios e fazendo a sua conexão em redes locais. Os departamentos precisavam de protocolos de comunicação capazes de fornecer serviços como transferência de arquivos. O autor ainda afirma que além de um conjunto de programas utilitários, o Berkeley UNIX fornecia uma nova abstração no sistema operacional conhecida como socket, o que permitia que programas e aplicativos acessassem protocolos de comunicação. Uma generalização do mecanismo UNIX para dispositivos de entrada e saída, a interface socket tem opções para vários tipos de protocolos de rede, além do TCP/IP. A introdução da abstração de socket foi importante, pois permitiu que os programadores usassem o protocolo TCP/IP com pouco esforço. A interface socket tornou-se o padrão de fato sendo usado na maioria dos sistemas operacionais. A National Science Foundation (NSF) percebeu que a comunicação de redes logo seria uma parte crucial da pesquisa científica, então assumiu um papel ativo na expansão da Internet TCP/IP no sentido de alcançar o máximo de cientistas possível. No final da década de 1970, a NSF patrocinou um projeto conhecido como Computer Science NETwork (CSNET), que tinha como objetivo conectar todos os cientistas de computação. A partir de 1985, a NSF iniciou um programa para estabelecer redes de acesso em torno de seus seis centros de supercomputação, e em 1986 expandiu os esforços de rede financiando uma nova rede de backbone, conhecida como backbone National Science Foudation NETwork (NSFNET). A NSF também forneceu muito dinheiro para redes regionais, cada uma conectando as principais instituições de pesquisa científica em determinadas áreas. (COMER, 2006) Segundo o autor, após sete anos de seu início, a Internet cresceu e começou a se espalhar por diversas redes individuais, localizadas por todos os Estados Unidos e Europa. Eram cerca de 20 mil computadores em universidades, governos e laboratórios de pesquisa. A Internet continuou crescendo, tanto em tamanho como também em número de usuários, e seu crescimento foi mais rápido do que o previsto. No final de 1987, era estimado que o crescimento tivesse atingido 15% por mês. Em 2005, a Internet atingiu quase 300 milhões de computadores em 209 países. Porém a adoção antecipada do TCP/IP e o crescimento da Internet não foram limitados a projetos financiados pelo governo. As principais corporações 21 fabricantes de computadores se conectaram a Internet, assim como muitas outras grandes corporações, que incluíam companhias de petróleo, indústrias automobilísticas, empresas eletrônicas, companhias farmacêuticas e operadoras de telecomunicações. Empresas médias e pequenas iniciaram sua conexão no final dos anos 90. Além disso, muitas empresas usaram protocolos TCP/IP em suas Intranets corporativas mesmo que escolhessem não fazer parte da Internet global. (COMER, 2006) Na década de 1990, a ARPANET já era tecnologicamente obsoleta sendo retirada de operação. Desde que a Internet foi liberada do ambiente militar, a sua administração foi confiada pelo governo dos Estados Unidos à NFS, mas o controle da NFS sobre a Net durou pouco. Com a tecnologia de redes de computadores no domínio publico, e as telecomunicações plenamente desreguladas, a NFS tratou logo de encaminhar a privatização da Internet. O Departamento de Defesa dos Estados Unidos decidira anteriormente comercializar a tecnologia da Internet, financiando fabricantes de computadores dos Estados Unidos para incluir o TCP/IP em seus protocolos na década de 1980. Na década de 1990, a maioria dos computadores dos Estados Unidos tinha capacidade de entrar em rede, o que lançou os alicerces para a difusão da interconexão de redes. Em 1995 a NFSNET foi extinta, abrindo o caminho para as operações privadas da Internet. (CASTELLS, 2003) Segundo Castells (2003) no início da década de 1990, muitos provedores de serviço de Internet montaram suas próprias redes e estabeleceram suas próprias portas de comunicação em bases comerciais. A partir de então a Internet cresceu rapidamente como uma rede global de redes de computadores. O que tornou isso possível foi o projeto original da ARPANET, baseado numa arquitetura de múltiplas camadas, descentralizada, e protocolos de comunicação abertos. Nessas condições a NET pôde se expandir pela adição de novos nós e reconfiguração infinita da rede para acomodar as necessidades de comunicação. O que permitiu a explosão da Internet em nível mundial foi o desenvolvimento da world wide web (www). Uma aplicação de compartilhamento de informação desenvolvida em 1990, por um programador inglês, Tim Berners-Lee, que trabalhava no Conseil Européen pour la Recherche Nucléaire (CERN), o Laboratório Europeu para a física de partículas com base em Genebra. Embora seu próprio criador não tivesse consciência disso, seu trabalho continuaria uma longa tradição de idéias e 22 projetos técnicos que, meio século antes, buscava a possibilidade de associar fontes de informação através da computação interativa. Berners-Lee transformou os sonhos passados em realidade quando em 1980 escreveu o programa Enquire, tendo a vantagem de que a Internet já existia. Este software permitia obter e acrescentar informação de e para qualquer computador conectado através da Internet. Tendo como colaborador o programador Robert Calliau, construiu um programa navegador/editor em dezembro de 1990, e chamou esse sistema de hipertexto de www, a rede mundial. O software do navegador da web foi lançado na Net pelo CERN em agosto de 1991. Houve diversas tentativas de desenvolver mais navegadores, e pouco tempo depois surgiu o Viola, produzido pela Universidade da Califórnia em Berkeley. (CASTELLS, 2003) O autor ainda afirma que em outubro de 1994, a Mosaic Communications tornou disponível na NET o primeiro navegador comercial, o Netscape Navigator. Depois do sucesso do Navigator, a Microsoft descobriu a Internet, e lançou em 1995 junto com o Windows 95, seu navegador o Internet Explorer. Além disso, em 1995, a Sun Microsystems projetou o Java, uma linguagem de programação que permite segundo Castells que miniaplicativos, os applets, “viajassem” entre os computadores pela Internet, possibilitando que os usuários rodassem com segurança programas baixados da Internet. A Sun disponibilizou o Java gratuitamente na Internet, fazendo com que fosse expandida a esfera de aplicações da web, e então a Netscape introduziu a linguagem no Navigator. E em 1998, a Netscape reagindo à concorrência da Microsoft disponibilizou o código-fonte do Navigator na Net. (CASTELLS, 2003) Castells (2003) segue afirmando que todos os desenvolvimentos tecnológicos decisivos que levaram à Internet tiveram lugar em torno de instituições governamentais, importantes universidades e centros de pesquisa. A Internet não teve início no mundo dos negócios, pois era uma tecnologia cara e arriscada demais para ser assumida por organizações voltadas ao lucro. Em seu início as companhias privadas que visavam o lucro não deram muita importância à Internet. Porém o impacto das redes autônomas foi também decisivo no crescimento e expansão global da Internet. Depois que a NSF abriu o acesso da NSFNET à redes estrangeiras, de 1990 a 1995, quando a Internet foi privatizada, a proporção de redes fora dos Estados Unidos ligadas à Internet dobrou, passando de 20 a 40% de todas as redes conectadas. (CASTELLS, 2003) 23 Essa evolução e expansão fez com que ela se transformasse na Internet conhecida nos dias atuais, utilizando-se de protocolos que tratam de seu funcionamento e desempenho. Um destes é o protocolo IP que especifica os endereços das máquinas na rede, este que será abordado no capítulo seguinte. 24 2 ENDEREÇAMENTO IP (INTERNET PROTOCOL) Este capítulo irá abordar o Internet Protocol, também chamado de IP, que foi desenvolvido para endereçar toda máquina ligada a uma rede. Na Internet todos os computadores conectados se comunicam graças ao protocolo TCP/IP, que é o uso em conjunto de dois protocolos que garantem a estabilidade da comunicação e a localização dos endereços. Cada computador ligado a um a rede tem seu código identificador, o endereço IP. (CASTELLS, 2003) Segundo Farrel (2005) o IP passou por diversas revisões antes de se estabilizar na versão 4. O IP é um protocolo para a entrega universal de dados em todos os tipos de redes, nele os dados são empacotados em datagramas a serem entregues. Na Internet cada computador tem um endereço IP que o codifica, para identificar a qual rede pertence e seu numero de host. A combinação é exclusiva: dois computadores em uma rede, em princípio não podem ter o mesmo endereço IP. O endereço IP não se refere realmente a um host e sim a uma interface de rede; então, caso um host pertença a duas redes ele deverá possuir dois endereços IP, porém na prática os hosts estão em uma única rede, portanto tem só um endereço IP. (TANENBAUM, 2003) Segundo o autor, durante décadas os endereços IP foram divididos em cinco categorias conforme é mostrado no quadro 2.1, essa divisão era chamada de alocamento de classes completo. As redes de classe A podem ter até 16 milhões de endereços e seu uso foi permitido apenas a grandes empresas. Algumas receberam estes endereços, tais como, por exemplo: o serviço de correios dos Estados Unidos, que recebeu a rede 25 56, e que usa, portanto os endereços entre 56.0.0.0 e 56.255.255.255, a Ford recebeu a rede 19 e assim também aconteceu com outras grandes empresas. Na classe A, existe uma faixa de endereços que vai de 10.0.0.0 a 10.255.255.255 que são usados para rede internas, que são invisíveis para a Internet. Cada endereço de rede da classe A possui 8 bits de prefixo de rede com o bit mais significativo definido para 0 e um número de rede de 7 bits, seguido por um número de host de 24 bits. Mais recentemente as redes de Classe A passaram a ser chamadas de /8, pronuncia-se barra 8, porque apresentam prefixo de rede 8 bits. (VASCONCELOS; VASCONCELOS, 2007) Quadro 2.1: Formato de endereços IP. Fonte: Tanenbaum, 2003, p. 337. As redes da classe B podem ter até 65.534 máquinas, utilizando os endereços entre 128.x.x.x e 191.x.x.x. Elas são usadas por redes de médio porte, tais como universidades, corporações e empresas. Na classe B, a faixa de endereços entre 172.16.0.0 e 172.31.255.255 é de uso bem flexível, que pode ser usada para sub-redes. Já a faixa de 169.254.0.0 e 169.254.255.255, denominada Automathic Private IP Address (APIPA), que era usada em redes quando não se tinha acesso à Internet, todos os computadores automaticamente recebiam este endereço, a não ser aqueles que foram programados manualmente. Cada endereço de rede da classe B possui 16 bits de prefixo de rede com os dois bits mais significativos definidos para 10 e um número de rede de 14 bits, seguido por um número de host de 16 bits. As redes de Classe B passaram a ser chamadas de /16, pois apresentam prefixos de rede com 16 bits. Os endereços de classe B tem se esgotado rapidamente. (VASCONCELOS; VASCONCELOS, 2007) Nos endereços de classe C, as redes podem ter até 254 computadores. Ela possui uma faixa de endereços IP reservados que vai de 192.168.0.1 a 26 223.255.254.255. Cada endereço de rede da classe C possui 24 bits de prefixo de rede com os três bits mais significativos definidos para 110 e um número de rede de 21 bits, seguido por um número de host de 8 bits, por isso passaram a ser chamadas de /24. (VASCONCELOS; VASCONCELOS, 2007) A classe D é utilizada em redes Multicast, ou seja, o endereçamento e feito a um grupo de hosts, onde um único pacote é enviado para múltiplos destinos. (VASCONCELOS; VASCONCELOS, 2007) A classe E, não é utilizada, pois foi reservada para realizar experiências. (VASCONCELOS; VASCONCELOS, 2007) Tabela 2.1 - Distribuição de classes. Fonte: Vasconcelos; Vasconcelos, 2007, p.201. Segundo o autor, alguns endereços são reservados e então não podem ser utilizados para endereçar computadores na rede. O endereço 0.0.0.0/8 significa “este computador”. Este é um endereço reservado usado pelo protocolo de start up de um computador para obter o endereço IP do próprio host. Como o próprio protocolo IP é utilizado para este fim e este protocolo exige um endereço fonte, então o endereço 0.0.0.0/8 é utilizado. (SCRIMGER et al, 2002) O endereço com prefixo 127/8 é reservado para testes de aplicações TCP/IP no próprio computador. É utilizado no caso de dois programas que querem se comunicar via rede, então eles podem ser testados desta forma. Sendo assim toda mensagem enviada para um endereço com prefixo 127, por exemplo, o endereço 27 127.0.0.1 será roteada para o outro programa tentando receber do mesmo endereço. (SCRIMGER et al, 2002) O autor ressalta que o endereço que começa com um prefixo de rede e é seguido de zeros serve para designar o prefixo atribuído à rede sendo assim não pode ser utilizado para identificar os computadores da rede. O endereço que tiver o prefixo de rede seguido de 1 serve para enviar um pacote para todos os hosts de uma rede, ou seja, é utilizado para broadcast. Em uma rede privada, isto é, uma rede não acessível via Internet como, por exemplo, uma rede doméstica que se conecta ao ambiente externo usando um roteador, os endereços podem ser escolhidos dentro da faixa de endereços reservados para redes internas especificados na tabela 2.1, 10.0.0.0 a 10.255.255.255, 172.16.0.0 a 172.31.255.255, 192.168.0.0 a 192.168.255.255. Tais endereços não podem ser usados externamente para uso na Internet, pois não são válidos. O autor ainda afirma que em geral os endereços IP, que são números de 32 bits, são escritos em números decimais separados por pontos, para facilitar a compreensão humana. Nesse formato, cada bit é escrito em notação decimal que vai de 0 à 255. Tabela 2.2 - Notação Hexadecimal e decimal com ponto. Fonte: Farrel, 2005, p. 27. Os endereços IP são atribuídos por meio das entidades registradoras nacionais, cada uma delas responsável por um subconjunto de todos os endereços disponíveis pela agência supervisora, a Internet Corporation for Assigned Names and Numbers (ICANN). Essa é uma função crítica para a operação correta da Internet, porque não podem existir duas máquinas, com o mesmo número IP, dentro da mesma rede. Caso seja configurado um novo equipamento com o mesmo 28 número IP de uma máquina já existente, será gerado um conflito de Número IP e um dos equipamentos, muito provavelmente o novo equipamento que está sendo configurado, não conseguirá se comunicar com a rede. (RODRIGUES, 2010) 2.1 SURGIMENTO DO PROBLEMA RELATIVO AO ESGOTAMENTO DOS ENDEREÇOS IPv4 Por volta de 1990, a Internet Engineering Task Force (IETF) começou a se preocupar com o fato de o espaço de endereçamento do IPv4 ser muito pequeno contando com apenas 32 bits, com aproximadamente 232 endereços disponíveis, o que totaliza 4.294.967.296 endereços, mas o modo como esses endereços foram divididos em classes levou a um desperdício significativo, dado que grandes intervalos de endereços são atribuídos e usados apenas parcialmente. Além disso, 228 desses endereços são reservados para multicast, ou seja, os pertencentes a classe D e outros 227 não são usados que são os que compõem a Classe E. (FARREL, 2005) De acordo com o autor, essa situação de falta de espaço para alocação de endereços IP piorou com o sucesso da Internet e com o crescimento do uso de computadores pessoais em escritórios e casas. Além disso, à medida que os roteadores foram se tornando mais sofisticados e as redes mais complexas, a quantidade de endereços IP atribuídos para identificar interfaces, em vez de nós, estava crescendo no quadrado da taxa de novos roteadores. Então no início da década de 1990, começaram os rumores sobre conectar tudo em redes, esses sonhos ainda não são completamente realidade, mas os telefones móveis tornaramse onipresentes. Com o crescimento da popularidade dos celulares, as funções que eles poderiam oferecer foram estendidas e tornou-se comum para os dispositivos oferecerem acesso ao correio eletrônico ou à web. Isso representou um crescimento enorme na demanda por endereços IP, e diversos gráficos na época faziam previsões que os endereços IP se esgotassem em algum momento entre 2005 e 2011. E embora a taxa de crescimento tivesse diminuído, a quantidade de endereços em uso continuava a crescer uniformemente, e já se previa que o IPv4 por fim precisaria ser substituído ou então suplementado para que seu espaço de 29 endereçamento seja aumentado. (FARREL, 2005) Somente uma quantidade limitada das classes foi disponibilizada, por exemplo, os primeiros componentes com valores entre 1 e 126 são reservados para os endereços Classe A. Na prática menos de 50 endereços Classe A foram atribuídos, basicamente para os criadores da Internet, como as forças armadas e empresas de telecomunicação americanas. (TANENBAUM, 2003) Segundo o autor, para garantir na Internet que cada host tenha um endereço IP que seja único, existem órgãos regulamentadores responsáveis por designar endereços IP para todas as empresas, organizações públicas e educacionais, que irão se conectar a Internet. Esse órgão cede um endereço IP contendo a porção de rede, cabendo ao administrador da rede fazer o projeto de endereçamento do número de hosts desejados, utilizando-se do endereço fornecido. O autor ainda afirma que muitas empresas constroem suas Intranets, definindo internamente os endereços IP para seus hosts. É importante lembrar que no momento em que se conectar a Intranet à Internet, será necessário solicitar ao órgão competente um endereço IP que possa ser utilizado na Internet, o que certamente implicará em alterar todos os endereços IP previamente definidos. De acordo com o alerta feito em julho de 2001, pelo Internet Assigned Numbers Authority (IANA), instituição responsável pelo sistema geral de registro de domínios no mundo, poderia haver um “apagão” de endereços IP no mundo. Nesse mesmo ano, o IANA realizou um estudo que estimava que já haviam sido consumidos cerca de 68% dos endereços disponíveis no mundo. Com a explosão da Internet e com o surgimento constante de mais e mais serviços e aplicações, os atuais endereços IPv4 se tornaram um recurso escasso. Já se estimava que, em 2010 eles já estariam esgotados. (FARREL, 2005) 30 3 SOLUÇÕES PARA O ESGOTAMENTO DO IPV4 Este capítulo irá abordar as soluções utilizadas de maneira a adiar o esgotamento dos endereços IP. ...o IP vem sendo amplamente utilizado há décadas. Ele tem funcionado muito bem, o que é demonstrado pelo crescimento exponencial da Internet. Infelizmente, o IP esta se tornando uma vítima de sua própria popularidade, pois esta ficando sem endereços. Esse enorme desastre causou muita discussão e controvérsia na comunidade da Internet sobre o que fazer em relação a ele. (Tanenbaum, 2003, p.340) O autor ainda ressalta que com a evolução e expansão da Internet ao longo dos anos, surgiu o problema da escassez de endereços IP, sendo assim algumas soluções tecnológicas paliativas foram também adotadas. Tais tecnologias foram responsáveis por permitir redução da demanda por novos endereços, e a racionalização na forma como eles eram distribuídos, fazendo com que seu esgotamento fosse adiado. Entre as tecnologias que foram adotadas de maneira a adiar o possível esgotamento dos endereços IPv4, podem-se citar as mais relevantes, tais como: as sub-redes, que são um segmento físico de rede local; o Classless Inter Domain Routing (CIDR) uma tecnologia que permite o roteamento sem o uso de classes; o Variable Lenght Subnet Mask (VLSM) que é a segmentação lógica de sub-redes; os endereços privados, que são faixas de endereços que não são válidos na Internet, podendo ser utilizados somente em redes internas; o Network Address Translation (NAT) uma tecnologia usada de modo a permitir que redes que utilizam endereços privados possam se conectar à Internet, bastando ter apenas um endereço válido e o Dynamic Host Configuration Protocol (DHCP) um protocolo que permite a alocação dinâmica de endereços IP nas redes. (RFC Request for Comments, 2011) 31 3.1 SUB-REDES Os endereços IP das classes A, B e C são distribuídos pela entidade responsável, o Latin American and Caribbean Internet Addresses Registry (LACNIC), sendo que esta distribuição é feita somente em blocos que tem o tamanho fixo de acordo com a classe. Por exemplo, uma empresa precisa de 80 endereços IP públicos, com a divisão de classes, no mínimo teria que adquirir um bloco de classe C que fornecia 254 endereços. (TORRES, 2009) O autor ainda afirma que para resolver este problema, se tornou possível a divisão de uma faixa de endereços grande em faixas de endereços menores. Isto é possível desde que se defina uma máscara de rede ou através de um sistema chamado CIDR. Segundo Torres (2009) no sistema de sub-redes, a máscara da rede é que informa que divisão será feita no endereçamento, ou seja, quais bits do endereço irão identificar a máquina e quais irão identificar a rede. Os endereços IP são números de 32 bits divididos em quatro blocos de oito bits (8 bits é o mesmo que um byte), separados por pontos entre eles. Nos endereços de classe A o primeiro byte identifica a rede, enquanto os outros 3 bytes identificam os hosts. Já os de classe B os dois primeiros bytes identificam a rede e os outros dois bytes identificam os hosts. E por fim na classe C, os três primeiros bytes identificam a rede e o byte restante identifica os hosts da rede. De acordo com as afirmações do autor, cada classe possui uma máscara padrão, estas que também são valores de 32 bits que utilizam o mesmo formato dos endereços IP. Na máscara padrão cada bit que indica a rede é sinalizado com o bit 1 e cada bit que indica os hosts é sinalizado com o bit 0, ou seja, 255 corresponde a 11111111, oito bits 1, e 0 corresponde a 00000000, oito bits zero. Tabela 3.1 - Máscaras padrão. Fonte: Torres, 2009. 32 Em um endereço de classe B, por exemplo, 185.22.33.44, por padrão sua máscara seria 255.255.0.0, com os dois primeiros bytes indicando a rede e os dois últimos indicando a máquina, porém com o uso das sub-redes pode-se utilizar uma máscara 255.255.255.0 que o transformará em um endereço de classe C, ou seja, os três primeiros bytes passariam a identificar a rede e somente o último identificaria as máquinas. (TORRES, 2009) ... esta divisão pode ir muito mais além. Já que você pode manipular cada bit da máscara de rede individualmente para ter a divisão desejada, a única coisa especial que você terá que fazer será converter o número de binário para decimal, já que tanto a máscara de rede quanto o endereço IP são expressos em números decimais. (Torres, 2009, p. 232) Na prática, esse tipo de divisão significa que cada sub-rede será gerenciada por um administrador local. Dessa forma, segundo Torres (2009) o “dono” da classe original não irá precisar se preocupar com as sub-redes que se formaram, pois essa tarefa é simplesmente passada adiante. O que facilita o gerenciamento das subredes criadas, já que estas possuem tamanhos menores que os das redes originais. Segundo o autor a fórmula abaixo é uma maneira de se calcular sub-redes. Com a sua utilização pode-se calcular o número de bits necessários para gerar o número desejado de sub-redes. 2n-2 = núm. de sub-redes Para utilizá-la é necessário que se substitua o n por valores sucessivos até que se supere o valor de sub-redes necessárias, pois o autor ressalta que é necessário um valor de no mínimo duas sub-redes sobressalentes, já que a primeira e a ultima não poderão ser utilizadas por serem respectivamente o endereço de rede e broadcast da rede original, portanto não podem ser utilizadas para endereçar nenhum computador da rede. A tabela 3.2 mostra a divisão da rede 229.45.32.0 em 16 sub-redes, onde cada sub-rede contém 16 endereços IP, sendo que a primeira e a última sub-rede não são utilizadas, pois são respectivamente o endereço da rede e broadcast da rede original, ficando assim com 14 sub-redes válidas. Já em cada sub-rede válida, o primeiro e o último IP, também não são utilizados, pois são reservados para endereçar as sub-redes e broadcast das mesmas. É importante destacar que quando se utiliza a tecnologia de sub-redes, todas as sub-redes criadas resultantes da divisão de uma rede original utilizam a mesma máscara de sub-rede. 33 Tabela 3.2: Divisão da rede 229.45.32.0 em 16 sub-redes. Fonte: Comer, 2006. 3.2 CIDR (CLASSELESS INTER-DOMAIN ROUTING) O sistema CIDR, descrito nas RFC 1517, 1518, 1519 e 1520 foi criado, pois, em meados de 1992 quando o crescimento exorbitante da Internet foi acontecendo, tornou-se claro que muitos problemas surgiriam. Dentre eles, é importante ressaltar: o esgotamento dos endereços de rede de classe B; o rápido crescimento em tamanho das tabelas roteamento globais da Internet e esgotamento dos endereços de 32 bits IPv4 (FERNANDEZ, 2011). Segundo Comer (2006) o CIDR possui duas características muito importantes que beneficiam o sistema de roteamento global da Internet: elimina os conceitos tradicionais de divisão de endereços de redes de classe A, B e C, possibilitando uma 34 alocação eficiente dos endereços IPv4 e suporta agrupamento de rotas, fazendo com que em uma única entrada na tabela possa representar o espaço de endereços que seria ocupado por até milhares de rotas de classe tradicionais. O autor ainda afirma que o impacto do CIDR em relação à redução da demanda de endereços IP, pode ser entendido desde que se tenha conhecimento de três fatos. O primeiro fato é que, o esquema classfull não dividia os endereços de rede em classes com tamanhos iguais. O segundo fato é que os prefixos de classe C são suficientes apenas para pequenas redes, o que não favorece a subdivisão, portanto, a demanda por endereços de classe C foi bem menor do que a de classe B. E o terceiro fato é que os estudos que foram realizados mostraram que, com a velocidade que estavam atribuindo os endereços, os pertencentes à classe B rapidamente se esgotariam. De acordo com Fernandez (2011) o CIDR é uma maneira de eliminar o conceito de classes, fazendo sua substituição pelo conceito geral de prefixo de rede. Como CIDR, os roteadores passam a utilizar o prefixo de rede, ao invés dos três primeiros bits do endereço IP para determinar o ponto de divisão entre o número de rede e o de host. Sendo assim, o CIDR pode suportar qualquer tamanho de redes, sem precisar usar os tamanhos padrões que anteriormente eram de 8 bits, 16 bits e 24 bits e que utilizavam os modelos de classes. Neste modelo, cada pedaço da informação de roteamento passa a possuir um bit de máscara ou tamanho de prefixo, sendo que o tamanho do prefixo é uma maneira de especificar o número bits mais significativos relativos à rede de cada entrada na tabela de roteamento. Pode-se usar como exemplo uma rede com 20 bits de número de rede e 12 bits de hosts, que será associada a um tamanho de prefixo 20 bits ou pode ser usada a notação CIDR /20. (COMER, 2006) 3.3 VLSM (VARIABLE LENGHT SUBNET MASKS) Segundo Fernandez (2011) uma rede IP que possui mais de uma máscara de sub-rede, pode ser considerada uma rede com máscara de tamanho variável, ou Variable Lenght Subnet Masks (VLSM), já que os prefixos de rede que são estendidos possuem tamanhos diferentes. 35 Ao utilizar o protocolo Routing Information Protocol (RIP), as máscaras de sub-rede devem ser uniformes em todo o prefixo de rede. O RIP permite somente uma máscara de sub-rede por rede, pelo fato de não fornecer informações da máscara como parte das mensagens de atualização das tabelas de roteamento. Como faltam estas informações, o RIP assume algumas simples considerações sobre a máscara que deverá ser aplicada a qualquer rota já existente. (FERNANDEZ, 2011) Caso um roteador possua uma sub-rede de mesmo número de rede associada à interface local, ele irá assumir que a sub-rede recente foi definida usando a mesma máscara que a interface local. Sobre isso Fernandez (2011, p.6) afirma que: “... se o roteador não possui uma sub-rede com o mesmo número de rede da nova rede, ele assume que esta nova rede não possui sub-rede e aplica a máscara natural de classes”. Um exemplo, considerando um roteador onde é definido para a porta 1, o IP 130.24.13.1/24, e para porta 2, o endereço 200.14.13.2/24, o roteador recebe de um vizinho a rede 130.24.36.0. Ele então irá aplicar a máscara /24 já que a porta 1 está configurada como uma sub-rede da rede 130.24.0.0. No entanto, caso ele receba uma informação da rede 131.25.0.0 de um roteador vizinho, ele então assumirá a máscara padrão /16, já que não tem informações de máscaras disponíveis. (FERNANDEZ, 2011) O autor ainda ressalta que em relação à inclusão de bits dos números de subredes na tabela de roteamento, pode-se citar como exemplo, se um roteador teve o endereço IP 130.24.13.1/24 associado a sua porta 1, e na porta 2 o endereço 200.14.13.2/24, e tomar conhecimento da rede 130.24.36.0, como a porta 1 está configurada com uma sub-rede da rede 130.24.0.0; então o roteador assumirá que a rede 130.24.36 tem a mesma máscara de sub-rede /24. Quando o roteador for alertar sobre a nova rota, ele alertará a porta 1 o endereço 130.24.36.0, mas a porta 2 ele apenas alertará sobre o endereço 130.24.0.0. Sendo assim, o protocolo RIP é limitado a uma única máscara de sub-rede para cada número de rede. Entretanto, existem muitas vantagens em se associar mais máscaras de sub-redes para um determinado endereço de rede IP, tais como: a utilização de múltiplas máscaras permite o uso mais eficiente de endereços IP associados a organizações e a agregação de diversas rotas, o que é muito importante, pois reduz a quantidade de informação de roteamento no nível de 36 backbone dentro do domínio de roteamento de uma organização. (FERNANDEZ, 2011) De acordo com Fernandez (2011) o VLSM permite também uma divisão recursiva de endereços de uma organização para que a quantidade de informação no nível mais alto seja reduzida. De maneira conceitual, uma rede é divida em subredes, e algumas dessas sub-redes são divididas em outras sub-redes, e algumas dessas sub-sub-redes são dividas em sub2-sub-redes. Esta divisão permite que informações detalhadas de roteamento da estrutura de uma sub-rede se mantenham invisíveis para os roteadores em outros grupos de sub-redes. Para a implementação do VLSM, três pré-requisitos devem ser alcançados, tais como: os protocolos de roteamento necessitam ter suporte para as informações de prefixos de rede estendidos com identificação fácil; todos os roteadores devem implementar algoritmos de direcionamento baseado na maior coincidência, tais como longest match e para que ocorra um agrupamento de rotas, os endereços devem ser associados de forma topológica e lógica. Segundo Fernandez alguns protocolos de roteamento, como por exemplo, o Open Shortest Path First (OSPF), possibilitam a implementação do VLSM, já que eles fornecem um tamanho do prefixo de rede estendido, ou o valor da máscara junto com as informações de rota, permitindo assim que cada sub-rede seja alertada com seu correspondente tamanho do prefixo ou máscara. Fernandez (2011) ainda afirma que caso os protocolos de roteamento utilizados não tenham as informações de prefixo de rede, existem duas alternativas que garantem seu funcionamento, são elas: o roteador deve assumir um prefixo que já foi aplicado localmente, ou então fazer uma busca em tabelas de prefixos estáticas que contenham as informações de máscara necessárias. Porém, essas alternativas estão sujeitas a falhas, já que a primeira alternativa não garante que o prefixo correto será aplicado, e a segunda relacionada as tabelas estáticas, não garante que haja sucesso, pois as mesmas estão sujeitas a erros humanos e por isso se tornam difíceis de serem mantidas. O autor segue afirmando que um protocolo roteamento que também pode ser utilizado no VLSM é o RIP-2, pois este é um protocolo que apresenta algumas melhorias em relação ao seu antecessor, o RIP. Uma dessas melhorias está relacionada ao suporte a informações de prefixo de rede estendidos. 37 3.4 ENDEREÇOS PRIVADOS Os endereços IP privados ou endereços não roteáveis, foram descritos na RFC 1918, são endereços designados pela IANA para uso em organizações sem conectividade com a Internet, ou uso em intranets. (RFC Request for Comments, 2011) As classes A, B e C têm faixas de endereços que foram reservadas pela IANA para endereços privados, mostrados na tabela a seguir: Tabela 3.3 - Endereços Privados Fonte: Vasconcelos; Vasconcelos, 2007. Qualquer organização pode usar quaisquer endereços deste intervalo sem ter que se reportar a qualquer organização. Entretanto, como estes endereços não são únicos globalmente, eles não podem servir de referência a hosts de outra organização. (RFC Request for Comments, 2011) 3.5 NAT (NETWORK ADDRESS TRANSLATION) De acordo com Tanenbaum (2003) os endereços IP são escassos. Um Internet Service Provider (ISP), ou seja, uma empresa que fornece acesso à Internet poderia ter um endereço /16, que fornece 65.534 números de hosts. Caso tenha um número de clientes maior do que isto, haveria um problema. Para clientes individuais que possuem conexões discadas, uma forma de contornar este problema foi atribuir o endereço IP dinamicamente ao computador quando for feita a conexão e logon, 38 pegando o endereço IP de volta quando a sessão terminar. Com isso, um único endereço /16 poderá se revesar em até 65.534 usuários ativos, o que é muito interessante para um ISP com várias centenas de milhares de clientes. Quando a sessão é encerrada, o endereço IP é designado novamente para outro usuário. Embora essa estratégia funcione bem no caso de um ISP com um número moderado de usuários domésticos, ela não suporta um ISP que atendem principalmente a clientes de negócios. O problema é que os clientes de negócios necessitam de conexão contínua durante o horário comercial. Tanto as pequenas empresas, quanto as grandes corporações tem vários computadores conectados por uma Local Area Network (LAN). Alguns computadores são terminais de funcionários e outros podem ser servidores da Web. Geralmente existe um roteador na LAN que está conectado ao ISP por uma linha dedicada tendo como finalidade fornecer conexão contínua. Essa organização serve para que cada computador tenha seu próprio endereço IP durante o dia inteiro. Na verdade, o número total de computadores pertencentes aos clientes comerciais combinados não pode ultrapassar o numero de endereços IP que o ISP tem. No caso de um endereço /16, o número total de computadores fica limitado a 65.534. Para um ISP com dezenas de milhares de clientes comerciais, esse limite será ultrapassado rapidamente. (TANENBAUM, 2003) Segundo Tanenbaum (2003) esta demanda por endereços IP foi aumentando, pois muitos usuários assinaram os serviços de Asymmetric Digital Subscriber Line (ADSL) ou Internet via cabo. Nesse tipo de serviço o usuário recebia um endereço IP permanente e não existe nenhuma tarifa por conexão, pois a tarifa é cobrada mensalmente, de forma que muitos usuários de ADSL e cabo simplesmente ficam conectados de modo permanente. Esse desenvolvimento foi um dos causadores do aumento da demanda por endereços IP. Atribuir endereços IP no momento da utilização como ocorre no caso dos usuários de discagem, não resolve, já que o número de endereços IP em uso no momento pode ser muitas vezes maior que o número de clientes do ISP. Além disso, alguns usuários de ADSL e cabo têm dois ou mais computadores em suas casas, e por muitas vezes todos eles necessitam estar online simultaneamente, e para tanto utilizam o mesmo endereço IP fornecido pelo ISP. A solução para este caso é conectar todos os terminais por meio de uma LAN e inserir um roteador na mesma. De acordo com Tanenbaum (2003) para o ISP, agora os 39 usuários de uma família passam a ser equivalentes a uma pequena empresa com alguns computadores. Tanenbaum (2003, p. 343), afirma que “o problema de esgotar os endereços IP não e um problema teórico que pode ocorrer em algum momento no futuro distante. Ele esta acontecendo aqui mesmo e agora mesmo”. A solução de longo prazo é a migração total da Internet para o IPv6, que tem endereços de 128 bits. Porém essa transição ocorre de maneira lenta e sua conclusão ira se prolongar por muitos anos. Como conseqüência, algumas pessoas consideraram necessário fazer uma rápida correção a curto prazo, essa correção veio com o Network Address Translation (NAT), descrito na RFC 3022. Conforme afirma Tanenbaum (2003) a idéia básica do NAT é atribuir um único endereço válido para cada empresa, ou no máximo um número pequeno deles, para ser utilizado na Internet. Sendo assim, dentro das empresas, todo computador terá seu endereço IP exclusivo, usado no roteamento do tráfego interno. Porém, estes endereços não são válidos na Internet, e quando um pacote sair da empresa e for para o ISP, ocorrerá uma conversão de endereço. Para tornar esse esquema possível, são usados os endereços IP privados. As empresas podem utilizá-los internamente como desejarem. A única regra para isso é que nenhum pacote contendo esses endereços apareça na Internet. Os endereços privados de Classe A, permitem a utilização de 16.777.216 endereços e é a escolha habitual da maioria das empresas, mesmo que elas não necessitem de tantos endereços. (TANENBAUM, 2003) A operação do NAT é mostrada na figura 3.1. O autor segue afirmando que dentro das instalações da empresa, toda máquina tem um endereço exclusivo da forma 10.x.y.z. Porém, quando um pacote deixa as instalações da empresa, ele passa pelo NAT que o converte no endereço IP válido da empresa, o 198.60.42.12 nesse exemplo. Com freqüência, o NAT é combinado em um único dispositivo com um firewall, que oferece segurança, utilizando-se de um controle cuidadoso do que entra e sai da empresa. 40 Figura 3.1: Posicionamento e operação do NAT. Fonte: Tanenbaum, 2003, p. 344. O autor afirma ainda que a resposta é devolvida ao IP 192.60.42.12, que deve responder ao IP reservado que fez a requisição e aí surge um problema com o NAT. Caso houvesse um campo sobressalente no cabeçalho IP, este poderia ser usado para controlar qual foi o transmissor real, mas no dito cabeçalho só resta um bit ainda não utilizado. Uma nova opção poderia ter sido criada para armazenar o endereço de origem verdadeiro, mas isso exigiria mudar o endereço IP de todas as máquinas na Internet para manipular a nova opção. Essa não foi uma alternativa promissora para uma correção rápida. Tanenbaum (2003) ainda afirma que o que aconteceu foi que os projetistas do NAT observaram que a maioria dos pacotes IP transporta uma carga útil TCP ou UDP. Essas portas TCP e UDP fornecem o campo necessário para fazer o NAT funcionar. Quando um processo deseja estabelecer uma conexão TCP com um processo remoto, ele associa uma porta TCP que não está sendo utilizada em sua própria máquina. Essa porta é chamada de porta de origem que informa ao código do TCP para onde devem ser enviados os pacotes que chegarem pertencentes a essa conexão. Este processo fornece também uma porta de destino que informa para quem deve ser entregue os pacotes no lado remoto. As portas de 0 a 1023 são reservadas para serviços conhecidos. Por exemplo, a porta 80 é usada por servidores da web de forma que clientes remotos possam localizá-los. Cada mensagem TCP que é enviada contém uma porta de origem e uma porta de destino, e são essas portas que identificam os processos que utilizam a conexão em ambas as extremidades. 41 O campo Source Port pode resolver o problema de mapeamento, pois sempre que um pacote de saída entra na caixa NAT, o endereço de origem 10.x.y.z é substituído por um endereço IP válido. Além disso, o campo Source Port do TCP é substituído por um índice para a tabela de conversão de 65.536 entradas da caixa NAT, essa entrada de tabela contém a porta de origem e o endereço IP original. Por fim, tanto o total de verificação do cabeçalho IP quanto do cabeçalho TCP são recalculados e inseridos no pacote. E necessário substituir o campo Source Port, porque as conexões das máquinas 10.0.0.1 e 10.0.0.2 podem, por exemplo, não usar a porta 5000, e assim o campo Source Port sozinho se torna insuficiente para identificar o processo transmissor. (TANENABAUM, 2003) Tanenbaum (2003) relata que quando um pacote chega até a caixa NAT vindo do ISP, o campo Source Port do cabeçalho de TCP é extraído e usado como índice para a tabela de mapeamento da caixa NAT. A partir da entrada localizada, o endereço IP interno e o campo Source Port do TCP original são extraídos e inseridos no pacote. Em seguida, são recalculados os totais de verificação do IP e do TCP e inseridos no pacote. O pacote então é repassado ao roteador da empresa para entrega normal, utilizando o endereço 10.x.y.z. O NAT também pode ser usado para atenuar a falta de endereços IP para usuários de ADSL e cabo. Quando o ISP atribui um endereço a cada usuário, ele pode utilizar endereços 10.x.y.z, e quando os pacotes dessas máquinas forem sair do ISP e entrar na Internet, o NAT fará a conversão de seus endereços para o endereço válido do ISP. Para a resposta dos pacotes o mapeamento inverso será feito. Utilizando o NAT, o ISP e seus usuários individuais de ADSL/cabo parecem ser apenas uma grande empresa. (TANENBAUM, 2003) O autor afirma ainda que embora esse tipo de esquema resolva o problema, muitas pessoas na comunidade IP o abominam. O NAT tem como objeção o fato de violar o modelo arquitetônico do IP que estabelece que todo endereço IP é um identificador único no mundo. A Internet toda é baseada neste conceito, porém com o NAT, milhares de máquinas podem usar o mesmo endereço IP nas redes internas. Conforme Tanenbaum (2003) ressalta, outra objeção é que o NAT na Internet muda as características de rede sem conexão para uma espécie de rede orientada a conexão. O NAT deve manter o mapeamento para cada conexão que passa por ele, e manter o estado da conexão é uma propriedade de redes orientadas a conexão, e não de redes sem conexão. Caso a caixa NAT sofra uma pane e então se perca a 42 tabela de mapeamento, todas as conexões TCP serão destruídas. Na ausência do NAT, panes nos roteadores não terão nenhum efeito sobre o TCP. O processo transmissor simplesmente entrará em timeout, ou seja, esgotaria o tempo limite dentro de alguns segundos e retransmitira todos os pacotes não confirmados. Com a utilização do NAT, a Internet se torna tão vulnerável quanto uma rede comutada por circuitos. Também há a violação da regra mais fundamental da distribuição de protocolos em camadas: uma camada não pode fazer nenhuma suposição sobre o que a outra inseriu no campo de carga útil. É esse princípio básico que mantém a independência entre as camadas. Caso seja feita uma atualização do TCP para TCP-2, e o layout de cabeçalho seja diferente, por exemplo, tendo as portas com 32 bits, o NAT não funcionará. A idéia de protocolos em camadas assegura que as mudanças em uma camada não exijam mudanças nas outras. O NAT acaba com essa independência. (TANENBAUM, 2003) O autor ainda afirma que os processos na Internet não são obrigados a usar o TCP ou o UDP. Se um usuário em uma máquina decidir empregar algum novo protocolo de transporte para se comunicar com outro usuário, por exemplo, no caso de uma aplicação de multimídia, a introdução de uma caixa NAT fará esta aplicação falhar, porque a caixa NAT não conseguirá localizar corretamente o campo Source Port do TCP. Esta é mais uma das objeções. Outra objeção, é que algumas aplicações inserem endereços IP no corpo do texto, o receptor então extrai esses endereços e os utiliza. Porém o autor afirma que o NAT não sabe nada sobre esses endereços, ela não irá substituí-los; o que faz que qualquer tentativa de utilizá-los no lado remoto falhe. O File Transfer Protocol (FTP) padrão funciona deste modo e poderá falhar caso o NAT seja utilizado, a menos que se adotem algumas precauções. Semelhante a isso, o protocolo de telefonia da Internet tem essa propriedade e pode falhar na presença da NAT. (TANENBAUM, 2003) Tanenbaum (2003) ressalta que talvez seja possível corrigir o NAT para que ele funcione com o protocolo de telefonia da Internet, porém corrigir o código na caixa NAT toda vez que surgir uma nova aplicação torna-se inviável. A última objeção é o fato do campo Source Port do TCP possui 16 bits, o que possibilita que no máximo 65.536 máquinas possam ser mapeadas em um endereço IP. Porém, na realidade o número é um pouco menor, já que as primeiras 4096 portas são 43 reservadas para usos especiais. No entanto, se vários endereços IP estiverem disponíveis, cada um deles poderá manipular até 61.440 máquinas. Esses e outros problemas com o NAT são discutidos na RFC 2993. ...os opositores do NAT afirmam que, solucionar o problema de insuficiência de endereços IP com uma correção temporária e detestável, significa reduzir a pressão para implementar a verdadeira solução, ou seja, a transição para o IPv6, e isso é ruim. (Tanenbaum, 2003, p. 345) 3.6 DHCP (DYNAMIC HOSTS CONFIGURATION PROTOCOL) O protocolo Reverse Address Resolution Protocol (RARP) foi inicialmente desenvolvido para permitir que computadores obtenham endereços IP. Porém com o aumento do número das máquinas nas redes e a crescente necessidade de maiores informações de configuração para a comunicação em uma rede, o RARP se tornou ineficiente, então foi criado um protocolo chamado BOOTstrap Protocol (BOOTP), que permitia a atribuição dinâmica de endereços IP. (COMER, 2006) A computação móvel limitou o uso do BOOTP, então foi criado o Dynamic Host Configuration Protocol (DHCP), uma versão estendida do BOOTP. O DHCP foi designado para resolver esse problema e também para simplificar a administração das redes TCP/IP. O DHCP é especificado pelas RFCs 1533, 1534, 1541 e 1542. (BUGALLO et al, 2011) Segundo Comer (2006) o DHCP utiliza os protocolos User Datagram Protocol (UDP) e o IP, portanto ele pode ser implementado por um programa aplicativo. Ele segue o modelo cliente-servidor, que exige apenas uma única troca de pacotes na qual um computador envia um pacote requisitando informações de BOOTstrap e um servidor responde com um único pacote que especifica itens necessários na partida, incluindo o IP do computador, o endereço de um roteador e o nome de um servidor. O DHCP inclui também um campo chamado de opções na resposta, o que permite que os fornecedores enviem informações adicionais usadas apenas para seus computadores. Porém, na especificação, recomenda-se usar o campo opções para incluir informações de finalidade geral, tais como máscara de sub-rede. Criado para substituir o BOOTP na tarefa de automatizar o fornecimento de endereços IP em uma rede, o DHCP é um serviço que permite facilidades para 44 redes que utilizam a computação móvel ou que possuem uma faixa de endereços IP limitada. (BUGALLO et al, 2011) De acordo com Bugallo et all (2011) dois fatores foram responsáveis para que esse novo protocolo de configuração fosse criado. O primeiro fator é que o BOOTP resolveu parte do problema de subutilização do quadro quando do envio de um endereço IP. Já no DHCP, uma única mensagem enviada para o equipamento fornece todas as informações de inicialização necessárias. E o segundo fator importante é que pode ser considerado o principal, é a alocação rápida e dinâmica de um endereço IP para um equipamento conectado à rede. Os autores ainda afirmam que um servidor DHCP faz com que o endereçamento a máquinas seja um processo mais dinâmico do que estático. Geralmente, um novo usuário da rede solicita ao gerenciador um endereço IP válido, então esse gerenciador executa uma entrada nas tabelas Hosts ou no banco de dados do Domain Name System (DNS). O uso deste endereço pode ser apenas esporádico ou até temporário, no entanto enquanto este endereço está atrelado à máquina nenhuma outra máquina o receberá. Caso o usuário móvel se locomova com sua máquina e utilize outra rede, isto será um problema, pois o endereço antigo poderá não ser compatível com a nova rede. Então, solicitar ao gerenciador de rede local um endereço para usar apenas temporariamente, não faz sentido. Bugallo et al (2011) segue afirmando que cada servidor DHCP, já que pode existir mais de um, responde a solicitação do usuário com um endereço IP e informações de configuração. O cliente recolhe as respostas e seleciona um endereço válido depois envia a confirmação para o servidor. Todos os servidores DHCP recebem a confirmação do usuário (cliente), então o servidor DHCP que forneceu o endereço selecionado irá enviar uma mensagem de reconhecimento, enquanto os demais servidores irão cancelar suas ofertas anteriores. Somente após o receber a mensagem de reconhecimento do servidor DHCP, o cliente poderá participar da rede TCP/IP. De acordo com Bugallo et al (2011) o servidor DHCP reserva endereços para seus clientes, que pode ter um tempo determinado de modo que, caso não sejam utilizados retornem de forma automática ao grupo de endereços disponíveis. Se o tempo da reserva expirar, mas a máquina ainda estiver usando o endereço, o servidor DHCP poderá renová-lo, a fim de que o cliente possa continuar com o mesmo endereço. 45 O DHCP pode atribuir endereço para um equipamento de rede de três formas: a configuração manual, a configuração automática e a configuração dinâmica. Na configuração manual é possível que um endereço IP seja atrelado a uma determinada máquina na rede. Bugallo et al (2011, p.04) afirmam que: “para isso, é necessária a associação de um endereço existente no banco do servidor DHCP ao endereço MAC do adaptador de rede da máquina”. Fazendo esta configuração, o DHCP irá trabalhar de maneira semelhante ao BOOTP. Esse endereço atrelado ao equipamento não pode ser utilizado por outro, a não ser que os equipamentos utilizem a mesma placa de rede. Na configuração automática o servidor DHCP é configurado para atribuir um endereço IP para um equipamento sem que se estabeleça um tempo determinado, então ao se conectar pela primeira vez na rede, um endereço permanente lhe é atribuído. A diferença entre a configuração automática e manual, é que na primeira não é necessário especificar o equipamento que utilizará determinado endereço, já que ele é atribuído de forma automática. Já na configuração dinâmica, está a característica principal do DHCP que o diferencia do BOOTP. Desta forma o endereço IP é alocado de maneira temporária a um equipamento e periodicamente, tem-se a necessidade de atualizar a alocação. Utilizando esta configuração, é possível que o mesmo endereço IP seja usado por diferentes equipamentos, em momentos diferentes. Para isso, basta que o primeiro a alocar o endereço, deixe de utilizá-lo. Então, quando o outro equipamento solicitar ao servidor DHCP um endereço IP poderá ser fornecido o mesmo o endereço deixado pelo primeiro. (BUGALLO et al, 2011) O protocolo DHCP possui muita utilidade, inclusive por ser suportado por uma série de plataformas, fazendo com que na mesma rede existam computadores com diferentes sistemas operacionais. Sabendo-se usar o DHCP, é possível poupar muito trabalho na configuração de redes. (Alecrim, 2005, p.1) 46 4 IPV6 Este capítulo irá abordar o Internet Protocol version 6 (IPv6), suas características, vantagens e melhorias em relação ao IPv4. No início de fevereiro de 2011, os últimos blocos de endereços IPv4 disponíveis foram distribuídos para os administradores regionais (RIRs) pelo IANA. Conforme havia sido anunciado, quando os blocos IPv4 disponíveis chegassem a cinco, cada um deles seria alocado para um dos cinco RIRs do planeta. Então a disponibilidade de blocos IPv4 passará a depender da demanda por endereços em cada região do planeta. A estimativa, é que no fim de 2011 os RIRs já não tenham mais endereços disponíveis para oferecer para novos clientes. (MARSAN, 2011) Tanenbaum (2003, p. 357) relata que “embora o CIDR e o NAT ainda tenham alguns anos pela frente, todo mundo percebe que o IP em sua forma atual (IPv4) está com os dias contados”. Além de problemas técnicos, há outra questão em paralelo, pois no início, a Internet era usada somente por universidades, indústrias de alta tecnologia e órgãos governamentais dos Estados Unidos, principalmente pelo Departamento de Defesa, mas com a rápida expansão da Internet a partir da década de 1990, seu uso se estendeu a um grupo diferente de pessoas com diferentes necessidades. São milhares de pessoas que usam computadores portáteis sem fios conectados a Internet para estabelecer contato com suas empresas. Também ocorre a expansão das indústrias de informática, comunicação e entretenimento, que mostram que não está longe a época em que os telefones e televisores se tornem nós da Internet, resultando no uso de áudio e vídeo por demanda em bilhões de máquinas. Sendo assim ficou claro que o IP necessitaria evoluir para que se tornasse mais flexível. 47 O autor ainda afirma que na década de 1990, com a previsão de que esses problemas surgiriam então a IETF começou a desenvolver uma nova versão do IP, que impediria que os endereços se esgotassem e resolveria uma série de problemas, além de se tornar mais flexível e eficiente. A nova versão é o IPv6, que segundo o autor tem como objetivos principais: aceitar bilhões de hosts, mesmo que a alocação de espaço de endereços seja ineficiente; reduzir o tamanho das tabelas de roteamento; simplificar o protocolo, de modo a permitir que os roteadores processem os pacotes com mais rapidez; oferecer mais segurança, em relação à autenticação e privacidade, do que a versão atual do IP (IPv4); dar mais importância ao tipo de serviço utilizado, principalmente no caso de dados em tempo real; permitir multidifusão, possibilitando a especificação de escopos; permitir que um host troque de lugar sem precisar mudar o endereço; permitir a evolução futura do protocolo e também permitir que os protocolos novos e antigos coexistam durante anos, ou seja, se tornem compatíveis, fazendo com que a transição seja gradual, ao invés de bruscamente substituir e fazer com que os que já possuem endereços IPv4 tenham que substituí-los de imediato. De acordo com Tanenbaum (2003) para chegar a um protocolo que atendesse a todos esses requisitos, a IETF convocou os interessados a apresentarem suas propostas na RFC 1550, sendo que foram recebidas vinte e uma respostas, porém nem todas foram consideradas como propostas completas. Em dezembro de 1992, havia sete propostas muito interessantes que estavam sendo estudadas. Estas propostas variavam desde pequenos ajustes no IP, até sua eliminação pura e simples e a criação de um protocolo totalmente diferente. O autor ainda afirma que, uma dessas propostas visava executar o TCP sobre o Connection-Less Network Protocol (CLNP) que, por oferecer endereços de 160 bits, se tornaria capaz de oferecer um espaço de endereços infinito e unificaria os dois principais protocolos da camada de rede. Porém, para muitos, isso seria o mesmo que admitir que o modelo OSI ainda tivesse suas vantagens, uma afirmação politicamente incorreta nos círculos da Internet. A padronização do protocolo CLNP tinha características que o tornavam muito parecido com o IP; então, não se pode afirmar que sejam muito diferentes. No entanto, o protocolo que foi escolhido apresenta muito mais diferenças em relação ao IP do que o CLNP. Um dos fatores contra o CLNP é a baixa qualidade em relação aos tipos de serviços oferecidos, algo 48 de extrema importância para uma eficiente transmissão multimídia. ...as três melhores propostas foram publicadas na IEEE Network (Deering, 1993; Francis, 1993; e Katz e Ford, 1993). Depois de muita discussão, revisão e disputa, foi selecionada uma versão combinada modificada das propostas de Deering e Francis, agora chamada SIPP (Simple Internet Protocol Plus), a qual foi atribuída a designação IPv6. (Tanenbaum, 2003, p.357) Os objetivos propostos eram muito bem atendidos pelo IPv6, preservando o que é bom nos recursos do IP, descartando ou reduzindo a importância das características ruins e criando outras quando se tornasse necessário. O autor ainda afirma que de maneira genérica, o IPv6 não é compatível com o IPv4, no entanto é compatível com todos os outros protocolos auxiliares da Internet, apesar de certas vezes necessitarem de algumas pequenas modificações principalmente quando trata-se de endereços mais longos. 4.1 RECURSOS DO IPv6 O IPv6 possui alguns recursos que são tidos como vantagens em relação ao seu antecessor, o IPv4. O primeiro recurso e o mais conhecido, trata-se do fato de o IPv6 ter endereços mais longos que o IPv4. Ele possui 16 bytes de espaço para endereçamento, o que equivale a 128 bits, ou 2128 resultando em 340.282.366.920.938.463.463.374.607.431.768.211.456 endereços, cerca de 79 trilhões de vezes mais que o IPv4, o que resolve o problema de falta de endereços IP, já que oferece um número ilimitado de endereços na Internet. (TANENBAUM, 2003) Em segundo lugar, está um aperfeiçoamento de extrema importância que é a simplificação do cabeçalho. No IPv6 o cabeçalho passa a conter apenas 7 campos, contra os 13 campos presentes no IPv4. Tal mudança permite que os roteadores processem os pacotes com mais rapidez melhorando os aspectos de desempenho, velocidade e retardo. Na terceira mudança, foi implantado um melhor suporte para as opções oferecidas. 49 Essa mudança era fundamental para o novo cabeçalho, pois os campos que até então eram obrigatórios agora são opcionais. Além disso, é diferente a forma como as opções são representadas, o que torna mais simples para os roteadores ignorar as opções a que eles não se propõem. Esse recurso diminui o tempo de processamento de pacotes. (Tanenbaum, 2003, p. 357) Segundo Tanenbaum (2003) um quarto aspecto em que o IPv6 apresenta grandes avanços é a segurança. A IETF resolveu que precisava fazer algo para melhorar a segurança, já que havia inúmeras reportagens nos jornais com garotos precoces que, utilizando seus computadores conseguiam obter acesso a segredos de instituições financeiras e militares pela Internet. Então a autenticação e a privacidade se tornaram recursos muito importantes neste novo IP. No entanto, tais características foram integradas também ao IPv4, sendo assim, em relação à segurança não existem diferenças tão grandes. O autor afirma que, para finalizar uma maior atenção foi dada no que diz respeito á qualidade de serviço, devido ao crescimento da multimídia na Internet. 4.2 O CABEÇALHO PRINCIPAL DO IPv6 Segundo, Tanenbaum (2003) no cabeçalho principal, o campo Version tem sempre o valor 6 quando se utiliza o IPv6, e 4 no IPv4. E durante o período de transição do IPv4 para o IPv6, que durará cerca de uma década, os roteadores serão capazes de examinar esse campo para identificar o tipo de pacote que eles tem. Este teste desperdiça algumas instruções no caminho crítico, com isso, muitas implementações provavelmente tentarão evitá-lo usando algum campo no cabeçalho de enlace de dados que diferencie os pacotes IPv4 dos pacotes IPv6. Desta maneira, os pacotes serão passados diretamente para o tratador da camada de rede corretamente. Porém, esta estratégia viola completamente o principio de projeto, que se fundamenta no fato de que cada camada deve ser independente não devendo se importar em saber o significado dos bits que estão sendo passados a ela pela camada superior. Muitas são as discussões entre os pesquisadores, pois alguns de acordo com Tanenbaum (2003) desejam "fazer o que é certo" e outros querem "tornar o processo mais rápido", e elas devem se estender por um longo tempo e isso gerará sempre muita polêmica. 50 Figura 4.1: Cabeçalho principal com campos obrigatórios do IPv6. Fonte: Tanenbaum, 2003, p. 359. O segundo campo, o Traffic class é usado para fazer distinção entre pacotes com diferentes requisitos de entrega em tempo real. Havia um campo destinado a esse propósito no IP desde o início, mas ele só foi implementado esporadicamente por roteadores. Agora estão sendo realizadas experiências para definir a melhor maneira de usá-lo para transmissão de multimídia. (TANENBAUM, 2003) No campo Flow label estão sendo feitas experiências, porém ele será usado para permitir que origem e destino configurem conforme coloca Tanenbaum (2003), uma pseudoconexão com propriedades e necessidades específicas. Por exemplo, um fluxo de pacotes entre um processo de um host origem e um processo de um host destino específico pode ter muitas restrições em termos de retardo e então poderão precisar de uma largura de banda reservada. O fluxo pode ser préconfigurado e ter um identificador atrelado a ele. Caso um pacote com o campo Flow label com valor diferente de zero aparecer, todos os roteadores poderão verificar em suas tabelas internas qual tipo de tratamento especial ele vai exigir. De maneira prática, os fluxos são uma tentativa de se obter a flexibilidade de uma sub-rede de datagramas juntamente com as garantias de uma sub-rede de circuitos virtuais. 51 De acordo com Comer (2006) os fluxos são designados pelo endereço de origem, endereço de destino e número de fluxo. Sendo assim, muitos fluxos podem estar ativos ao mesmo tempo entre um determinado par de endereços IP. Por esse motivo, quando dois fluxos são enviados por hosts diferentes e possuem o mesmo número de fluxo passam pelo mesmo roteador, este terá a capacidade de distinguílos usando os endereços de origem e de destino. Para que estes roteadores analisem os números de fluxo com mais facilidade, eles são escolhidos ao acaso, em vez de serem atribuídos de forma seqüencial a partir de 1. No campo Payload length determina-se o número de bytes que seguem o cabeçalho de 40 bytes da Figura 4.1. O nome desse campo, que no IPv4 era Total length, foi modificado pelo fato de ter havido uma pequena mudança de significado, pois os 40 bytes do cabeçalho passaram a não ser mais contados como parte do tamanho, como acontecia ate então. Tanenbaum (2003, p. 359), afirma que “o campo Next header revela um segredo”. O cabeçalho pode ser simplificado, já que existe a possibilidade de se ter outros cabeçalhos de extensão, os quais são opcionais. Neste campo é informado quais dos seis cabeçalhos de extensão seguem esse cabeçalho, caso haja algum. Se esse cabeçalho for o último cabeçalho do IP, o campo Next header mostrará para qual tratador de protocolo de transporte o pacote deverá ser enviado. O autor ainda afirma, que o campo Hop limit é responsável por impedir que os pacotes tenham duração eterna, pois na verdade, ele é igual ao campo Time to live do IPv4, ou seja, é um campo que é decrementado em -1 a cada salto, ou hop. Teoricamente, no IPv4 era utilizado um tempo em segundos, porém nenhum roteador o utilizava assim. Por isso, mudou-se o nome para que fosse de acordo o modo como é usado, ou seja, em saltos. Depois, vêm os campos Source address e Destination address. Na proposta original, utilizava endereços de 8 bytes, no entanto, durante sua revisão, muitos perceberam que, com endereços de 8 bytes, o IPv6 se esgotaria em apenas algumas décadas, enquanto que com endereços de 16 bytes isso nunca aconteceria. Outros afirmavam que 16 bytes seria um exagero, já outros alegavam que endereços de 20 bytes seriam compatíveis com o protocolo de datagramas do modelo OSI. Ainda havia outro grupo que queria endereços de tamanho variável. Depois de muitas discussões acerca do tamanho, chegou-se a uma conclusão de que a melhor opção era utilizar endereços de 16 bytes. (TANENBAUM, 2003) 52 O autor segue afirmando que foi criada uma nova notação para representar os endereços de 16 bytes, passaram a ser escritos com oito grupos de quatro dígitos hexadecimais, separados por sinais de dois-pontos entre os grupos, como no exemplo a seguir: 8000:0000:0000:0000:0123:4567:89AB:CDEF Tendo em vista que vários endereços conterão muitos zeros, Tanenbaum (2003) diz que foram autorizadas três otimizações para sua escrita: a primeira diz que os zeros à esquerda dentro de um grupo poderão ser omitidos, por exemplo: 0123 poderá ser notado como 123; a segunda seria que um ou mais grupos de 16 bits zero poderiam ser substituídos por um par de sinais de dois-pontos. O endereço anterior então pode ser escrito assim: 8000::123:4567:89AB:CDEF e na última, os endereços IPv4 podem ser notados empregando-se um par de sinais de dois-pontos e um número decimal tradicional, como neste exemplo: ::192.31.20.46. O autor ressalta ainda que talvez não seja necessário ser tão explícito em relação a isso, mas existem muitos endereços de 16 bytes. Especificamente, existem 2128 endereços desse tipo, o que significa cerca de 3x1038. Por exemplo, se for colocado um computador em cada parte do território da Terra, o IPv6 permitiria 7x1023 endereços IP por metro quadrado. De acordo com Tanenbaum (2003) na prática, o espaço de endereços IPv6 não será utilizado com eficiência, exatamente como acontece com o espaço de endereços dos números telefônicos nos Estados Unidos, por exemplo, o código de área da cidade de Manhattan, está próximo da saturação, enquanto o de Wyoming, está quase vazio. Na RFC 3194, foi calculado que, usando a alocação dos números de telefones como um guia, mesmo considerando a hipótese mais pessimista, mesmo assim ainda haverá mais de 1000 endereços IP por metro quadrado de toda a superfície da Terra, isto inclui também os rios e mares. Sendo assim, parece impossível que eles se tornem escassos em um futuro próximo. É interessante fazer uma comparação entre o cabeçalho do IPv4, ilustrado na figura 4.2, e o cabeçalho do IPv6 mostrado na figura 4.1, para ver o que se manteve e o que foi descartado no IPv6. Fazendo esta comparação pode-se observar que o campo Internet Header Length (IHL) foi eliminado, já que o cabeçalho do IPv6 possui tamanho fixo. O campo Protocol também foi retirado já que o campo Next header identifica o que vem depois do último cabeçalho IP, por exemplo, um segmento UDP ou TCP. Também foram excluídos todos os campos relacionados à fragmentação, já que o 53 IPv6 tem um tratamento diferente para a fragmentação. Nele todos os hosts e roteadores que forem compatíveis com o IPv6 podem determinar de dinamicamente o tamanho do datagrama que será utilizado. Deste modo diminui-se a probabilidade de ocorrer fragmentação de pacotes. O valor mínimo passou de 576 para 1280, permitindo o uso de 1024 bytes de dados e muitos cabeçalhos. Caso um host envie um pacote IPv6 muito grande o qual o roteador não possa encaminhar, ao invés de fragmentá-lo ele irá enviar uma mensagem de erro, esta que irá instruir o host de origem a fragmentar os novos pacotes enviados a esse destino com um tamanho adequado. É muito mais eficiente obrigar o host a enviar pacotes com o tamanho exato do que solicitar aos roteadores a fragmentação automática. (TANENBAUM, 2003) Figura 4.2: Cabeçalho do IPv4. Fonte: Tanenbaum, 2003, p.355. O autor ainda afirma que o campo Checksum também foi excluído, pois o cálculo realizado por ele reduzia o desempenho de maneira significativa. Como atualmente são usadas redes confiáveis, e as camadas de enlace de dados e de transporte já possuem seus totais de verificação próprios, não se faz necessário um novo total de verificação, se for considerada a queda de desempenho provocada por ele. Sendo feita a remoção desses recursos, o protocolo da camada de rede ficou 54 muito mais simples e prático. O que mostra que os objetivos do IPv6 foram alcançados. 4.3 CABEÇALHOS DE EXTENSÃO Eventualmente, alguns dos campos ausentes do IPv4 ainda serão necessários, sendo assim, no IPv6 foi introduzido um conceito de um cabeçalho de extensão que é opcional. Esse cabeçalho pode ser criado tendo como finalidade oferecer informações extras, desde que estas sejam codificadas de maneira eficiente. Atualmente, existem seis tipos de cabeçalhos de extensão já definidos, conforme tabela 4.1. Eles são todos opcionais, porém, se houver mais de um, eles tem que aparecer logo depois do cabeçalho fixo e, preferencialmente, na mesma ordem listada a seguir. Tabela 4.1 - Cabeçalhos de extensão. Fonte: Tanenbaum, 2003, p. 361. Tanenbaum (2003) relata que alguns desses cabeçalhos têm um formato fixo, mas outros contêm um número variável de campos de comprimento variável. Nesses casos, cada item é codificado como uma tupla, ou seja, um conjunto de objetos em uma tabela, tais como: Type, Lenght, Value. O autor ainda afirma que o campo Type contém 1 byte que serve para identificar a opção. Os valores deste campo são escolhidos de tal forma que os dois primeiros bits indicam aos roteadores que não sabem como processar a opção o que eles devem fazer. As possibilidades oferecidas são: ignorar a opção; descartar o 55 pacote; descartar o pacote e enviar de volta um pacote ICMP e também descartar o pacote sem que sejam enviados pacotes ICMP para endereços de multidifusão, esta última opção impede que os pacotes de multidifusão defeituosos ocasionem muitos de relatórios de erros ICMP. O campo Length também contém apenas 1 byte, porém ele serve para identificar o tamanho do valor, que pode variar entre 0 a 255 bytes. Este campo armazena todas as informações obrigatórias, com tamanho máximo de 255 bytes. Já o cabeçalho hop-by-hop é usado para armazenar as informações que todos os roteadores ao longo do caminho devem examinar. Até então, uma opção foi definida: a compatibilidade com datagramas além de 64 K. Quando este cabeçalho é usado, o campo Payload length do cabeçalho fixo é definido como zero, conforme quadro 4.1. Quadro 4.1 - Formato do cabeçalho de hop-by-hop para jumbogramas. Fonte: Tanenbaum, 2003, p. 361. Tanenbaum (2003) ainda afirma que do mesmo modo que todos os outros cabeçalhos de extensão, este cabeçalho começa com 1 byte, que tem a função de identificar o tipo do próximo cabeçalho. Depois desse primeiro byte, vem um byte identificador do tamanho do cabeçalho hop-by-hop, que exclui os primeiros 8 bytes, que são obrigatórios. Todas as extensões começam dessa maneira. Os 2 bytes a seguir são indicadores de que essa opção define o tamanho do datagrama, usando o código 194 e que o tamanho é um numero de 4 bytes. Os últimos 4 bytes identificam o tamanho do datagrama. Ele não permite datagramas menores que 65.536 bytes; datagramas maiores serão eliminados no primeiro roteador, e isso resultará no envio de uma mensagem de erro do ICMP. Os datagramas que utilizam essa extensão de cabeçalho são chamados jumbogramas, ou seja, datagramas grandes. O uso de jumbogramas é de extrema importância quando se trata de aplicações em supercomputadores, já que estes fazem transferências de gigabytes 56 de dados pela Internet com grande eficiência. De acordo com Tanenbaum (2003) o cabeçalho que contém as opções de destino é usado em campos que só o host de destino deve interpretar. Em sua versão inicial, as únicas opções definidas são opções nulas para preencher esse cabeçalho até que se forme um múltiplo de oito bytes, sendo assim, ele inicialmente não será utilizado. No entanto, este campo foi incluído com a finalidade de garantir que o novo software de roteamento e de host poderão tratá-lo, no caso de alguém imaginar uma opção de destino algum dia. O autor ainda afirma que o cabeçalho de roteamento faz uma lista com um ou mais roteadores por onde o pacote deverá passar até que chegue ao seu destino. Ele é muito similar ao roteamento de origem livre do IPv4, em relação ao fato de que todos os endereços listados terão que ser visitados em uma certa ordem, porém, nada impede que outros roteadores não listados também possam ser visitados. O formato do cabeçalho de roteamento é mostrado no quadro 4.2 a seguir. Quadro 4.2 - Cabeçalho de extensão para roteamento. Fonte: Tanenbaum, 2003, p. 362. Neste cabeçalho os 4 primeiros bytes do contém quatro campos de 1 byte cada, são eles: o campo Next header e o Header extension length que já foram descritos, e também o campo Routing type e o Segments left. O campo Routing type indica o formato do restante do cabeçalho. O tipo 0 informa que uma palavra reservada de 32 bits segue a primeira palavra, e é acompanhada por algum número de endereços IPv6. Porém outros tipos poderão ser criados no futuro, caso se torne necessário. E por último, há o campo Segments left que controla quantos endereços da lista ainda não foram visitados. Toda vez que um endereço é visitado ele é decrementado, quando a contagem chegar a 0, o pacote ficará sem nenhuma orientação sobre qual rota seguir, porém geralmente isto ocorre quando o pacote 57 está muito próximo do destino, então a melhor rota se torna evidente. (TANENBAUM, 2003) Segundo Tanenbaum (2003), o cabeçalho de fragmento lida com a fragmentação da mesma maneira que o IPv4. Este cabeçalho contém o identificador do datagrama, o número do fragmento e um bit que informará se vão haver outros fragmentos em seguida. Ao contrário do IPv4, no IPv6, apenas o host de origem poderá fragmentar os pacotes, já os roteadores que haverão pelo caminho não podem fazê-lo. Apesar de isso romper com o funcionamento utilizado no passado, esse recurso veio para simplificar o trabalho dos roteadores e tornar o roteamento mais rápido. O fato de ser enviada uma mensagem de erro ICMP, permite que o host de origem use este cabeçalho para fragmentar o pacote em pedaços menores e tentar outra vez. O autor segue afirmando que o cabeçalho de autenticação fornece um mecanismo que faz com que o receptor tenha certeza de quem enviou o pacote. A carga útil de segurança criptografada torna possível criptografar o conteúdo de um pacote, de modo que apenas o seu destinatário tenha acesso a seu conteúdo. 4.4 TRÊS TIPOS DE ENDEREÇOS BÁSICOS DO IPv6 Segundo Comer (2006), no IPv6 assim como no IPv4 um endereço é associado a uma conexões de rede específica, e não a um determinado computador específico. As atribuições de endereços também são semelhantes ao IPv4, um roteador IPv6 tem dois ou mais endereços, e um host IPv6 em uma conexão de rede precisa somente de um endereço. O IPv6 também detém e estende a hierarquia de endereços do IPv4 em que uma rede física recebe um prefixo. No entanto, para tornar mais fáceis a atribuição e modificação, o IPv6 permite que sejam atribuídos vários prefixos a determinada rede e que um certo computador possa ter vários endereços simultâneos a determinadas interfaces. O autor relata que o IPv6 além de permitir vários endereços simultâneos por conexão de rede, também expande, e pode unificar se for o caso endereços especiais do IPv4. Geralmente os endereços de destino dos datagramas podem ser classificados em três categorias, são elas: uniscast, anycast e broadcast. 58 O endereço unicast especifica um único computador, que pode ser um host ou roteador, nele o datagrama deverá ser roteado até o seu destino pelo caminho mais curto. No endereço anycast o destino é um grupo de computadores, que podem estar situados em locais diferentes e que compartilhem um único endereço. Então o datagrama será roteado e entregue a um membro do grupo, provavelmente o membro mais próximo. Anteriormente este tipo de endereço era conhecido como cluster. Já no endereço multicast, o destino também será um grupo de computadores que podem também estar em vários locais. Nele o datagrama é enviado, porém uma cópia será entregue a cada membro deste grupo, utilizando multicast, unicast e também broadcast de hardware caso seja possível. 4.5 PROPOSTA DE ATRIBUIÇÃO DE ESPAÇO DE ENDEREÇOS IPv6 De acordo com Comer (2006), a maneira como os endereços foram particionados gerou muita discussão, por dois motivos, são eles: o gerenciamento da atribuição de endereços e o mapeamento de endereços a uma rota. Em relação à gerência é abordado o problema prático de se criar uma hierarquia de autoridade, já que o IPv6 permite uma hierarquia de multinível, ao contrário da Internet atual que utiliza uma hierarquia com dois níveis de prefixo de rede, atribuídos por um ISP e o sufixo de host, que é atribuído por uma organização. A segunda questão trata da eficiência computacional, pois Independente da hierarquia da autoridade que atribui os endereços, os roteadores precisam examinar cada datagrama e escolher um caminho até o destino. Então, para se manter baixo o custo de roteadores de alta velocidade, é necessário manter o tempo de processamento exigido para escolher um caminho baixo. O autor ainda afirma que os projetistas do IPv6 propuseram que a atribuição de blocos de endereços fosse feita de uma maneira semelhante ao esquema que já era utilizado no IPv4. Mesmo que os oito primeiros bits dos endereços sejam suficientes para identificar seu tipo, o espaço de endereços não utiliza seções particionadas com o mesmo tamanho. Esta atribuição é mostrada na tabela 4.2. 59 Tabela 4.2: Divisão Proposta dos endereços IPv6 em tipos. Fonte: Comer, 2006, p. 379. Analisando a tabela pode-se observar que apenas 15% do espaço de endereços foi atribuído até o momento. O IETF irá usar as partes restantes conforme for crescendo a demanda. E apesar da atribuição, estes endereços foram escolhidos para que o processamento se torne mais eficiente. 4.6 TRANSIÇÃO E ENDEREÇOS IPv4 EMBUTIDOS De acordo com Comer (2006) durante o processo de transição entre os dois protocolos, os projetistas pretender utilizar uma pequena parcela dos endereços reservados, notados por 0000 0000 conforme visto no quadro 4.3, para que os endereços IPv4 sejam codificados. Por exemplo, qualquer endereço que se inicie com 80 bits zero seguidos por 16 bits 1 ou 16 bits 0 contém um endereço IPv4 nos 32 bits de baixa ordem. O valor desse campo de 16 bits indica se o nó também contém um endereço IPv6 unicast convencional. 60 Quadro 4.3 - Codificação do endereço IPv4 em um endereço IPv6. Fonte: Comer, 2006, p. 379. Este tipo de codificação torna-se necessário, segundo afirma o autor, pelo tempo que a mudança de protocolo estiver em transição. Sua necessidade tem dois motivos, o primeiro deles é o fato de que um computador possa escolher se vai atualizar do IPv4 para o IPv6 antes de receber um IPv6 válido, e o segundo trata da comunicação entre um computador que use o IPv6 e um que ainda use o IPv4. Comer (2006) afirma que essa codificação não soluciona o problema de tornar as duas versões interoperáveis, pois além de codificar é necessário que se traduza. Para utilizar o tradutor, um computador com IPv6 gera um datagrama que contém a codificação IPv6 do endereço destino IPv4, então o tradutor utilizará o IPv4 para se comunicar com o destino. E quando receber a resposta do destino irá traduzir para o IPv6 enviando a resposta de sua solicitação. Os projetistas dessa tradução de endereços planejaram de maneira cuidadosa de modo que se permita que os protocolos TCP, UDP em máquinas IPv4 se comuniquem com seus correspondentes nas máquinas com IPv6. Para evitar a divergência do checksum, a codificação foi escolhida de maneira que o checksum do complemento a 1 de 16 bits para um endereço IPv4 e a do IPv6 sejam idênticas. Além de escolher detalhes técnicos de um novo Internet Protocol, o trabalho do IETF no IPv6 focalizou a descoberta de um modo de passar do protocolo atual para um novo protocolo. Em particular, a proposta atual para o IPv6 permite que alguém codifique um endereço IPv4 dentro de um endereço IPv6, de modo que a tradução de endereço não mude o checksum do pseudocabeçalho.(Comer, 2006, p.380) 4.7 ENDEREÇOS NÃO-ESPECIFICADO E DE LOOPBACK Segundo Comer (2006), no IPv6 tanto quanto no IPv4 alguns endereços receberam significados especiais e portanto não podem ser utilizados para 61 endereçar nenhum host, são eles: o endereço não-especificado e o endereço de loopback. O endereço não-especificado segundo o autor é composto por todos os bits zero, ou seja, 0:0:0:0:0:0:0:0. Ele só pode ser usado como endereço de origem durante a inicialização por um computador que ainda não descobriu seu próprio endereço. Já o endereço de loopback, assim como no IPv4 funciona para testar softwares. É notado da seguinte maneira: 0:0:0:0:0:0:0:1. 4.8 ESTRUTURA DO ENDEREÇO UNICAST Segundo Comer (2006) no IPv6, a versão mais recente da estrutura de endereçamento Unicast se assemelha ao esquema utilizado no endereçamento de sub-redes, onde cada endereço é dividido em três partes conceituais, como é mostrado no quadro 4.4. O autor afirma que a primeira parte corresponde a um prefixo de rede usado para rotear o datagrama, a segunda é um ID da sub-rede usado para distinguir várias redes físicas em determinado site, já a terceira parte é um ID de interface que identifica uma conexão em particular com a sub-rede. Quadro 4.4: Divisão do endereço Unicast. Fonte: Comer, 2006, p. 380. 4.9 IDENTIFICADORES DE INTERFACE De acordo com Comer (2006) na divisão do endereço Unicast, os 64 bits de 62 baixa ordem identificam uma interface de rede específica. No IPv4 não era assim, porém o IPv6 teve seu sufixo escolhido para ser grande de modo que possa acomodar uma codificação direta do endereço de hardware e da interface. Esta codificação tem duas conseqüências, a primeira é que o IPv6 não utiliza o protocolo Address Resolution Protocol (ARP) para fazer a tradução de endereços IP em endereços de hardware, pois utiliza um protocolo de descoberta do vizinho, ou Neighbor Discovery Protocol disponível com uma versão do ICMP, o ICMPv6 que permite que um nó determine quais computadores são seus vizinhos conectados de maneira direta. A segunda conseqüência, é que para garantir a interoperabilidade entre eles, todos os computadores devem usar a mesma codificação para o endereço de hardware. Como conseqüência os padrões IPv6 especificam exatamente como codificar várias formas de endereços de hardware. O endereço do hardware é colocado diretamente no endereço IPv6 nos casos mais simples, alguns formatos usam transformações mais complexas. O autor ainda relata que existem duas codificações de exemplo que auxiliam a esclarecer o conceito. Como por exemplo, o formato de endereço globalmente exclusivo de 64 bits conhecido como EUI-64 que foi definido pelo Institute of Electrical and Electronics Engineers (IEEE). Neste caso uma única mudança se faz necessária quando se codifica endereços EUI-64 em endereços IPv6, esta que consiste em inverter o bit 6 no octeto de alta ordem, que indica se o endereço é conhecido como sendo exclusivo globalmente. Porém em relação aos endereços Ethernet convencionais de 48 bits uma mudança mais complexa se torna necessária. Os bits do endereço original não são contíguos na forma codificada, ao invés disso são inseridos no meio 16 bits com o valor hexadecimal FFFE16. Figura 4.3 - Formato do endereço Ethernet de 48 bits. Fonte: Comer, 2006, p. 381. 63 O restante dos bits o que inclui o bit de grupo, que é rotulado como g, a ID da empresa que fabricou esta interface, que é rotulada como c e a extensão do fabricante são copiados. A figura 4.3 mostra o endereço Ethernet de 48 bits convencional e também a sua forma codificada. 4.10 ENDEREÇOS LOCAIS Segundo Comer (2006) além de endereços de unicast globais o IPv6 inclui prefixos para endereços de unicast que possuem um escopo local. Este padrão os define como endereços locais ao enlace, ou link-local address este que são restritos a uma única rede, e outras formas de endereços restritos também foram propostos. Os roteadores têm que seguir as regras de escopo, um roteador nunca deve encaminhar um datagrama que contenha endereços de escopo local fora do espaço especificado, ou seja, que estão fora da rede local. O autor ainda afirma que os endereços locais de enlace oferecem comunicação por uma única rede física sem correr risco de o datagrama ser encaminhado pela Internet. Um exemplo, caso ao se realizar a descoberta de vizinho, um nó IPv6 usa um endereço local ao enlace. Estas regras de escopo servem para especificar que somente computadores da mesma rede física do emissor vão receber mensagens de descoberta de vizinho. De maneira semelhante, um computador conectado a uma rede isolada, ou seja, uma rede sem roteadores conectados a ela pode usar endereços de locais ao enlace para que se comuniquem. 4.11 AUTOCONFIGURAÇÃO E REMUNERAÇÃO De acordo com Comer (2006) o IPv6 foi elaborado com suporte a autoconfiguração sem o uso de um servidor, chamado também de autoconfiguração sem estado ou stateless autoconfiguration, permitindo que os computadores se 64 comuniquem sem a necessidade de um administrador para especificar e atribuir os endereços. Duas facilidades tornam esta autoconfiguração possível e eficiente: endereçamento local ao enlace e identificadores de interface embutidos. Para que a autoconfiguração se inicie, é necessário que um computador gere um endereço local ao enlace combinado com o prefixo local ao enlace, 1111 1110 10, com 54 bits zero e seu identificador de interface de 64 bits. Segundo o autor ao verificar que o endereço local ao enlace é exclusivo, o computador o utiliza para enviar uma solicitação de roteador, ou router solicitation, que requisita informações adicionais de um roteador. Se houver um roteador na reda rede, este responde enviando um anúncio de roteador, ou router advertisement que irá informar ao host sobre os prefixos que podem ser usados em endereços globais. E quando recebe este anúncio, o computador transforma o emissor seu roteador default. Por fim, uma flag no anúncio indica se o computador deve usar a autoconfiguração ou se deverá utilizar o DHCP, que é uma configuração gerenciada convencional. (COMER, 2006) De acordo com autor, de modo a facilitar a remuneração da rede, o IPv6 permite que os roteadores limitem um tempo para o computador reter o prefixo. Para isso, o anúncio especifica dois valores de tempo para cada prefixo, um é relacionado ao tempo de vida válido e o outro ao tempo de vida preferido. É extremamente importante que um host escute os anúncios de outros roteadores, ou seja, os roteadores adicionais. Quando o tempo de vida preferido de um prefixo expira, ele continua válido, porém mesmo no caso de ter uma comunicação em andamento o host precisa parar de usar este prefixo. Segundo Comer (2006) por trás da remuneração está uma idéia simples, o anuncio de um novo prefixo, ou seja, um prefixo adicional, depois a espera e então a desativação do prefixo antigo, porém, na prática essas transições são difíceis. As conexões de transporte de longa duração são terminadas quando há uma mudança, um servidor que se vincular a um endereço existente não vai receber contato em seu novo endereço e isso significa que o roteamento deve ser modificado. No decorrer desta transição, cada interface terá vários endereços, e os tempos de vida dos endereços necessitam ser coordenados com o DNS para que se evite que sejam utilizadas cópias em cache contendo os registros de recursos para endereços antigos. Isto faz com que a remuneração não seja direta no sentido prático. 65 5. FUNCIONAMENTO E CONFIGURAÇÃO DO IPV6 Neste capítulo foi realizada a configuração de duas máquinas virtuais conectadas em rede implementando o endereçamento IPv6. Para tanto utilizou-se o software VirtualBox, que foi desenvolvido pela Sun Microsystems. Este software funciona como um mecanismo para virtualização, permitindo a instalação de sistemas operacionais e seus respectivos softwares dentro de outro instalado na máquina física. A virtualização torna as máquinas independentes, porém elas compartilham o mesmo hardware. Sua escolha foi feita a partir de pesquisas sendo que o fato de possuir uma distribuição Open Source e licença pública, fez com que se tornasse a melhor opção. Duas máquinas virtuais foram criadas a partir da VirtualBox: uma utilizando uma distribuição Linux, o Ubuntu que também é Open Source, se tornando mais acessível; já na outra máquina foi instalado o Windows XP, da Microsoft que é um software proprietário, porém em razão um projeto chamado Programa MSDNAA (MSDN Academic Alliance) que é uma parceria do Centro Paula Souza com a Microsoft, os alunos da instituição podem obter acesso aos softwares. 5.1 INSTALAÇÃO E CONFIGURAÇÃO DO PROTOCOLO IPV6 O protocolo IPv6 já vem instalado por padrão em alguns sistemas operacionais, caso o contrário, existe a possibilidade de instalá-lo. A seguir serão feitas as configurações necessárias nas máquinas virtuais criadas, sendo que são 66 exemplificadas as duas condições: a instalação e configuração, no caso de o IPv6 não estar instalado por padrão, o que é caso do Windows XP; e a configuração em uma máquina onde este protocolo já vem instalado por padrão, no caso o Ubuntu. 5.1.1 Windows XP No sistema operacional Windows XP, o suporte ao IPv6 não vem instalado por padrão, o que torna necessária a instalação do mesmo. Existem duas maneiras de realizar a instalação do protocolo IPv6 no Windows XP são elas: instalação via interface gráfica ou instalação por meio de comandos inseridos no prompt. Para iniciar a configuração da máquina utilizando o prompt de comandos, é necessário inserir a linha de comando para instalação do IPv6: IPv6 install, que está exemplificado na figura 5.1. Caso haja necessidade de remoção do protocolo IPv6 a partir do prompt de comandos, utiliza-se o comando IPv6 uninstall. Figura 5.1: Comando para instalar o IPv6 no WindowsXP. Fonte: Elaborado pela autora. No Windows XP também existe a possibilidade de instalação do protocolo IPv6 via interface gráfica, para tanto é necessário acessar as Propriedades de rede, como será exemplificado na figura 5.2. Neste caso, são mostradas as opções para a 67 instalação e também para desinstalar o protocolo. Figura 5.2: Instalação do IPv6 a partir da interface gráfica. Fonte: Elaborado pela autora. Como pode-se observar na figura 5.2, a opção “propriedades” não está disponível como acontece na configuração do IPv4, portanto a atribuição de endereços IPv6 nesse sistema operacional não é acessível via interface gráfica, podendo somente ser feita através do prompt de comandos. Para efetuar a atribuição do endereço IPv6 nesta máquina, utiliza-se o seguinte comando: netsh ipv6 add address “rede” fe80:0:0:0:0:c0a8:3866, exemplificado na figura 5.3. Para removê-lo utiliza-se o comando: netsh ipv6 delete address “rede” fe80:0:0:0:0:c0a8:3866. O endereço atribuído também pode ser notado da seguinte maneira fe80::c0e8:3866 de acordo com as otimizações propostas, a seguir os endereços serão notados sempre dessa maneira. Este comando utilizado nas distribuições Windows, serve para especificar o tipo do protocolo utilizado e para qual interface de rede o endereço será atribuído, o nome da interface deve ser notado entre aspas. 68 Figura 5.3: Atribuição de um endereço IPv6 no Windows XP. Fonte: Elaborado pela autora. O ipconfig é um comando específico das distribuições Windows, ele mostra todas as configurações dos adaptadores de rede. Na figura 5.4 são mostradas essas configurações, pode-se observar um índice numérico mostrado como porcentagem no final de todos os endereços IPv6. Este índice é específico das distribuições Windows, e é utilizado na realização do teste de comunicação ping, como será exemplificado no item 5.2.1. . Figura 5.4: Comando ipconfig Fonte: Elaborado pela autora. 69 5.1.2 Ubuntu Na distribuição Ubuntu do Linux, o protocolo IPv6 já vem instalado por padrão, portanto não é necessária a instalação do mesmo. Neste sistema operacional existe a possibilidade de fazer a configuração via interface gráfica, porém é mais confiável que as configurações sejam feitas por linhas de comando via terminal. Para atribuir um endereço IPv6 via terminal, é necessário utilizar a seguinte linha de comando: ifconfig eth3 inet6 add fe80:0:0:0:0:c0a8:3865, o endereço especificado também pode ser notado da seguinte forma fe80::c0a8:3865. Na figura 5.5 é exemplificada a atribuição do endereço, e também foi utilizado outro comando o ifconfig que mostra os detalhes de configuração do adaptador de rede, onde pode-se verificar o endereço IPv6 que foi atribuído. Figura 5.5: Atribuição de um endereço IPv6 no Ubuntu. Fonte: Elaborado pela autora. 70 Caso haja a necessidade de se remover o endereço IPv6 atribuído anteriormente, utiliza-se a seguinte linha de comando: ifconfig eth3 del fe80::0:0:0:0:c0a8:3865. 5.2 REALIZAÇÃO DE TESTE DE COMUNICAÇÃO Foram realizadas as devidas configurações nos sistemas operacionais utilizados pelas duas máquinas pertencentes à rede. Agora devem ser realizados os testes para verificar se existe a comunicação entre os hosts da rede, o que indica se as configurações feitas estão corretas. Para a realização dos testes será utilizado um recurso presente nestes sistemas operacionais, o ping. 5.2.1 Ping a partir do Windows XP O Windows XP tem uma peculiaridade em relação ao ping direcionado a um endereço IPv6: é necessário inserir o índice mostrado através do ipconfig na figura 5.4 ao final do endereço destino. Neste caso, o comando utilizado seria o seguinte: ping fe80::c0a8:3865%5 Figura 5.6: Ping partindo do WindowsXP. Fonte: Elaborado pela autora. 71 5.2.2 Ping partindo do Ubuntu No sistema operacional Ubuntu o comando para realização do teste de comunicação é o ping6, seguido do parâmetro –I, o nome da interface que enviará o pacote, endereço destino e o parâmetro -c 4 que define o número de pacotes enviados, por exemplo: ping6 –I eth3 fe80::c0a8:3866 –c 4. Figura 5. 7 Ping a partir do Ubuntu. Fonte: Elaborado pela autora. O resultado apresentado na figura 5.7 mostra que a comunicação entre as máquinas está ocorrendo, o que significa que a configuração da rede foi realizada de maneira correta. 5.3 CONVERSÃO DE ENDEREÇOS IPv4 EM IPv6 Durante aproximadamente 10 anos, segundo Comer (2006) o protocolo IP estará em fase de transição, para que haja compatibilidade entre as versões 4 e 6. Na busca por endereços IPv6 para serem utilizados na configuração da rede virtual foi encontrado um site que disponibiliza um conversor de endereços, 72 SubnetOnline.com. Este conversor funciona da seguinte maneira: insere-se um endereço IPv4 no campo designado, no caso o 192.168.56.101 como mostra a figura 5.8. Este conversor é muito interessante para obter possibilidades de endereços IPv6 a serem utilizados em testes como este. Figura 5.8: Inserindo IPv4 no conversor SubnetOnline. Fonte: Elaborado pela autora. Depois é só clicar no botão IPv6 para que seja mostrado o endereço já convertido, como será mostrado na figura 5.9. Figura 5.9: IPv6 convertido. Fonte: Elaborado pela autora. 73 Existe também a possibilidade de utilizar IPv6 condensado que é o endereço notado de acordo com as otimizações, conforme é mostrado na figura 5.10. Figura 5.10: IPv6 condensado. Fonte: Elaborado pela autora. E também o IPv6 alternativo, que é o IPv4 embutido no IPv6, conforme é mostrado na figura 5.11. Figura 5.11: IPv6 alternativo. Fonte: Elaborado pela autora . 74 CONCLUSÃO Este trabalho foi elaborado partindo da necessidade iminente da implementação da nova versão do IP, o IPv6. Com base nas pesquisas realizadas chegou-se a algumas considerações a serem relatadas. Quando o Internet Protocol foi implantado não se tinha uma previsão de como seria a expansão da Internet. E como esta aconteceu de maneira inesperada, o espaço para alocação de endereços IP que conta com 32 bits, resultando em 4.294.967.296 endereços se tornou insuficiente já em meados de 1992/93. Com o surgimento dessa demanda extraordinária por endereços IP válidos e a questão da provável falta dos mesmos, surgiu à necessidade de providências para impedir um possível colapso na Internet. Partindo dessa necessidade muitas idéias foram propostas, e algumas delas foram adotadas como soluções paliativas. Essas soluções foram utilizadas durante os quase 20 anos, decorridos desde o surgimento desse problema de modo a estabilizar o crescimento da demanda por novos endereços IPv4. Nesta mesma época foi elaborado e desenvolvido o IPv6, porém como as tecnologias usadas como soluções temporárias funcionaram de maneira adequada, não houve a necessidade de se adotar seu uso imediatamente. No entanto o IPv6 já está sendo implementado pois os últimos blocos IPv4 disponíveis já foram distribuídos as entidades regionais responsáveis. O IPv6 se mostrou uma solução definitiva para o endereço IP, tendo em vista que apresenta o total de 340.282.366.920.938.463.463.374.607.431.768.211.456 endereços, cerca de 79 trilhões de trilhões de vezes o espaço disponível no IPv4, fazendo com que fique praticamente impossível que o espaço para alocação se 75 esgote. Além de trazer diversas melhorias no funcionamento do protocolo, em relação a flexibilidade, eficácia, segurança entre outras. Na realização da configuração do IPv6 nas máquinas virtuais foram encontradas algumas dificuldades, pois não existem muitas informações sobre quais endereços podem ser utilizados livremente. Partindo dessa dificuldade, foram realizadas pesquisas até encontrar o site SubnetOnline.com, que faz a conversão de endereços IPv4 em IPv6 e então oferece endereços a serem utilizados em testes em redes internas. Como trabalhos futuros poderão ser realizados a configuração dos demais serviços que o novo protocolo permite, tais como melhor segurança, desempenho e também sobre como melhora o QoS das redes. 76 REFERÊNCIAS BIBLIOGRÁFICAS ALECRIM, E. Protocolo DHCP, 23 mar http://www.infowester.com. Acesso em: 20 mar 2011. BATISTI, J. Classes de endereços, 01 set http://www.juliobattisti.com.br. Acesso em: 14 out 2010. 2005. 2009. Disponível em Disponível em BUGALLO et al. Introdução ao DHCP, 12 nov 1999. Disponível http://www.rnp.br/newsgen/9911/dhcp.html. Acesso em: 25 jan 2011. em CASTELL, M. A galáxia da Internet (2003). http://books.google.com.br/books - Acesso em: 17 set 2010. em Disponível COMER, D. E. Interligação de redes com TCP/IP. Rio de Janeiro: Elsevier, 2006. FARREL, A. A internet e seus protocolos – Uma Análise comparativa. Tradução Daniel Vieira. Rio de Janeiro: Elsevier, 2005. FERNANDEZ, F. L. Roteamento IP, 27 Jun 2003. Disponível http://www.gta.ufrj.br/grad/99_1/fernando/roteamento. Acesso em: 20 jan 2011. em FOROUZAN, B. A. Comunicação de dados e redes de computadores. São Paulo: McGraw-Hill Brasil, 2008. FRANÇA, P. 6IX Linux: Divulgando e Intensificando a utilização do novo protocolo da Internet (IPv6), Recife, 18 nov 2005. Disponível em http://dsc.upe.br/~tcc/20052.html. Acesso em: 28 fev 2011. 77 MARSAN, C. D. No more IPv4 addresses, 01 fev 2011. Disponível em http://www.networkworld.com/news/2011/020111-IPv4. Acesso em: 02 fev 2011. RFC Request for Comentes – Disponível em http://www.normes-internet.com. Acesso em: 16 out 2010. RODRIGUES, A. A exaustão de endereços IPv4 na Internet e a solução IPv6, 29 abr 2009. Disponível em: http://www.IPv6.br/IPV6/ArtigoExaustaoEnderecosIPv4SolucaoIPv6. Acesso em: 31 set 2010. RUSCHEL, A. G. Do cabeamento ao servidor. Rio de Janeiro: Brasport, 2007. SCRIMGER, R. et al. TCP/IP A Bíblia (2002). http://books.google.com.br/books. Acesso em: 26 out 2010. Disponível em TANENBAUM, A. S. Redes de computadores. Rio de Janeiro: Elsevier, 2003. TORRES, G. Redes de computadores. Rio de Janeiro: Novaterra Editora e Distribuidora Ltda., 2009. VASCONCELOS, L.; VASCONCELOS, M. Manual Prático de Redes. Laércio Vasconcelos Computação, 2007.