TCP - Transmission Control Protocol
O TCP é um dos principais protocolos de transporte que existe na internet, e também é visto popularmente com o IP, formando o TCP/IP. Ou seja, o TCP é responsável por gerenciar o processo de comunicação entre duas partes (client-server).
Ao fazermos uma requisição, ela é dividida em fragmentos menores onde contém dados importantes como o próprio conteúdo em si, o IP de origem, o IP de destino. E no cabeçalho do protocolo de transporte, está contido o número de sequência.
Antes de receber esses pacotes e fazer a troca de informações, o server TCP precisa estabelecer a conexão com o outro dispositivo. Esse processo é chamado de three handshake.
SYN: Faz a solicitação para estabelecer uma conexão - Essa solicitação pede para o servidor sincronizar com o número da sequência.
SYN ACK: Aceita a conexão e sincroniza com o dispositivo - O servidor confirma a sincronização e solicita que o cliente sincronize o seu número de sequência.
ACK: Confirma que recebeu a resposta e que houve a sincronização.
O cliente envia um SYN para o servidor e seu número de sequência é 483.
Do outro lado, o servidor tem o número 222 como sequência, e ao receber a solicitação, o confirma (ACK) com +1.O cliente ao receber o SYN-ACK do servidor, recebe a sequência do servidor (222) e o novo número de sequência (484).
O cliente envia um ACK para o servidor com o ACK = 223, e o servidor passa a ter o número 223 como sequência.
Ao receber os segmentos, o servidor TCP dá a garantia de receber/organizar em ordem, porém se um segmento se perdeu, o TCP não prossegue com os outros segmentos. Ele faz a retransmissão.
Vamos supor que deu tudo certo no recebimento e organização do TCP: Após a conexão estabelecida, a gente tem que a sequência do cliente é 484 e a do servidor é 223.
Se o cliente tiver, por exemplo, um payload de 30 bytes, ao enviar para o servidor, o servidor irá acrescentar +30 ao 484. Então o ACK será de 514.
Exemplo de abertura de conexão em C# 11 + .NET 7
👍
Top comments (0)