Entendendo o Three-way Handshake (Handshake de Três Vias)

Publicado: janeiro 02, 2011 em Redes
Tags:

Introdução

Se você é da área de redes, provavelmente já ouviu falar no Three-way Handshake (Handshake de três vias).
Handshake de três vias, é responsável pelo estabelecimento de conexões no TCP.

Informações Importantes

ACK = Acknowledgement (Reconhecimento)
SYN = Synchronize (Sincronizar)

Mãos à obra!

Estabelecimento de conexões

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 ACK.

Traduzindo

1. Cliente: Servidor, estou enviando a mensagem 100 (Número de sequência do cliente). Dá pra sincronizar (SYN)?
2. Servidor: Claro, sincroniza a mensagem 200 (Número de sequência do servidor) que estou enviando (SYN). Prossiga com a mensagem 101 (ACK).
3. Cliente: Ok, estou enviando a mensagem 101. Prossiga com a mensagem 201 (ACK).

O cliente e o servidor, possuem números de sequência distintos, por este motivo faz-se necessária a sincronização 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 as pacotes de cada um.

Analise do Three-way Handshake

Utilizei o software Wireshark para fazer a captura de pacotes para esta análise.
Clique nas imagens para abrir em uma nova janela/aba.

Primeira via

O cliente (10.10.10.246) envia uma solicitação de sincronização (SYN) para o servidor (200.147.67.142 – UOL). Esta solitação parte da porta 35637 com destino a porta 80, 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 então envia ao servidor o número de sequência 1 (Seq=1), juntamente com a confirmação (ACK=1) da solicitação de sincronização enviada anteriormente pelo servidor.

É isso aí pessoal!

:wq!
Andrey Smith

About these ads
comentários
  1. alexfeleol disse:

    Muito boa a explicação!
    :)

    Curtir

  2. andre l. ribeiro disse:

    Gostei da didática. show de bola. Parabéns.

    Curtir

  3. Alan Tamer disse:

    Andrey, bem didática a explicação. Sobre os números de sequência exibidos pelo Wireshark, é muito raro (pra não dizer impossível) que ambos iniciem em zero. Isso só acontece, porque ele, por padrão, utiliza números de sequência relativos. Isso pode ser configurado, de acordo com o site http://wiki.wireshark.org/TCP_Relative_Sequence_Numbers . Abraços.

    Curtir

  4. Daniel Marlon disse:

    Explicação muito boa. Parabéns e obgado

    Curtir

  5. Sandro Dos Santos Costa disse:

    Excelente a explicação. Obrigado

    Curtir

  6. Milani disse:

    Muito obrigado.

    Curtir

  7. reenato disse:

    Simples e objetivo… Obrigado!!

    Curtir

  8. vlw nota 10 pela explicação.

    Curtir

  9. Você poderia realizar uma explicação desta com protocolo MPLS ficarei agradecido. Ou me indicar algum programa para eu simula uma rede com label…

    Curtir

  10. bigu disse:

    Andrey, sua explicação foi muito boa. valeu.

    Curtir

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s