Quais pacotes estão envolvidos no handshake de três vias é qual a ordem em que eles ocorrem?

Só para si: Avaliação GRATUITA de 60 dias da maior biblioteca digital do mundo.

A família SlideShare acabou de crescer. Desfrute do acesso a milhões de ebooks, áudiolivros, revistas e muito mais a partir do Scribd.

Leia gratuitamente 60 dias

Cancele a qualquer momento.

Ir para conteúdo

O protocolo TCP opera na camada de transporte do modelo OSI criando um caminho lógico entre um host cliente e um servidor utilizando um método orientado a conexão que exige três passos: estabelecimento de conexão, transferência de dados e finalização de conexão.

Para estabelecer uma conexão TCP é necessário um método de apresentação conhecido como “three-way handshake”, onde um servidor inicia o processo aguardando conexões e um cliente solicita uma conexão ao servidor enviando um segmento SYN, na sequência o servidor responde com um segmento SYN-ACK, por fim o cliente confirma com um segmento ACK e a conexão é estabelecida entre ambos.

O protocolo TCP é confiável pois garante a transmissão de dados entre origem e destino verificando a integridade dos pacotes e sempre confirmando seu recebimento, os pacotes não confirmados, corrompidos ou perdidos são retransmitidos.

Para controlar o fluxo de dados, sequência de transferência, estabelecer, finalizar ou reiniciar uma conexão o protocolo “TCP” utiliza marcadores “flags”: URG urgência, ACK confirmação, PSH empurrar dados, RST reiniciar a conexão, SYN sincronizar e FIN finalizar a conexão.

Estados iniciais da conexão TCP (flags SYN, SYN-ACK, ACK).

3-WAY HANDSHAKE
  • LISTEN: o servidor esta aguardando uma solicitação para iniciar uma conexão.

  • SYN-SENT: um cliente envia uma mensagem SYN para o servidor e aguarda a resposta SYN-ACK.

  • SYN-RCVD: o servidor recebeu a mensagem SYN do cliente e retornou uma mensagem SYNACK.

  • ESTABLISHED: conexão estabelecida com sucesso entre cliente e servidor.

    Fechamento da Conexão TCP

    Estados do fechamento da conexão TCP (flags FIN, ACK)

    • FIN-WAIT-1: estado do cliente após enviar uma mensagem FIN iniciando o fechamento de uma conexão.

    • CLOSE-WAIT: estado do servidor ao receber uma mensagem FIN para iniciar o fechamento da conexão e retornando uma mensagem ACK para o cliente.

    • FIN-WAIT-2: estado do cliente que recebeu a mensagem ACK e aguardando a última mensagem FIN do servidor.

    • LAST-ACK: estado do servidor após enviar a última mensagem FIN e aguardando a mensagem de confirmação ACK do cliente.

    • TIME-WAIT: estado do cliente ao receber a última mensagem FIN do servidor, retornando uma mensagem ACK de confirmação de fechamento de conexão, neste momento o cliente aguarda um período tempo antes de fechar a conexão.

    • CLOSED: conexão fechada e agora considerada sem estado no servidor.

Profissional de TI com mais de 15 anos de experiência, Tecnólogo em redes de computadores, entusiasta em segurança da informação. Ver todos posts por sergiorez

Navegação de posts

Avançar para o conteúdo principal

Não há mais suporte para esse navegador.

Atualize o Microsoft Edge para aproveitar os recursos, o suporte técnico e as atualizações de segurança mais recentes.

Explicação do handshake de três vias via TCP/IP

  • Artigo
  • 09/24/2021
  • 11 minutos para o fim da leitura

Neste artigo

Este artigo discute o processo de aperto de mão TCP (Protocolo de Controle de Transmissão) entre um cliente e um servidor ao iniciar ou encerrar uma conexão TCP.

Aplica-se a:   Windows Server 2012 R2
Número KB original:   172983

Resumo

Este artigo destina-se a públicos que estão familiarizados com Protocolo de Controle de Transmissão/Protocolo de Internet (TCP/IP). Ele discute o processo do handshake tcp TCP entre um cliente e um servidor ao iniciar ou encerrar uma conexão TCP.

Mais informações

O nível TCP do protocolo de transporte TCP/IP é orientado para conexão. Orientado para conexão significa que, antes que qualquer dado possa ser transmitido, uma conexão confiável deve ser obtida e reconhecida. Transmissões de dados de nível TCP, estabelecimento de conexão e terminação de conexão mantêm parâmetros de controle específicos que governam todo o processo. Os bits de controle são listados da seguinte forma:

URG: campo Ponteiro Urgente significativo
ACK: Campo de reconhecimento significativo
PSH: Função Push
RST: Redefinir a conexão
SYN: Sincronizar números de sequência
FIN: Sem mais dados do remetente

Há dois cenários em que ocorrerá um aperto de mão de três vias:

  • Estabelecer uma conexão (uma abertura ativa)

  • Terminando uma conexão (um fechamento ativo)

As informações de exemplo a seguir foram obtidas de uma captura do Monitor de Rede. O Monitor de Rede é um analisador de protocolo que pode ser obtido do Microsoft Systems Management Server.

Estabelecer uma conexão

A sequência a seguir mostra o processo de uma conexão TCP sendo estabelecida:

Quadro 1:

Como você vê no primeiro quadro, o cliente, NTW3, envia um segmento SYN ( TCP ....S. ). É uma solicitação para o servidor sincronizar os números de sequência. Especifica seu número de sequência inicial (ISN). O ISN é incrementado em 1 (8221821+1=8221822) e é enviado para o servidor. Para iniciar uma conexão, o cliente e o servidor devem sincronizar os números de sequência uns dos outros. Há também uma opção para o tamanho máximo do segmento (MSS) ser definido, que é definido pelo comprimento (len: 4). Essa opção comunica o MSS que o remetente deseja receber. O campo Reconhecimento (ack: 0) é definido como zero porque é a primeira parte do handshake de três vias.

1 2.0785 NTW3 --> BDC3 TCP ....S., len: 4, seq: 8221822-8221825, ack: 0, win: 8192, src: 1037 dst: 139 (NBT Session) NTW3 --> BDC3 IP TCP: ....S., len: 4, seq: 8221822-8221825, ack: 0, win: 8192, src: 1037 dst: 139 (NBT Session) TCP: Source Port = 0x040D TCP: Destination Port = NETBIOS Session Service TCP: Sequence Number = 8221822 (0x7D747E) TCP: Acknowledgement Number = 0 (0x0) TCP: Data Offset = 24 (0x18) TCP: Reserved = 0 (0x0000) TCP: Flags = 0x02 : ....S. TCP: ..0..... = No urgent data TCP: ...0.... = Acknowledgement field not significant TCP: ....0... = No Push function TCP: .....0.. = No Reset TCP: ......1. = Synchronize sequence numbers TCP: .......0 = No Fin TCP: Window = 8192 (0x2000) TCP: Checksum = 0xF213 TCP: Urgent Pointer = 0 (0x0) TCP: Options TCP: Option Kind (Maximum Segment Size) = 2 (0x2) TCP: Option Length = 4 (0x4) TCP: Option Value = 1460 (0x5B4) TCP: Frame Padding 00000: 02 60 8C 9E 18 8B 02 60 8C 3B 85 C1 08 00 45 00 .`.....`.;....E. 00010: 00 2C 0D 01 40 00 80 06 E1 4B 83 6B 02 D6 83 6B ., 00020: 02 D3 04 0D 00 8B 00 7D 74 7E 00 00 00 00 60 02 .......}t~....`. 00030: 20 00 F2 13 00 00 02 04 05 B4 20 20 .........

Quadro 2:

Como você pode ver no segundo quadro, o servidor, BDC3, envia um segmento ACK e SYN ( TCP .A..S. ). Nesse segmento, o servidor está reconhecendo a solicitação do cliente para sincronização. Enquanto isso, o servidor também está enviando sua solicitação ao cliente para sincronização de seus números de sequência. Há uma grande diferença neste segmento. O servidor transmite um número de confirmação (8221823) para o cliente. O reconhecimento é apenas uma prova para o cliente de que o ACK é específico do SYN iniciado pelo cliente. O processo de confirmação da solicitação do cliente permite que o servidor incremente o número da sequência do cliente em um e o usa como seu número de confirmação.

2 2.0786 BDC3 --> NTW3 TCP .A..S., len: 4, seq: 1109645-1109648, ack: 8221823, win: 8760, src: 139 (NBT Session) dst: 1037 BDC3 --> NTW3 IP TCP: .A..S., len: 4, seq: 1109645-1109648, ack: 8221823, win: 8760, src: 139 (NBT Session) dst: 1037 TCP: Source Port = NETBIOS Session Service TCP: Destination Port = 0x040D TCP: Sequence Number = 1109645 (0x10EE8D) TCP: Acknowledgement Number = 8221823 (0x7D747F) TCP: Data Offset = 24 (0x18) TCP: Reserved = 0 (0x0000) TCP: Flags = 0x12 : .A..S. TCP: ..0..... = No urgent data TCP: ...1.... = Acknowledgement field significant TCP: ....0... = No Push function TCP: .....0.. = No Reset TCP: ......1. = Synchronize sequence numbers TCP: .......0 = No Fin TCP: Window = 8760 (0x2238) TCP: Checksum = 0x012D TCP: Urgent Pointer = 0 (0x0) TCP: Options TCP: Option Kind (Maximum Segment Size) = 2 (0x2) TCP: Option Length = 4 (0x4) TCP: Option Value = 1460 (0x5B4) TCP: Frame Padding 00000: 02 60 8C 3B 85 C1 02 60 8C 9E 18 8B 08 00 45 00 .`.;...`......E. 00010: 00 2C 5B 00 40 00 80 06 93 4C 83 6B 02 D3 83 6B .,[ 00020: 02 D6 00 8B 04 0D 00 10 EE 8D 00 7D 74 7F 60 12 ...........}t`. 00030: 22 38 01 2D 00 00 02 04 05 B4 20 20 "8.-......

Quadro 3:

Como você vê no terceiro quadro, o cliente envia um segmento ACK ( TCP .A.... ). Nesse segmento, o cliente está reconhecendo a solicitação do servidor para sincronização. O cliente usa o mesmo algoritmo implementado pelo servidor ao fornecer um número de confirmação. O reconhecimento do cliente à solicitação de sincronização do servidor conclui o processo de estabelecimento de uma conexão confiável e o handshake de três vias.

3 2.787 NTW3 --> BDC3 TCP .A...., len: 0, seq: 8221823-8221823, ack: 1109646, win: 8760, src: 1037 dst: 139 (NBT Session) NTW3 --> BDC3 IP TCP: .A...., len: 0, seq: 8221823-8221823, ack: 1109646, win: 8760, src: 1037 dst: 139 (NBT Session) TCP: Source Port = 0x040D TCP: Destination Port = NETBIOS Session Service TCP: Sequence Number = 8221823 (0x7D747F) TCP: Acknowledgement Number = 1109646 (0x10EE8E) TCP: Data Offset = 20 (0x14) TCP: Reserved = 0 (0x0000) TCP: Flags = 0x10 : .A.... TCP: ..0..... = No urgent data TCP: ...1.... = Acknowledgement field significant TCP: ....0... = No Push function TCP: .....0.. = No Reset TCP: ......0. = No Synchronize TCP: .......0 = No Fin TCP: Window = 8760 (0x2238) TCP: Checksum = 0x18EA TCP: Urgent Pointer = 0 (0x0) TCP: Frame Padding 00000: 02 60 8C 9E 18 8B 02 60 8C 3B 85 C1 08 00 45 00 .`.....`.;....E. 00010: 00 28 0E 01 40 00 80 06 E0 4F 83 6B 02 D6 83 6B .( 00020: 02 D3 04 0D 00 8B 00 7D 74 7F 00 10 EE 8E 50 10 .......}t....P. 00030: 22 38 18 EA 00 00 20 20 20 20 20 20 "8....

Encerrando uma conexão

Embora o handshake de três vias exija apenas três pacotes para serem transmitidos pela nossa mídia em rede, o encerramento dessa conexão confiável precisa transmitir quatro pacotes. Como uma conexão TCP é full-duplex (os dados podem fluir em cada direção independentemente da outra), cada direção deve ser encerrada independentemente.

Quadro 4:

Nesta sessão de quadros, você vê o cliente enviando uma FIN acompanhada por um ACK ( TCP .A...F ). Este segmento tem duas funções básicas. Primeiro, quando o parâmetro FIN for definido, ele informará ao servidor que ele não tem mais dados para enviar. Em segundo lugar, o ACK é essencial para identificar a conexão específica estabelecida.

4 16.0279 NTW3 --> BDC3 TCP .A...F, len: 0, seq: 8221823-8221823, ack:3462835714, win: 8760, src: 2337 dst: 139 (NBT Session) NTW3 --> BDC3 IP TCP: .A...F, len: 0, seq: 8221823-8221823, ack: 1109646, win: 8760, src: 1037 dst: 139 (NBT Session) TCP: Source Port = 0x040D TCP: Destination Port = NETBIOS Session Service TCP: Sequence Number = 8221823 (0x7D747F) TCP: Acknowledgement Number = 1109646 (0x10EE8E) TCP: Data Offset = 20 (0x14) TCP: Reserved = 0 (0x0000) TCP: Flags = 0x11 : .A...F TCP: ..0..... = No urgent data TCP: ...1.... = Acknowledgement field significant TCP: ....0... = No Push function TCP: .....0.. = No Reset TCP: ......0. = No Synchronize TCP: .......1 = No more data from sender TCP: Window = 8760 (0x2238) TCP: Checksum = 0x236C TCP: Urgent Pointer = 0 (0x0) 00000: 00 20 AF 47 93 58 00 A0 C9 22 F5 39 08 00 45 00 . .G.X...".9..E. 00010: 00 28 9B F5 40 00 80 06 21 4A C0 5E DE 7B C0 5E .(..@...!J.^.{.^ 00020: DE 57 09 21 05 48 0B 20 96 AC CE 66 AE 02 50 11 .W.!.H. ...f..P. 00030: 22 38 23 6C 00 00 "8#l..

Quadro 5:

Neste quadro, você não vê nada especial, exceto o servidor reconhecendo a FIN transmitida do cliente.

5 16.0281 BDC3 --> NTW3 TCP .A...., len: 0, seq: 1109646-1109646, ack: 8221824, win:28672, src: 139 dst: 2337 (NBT Session) BDC3 --> NTW3 IP TCP: .A...., len: 0, seq: 1109646-1109646, ack: 8221824, win:28672, src: 139 dst: 2337 (NBT Session) TCP: Source Port = 0x040D TCP: Destination Port = NETBIOS Session Service TCP: Sequence Number = 1109646 (0x10EE8E) TCP: Acknowledgement Number = 8221824 (0x7D7480) TCP: Data Offset = 20 (0x14) TCP: Reserved = 0 (0x0000) TCP: Flags = 0x10 : .A.... TCP: ..0..... = No urgent data TCP: ...1.... = Acknowledgement field significant TCP: ....0... = No Push function TCP: .....0.. = No Reset TCP: ......0. = No Synchronize TCP: .......0 = No Fin TCP: Window = 28672 (0x7000) TCP: Checksum = 0xD5A3 TCP: Urgent Pointer = 0 (0x0) TCP: Frame Padding 00000: 00 A0 C9 22 F5 39 08 00 02 03 BA 84 08 00 45 00 ...".9........E. 00010: 00 28 D2 82 00 00 3F 06 6B BD C0 5E DE 57 C0 5E .(....?.k..^.W.^ 00020: DE 7B 05 48 09 21 CE 66 AE 02 0B 20 96 AD 50 10 .{.H.!.f... ..P. 00030: 70 00 D5 A3 00 00 90 00 01 00 86 00 p...........

Quadro 6:

Depois de receber a FIN do computador cliente, o servidor será ACK. Mesmo que o TCP tenha estabelecido conexões entre os dois computadores, as conexões ainda são independentes umas das outras. Portanto, o servidor também deve transmitir um FIN ( TCP .A...F ) para o cliente.

6 17.0085 BDC3 --> NTW3 TCP .A...F, len: 0, seq: 1109646-1109646, ack: 8221824, win:28672, src: 139 dst: 2337 (NBT Session) BDC3 --> NTW3 IP TCP: .A...F, len: 0, seq: 1109646-1109646, ack: 8221824, win:28672, src: 139 dst: 2337 (NBT Session) TCP: Source Port = 0x0548 TCP: Destination Port = 0x0921 TCP: Sequence Number = 1109646 (0x10EE8E) TCP: Acknowledgement Number = 8221824 (0x7D7480) TCP: Data Offset = 20 (0x14) TCP: Reserved = 0 (0x0000) TCP: Flags = 0x11 : .A...F TCP: ..0..... = No urgent data TCP: ...1.... = Acknowledgement field significant TCP: ....0... = No Push function TCP: .....0.. = No Reset TCP: ......0. = No Synchronize TCP: .......1 = No more data from sender TCP: Window = 28672 (0x7000) TCP: Checksum = 0xD5A2 TCP: Urgent Pointer = 0 (0x0) TCP: Frame Padding 00000: 00 A0 C9 22 F5 39 08 00 02 03 BA 84 08 00 45 00 ...".9........E. 00010: 00 28 D2 94 00 00 3F 06 6B AB C0 5E DE 57 C0 5E .(....?.k..^.W.^ 00020: DE 7B 05 48 09 21 CE 66 AE 02 0B 20 96 AD 50 11 .{.H.!.f... ..P. 00030: 70 00 D5 A2 00 00 02 04 05 B4 86 00 p...........

Quadro 7:

O cliente responde no mesmo formato que o servidor, acKing o FIN do servidor e incrementando o número de sequência em 1.

7 17.0085 NTW3 --> BDC3 TCP .A...., len: 0, seq: 8221824-8221824, ack: 1109647, win: 8760, src: 2337 dst: 139 (NBT Session) NTW3 --> BDC3 IP TCP: .A...., len: 0, seq: 8221824-8221824, ack: 1109647, win: 8760, src: 2337 dst: 139 (NBT Session) TCP: Source Port = 0x0921 TCP: Destination Port = 0x0548 TCP: Sequence Number = 8221824 (0x7D7480) TCP: Acknowledgement Number = 1109647 (0x10EE8F) TCP: Data Offset = 20 (0x14) TCP: Reserved = 0 (0x0000) TCP: Flags = 0x10 : .A.... TCP: ..0..... = No urgent data TCP: ...1.... = Acknowledgement field significant TCP: ....0... = No Push function TCP: .....0.. = No Reset TCP: ......0. = No Synchronize TCP: .......0 = No Fin TCP: Window = 8760 (0x2238) TCP: Checksum = 0x236B TCP: Urgent Pointer = 0 (0x0) 00000: 00 20 AF 47 93 58 00 A0 C9 22 F5 39 08 00 45 00 . .G.X...".9..E. 00010: 00 28 BA F5 40 00 80 06 02 4A C0 5E DE 7B C0 5E .(.^.{.^ 00020: DE 57 09 21 05 48 0B 20 96 AD CE 66 AE 03 50 10 .W.!.H. ...f..P. 00030: 22 38 23 6B 00 00 "8#k..

O cliente acKing the FIN notification from the server identifies a graceful close of a TCP connection.

Referências

Obtenha o RFC 793.

Os RFCs podem ser obtidos por meio da Internet da seguinte forma:

Cópias em papel de todos os RFCs estão disponíveis na NIC, individualmente ou por assinatura (para obter mais informações em contato ). Cópias online estão disponíveis por meio de FTP ou Kermit da NIC. DDN.MIL como rfc/rfc####.txt ou rfc/rfc###.PS (##### é o número RFC sem zeros à esquerda).

Quais pacotes estão envolvidos no handshake de três vias é qual a ordem em que eles ocorrem?

Entendendo o Three-way Handshake (Handshake de Três Vias).
ACK = Acknowledgement (Reconhecimento) SYN = Synchronize (Sincronizar).
O cliente envia um pacote com a flag SYN ativa; O servidor responde com um pacote com as flags SYN + ACK; ... .
Cliente: Servidor, estou enviando a mensagem 100 (Número de sequência do cliente)..

O que é handshake de 3 vias?

O handshake triplo é iniciado pelo cliente, que utiliza um número de porta conhecido, correspondente ao serviço que ele deseja contactar no servidor. Ataques DoS: São utilizados por hackers, para bloquear resposta do sistema e negar serviços aos hosts que tentam estabelecer conexões.

Como ocorre o processo de 3 way handshake no protocolo TCP?

Chamamos esse processo de Handshake de três Vias ( Three-Way Handshake). Neste caso, o host que envia o primeiro segmento SYN realiza o que chamamos de uma abertura de conexão ativa. Já o outro host, em nosso exemplo o servidor que recebe o segmento SYN, realiza uma abertura de conexão passiva.

Que evento de três vias ocorre na camada de transporte durante o handshake?

Há dois cenários em que ocorrerá um aperto de mão de três vias: Estabelecer uma conexão (uma abertura ativa) Terminando uma conexão (um fechamento ativo)

Toplist

Última postagem

Tag