TCP
Na arquitetura IP da casa inteligente, TCP ocupa a camada de transporte entre aplicações como HTTP, MQTT, SSH e Modbus TCP e o protocolo IP. A especificação consolidada está na RFC 9293, de 2022. Diferente de UDP, cria conexão, ordena bytes, retransmite perdas e controla fluxo. A decisão de projeto troca menor simplicidade por confiabilidade; exige estados, buffers e handshake. Uma queda de Wi‑Fi interrompe a conexão, portanto clientes precisam de keepalive, timeout e reconexão.
↗ Wikidata · Q8803TCP é um protocolo de transporte orientado a conexão que oferece às aplicações um fluxo bidirecional de bytes confiável, ordenado e sem duplicação intencional. Ele não preserva limites de mensagem. Se uma aplicação envia dois blocos de 100 bytes, o receptor pode ler 50, 150 e 50. O protocolo de aplicação precisa ter framing, como comprimento, delimitador ou estrutura. HTTP/1.1 usa regras de mensagem; MQTT usa cabeçalho com comprimento; Modbus TCP usa MBAP. TCP identifica conexões por endereços IP e portas de origem e destino. O cliente normalmente escolhe porta efêmera e conecta à porta conhecida do servidor, como 80 HTTP, 443 HTTPS, 1883 MQTT ou 8883 MQTT/TLS. A porta não garante o protocolo; é convenção. O handshake de três vias usa SYN, SYN-ACK e ACK para sincronizar números de sequência. Depois, segmentos transportam dados. O receptor confirma bytes com ACK. Perdas são detectadas por timeout ou ACKs e retransmitidas. A janela de recepção implementa controle de fluxo para não exceder buffers. O controle de congestionamento ajusta a taxa à rede. A RFC 9293, publicada em agosto de 2022, consolida a especificação principal e substitui a base da RFC 793 de 1981, incorporando décadas de correções. Algoritmos de congestionamento e extensões estão em RFCs adicionais. Em LAN residencial, a latência é baixa, mas perdas de Wi‑Fi, roaming, economia de energia e interferência acontecem. TCP recupera perdas, porém a retransmissão adiciona atraso. Uma mensagem posterior não é entregue à aplicação antes do byte perdido no mesmo fluxo. Esse head-of-line blocking é uma razão para QUIC e HTTP/3 usarem streams independentes sobre UDP. TCP continua adequado a MQTT, HTTP/1.1, HTTP/2, SSH, RTSP interleaved, banco e protocolos industriais. O custo é manter conexão e estado. Um microcontrolador precisa de memória para buffers. Milhares de dispositivos exigem servidor dimensionado. NAT e firewall descartam conexões ociosas. Keepalive de aplicação, como PINGREQ/PINGRESP do MQTT, é mais explícito que TCP keepalive. O cliente precisa detectar ausência e reconectar. Um socket aberto não prova que o equipamento remoto está funcional. Escrever pode parecer sucesso até o buffer. A aplicação precisa de confirmação semântica. TCP não cifra, não autentica e não autoriza. TLS adiciona. Sem TLS, qualquer nó no caminho pode ler e alterar quando tem capacidade. Em rede local, segmentação ajuda, mas não substitui. A confiabilidade é de bytes entre pilhas, não de ação física. Receber comando não significa relé comutou. O protocolo de aplicação deve confirmar.
- Entrega bytes confiáveis e ordenados, simplificando protocolos que precisam receber toda a configuração, comando ou arquivo sem lacunas.
- Controle de fluxo impede que emissor sobrecarregue o receptor, importante em microcontroladores e gateways com memória limitada.
- Controle de congestionamento permite coexistir na Internet e adapta a taxa a perdas e capacidade, sem cada aplicação reinventar.
- É suportado por todos os sistemas IP e por protocolos amplamente usados em casa inteligente, como HTTP, MQTT, SSH e Modbus TCP.
- TLS sobre TCP oferece uma pilha madura para segurança, certificados, mTLS e bibliotecas em linguagens e dispositivos.
- Handshake, estado e buffers aumentam consumo de memória e latência comparado a UDP, especialmente para mensagens únicas.
- Perda de um segmento bloqueia a entrega dos bytes posteriores naquele fluxo, mesmo se pertencem a operações independentes.
- Não preserva fronteiras de mensagem; aplicações precisam implementar framing e leitura parcial corretamente.
- Conexões ociosas podem ser removidas por NAT, firewall ou Wi‑Fi; keepalive, heartbeat e reconexão são necessários.
- Confiabilidade de transporte não garante execução única nem confirmação física; retries podem duplicar ações sem idempotência.