Especificação de protocolo

O módulo em que estive envolvido é apenas parte de uma solução ainda em fase inicial de desenvolvimento. Basicamente, o contexto é a comunicação bidirecional entre Estações e uma Central. Estações estão equipadas com um modem GSM / GPRS e a Central é uma aplicação que gerencia os eventos enviados pelas Estações e envia comandos para as mesmas. A comunicação é feita via Internet, mais especificamente com o gateway da operadora de celular como elemento intermediário: o gateway une as redes GSM e a Internet, permitindo que um dispositivo móvel se comunique com um outro elemento conectado à rede.

Especifiquei um mecanismo de transporte confiável de dados sobre o protocolo da camada de transporte escolhido, o UDP. Para não causar dúvidas, a palavra confiabilidade é empregada para expressar a idéia de garantia de entrega de dados e não está associada ao uso de criptografia.

Quando falamos sobre protocolo de comunicação em redes, existem duas opções para a camada de transporte: TCP e UDP. TCP é um protocolo bem complexo, característico pelo uso de mecanismos de garantia de entrega de dados e controle de fluxo de dados e de congestionamento. Para implementar tais mecanismos, o protocolo define um cabeçalho para cada pacote com várias informações, adicionando um significativo número de bytes aos dados da aplicação. Já UDP é um protocolo de transporte mais simples, por não garantir nenhuma das propriedades de TCP citadas anteriormente, possibilitando maior velocidade para a entrega de pacotes de dados. Em UDP não há sequer os conceitos de confirmação de recebimento de dados e estabelecimento de conexão: elementos comunicantes simplesmente enviam dados.

A principal razão pela escolha de UDP como protocolo de transporte foi o custo que, de acordo com a política empregada pela operadoras de celular, é proporcional à quantidade de bytes transportados. Utilizar o transporte confiável de dados sobre UDP não seria tão oneroso quanto utilizar TCP, pois nem todos os serviços de TCP seriam implementados.

O projeto apresenta questões semelhantes ao de aplicações móveis, como a alocação temporária de endereço IP (endereço atribuído a um elemento da rede - um computador, um roteador ou um dispositivo móvel - que o identifica unicamente). Como já havia dedicado alguns dias ao estudo de J2ME (veja próxima seção), tais semelhanças motivaram meu chefe a designar tal tarefa para mim pois o protocolo também poderia ser útil em futuras aplicações para celular.

Foi necessária a composição de um documento com a definição do mecanismo de transporte confiável de dados e os tipos de pacotes transportados. Como a especificação dos tipos de pacotes de dados da aplicação estava altamente vinculada com os eventos gerados pelas Estações e os comandos que a Central pode enviar, participei de reuniões com os mentores do projeto - alguns diretores do grupo Omnidata, incluindo meu chefe - para obter as informações necessárias. Para a definição do protocolo de transporte, atuei praticamente sozinho, apresentando os resultados obtidos para meu chefe. Reuniões posteriores foram feitas para validar a especificação.

A garantia de entrega de dados foi definida com a adição de informações aos dados da aplicação e uso de mecanismos de retransmissão de pacotes e de confirmação de recebimento de pacotes. Ter cursado uma disciplina a respeito de redes foi de grande valia, pois estudei e aprendi conceitos utilizados nesse projeto. Consultas a [4] também foram úteis. A atividade não apresentou grandes dificuldades e por isso concluí-la dentro do prazo determinado. Entretanto, confesso que me sentiria um pouco desnorteado no início se não tivesse cursado uma disciplina sobre o assunto.

A etapa seguinte seria o desenvolvimento da Central. Participei de algumas reuniões para a definição do modelo de classes e de dados e discussão de.questões como escalabilidade e perda de IP das Estações. Entretanto, a etapa foi cancelada temporariamente e só será retomada após a conclusão de questões técnicas.