Clique aqui para voltar à página inicial  http://www.novomilenio.inf.br/ano96/9602difl.htm
Publicado originalmente pelo editor de Novo Milênio no caderno Informática do jornal A Tribuna de Santos/SP, em 27 de fevereiro de 1996
Publicado em Novo Milênio em (mês/dia/ano/horário): 11/26/00 23:48:30
INFORMÁTICA FÁCIL: Ligue seu micro com o mundo... (8) 
Protocolos de comunicação

Para que um modem entenda o que o outro está transmitindo - e ignore ruídos da linha que interfiram na comunicação e possam ser confundidos com os tons de áudio usados na transmissão telefônica -, saiba se a transmissão foi interrompida, e o quê foi transmitido corretamente, é preciso existirem algumas regras ou convenções, conhecidas como protocolos de comunicação e de correção de erros, ou genericamente como protocolos de transferência de arquivos. 

Eles são necessários para garantir aos usuários que os arquivos foram transmitidos e recebidos integralmente e sem erros, e devem ser escolhidos por ambos os usuários (transmissor e receptor) antes da transmissão do arquivo, pois ambos devem usar o mesmo protocolo.

Quase todos os protocolos dividem os arquivos a transmitir em uma certa quantidade de blocos (ou “pacotes”), acrescentando uma informação extra para o controle e a detecção de erros (que pode ser Checksum ou CRC), calculada a partir dos dados por processos matemáticos. O modem que recebe esses blocos deve refazer as contas para compará-las com o resultado esperado. 

Protocolos mais recentes permitem transmitir vários blocos antes de se receber algum informe de erro (window) e repetir apenas o bloco errado (sliding window). Como a divisão em blocos ocorre em nível de bits, a base de qualquer programa de computador, os arquivos transmitidos não sofrem nenhuma alteração, depois de reconstituídos pelo modem recebedor desses dados.

Tipos - O protocolo mais simples é o ASCII, que apenas envia o arquivo pela interface serial, sem acrescentar nenhuma informação. Já o primeiro protocolo popular, e o menos eficiente entre os atuais, foi o Xmodem (de Ward Christensen). Neste caso, cada bloco transporta 128 bytes de dados mais a informação do número do bloco e o Checksum (podemos traduzir como soma de conferência). Possui a variação XModem-CRC que troca o cálculo do Checksum pelo CRC, mais confiável.
O XModem-1K é uma variação do XModem-CRC que apresenta os dados aumentados de 128 para 1024 bytes por bloco, procurando aumentar a eficiência com mais bytes de dados em relação aos bytes de controle.

Já o Ymodem (de Chuck Forsberg) acrescenta a capacidade batch ao XModem-1K, isto é, permite transferir diversos arquivos em uma simples operação. Como existe alguma confusão entre este (conhecido então como Ymodem-batch) e o XModem-1K (rebatizado como Ymodem), o padrão acabou não sendo tão utilizado, pois seria trabalhoso definir, a cada vez que fosse usado, qual o real padrão Ymodem em uso.

O Ymodem-G é do tipo streaming: apenas envia os dados, sem esperar alguma sinalização de erro, não perdendo portanto tempo com a espera desse sinal. Qualquer erro simplesmente cancela a transferência dos dados. Protocolos com o sufixo G são usados em modems com correção de erros (MNP ou V.42), pois qualquer erro ou falha só poderão ser corrigidos entre os modems.

Já o Zmodem (também de Chuck Forsberg) é hoje o padrão nos BBSs. Sua principal vantagem é mudar dinamicamente a quantidade de dados contidos em um bloco, conforme as condições da linha de transmissão. Usa um CRC com 32 bits, bastante confiável, e permite reiniciar a partir do ponto de interrupção uma transferência de arquivo interrompida, em vez de ocorrer o crash recovery (em que todo o arquivo recomeça a ser transmitido).

Programa Terminal do Windows tem duas opções de protocolo
Menos conhecidos - Desenvolvido por Frank da Cruz na Columbia University, o Kermit destina-se a ligar computadores de grande porte (mainframes) a computadores de diversos tipos. Usa “palavras” de sete ou oito bits (dados ASCII ou binários), bem como negociação dos recursos disponíveis entre as diversas versões do protocolo. Embora seja mais fácil o intercâmbio, perde para o Xmodem na velocidade. Como o Cis Quick B (usado no Compuserve dos Estados Unidos) e alguns protocolos proprietários de alguns programas de comunicação, o Kermit não é comum nos BBSs.

Puma, Hyper e Jmodem são outros protocolos usados nas comunicações, mas não tão comuns. Já o Bimodem, criado por John Erickson, se destaca por permitir transferências bidirecionais (upload e download) simultâneas com um chat (conversa) entre usuários e o operador do sistema do BBS (sysop). Na mesma linha do Bimodem, Samuel H.Smith desenvolveu o protocolo HS-Link, que usa o conceito de protocolo externo.

O protocolo externo é um programa específico para implementação de um protocolo que não faça parte do programa original de transmissão. É uma forma de superar a limitação de certos programas. Neste caso, o acesso ao programa de comunicação passa por um arquivo “batch” do sistema operacional, que carrega e ativa o protocolo externo,  preparando-o para receber comandos e parâmetros do programa.

O melhor - Nas primeiras experiências com programas de comunicação, use o Xmodem, preferencialmente na versão CRC. Nas conexões com muito ruído, em que a linha telefônica apresente sinal de baixa qualidade, o Xmodem é mais rápido porque o bloco de dados é menor e o protocolo perde assim menos tempo nas retransmissões. 

O Zmodem, entretanto, é o ideal para uso com linhas telefônicas que tenham pouco ruído, e só na falta do Xmodem e do Zmodem use o protocolo Ymodem, especialmente Ymodem-G (a não ser que você confie na correção de erros feita pelo próprio modem). Lembre-se: quanto pior a linha, mais retransmissões serão feitas, maior o tempo gasto na transmissão.

Colaboram nesta série o Renato “Snake” Ferreira Ribeiro, da Snake BBS, e o Christian Rodrigues Barbosa, da Blue Eagle Consulting, encarregado da estruturação de A Tribuna como provedora Internet.