TCP (Protocolo de Controle de Transmissão) começa com um processo chamado handshake TCP. Este handshake inicializa e negocia parâmetros entre dois dispositivos (normalmente um cliente e um servidor) antes do início da transmissão de dados. O handshake TCP envolve três etapas: SYN, SYN-ACK e ACK. Primeiro, o cliente envia um pacote SYN (sincronização) ao servidor para iniciar uma solicitação de conexão. O servidor responde com um pacote SYN-ACK (reconhecimento de sincronização), indicando que recebeu o SYN e está disposto a estabelecer uma conexão. Finalmente, o cliente envia um pacote ACK (reconhecimento) de volta ao servidor, confirmando o recebimento do SYN-ACK. Uma vez concluído esse handshake, ambos os lados concordam com os números de sequência iniciais, tamanhos de janela e outros parâmetros necessários para uma transmissão confiável de dados.
O TCP é formado pelo encapsulamento de dados em segmentos para transmissão através de uma rede. Quando um aplicativo envia dados, o TCP os divide em unidades menores conhecidas como segmentos. Cada segmento inclui um cabeçalho TCP contendo informações de controle, como números de sequência, números de confirmação, tamanhos de janela e somas de verificação para detecção de erros. Esses segmentos são então passados para a camada IP para roteamento e entrega pela rede. Após o recebimento, o TCP na extremidade receptora remonta os segmentos no fluxo de dados original, garantindo a entrega confiável e ordenada dos dados, mesmo que os pacotes cheguem fora de ordem ou sejam perdidos.
As três etapas fundamentais do TCP são:
- Estabelecimento de conexão: envolve o processo de handshake TCP descrito anteriormente, onde um cliente e um servidor trocam pacotes SYN, SYN-ACK e ACK para estabelecer uma conexão confiável antes do início da transmissão de dados.
- Transferência de dados: Uma vez estabelecida uma conexão, o TCP gerencia a transmissão de dados em segmentos. Os segmentos de dados são enviados do remetente para o destinatário, e o TCP garante que eles cheguem na ordem correta e sem erros, usando números de sequência para ordenação e confirmações para confiabilidade.
- Connection Termination: Quando a transferência de dados é concluída, o TCP inicia um processo de encerramento da conexão para fechá-la normalmente. Isso envolve um handshake onde ambos os lados trocam pacotes FIN (finalização) para fechar a conexão de maneira coordenada. Assim que ambas as partes reconhecerem os pacotes FIN, a conexão será totalmente fechada e os recursos alocados para a conexão serão liberados.
O TCP funciona estabelecendo um canal de comunicação orientado à conexão entre dois hosts em uma rede. Ele garante a entrega confiável de dados por meio de mecanismos como números de sequência, confirmações e controle de fluxo. Quando um remetente transmite dados, o TCP os divide em segmentos, adiciona cabeçalhos com informações de controle e os envia ao destinatário. O destinatário confirma o recebimento de cada segmento e solicita a retransmissão de quaisquer segmentos perdidos ou corrompidos. O TCP também gerencia o controle de fluxo para evitar sobrecarregar o receptor com dados, ajustando as taxas de transmissão com base nas condições da rede. Essa combinação de recursos permite que o TCP forneça transferência de dados confiável, ordenada e livre de erros em diversas redes, tornando-o adequado para aplicações que exigem entrega garantida e controle preciso sobre a transmissão de dados.