Migração para IPv6 de aplicações usuárias da interface de programação Sockets BSD
Escrito por Elvis Pfützenreuter
Introdução
O objetivo deste trabalho é demonstrar o uso da interface de programação Sockets BSD com o protocolo de rede IPv6, bem como as implicações da conversão de programas usuários desta interface para IPv6. A interface de programação de aplicações Sockets BSD é o padrão de fato no acesso a recursos de rede. Essa interface foi desenvolvida na universidade de Berkeley como parte da implementação-modelo do TCP/IP para Unix.
A interface prevê a fácil inclusão de suporte a novos protocolos. Isso afeta ligeiramente a curva de aprendizado da interface, mas a longo prazo a extensibilidade revelou-se crucial para o sucesso do Sockets BSD e do próprio Unix. Os Sockets fazem parte da especificação POSIX, que todos as implementações Unix relevantes seguem; e todos os protocolos de rede suportados pelo sistema operacional subjacente são acessíveis via Sockets, seja IPX, Appletalk, NetBEUI, OSI, IP ou IPv6.
Outros sistemas operacionais não-Unix imitam em maior ou menor grau a interface Sockets BSD, por ser simples, eficiente, familiar aos desenvolvedores, e poupar o trabalho de criar-se uma nova interface. Um exemplo notório é o PalmOS, que oferece compatibilidade limitada do código-fonte C. O desenvolvedor pode testar os módulos de
networking num computador de uso geral e depois recompilá-lo para Palm com pouca ou nenhuma modificação (RHODES, 1999).
Ao migrar um programa qualquer de um protocolo de rede para outro, por exemplo de TCP/IP para IPX, pouca coisa muda no código-fonte. Esse é o objetivo do Sockets BSD. Mas, não basta ao desenvolvedor conhecer duas ou três macros
IPX_* para usar o protocolo IPX; ele deve conhecer o novo protocolo um pouco mais profundamente para usá-lo de forma adequada. Afinal, tem de existir uma infra-estrutura de rede IPX funcional para que os soquetes sejam úteis.
O mesmo acontece com o IPv6. É fácil migrar um programa IPv4 para IPv6, conforme será demonstrado neste trabalho. Porém, é necessário saber algo mais sobre as mudanças de protocolo interagem com os programas:
- Os programas poderiam continuar usando o protocolo IPv4 ? Ao mesmo tempo que IPv6?
- Um programa IPv6 pode comunicar-se com um servidor IPv4 ? Se sim, como fazer isso ?
- Um programa oferece determinado serviço à rede. Esse serviço ainda faz sentido em IPv6?
- Como um programa que se utiliza de um serviço IPv4 não mais existente em IPv6 (e.g. broadcast) poderia ainda ser utilizado ?
Para atingir o objetivo de responder tais perguntas, este trabalho aborda alguns aspectos do protocolo IPv6 em si, que apesar de estarem muito bem documentados em diversos livros e trabalhos, por vezes se utilizam de linguagem hermética e/ou abordam aspectos muito específicos do protocolo. Além disso, a suprema maioria desses materiais não aborda programação em Sockets BSD.
Após trazer informação suficiente sobre IPv6 para o interesse deste trabalho, aborda-se o desenvolvimento de programas em si, sempre tentando dar um enfoque prático, utilizando código real, prontamente utilizável e demonstrável.
O sistema operacional de referência para o estudo é o Linux, por ser o mais familiar ao autor. De qualquer forma, os exemplos devem ser 100% compatíveis com outros sistemas que seguem o padrão POSIX.
A interface de rede do Microsoft Windows difere consideravelmente do Sockets BSD (embora imite-a claramente em alguns aspectos), portanto infelizmente nada será falado sobre programação IPv6 para Windows. O produto CygWin, que permite rodar programas POSIX sob Windows, promete implementar suporte a IPv6 num futuro próximo.
Última atualização 18/09/2008 16h04