Análise TCP 3-Way Handsake no Wireshark

Analise Tcp 3 Way Handsake No Wireshark



O Transmission Control Protocol é um protocolo muito importante na camada de transporte para o modelo OSI ou TCP/IP. Existem muitas vantagens no TCP, como:

  • O TCP retransmite se algum dado enviado não for confirmado pelo receptor dentro de algum tempo.
  • O TCP estabelece alguma conexão antes de enviar os dados. Chamamos essa conexão de handshake de 3 vias.
  • TCP tem mecanismo de controle de congestionamento.
  • O TCP pode detectar erros usando alguns métodos.

Vamos aprender principalmente sobre o handshake de 3 vias do TCP. Vamos também aprender sobre os campos importantes no Wireshark para handshake de 3 vias.







Aperto de mão de 3 vias

Existem três trocas de quadros que acontecem em um handshake de 3 vias:



  1. SYN
  2. VISUALIZAR+CONFIRMAR
  3. ACK

O primeiro quadro é sempre enviado pelo cliente ao servidor. Vamos entender isso a partir de um diagrama simples:



'SERVIDOR CLIENTE'

Frame1: O cliente envia o quadro SYN para o servidor---------------------------------->

<-------------------------------------------Servidor envia quadro SYN+ACK para o cliente: Frame2

Frame3: Cliente envia quadro ACK para o servidor ----------------------------------->

Podemos ver esses três quadros no Wireshark. O filtro “tcp” pode ser usado no Wireshark para ver todos os quadros TCP. Aqui está a captura de tela dos três quadros:





Vamos agora entender todos os três quadros em detalhes:



SYN

Este quadro contém muitas informações sobre as capacidades do cliente para informar o servidor. A captura de tela a seguir mostra todos os campos importantes do quadro SYN:

Aqui estão os campos importantes para o quadro SYN:

Porta de origem: 50602
Porta de destino: 80
Número de sequência: 0
Número de Reconhecimento: 0
Comprimento do cabeçalho: 32 bytes
Sinalizadores: 0x002 (SYN):
Reconhecimento: Não definido
Empurrar: não definido
Redefinir: Não definido
Syn: Set  -----> Este bit foi definido porque este é um quadro SYN.
Fin: Não definido

Janela: 65535
Ponteiro Urgente: 0
Opção TCP - Tamanho máximo do segmento: 1460 bytes
Opção TCP - Escala da janela: 3 (multiplicar por 8)
Opção TCP - SACK permitido

VISUALIZAR+CONFIRMAR

Este quadro contém muitas informações sobre os recursos do servidor para informar o cliente. A captura de tela a seguir mostra todos os campos importantes do quadro SYN+ACK:

Este quadro também reconhece o quadro SYN que é enviado pelo cliente.

Aqui estão os campos importantes para o quadro SYN+ACK:

Porta de origem: 80
Porta de destino: 50602
Número de sequência: 0
Número de Reconhecimento: 1

Comprimento do cabeçalho: 32 bytes (8)
Sinalizadores: 0x012 (SYN, ACK)
Reconhecimento: Definido
Empurrar: não definido
Redefinir: Não definido
Dele: Definido
Fin: Não definido

Janela: 29200
Ponteiro Urgente: 0
Opção TCP - Tamanho máximo do segmento: 1412 bytes
Opção TCP - SACK permitido
Opção TCP - Escala da janela: 7 (multiplicar por 128)

Podemos ver que os bits “Acknowledge” e “SYN” estão definidos neste quadro. Isso ocorre porque esse quadro é SYN+ACK.

ACK

Este quadro é o último quadro do handshake de 3 vias e também o reconhecimento do SYN+ACK pelo cliente. A captura de tela a seguir mostra todos os campos importantes do quadro ACK:

Aqui estão os campos importantes para o quadro ACK:

Porta de origem: 50602
Porta de destino: 80
Número de sequência: 1
Número de Reconhecimento: 1
Comprimento do cabeçalho: 20 bytes (5)
Sinalizadores: 0x010 (ACK)
Urgente: não definido
Reconhecimento: Definido
Empurrar: não definido
Redefinir: Não definido
Sin: Não definido
Fin: Não definido

Janela: 32768

Aqui, apenas o bit “Reconhecimento” é definido porque este é um quadro ACK.

Explicação para alguns campos comuns importantes

porta 80 : Observamos uma porta fixa 80 neste tutorial. É porque esta é uma captura HTTP e a porta 80 é fixa (lado do servidor) para comunicação HTTP.

Número sequencial : O número de sequência desse quadro. A sincronização é o primeiro quadro, portanto, temos 0 como número de sequência.

Sinalizadores TCP:

Reconhecimento – Este bit é definido se o quadro for um ACK. Exemplo: SYN+ACK, quadro ACK.

SYN – Este bit é definido se o quadro for um SYN. Exemplo: SIN.

Janela : este campo compartilha o tamanho máximo da janela do remetente no modo de recebimento. Exemplo: Temos o tamanho da janela de 65535 bytes no quadro SYN. Isso significa que o receptor pode receber dados TCP máximos de 65.535 bytes a qualquer momento.

SACK permitido : Este bit é definido se o envio suportar SACK [reconhecimento seletivo].

Tamanho Máximo do Segmento : Também podemos chamá-lo de MSS. Isso define o quadro de dados máximo que o remetente pode receber. Exemplo: Obtemos MSS como 1460 bytes no quadro SYN.

Conclusão

Aprendemos sobre o handshake TCP de 3 vias e todos os campos úteis para quadros SYN, SYN+ACK e ACK. Se você quiser aprender mais sobre TCP, você pode seguir este link RFC https://tools.ietf.org/html/rfc793 .