📖
Introducao à segurança digital
  • Introdução à Segurança Digital
  • Introdução a Linux
  • Criptografia
    • Introdução
    • Definições e Objetivos
    • Criptografia Clássica
    • Criptografia Moderna
    • Guia de Python para criptografia
  • Redes
    • Ataques
      • Arp Cache Poisoning
      • DNS Cache Poisoning
      • Slow Loris
      • Syn Flood
      • WPA Cracking
      • Deauth
    • Ferramentas
      • Resumo das Ferramentas
      • Suíte Aircrack
      • Wireshark
      • Netcat
      • Nmap
      • Netstat
      • Kathará
    • Pacote & Protocolo
    • Camada de Rede
    • Camada de Transporte
    • IANA
    • Three-way Handshake
    • DHCP
    • DNS
    • NAT
    • Pentest
      • FTP
      • SMB
      • SSH
      • VPN
    • Avançado
  • Web
    • Semana 1
      • Introdução à Web
      • Entendendo as URLs
      • Introdução ao HTML e ao CSS
      • Directory Traversal
      • Introdução ao Javascript
      • Cross Site Scripting (XSS)
      • Cookies e sessões
      • Protocolo HTTP
      • Protocolo HTTPS
      • 2020 - XML External Entities (XML) Injection
    • Semana 2
      • Servidores Web
      • PHP (Programação server-side)
      • Command Injection
      • Cookie Poisoning
      • Bancos de Dados
      • SQL Injection
      • Insecure Direct Object Reference (IDOR)
      • 2020 - Portas e Serviços
      • 2020 - API's e Serviços Rest
  • CTF
  • Engenharia Reversa
    • Arquivos
    • Registradores e tipos de dados
    • Hello World em x86
    • Pilha
    • GDB
    • Ghidra
  • Pwning
    • Integer Overflow
    • Buffer Overflow
    • Pwntools
    • Shellcode
    • Proteções
  • Hardware
    • Introdução ao Hardware Hacking
    • Introdução ao Infravermelho
Powered by GitBook
On this page
  • Demonstração com o Wireshark:
  • Referências

Was this helpful?

  1. Redes

Three-way Handshake

PreviousIANANextDHCP

Last updated 5 years ago

Was this helpful?

O Three-way Handshake (que pode ser traduzido como "aperto de mão de três vias") é um mecanismo especificado na documentação do protocolo TCP para o estabelecimento de conexões TCP.

Notas: ACK = Acknowledgement flag (Flag de reconhecimento) SYN = Synchronize flag (Flag de sincronização)

Flags são nada mais do que bits em um pacote TCP. Por exemplo, é convencionado que 2 bits são, respectivamente, as flags ACK e SYN. Se você recebe um pacote e esses bits são 10 então esse pacote tem a flag ACK ativa, se eles são 11 então o pacote é SYN/ACK, e assim por diante (o TCP tem mais flags além dessas duas, como FIN e RST).

  1. O cliente envia um pacote com a flag SYN ativa.

  2. O servidor responde com um pacote com as flags SYN + ACK.

  3. O cliente reponde com um pacote com a flag ACK.

Em outras palavras, a conexão entre cliente e servidor a partir do Three-way Handshake pode ser explicada da seguinte maneira:

1. Cliente: Servidor, estou enviando a mensagem com número de sequência 100 (SEQ=100). Dá pra sincronizar (SYN)?

Cliente --------SYN----> Servidor

2. Servidor: Claro (ACK), sincroniza a mensagem 200 (SEQ=200) que estou enviando (SYN). Prossiga com a mensagem 101 (ACK=101).

Cliente <------------SYN---- Servidor

3. Cliente: Ok, recebi a mensagem 200 (ACK=201), estou enviando a mensagem 101 (SEQ=101).

Cliente ------------> Servidor

O cliente e o servidor, possuem números de sequência distintos, por este motivo é necessária a sincronização (SYN) em ambos os sentidos.

Feita a sincronização, começam a troca de pacotes com base em números de sequência, que tem o objetivo de enumerar os pacotes de cada um.

Demonstração com o Wireshark:

Primeira via

O cliente (192.168.43.64) envia uma solicitação de sincronização (SYN) para o servidor (186.192.81.25). Esta solitação parte da porta 33080 com destino a porta 443, com número de sequência 0 (Seq=0).

Segunda via

O servidor envia ao cliente uma solicitação de sincronização (SYN) com número de sequência 0 (Seq=0), juntamente com a confirmação (ACK=1) da solicitação de sincronização enviada anteriormente pelo cliente.

Terceira via

O cliente (192.168.43.64) então confirma a solicitação de sincronização (SYN) para o servidor (186.192.81.25). Esta confirmação parte da porta 33080 com destino a porta 443, com número de sequência 1 (Seq=1).

Referências

Uma conexão TCP é estabelecida em 3 etapas:

Repare que a porta do cliente (33080) e do servidor (443) não precisam ser iguais. Repare ainda que a porta 443 é a para o protocolo HTTPS.

geralmente
well-known port
Descrição do three-way handshake (RFC)
Primeira versão do protocolo TCP
Resumo da IETF do TCP (original e mudanças feitas até agora)