Protocolos / IEC 60870-5-104 — IEC 104

APDU no IEC 104: comprimento, controle e leitura byte a byte

Aprenda a delimitar uma APDU IEC 104, interpretar 0x68, comprimento, octetos de controle, diferenciar I/S/U frames e detectar truncamento ou concatenação.

7 min de leitura Conteúdo técnico autoral Publicado em 25/08/2026
Ilustração técnica autoral para APDU no IEC 104: comprimento, controle e leitura byte a byte, destacando o fluxo e os elementos centrais do assunto.
Ilustração técnica autoral do Portal da Automação, criada para o foco específico deste artigo.

IEC 104: APDU, I/S/U e parâmetros que controlam a sessão

Diagrama do IEC 60870-5-104 com APDU, APCI, ASDU, formatos I S U e temporizadores.
Diagrama próprio do Portal da Automação. A IEC 104 usa TCP, mas mantém regras próprias de sessão, numeração e telecontrole.

Como ler esta figura

APCI / Control Field

Controla formato I/S/U, estado lógico e numeração N(S)/N(R).

Na implementação: Sequência travada, ACK atrasado ou TESTFR repetitivo deve ser correlacionado com timers e janelas, não só com TCP.

I-format

Transporta ASDU e usa números de envio e recebimento para acompanhar a sequência.

Na implementação: Compare N(S) e N(R) nos dois sentidos para encontrar a primeira divergência ou ACK ausente.

S-format

Confirma recepção sem transportar uma ASDU.

Na implementação: É diretamente relacionado ao controle de fluxo e ao limiar w/t2.

U-format

Executa STARTDT, STOPDT e TESTFR para controlar/testar a transferência.

Na implementação: STARTDT não é comando de processo; é habilitação da transferência de dados IEC 104.

ASDU

Type ID, VSQ, COT, CA e IOA dão significado às medidas, estados, eventos e comandos.

Na implementação: TCP saudável com CA/IOA/COT errados continua sendo uma integração quebrada.

t0, t1, t2, t3, k e w

Definem estabelecimento, confirmações, ociosidade e janelas de mensagens.

Na implementação: Dimensione usando RTT real, carga e requisitos da aplicação; não copie defaults entre fabricantes sem validar.

Estrutura mínima para leitura de APDU

OffsetConteúdoComo validar
0start 0x68marca início da APDU
1comprimento Ltotal da APDU deve ser L + 2
2–5quatro octetos de controleclassificar I, S ou U antes de decodificar
6…ASDU somente em I-framecomparar Type ID, COT, CA e IOA
Stream TCPuma ou várias APDUs remontadasnão usar fronteira do segmento como mensagem

A leitura específica da APDU substitui qualquer repetição genérica da pilha completa.

APDU é a unidade visível da aplicação IEC 104

A Application Protocol Data Unit começa com o APCI e, somente nos I-frames, continua com uma ASDU. O primeiro octeto tem valor 0x68. O segundo informa quantos octetos seguem, contando os quatro octetos de controle e a eventual ASDU. Assim, o tamanho total observado no fluxo é o comprimento declarado mais dois. Essa conta simples identifica captura truncada, dissector desalinhado e implementação que anuncia tamanho incompatível.

TCP entrega um fluxo de bytes, não mensagens preservadas. Uma APDU pode atravessar mais de um segmento TCP, e várias APDUs podem estar no mesmo segmento. Portanto, “um pacote igual a uma mensagem” é uma suposição errada. O analisador deve remontar o stream e usar 0x68 mais o comprimento para delimitar cada unidade.

Os quatro octetos de controle classificam o frame

No I-frame, o bit menos significativo do primeiro octeto de controle é zero. Os dois primeiros octetos codificam N(S), e os dois seguintes codificam N(R), ambos deslocados um bit. No S-frame, os dois bits inferiores indicam o padrão supervisório e somente N(R) tem significado. No U-frame, os bits de função representam STARTDT, STOPDT ou TESTFR com indicação de ativação ou confirmação.

A leitura deve começar pelo padrão de bits e só depois converter números. Interpretar os pares de octetos como inteiros sem retirar o bit de tipo dobra artificialmente a sequência. Em campo, compare o valor decodificado pelo Wireshark com o cálculo manual de uma amostra para assegurar que filtro, endianidade e coluna customizada estão corretos.

Comparação entre IEC 60870-5-101 serial e IEC 60870-5-104 sobre TCP/IP.
Os protocolos compartilham a semântica de telecontrole, mas usam transportes e controles de sessão diferentes. Fonte: Portal da Automação · Conteúdo autoral do portal.

Comprimento protege a análise, não a integridade do transporte

O campo de comprimento impede que o receptor confunda o final da APDU, mas não substitui os mecanismos do TCP. Segmento perdido é retransmitido pelo transporte; bytes corrompidos são tratados pelos controles inferiores. Se o stream chega completo e a aplicação encerra a conexão após uma APDU, investigue comprimento inválido, tipo não suportado ou estado protocolar, além de logs do par.

Uma APDU máxima demanda atenção a buffers de front-end, firewalls com inspeção e capturas com snaplen limitado. Quando o PCAP registra somente parte do payload, o erro “malformed” pode pertencer à captura, não ao equipamento. Verifique tamanho original versus capturado e repita com snaplen adequado antes de concluir defeito de implementação.

I-frame leva ASDU e participa da janela

Depois dos seis octetos iniciais, o I-frame apresenta Type ID, VSQ, Cause of Transmission, Common Address e os objetos de informação. N(S) identifica o envio desta ponta; N(R) confirma I-frames recebidos da outra. Uma APDU de dados pode simultaneamente transportar informação e reconhecer o sentido oposto, reduzindo S-frames quando há tráfego bidirecional.

Acompanhe o stream por direção. Sequência não deve ser misturada entre cliente e servidor. Registre N(S) inicial, progressão, reconhecimentos e quantidade pendente. Se k é alcançado, a origem deve aguardar confirmação; se w é alcançado no receptor, um reconhecimento precisa ser emitido conforme a temporização aplicável.

S-frame confirma sem carregar ASDU

S-frame existe para reconhecer I-frames quando não há I-frame de retorno capaz de carregar N(R). Ele é curto e não possui ASDU. Uma sequência de S-frames pode ser normal em tráfego predominantemente unidirecional. Ausência prolongada de confirmação, porém, faz o transmissor atingir janela ou t1 e pode levar ao encerramento.

No diagnóstico, meça desde o I-frame mais antigo ainda não confirmado até o S-frame ou I-frame que avança N(R). Diferencie atraso do aplicativo, fila na rede e retransmissão TCP. O momento em que o ACK TCP ocorre não equivale à confirmação IEC 104: são controles de camadas diferentes.

U-frame governa o estado da transferência

STARTDT act/con habilita dados de usuário após a conexão; STOPDT act/con interrompe a transferência; TESTFR act/con verifica a associação durante ociosidade. Esses comandos não carregam pontos. Se o TCP está estabelecido e o cliente nunca envia STARTDT, o servidor pode permanecer corretamente silencioso mesmo com GI configurada no SCADA.

Marque o instante de cada U-frame e valide o par correspondente. Confirmação ausente pode revelar estado incompatível, perda no sentido de retorno ou implementação bloqueada. TESTFR repetido sem resposta deve ser relacionado a t3 e t1, não interpretado apenas como “ping da aplicação”.

Filtros e exportação devem preservar contexto

Filtre primeiro pela conversa TCP e depois pelos campos IEC 104. Salve N(S), N(R), tipo do frame, Type ID, COT, CA e IOA como colunas. Exportar apenas um pacote remove a progressão necessária para interpretar confirmação e temporizador. Preserve alguns segundos antes da primeira anomalia e todo o período até a recuperação.

Em redes com NAT, relacione endereços vistos em cada ponto de captura. O mesmo stream pode aparecer com tuplas diferentes. Use número de sequência TCP, tempo e conteúdo da APDU para correlacionar, sem publicar endereços ou dados operacionais em evidências externas.

Teste controlado valida o parser e o equipamento

Crie uma sessão limpa, execute STARTDT, GI e uma mudança de ponto. Para cada APDU, confira 0x68, tamanho, controle, presença de ASDU e sequência. Em seguida provoque fragmentação TCP e agregação de APDUs sem alterar o conteúdo lógico. O receptor deve remontar corretamente, demonstrando que não depende da fronteira do segmento.

Inclua comprimento inválido e frame inesperado apenas em laboratório isolado. Registre se a implementação descarta, responde ou encerra a sessão. O aceite não exige tolerar mensagem fora da norma; exige comportamento determinístico, log útil e recuperação sem afetar outras associações.

Referências técnicas e normas

As explicações do Portal são autorais. Normas e fontes oficiais são priorizadas; materiais acadêmicos e documentação pública de fabricantes complementam a implementação e não substituem a edição normativa aplicável ao projeto.

Continue estudando

Os próximos conteúdos foram escolhidos para formar uma sequência técnica, relacionando fundamento, configuração, diagnóstico e aplicação.

Ver todas as trilhas de estudo →