Sobes.tech
Junior

Como funciona o protocolo TCP?

sobes.tech IA

Resposta da IA

O TCP (Protocolo de Controlo de Transmissão) é um protocolo de nível de transporte que garante uma entrega fiável e orientada à conexão de dados.

Aspectos-chave do funcionamento:

  1. Handshake de três vias (Three-way Handshake):

    • O cliente envia um pacote SYN (Synchronize) com um número de sequência inicial (ISN).
    • O servidor recebe o SYN, envia um SYN-ACK (Synchronize-Acknowledge) que contém o seu ISN e uma confirmação (ACK) do ISN do cliente (número de reconhecimento = ISN do cliente + 1).
    • O cliente recebe o SYN-ACK, envia um ACK que confirma o ISN do servidor (número de reconhecimento = ISN do servidor + 1).
    • A ligação é estabelecida, e os dados podem ser transmitidos.
  2. Transmissão de fluxo de dados: Os dados são transmitidos como um fluxo contínuo de bytes, não como pacotes separados. O TCP segmenta o fluxo de dados em segmentos para transmissão.

  3. Numeração de sequência (Sequence Numbers): Cada byte no fluxo de dados tem um número único. Os segmentos contêm o número do primeiro byte que contêm (número de sequência) e o número de reconhecimento (acknowledgement number), que indica o próximo byte que o remetente espera receber com ACK.

  4. Reconhecimentos (Acknowledgements - ACK): O receptor envia um ACK para informar ao remetente quais dados foram recebidos com sucesso. Se o remetente não receber um ACK num determinado tempo (timeout), ele retransmite o segmento.

  5. Controlo de erro (Error Control): São utilizadas somas de verificação (checksums) para verificar a integridade dos dados. Se um segmento estiver corrompido, é descartado, e o remetente espera um timeout ou um ACK duplicado para retransmitir.

  6. Controlo de fluxo (Flow Control): Mecanismo que impede a sobrecarga do buffer do receptor. O receptor informa ao remetente o tamanho da sua janela de receção nos pacotes ACK. O remetente só pode enviar tantos dados quanto a janela indicar.

  7. Controlo de congestão (Congestion Control): Mecanismo para determinar a capacidade da rede e regular dinamicamente a velocidade de transmissão para evitar congestão. Inclui algoritmos como slow start, congestion avoidance, fast retransmit e fast recovery.

  8. Fecho da ligação: Geralmente usa um handshake de quatro vias:

    • Uma parte envia um pacote FIN (Finish).
    • A outra parte envia um ACK para o FIN.
    • A outra parte envia o seu próprio FIN (após terminar de enviar os seus dados restantes).
    • A primeira parte envia um ACK para este FIN.
    • A ligação é encerrada.

Estrutura do segmento TCP:

Campo Tamanho (bytes) Descrição
Porta de origem 2 Porta do remetente
Porta de destino 2 Porta do destinatário
Número de sequência 4 Número do primeiro byte de dados no segmento
Número de reconhecimento 4 Número do próximo byte esperado
Deslocamento de dados / Comprimento do cabeçalho 4 bits Comprimento do cabeçalho TCP
Reservado 6 bits Reservado
Flags (Bits de controlo) 6 bits URG, ACK, PSH, RST, SYN, FIN
Tamanho da janela 2 Tamanho da janela do receptor
Soma de verificação 2 Soma de verificação do cabeçalho e dados
Ponteiro urgente 2 Indica dados urgentes (se URG estiver definido)
Opções Variável Opções adicionais
Relleno Variável Para alinhamento do cabeçalho
Dados Variável Dados transmitidos
// Flags (Bits de controlo):
// URG: Campo de ponteiro urgente significativo
// ACK: Campo de reconhecimento significativo
// PSH: Função push
// RST: Reiniciar a ligação
// SYN: Sincronizar números de sequência
// FIN: Sem mais dados do remetente