Crónica Histórica — A Rede que Venceu a Entropia

Em 1980, com computadores ICL 1500, modems e código em assembler, nasceu uma rede que ligou muitos bancos com as suas agências bancárias e sistemas centrais, a Força Aérea Portuguesa, e algumas outras organizações — fiável, resiliente e feita contra as limitações das linhas analógicas da época.

ICL 1500 (1980): A Rede Portuguesa "à Prova de Bala"

Por Francisco Gonçalves — Fragmentos do Caos

📜 Box de Factos
Plataforma: ICL 1500 (terminais/sistemas com cassete e versões com disco no centro)
Ano: 1980
Ligações: Modems analógicos (tipicamente 300–1200-2400 bps), com fall back, sobre linhas com ruído e quedas frequentes
Protocolo: Assembler e protocolos IBM e ICL adaptados para o efeito (framing, CRC, ARQ, janelas deslizantes, timeouts, reenvios)
Âmbito: Bancos (agências pelo pais e sede), Força Aérea Portuguesa, e Bases pelo país e outros clientes nacionais
Distintivo: Fiabilidade extrema em infra-estrutura rudimentar — software "à prova de bala"

A realidade das linhas: ruído, ecos, quedas

Os computadores centrais tinham hosts pouco dotados para comunicações. As linhas eram analógicas, com atenuação, ecos e picos de ruído. O que falhava no cobre foi compensado em engenharia de protocolo: o stack que escrevi, tornou o ICL 1500 num guardião paciente — "escutava cada banda e insistia em vencer a entropia".

O coração do protocolo (feito à unha)

  • Framing robusto — cabeçalho com STX, tamanho, sequência; rodapé com ETX e CRC-16/BCC.
  • Blocos compactos — tipicamente 128–256 bytes por quadro, equilibrando latência/erro.
  • ARQ com janelas deslizantes — ACK/NAK e retransmissão seletiva em caso de erro.
  • Controlo de fluxo — XON/XOFF e RTS/CTS conforme o canal/porta.
  • Timeouts adaptativos & backoff — reenvio exponencial e line probing após queda.
  • Persistência transacionaljournaling local, confirmações fim-a-fim, idempotência.
  • Auto-recuperação — reconexão, re-negociação de velocidade, re-sincronização de sequência.

Como fluía a mensagem (alto nível)

enquanto houver_mensagens:
    bloco = ler_buffer()
    quadro = STX | LEN | SEQ | bloco | CRC | ETX
    enviar(quadro)
    aguardar(ACK, NAK, TIMEOUT)
    se ACK: gravar_confirmação_e_avançar()
    se NAK ou CRC_invalido: reenviar(SEQ)
    se TIMEOUT: backoff(); tentar_reconectar_se_preciso()
ao_final: enviar_FRAME_FIM(); fechar_sessão_com_log_integridade()
  

Do país inteiro ao sistema central

Nas agências bancárias, os ICL 1500 recolhiam dados de operações; na sede, um ICL 1500 com disco actuava como nó central/host. O software fazia store-and-forward, verificava integridade, eliminava duplicados e alimentava o mainframe. Na Força Aérea e noutros clientes, o mesmo rigor: tráfego vital a passar em segurança por linhas imperfeitas.

Métrica e confiança

Cada sessão gerava logs precisos: perdas, retransmissões, tempo por bloco, disponibilidade do circuito. Essa telemetria permitia diagnosticar rotas, escolher horários menos ruidosos e provar o SLA de uma era sem SLAs.

Legado

Antes de X.25 massificar, antes de TCP/IP chegar às empresas, já tinha construído uma rede fiável sobre o caos. A lição permanece: quando a infra falha, o protocolo certo — pensado com elegância e disciplina — transforma ruído em informação confiável.


"A entropia não desiste — mas a teimosia da boa engenharia também não."
— F. Gonçalves

🌌 Fragmentos do Caos: Blogue Ebooks Carrossel
👁️ Esta página foi visitada ... vezes.