Desvendando o Three-Way Handshake – Parte 1: A Engrenagem Invisível da Comunicação TCP

A comunicação desempenha um papel crucial no funcionamento da Internet, com destaque para o uso do TCP (Transmission Control Protocol). Localizado na camada de transporte, o TCP é essencial para a transmissão de dados pela rede, assegurando a comunicação e a transferência de informações entre sistemas de forma confiável e segura.

Na estrutura Cliente-Servidor, o TCP é fundamental para facilitar a comunicação e a troca de informações. Mas como exatamente essa conexão é estabelecida? Embora saibamos que o three-way handshake é o mecanismo utilizado para essa comunicação, vamos explorar mais detalhes com base nos sistemas operacionais Unix.

Criação e Configuração do Socket:

Durante o processo de conexão, o servidor web delega a responsabilidade das conexões TCP para o kernel do sistema operacional, garantindo eficiência, confiabilidade e segurança na comunicação em rede.

Quando um processo de aplicação solicita a criação de um socket de comunicação, o sistema operacional aloca recursos para esse novo socket, como memória, e cria estruturas de dados necessárias para representar o socket no nível do kernel. Em seguida, um “File Descriptor” é atribuído a esse socket.

Esse File Descriptor é disponibilizado para a aplicação, que configura o socket para receber novas conexões, geralmente utilizando primeiro a chamada bind(), indicando ao sistema operacional o endereço e a porta para escutar novas conexões.

Em seguida, a aplicação coloca o socket no estado de ‘Listen’ utilizando a chamada de sistema listen(), informando ao sistema operacional que o socket está pronto para aceitar novas conexões de entrada.

Estabelecendo conexão:

Quando o cliente deseja se conectar a um servidor, ele envia um segmento SYN (synchronize) para o servidor de destino. O kernel do sistema operacional, ao receber o segmento SYN, verifica se há um processo esperando conexão pela porta especificada no segmento. Se houver, o segmento SYN é aceito, e o kernel aloca recursos para a nova conexão, colocando as informações na SYN queue, aguardando confirmação.

Após esse processo, o kernel envia um SYN/ACK para o cliente, reconhecendo o segmento recebido e enviando outro segmento SYN para que o cliente também o reconheça. Em seguida, o cliente envia um ACK, confirmando o recebimento.

O recebimento desse ACK pelo kernel do servidor conclui o three-way handshake. O kernel move as informações para a Accept Queue, onde as conexões estabelecidas, mas não aceitas pela aplicação, são mantidas.

Quando a conexão está no backlog, a aplicação pode utilizar a chamada de sistema accept() para aceitar a conexão específica e iniciar a troca de informações com o cliente, utilizando o file descriptor associado para interagir com o cliente por meio das chamadas read() e write().

Em suma, o estabelecimento adequado das conexões TCP é crucial para a comunicação eficiente entre clientes e servidores na Internet. Através do meticuloso processo de three-way handshake e do cuidadoso gerenciamento pelo kernel do sistema operacional, as informações podem ser trocadas de forma confiável e segura. Por trás da aparente simplicidade de clicar em um link ou enviar uma mensagem, há uma intrincada dança entre o hardware, o software e os protocolos de rede.


Discover more from Coursity

Subscribe to get the latest posts sent to your email.

Leave a Comment

Your email address will not be published. Required fields are marked *

Discover more from Coursity

Subscribe now to keep reading and get access to the full archive.

Continue reading

Scroll to Top
Your software will be compatible with the most recent os and device updates according to our android app upgrade service.