Quais são as etapas em um aperto de mão TCP?

Quais são as etapas em um aperto de mão TCP?

TCP ou protocolo de controle de transmissão é um protocolo de camada de transporte padrão que a Internet usa para transmitir dados. Solicitação de comentários (RFC) 793 define o TCP como um protocolo confiável e orientado a conexão. Como é orientado para a 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 de mão dupla.

Problemas com o modelo de handshake de duas vias

O modelo de handshake de duas vias falhou devido a um antigo problema de pacote duplicado. Suponha que um pacote duplicado antigo chegue à máquina do servidor. Este pacote antigo chegou de uma conexão anteriormente fechada 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 recebe este pacote antigo com o mesmo número de sequência 'Z', ele aceita, sem saber, esse 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 pacote de solicitação de conexão duplicado antigo ainda causa problemas. Se o servidor receber um pacote desse tipo, ele responderá com um pacote Syn+ACK. Este pacote será descartado pelo cliente porque não pretendia se conectar. Mas o servidor entrará no estado de deadlock, esperando o cliente enviar os dados.

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

O modelo de handshake de três vias no TCP/IP

O modelo de handshake de três vias é muito importante. Se não o usarmos e começarmos diretamente a enviar dados, o aplicativo receptor poderá 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 aperto de mão de três vias é iniciado por uma máquina, e o outro lado responde a ele. A convenção a seguir é usada para explicar este procedimento:

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

Vamos resumir as etapas executadas no aperto de mão de três vias entre uma máquina cliente e uma máquina de servidor:

Passo 1. No primeiro aperto de mão, 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 aperto de mão, o servidor responde com um pacote SYN que possui um número de sequência aleatória ('y') e um pacote ACK com um número de sequência ('x+1') para reconhecer o número da sequência inicial ('x') enviado pelo cliente.

etapa 3. No terceiro aperto de mão, 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 aperto de mão de três vias do TCP ainda é válido se ambos os lados iniciarem simultaneamente o processo de inicialização. Em tal situação, cada máquina, depois de enviar um pacote "syn", receberá um segmento "syn" sem reconhecimento. Se um pacote antigo duplicado "syn" chegar ao receptor, pode parecer ao receptor que um processo de iniciação de conexão está acontecendo ao mesmo tempo. Podemos usar os pacotes de "redefinir" para remover esta ambiguidade.

Terminação de 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. Isso significa que o lado do envio não tem mais dados para enviar. O lado receptor reconhecerá este pacote FIN, enviando um pacote de reconhecimento. 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 irá fechar completamente a conexão.

Problemas com o modelo de handshake de três vias

Caso um ACK do cliente para o servidor seja perdido ou bloqueado no terceiro estágio do aperto de mão, o cliente não terá conhecimento dessa situação. O cliente assumirá que a conexão é estabelecida e começará a enviar dados. O servidor ainda está esperando o ACK, que já estava perdido, para descartar os dados recebidos do cliente. [2]

Conclusão

Neste guia, aprendemos sobre os procedimentos de conexão TCP usando um aperto de mão de três vias. Também vimos o problema de pacotes duplicados associados ao procedimento de aperto de mão de mão dupla e como ele foi resolvido com um modelo de handshake de três vias. Muitos pesquisadores contribuíram com vários trabalhos 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). Armadilha: um servidor de handshake de três vias para 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 de handshake de três vias TCP com base em emaranhamento quântico. Journal of Computers, 27 (3), 33-40, doi: 10.3966/199115592016102703004