Início > Redes > Entendendo o Three-way Handshake (Handshake de Três Vias)

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

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

  1. março 23, 2011 às 19:47 | #1

    Muito boa a explicação!
    :)

  2. andre l. ribeiro
    fevereiro 17, 2012 às 17:05 | #2

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

  3. Alan Tamer
    março 19, 2012 às 18:57 | #3

    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.

  4. Daniel Marlon
    maio 17, 2012 às 11:17 | #4

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

  1. Nenhum trackbacks ainda.

Deixe uma resposta

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

WordPress.com Logo

You are commenting using your WordPress.com account. Sair / Alterar )

Imagem do Twitter

You are commenting using your Twitter account. Sair / Alterar )

Foto do Facebook

You are commenting using your Facebook account. Sair / Alterar )

Connecting to %s

Seguir

Obtenha todo post novo entregue na sua caixa de entrada.