TCP

O que é TCP?

TCP significa Transmission Control Protocol.

Ele é um protocolo da camada de transporte do modelo OSI, usado para garantir a transmissão confiável de dados entre sistemas em uma rede.

O TCP é orientado à conexão, ou seja, antes de começar a transmitir dados, ele estabelece uma conexão entre o dispositivo de origem e o dispositivo de destino.

Ele garante que os dados cheguem corretamente, completos e na ordem certa.


Para que o TCP é usado?

O TCP é usado em aplicações que precisam de confiabilidade na entrega dos dados.

Exemplos comuns:

Acessar sites pela web.
Enviar e receber e-mails.
Acessar servidores por SSH.
Transferir arquivos.
Usar sistemas bancários.
Acessar bancos de dados.
Fazer login em sistemas remotos.
Comunicar aplicações que não podem perder dados.


TCP é a mesma coisa que UDP?

Não.

TCP e UDP são protocolos da camada de transporte, mas funcionam de formas diferentes.

O TCP prioriza confiabilidade.
O UDP prioriza velocidade e baixa latência.

Resumo:

ProtocoloConexãoConfiabilidadeVelocidadeExemplo
TCPOrientado à conexãoGarante entregaMais lentoWeb, SSH, e-mail
UDPSem conexãoNão garante entregaMais rápidoDNS, VoIP, jogos

Como o TCP funciona?

O TCP funciona criando uma conexão entre origem e destino antes da transmissão dos dados.

Fluxo básico:

O cliente solicita conexão com o servidor.
O servidor responde aceitando a conexão.
A conexão TCP é estabelecida.
Os dados são divididos em segmentos.
Os segmentos são enviados pela rede.
O destino confirma o recebimento.
Se algum segmento for perdido, ele é retransmitido.
Os dados são reorganizados na ordem correta.
A conexão é encerrada ao final da comunicação.

Exemplo:

Cliente → Conexão TCP → Servidor

Características principais do TCP

O TCP possui algumas características importantes:

É orientado à conexão.
Garante entrega dos dados.
Reenvia pacotes perdidos.
Organiza os pacotes na ordem correta.
Possui controle de fluxo.
Possui controle de congestionamento.
Divide dados em segmentos.
Reagrupa os dados no destino.
Usa confirmação de recebimento.
É mais confiável que o UDP.
Possui maior sobrecarga que o UDP.


O que significa TCP ser orientado à conexão?

Significa que o TCP estabelece uma conexão antes de enviar os dados.

Essa conexão é criada por um processo chamado three-way handshake.

Fluxo básico:

O cliente envia um pedido de conexão.
O servidor responde aceitando.
O cliente confirma.
Depois disso, os dados começam a ser transmitidos.

Resumo:

SYN → SYN-ACK → ACK

Esse processo ajuda a garantir que os dois lados estejam prontos para se comunicar.


O que é o three-way handshake?

O three-way handshake é o processo usado pelo TCP para iniciar uma conexão.

Ele ocorre em três etapas:

  1. Cliente envia SYN.
  2. Servidor responde com SYN-ACK.
  3. Cliente responde com ACK.

Exemplo:

Cliente  →  SYN      → Servidor
Cliente  ←  SYN-ACK  ← Servidor
Cliente  →  ACK      → Servidor

Depois disso, a conexão TCP está estabelecida.


O que significa TCP ser confiável?

Significa que o TCP verifica se os dados chegaram corretamente ao destino.

Se algum segmento for perdido, o TCP pode retransmitir.

Se os segmentos chegarem fora de ordem, o TCP reorganiza.

Se ocorrer erro na transmissão, o TCP pode detectar e corrigir com retransmissão.

Por isso, ele é usado em aplicações onde a perda de dados não pode acontecer.


TCP usa portas?

Sim.

O TCP usa portas para identificar aplicações e serviços.

Exemplos comuns:

ServiçoPorta TCP comum
HTTP80/TCP
HTTPS443/TCP
SSH22/TCP
FTP21/TCP
SMTP25/TCP
SMTP Submission587/TCP
POP3110/TCP
POP3S995/TCP
IMAP143/TCP
IMAPS993/TCP
MySQL3306/TCP

Exemplo de porta TCP:

443/TCP

Isso indica que o serviço usa a porta 443 com o protocolo TCP.


TCP usa IP?

Sim.

O TCP funciona sobre o protocolo IP.

Resumo:

Aplicação → TCP → IP → Rede

O TCP fica na camada de transporte.

O IP fica na camada de rede.


O que é um segmento TCP?

Um segmento TCP é a unidade de dados enviada pelo protocolo TCP.

Ele contém:

Porta de origem.
Porta de destino.
Número de sequência.
Número de confirmação.
Flags TCP.
Checksum.
Dados da aplicação.

Essas informações ajudam o TCP a controlar a entrega, a ordem e a confiabilidade dos dados.


O que é controle de fluxo no TCP?

O controle de fluxo regula a quantidade de dados enviados.

Ele evita que o remetente envie mais dados do que o receptor consegue processar.

Exemplo:

Se o destino estiver sobrecarregado, o TCP pode reduzir o ritmo de envio.

Isso ajuda a evitar perda de dados e sobrecarga no dispositivo receptor.


O que é controle de congestionamento no TCP?

O controle de congestionamento ajusta a velocidade de envio para evitar congestionamento na rede.

Se a rede estiver lenta ou perdendo pacotes, o TCP reduz a taxa de envio.

Quando a rede melhora, ele pode aumentar gradualmente a velocidade.

Isso ajuda a manter a estabilidade da comunicação.


O que é segmentação e reagrupamento no TCP?

O TCP divide os dados em partes menores chamadas segmentos.

Esses segmentos são enviados pela rede.

No destino, o TCP reorganiza tudo na ordem correta.

Exemplo:

Arquivo grande → Segmento 1 → Segmento 2 → Segmento 3

No destino:

Segmento 1 + Segmento 2 + Segmento 3 → Arquivo original

Mesmo que os segmentos cheguem fora de ordem, o TCP consegue reagrupá-los corretamente.


TCP tem retransmissão?

Sim.

Se um segmento não chegar ao destino, o TCP pode reenviar esse segmento.

Isso acontece porque o TCP usa confirmações de recebimento.

Quando o destino recebe os dados, ele envia uma confirmação chamada ACK.

Se o remetente não receber o ACK, ele pode reenviar o segmento.


TCP garante ordem dos pacotes?

Sim.

O TCP usa números de sequência para organizar os segmentos.

Se os segmentos chegarem fora de ordem, o destino reorganiza antes de entregar os dados para a aplicação.

Isso é importante em arquivos, páginas web, e-mails e conexões SSH.


Diferença entre TCP e UDP

CaracterísticaTCPUDP
ConexãoOrientado à conexãoNão orientado à conexão
EntregaGaranteNão garante
Ordem dos pacotesGaranteNão garante
Reenvio automáticoPossuiNão possui
Controle de fluxoPossuiNão possui
Controle de congestionamentoPossuiNão possui
VelocidadeMenorMaior
SobrecargaMaiorMenor
Uso comumComunicação confiávelTempo real

Quando usar TCP?

O TCP é indicado quando os dados precisam chegar completos e na ordem correta.

Exemplos:

Sites e sistemas web.
Transferência de arquivos.
SSH.
E-mail.
Bancos de dados.
APIs.
Sistemas financeiros.
Aplicações administrativas.

Nesses casos, confiabilidade é mais importante que velocidade bruta.


Quando não usar TCP?

O TCP pode não ser ideal quando a aplicação precisa de baixa latência e tolera pequenas perdas.

Exemplos:

Jogos online em tempo real.
Chamadas de voz.
Chamadas de vídeo.
Streaming ao vivo.
Transmissões em tempo real.

Nesses casos, o UDP pode ser mais adequado.


Exemplos de protocolos que usam TCP

ProtocoloPorta comumUso
HTTP80/TCPSites sem criptografia
HTTPS443/TCPSites com criptografia
SSH22/TCPAcesso remoto seguro
FTP21/TCPTransferência de arquivos
SMTP25/TCPEnvio de e-mails entre servidores
SMTP Submission587/TCPEnvio autenticado de e-mail
POP3110/TCPRecebimento de e-mails
IMAP143/TCPSincronização de e-mails
MySQL3306/TCPBanco de dados

Como testar uma porta TCP?

Com nc:

nc -vz ip_do_servidor porta

Exemplo testando SSH:

nc -vz 192.168.0.10 22

Exemplo testando HTTPS:

nc -vz google.com 443

Com telnet:

telnet ip_do_servidor porta

Exemplo:

telnet 192.168.0.10 80

Com nmap:

nmap -p porta ip_do_servidor

Exemplo:

nmap -p 443 google.com

Como verificar portas TCP abertas no Linux?

Use:

sudo ss -tlnp

Ou:

sudo netstat -tlnp

Filtrar por uma porta específica:

sudo ss -tlnp | grep :80

Exemplo para SSH:

sudo ss -tlnp | grep :22

Como liberar uma porta TCP no firewall?

Com UFW:

sudo ufw allow 80/tcp

Exemplo para HTTPS:

sudo ufw allow 443/tcp

Exemplo para SSH:

sudo ufw allow 22/tcp

Verificar status:

sudo ufw status

Com iptables:

sudo iptables -A INPUT -p tcp --dport 80 -j ACCEPT

Como bloquear uma porta TCP no firewall?

Com UFW:

sudo ufw deny 80/tcp

Com iptables:

sudo iptables -A INPUT -p tcp --dport 80 -j DROP

Verificar regras:

sudo iptables -L -n -v

TCP é seguro?

O TCP sozinho não possui criptografia.

Ele garante entrega, ordem e controle da comunicação, mas não protege o conteúdo dos dados.

A segurança depende da aplicação ou de protocolos adicionais.

Exemplos:

HTTP usa TCP, mas não criptografa.
HTTPS usa TCP com TLS, criptografando a comunicação.
SSH usa TCP com criptografia.
SMTP pode usar TCP com STARTTLS.

Por isso, TCP não deve ser considerado seguro sozinho.


Erros comuns com TCP

Connection refused

Erro:

Connection refused

Possíveis causas:

Nenhum serviço escutando na porta.
Serviço parado.
Porta fechada.
Firewall recusando a conexão.
Aplicação configurada em outra porta.

Verificar portas:

sudo ss -tlnp

Verificar serviço:

sudo systemctl status nome_do_servico

Testar porta:

nc -vz ip_do_servidor porta

Connection timed out

Erro:

Connection timed out

Possíveis causas:

Firewall descartando pacotes.
Servidor fora do ar.
IP incorreto.
Rota de rede com problema.
Porta bloqueada no provedor.
NAT sem redirecionamento correto.

Testar conectividade:

ping ip_do_servidor

Testar porta:

nc -vz ip_do_servidor porta

Verificar rota:

traceroute ip_do_servidor

No route to host

Erro:

No route to host

Possíveis causas:

Não existe rota até o destino.
Gateway incorreto.
Servidor desligado.
Firewall bloqueando com resposta de rede.
Problema na configuração IP.

Verificar IP:

ip addr

Verificar rota:

ip route

Testar gateway:

ping ip_do_gateway

Network is unreachable

Erro:

Network is unreachable

Possíveis causas:

Máquina sem rota padrão.
Interface de rede desconectada.
IP mal configurado.
Gateway ausente.
Rede de destino inacessível.

Verificar interfaces:

ip addr

Verificar rotas:

ip route

Adicionar gateway, se necessário:

sudo ip route add default via ip_do_gateway

Porta TCP aberta, mas aplicação não responde

Possíveis causas:

Aplicação travada.
Serviço respondendo lentamente.
Erro interno da aplicação.
Firewall intermediário interferindo.
Proxy ou balanceador com problema.
Aplicação escutando, mas não processando requisições.

Testar conexão:

nc -vz ip_do_servidor porta

Testar aplicação web:

curl -I http://ip_do_servidor

Verificar logs:

sudo journalctl -u nome_do_servico -f

Site não abre, mas ping funciona

Possíveis causas:

ICMP permitido, mas TCP bloqueado.
Porta 80 ou 443 fechada.
Servidor web parado.
Firewall bloqueando HTTP/HTTPS.
DNS apontando errado.

Testar porta HTTP:

nc -vz dominio.com 80

Testar porta HTTPS:

nc -vz dominio.com 443

Testar HTTP:

curl -I https://dominio.com

SSH não conecta

Erro comum:

ssh: connect to host servidor port 22: Connection refused

Possíveis causas:

SSH parado.
Porta 22 fechada.
SSH usando outra porta.
Firewall bloqueando.
Servidor fora do ar.

Verificar porta:

nc -vz ip_do_servidor 22

Verificar serviço no servidor:

sudo systemctl status ssh

Ou:

sudo systemctl status sshd

Como testar se o TCP está funcionando?

Testar uma porta específica:

nc -vz ip_do_servidor porta

Exemplo:

nc -vz google.com 443

Verificar portas abertas localmente:

sudo ss -tlnp

Testar HTTP/HTTPS:

curl -I https://dominio.com

Testar rota:

traceroute dominio.com

Testar DNS:

dig dominio.com

Comandos principais relacionados ao TCP

ComandoFunção
ss -tlnpMostra portas TCP em escuta
netstat -tlnpMostra portas TCP em escuta
nc -vz destino portaTesta conexão TCP em uma porta
telnet destino portaTesta conexão TCP manualmente
nmap -p porta destinoEscaneia porta TCP
curl -I URLTesta serviço HTTP/HTTPS
ip routeMostra rotas da máquina
traceroute destinoMostra caminho até o destino
ufw allow porta/tcpLibera porta TCP no firewall
ufw deny porta/tcpBloqueia porta TCP no firewall
iptables -A INPUT -p tcp --dport porta -j ACCEPTLibera TCP com iptables

Exemplo completo de uso

Testar se o servidor responde na rede:

ping -c 4 ip_do_servidor

Testar se a porta TCP está aberta:

nc -vz ip_do_servidor 443

Verificar portas TCP abertas localmente:

sudo ss -tlnp

Testar uma aplicação web:

curl -I https://dominio.com

Verificar rota até o destino:

traceroute dominio.com

Liberar porta TCP no firewall, se necessário:

sudo ufw allow 443/tcp

Esse exemplo testa conectividade, porta TCP, aplicação web, rota e firewall.


Boas práticas de segurança

Liberar apenas as portas TCP necessárias.
Fechar serviços que não estão em uso.
Usar firewall para controlar acesso.
Evitar expor portas administrativas para toda a internet.
Usar criptografia em aplicações TCP, como TLS ou SSH.
Manter serviços atualizados.
Monitorar conexões suspeitas.
Usar senhas fortes e autenticação segura.
Aplicar rate limit quando necessário.
Verificar logs dos serviços.
Não considerar TCP seguro sem criptografia.

Páginas relacionadas

ICMP
Abrir