Networking

Quais são as etapas em um handshake TCP?

Quais são as etapas em um handshake TCP?

TCP ou Transmission Control Protocol é um protocolo de camada de transporte padrão que a Internet usa para transmitir dados. Request For Comments (RFC) 793 define o TCP como um protocolo confiável e orientado para conexão. Uma vez que é orientado à conexão, um caminho ou conexão precisa ser estabelecido antes de transmitir quaisquer dados. O TCP usa um mecanismo de handshake de três vias para estabelecer uma conexão entre dois dispositivos. Neste guia, veremos como funciona o mecanismo de handshake de três vias. Vamos primeiro ver os problemas com o modelo de handshake bidirecional.

Problemas com o modelo de aperto de mão bidirecional

O modelo de handshake bidirecional falhou devido a um antigo problema de pacote duplicado. Suponha que um pacote duplicado antigo chegue na máquina do servidor. Este pacote antigo chegou de uma conexão fechada anteriormente e contém um número de sequência 'z'. Em algum momento durante a nova conexão, o servidor está aceitando um pacote com um número de sequência 'z'. Quando ele recebe este pacote antigo com o mesmo número de sequência 'z', sem saber aceita este pacote antigo e descarta o pacote real da nova conexão.

No caso acima, se uma conexão não estiver acontecendo entre o cliente e o servidor, a chegada de um antigo pacote de solicitação de conexão duplicada ainda causa problemas. Se o servidor receber tal pacote, ele responderá com um pacote SYN + ACK. Este pacote será descartado pelo cliente porque ele não pretendia se conectar. Mas o servidor entrará no estado de deadlock, esperando que o cliente envie os dados.

Outro problema é que, se um host C enviar uma solicitação de conexão ao servidor, personificando o cliente, o servidor responderá de volta com um ACK ao cliente. O cliente irá descartar este pacote 'ACK' e dizer ao servidor para encerrar a conexão. Durante este intervalo de eventos, o host C pode lançar um ataque de falsificação, enviando muitos pacotes.

O modelo de aperto de mão de três vias em TCP / IP

O modelo de handshake de três vias é muito importante. Se não o usarmos e começarmos a enviar dados diretamente, o aplicativo de recebimento pode começar a receber pacotes duplicados. O invasor pode ter a chance de lançar ataques (como DDoS) entre uma conexão. O procedimento de handshake de três vias é iniciado por uma máquina e o outro lado responde a ele. A seguinte convenção é usada para explicar este procedimento:

“Se um site receber um pacote com o número de sequência 'x', ele responderá com o número ACK 'x + 1'.”

Vamos resumir as etapas realizadas no handshake triplo entre uma máquina cliente e uma máquina servidor:

Passo 1. No primeiro handshake, o cliente envia um pacote de solicitação de conexão SYN com um número de sequência inicial aleatório ('x') para o servidor.

Passo 2. No segundo handshake, o servidor responde com um pacote SYN que tem um número de sequência aleatório ('y') e um pacote ACK com um número de sequência ('x + 1') para reconhecer o número de sequência inicial ('x') enviado pelo cliente.

etapa 3. No terceiro handshake, o cliente enviará um pacote ACK com um número de sequência ('y + 1') para o servidor para reconhecer o pacote SYN ('y') enviado pelo servidor.

Passo 4. Ambas as extremidades estão sincronizadas agora e podem começar a transmitir dados de forma independente. [1]

O procedimento de handshake TCP de três vias ainda é válido se ambos os lados iniciarem simultaneamente o processo de inicialização. Em tal situação, cada máquina, após enviar um pacote “SYN”, receberá um segmento “SYN” sem confirmação. Se um pacote "SYN" duplicado antigo chegar ao receptor, pode parecer ao receptor que um processo de inicialização de conexão está ocorrendo ao mesmo tempo. Podemos usar os pacotes “reset” para remover essa ambigüidade.

Término da conexão TCP

Qualquer um dos dois lados pode encerrar uma conexão TCP. Para isso, qualquer lado pode transmitir um segmento TCP com o conjunto de bits FIN. Isso significa que o remetente não tem mais dados para enviar. O lado receptor reconhecerá este pacote FIN enviando um pacote de confirmação. Isso fechará a conexão de um lado (o lado do remetente). Agora, o receptor usará as mesmas etapas para encerrar a conexão em seu nome. Isso fechará completamente a conexão.

Problemas com o modelo de aperto de mão de três vias

Caso um ACK do cliente para o servidor seja perdido ou bloqueado na terceira fase de handshake, o cliente não saberá dessa situação. O cliente presumirá que a conexão foi estabelecida e começará a enviar dados. O servidor ainda está esperando o ACK, que já foi perdido, então irá descartar os dados recebidos do cliente. [2]

Conclusão

Neste guia, aprendemos sobre os procedimentos de conexão TCP usando um handshake de três vias. Também vimos o problema de pacotes duplicados associados ao procedimento de handshake bidirecional e como foi resolvido com um modelo de handshake de três vias. Muitos pesquisadores contribuíram com vários artigos de pesquisa para melhorar o modelo de aperto de mão de três vias e superar os problemas associados a ele.

Referências

  1. Hsu, F., Hwang, Y., Tsai, C., Cai, W., Lee, C., & Chang, K. (2016). TRAP: um servidor de handshake de três vias para o estabelecimento de conexão TCP. Ciências Aplicadas, 6 (11), 358. https: // doi.org / 10.3390 / app6110358
  1. Qin-Min Ma, Shou-Yin Liu, Xiao-jun Wen. (2016). Protocolo TCP de handshake de três vias baseado em Quantum Entanglement. Journal of Computers, 27 (3), 33-40, doi: 10.3966/199115592016102703004
Tutorial de Battle for Wesnoth
The Battle for Wesnoth é um dos jogos de estratégia de código aberto mais populares que você pode jogar no momento. Este jogo não está apenas em desen...
0 A.D. Tutorial
Dos muitos jogos de estratégia que existem, 0 A.D. consegue se destacar como um título abrangente e um jogo muito profundo e tático, apesar de ser de ...
Tutorial Unity3D
Introdução ao Unity 3D Unity 3D é um poderoso motor de desenvolvimento de jogos. É uma plataforma cruzada que permite criar jogos para celular, web, d...