Protocolo TCP

Fonte: Wikiversidade

Protocolo TCP:[editar | editar código-fonte]

Recebe um fluxo de dados proveniente da camada superior para segmentá-lo e enviar essas partes uma a uma ordenadamente para a camada inferior. Esses segmentos são numerados e sequenciados, permitindo a remontagem do fluxo assim que os segmentos atingem seu destino. O TCP é considerado um protocolo orientado à conexão, o que significa que ele é orientado à garantia do sucesso do processo de comunicação. Isso se dá por uma série de processos que são estabelecidos por este protocolo. É um protocolo full-duplex, orientado à conexão e altamente confiável. A arquitetura é bastante complexa, o que acarreta em um grande custo em termos de cabeçalho (overhead). Como as redes de hoje são muito confiáveis do que as redes existentes quando o protocolo TCP foi criado, grande parte das características que garantem essa confiabilidade na transmissão poderia ser dispensada atualmente.

O TCP estabelece um circuito virtual com a abertura de uma sessão entre origem e destino. Neste processo a máquina de origem verifica se o destino está apto a receber os segmentos que serão encaminhados. Esse processo recebe o nome de Handshake Triplo pois são três verificações conforme abaixo:

  • o destino está online?
  • existe uma porta de destino aberta?
  • o serviço nessa porta está ativo?

Controle de Fluxo[editar | editar código-fonte]

Outro processo que ocorre é o chamado controle de fluxo onde a máquina origem define em acordo com o destino a quantidade de segmentos que ele suporta simultaneamente na transmissão. Esse processo existe pela heterogeneidade de nossas infraestruturas. Encontramos equipamentos com configurações de hardware (processamento, memória, armazenamento) e capacidades de envio e recepção muito diferentes. Além disso, uma máquina não está necessariamente em uma única sessão de comunicação, dividindo assim sua capacidade com múltiplas conversas.

Essa etapa do controle de fluxo é chamada de janelamento (windowing) onde origem e destino definem quantos segmentos serão enviados. Junto a esse processo o TCP faz a confirmação de entrega onde somente enviará uma nova janela de segmentos depois de receber uma confirmação do destino que recebeu com sucesso a anterior. Caso não receba uma confirmação, ou receba uma confirmação parcial, o TCP reenviará os segmentos não confirmados. O controle de fluxo evita que os destinos do circuito virtual sobrecarreguem e entrem em estado de negação de serviço (DoS).

Ele acompanha as conversas individuais das aplicações mantendo o canal aberto até o último segmento a ser entregue

Ao encerrar uma transmissão, o TCP realiza um fechamento do circuito virtual enviando uma mensagem de finalização (FIN) e aguardando a confirmação (ACK) do destino. O destino repete o procedimento enviando também uma mensagem de finalização (FIN) e recebendo a confirmação (ACK) da origem.

O protocolo TCP com isso possui um cabeçalho de dados maior e uma latência elevada com relação a seu par UDP como podemos verificar.
  • Porta de Origem: Identificação do Protocolo de Aplicação origem.
  • Porta de Destino: Identificação do Protocolo de Aplicação destino.
  • Número de Sequência: identificação da ordem do segmento.
  • Número de Confirmação: com a flag ACK ativada, este campo identifica o próximo número de sequência a receber.
  • Comprimento do Cabeçalho: tamanho total do cabeçalho TCP.
  • Reservado: para uso futuro.
  • FLAGS ECN – Notificação Explícita de Congestionamento.
    • NS: campo para proteger contra disfarce intencional ou não de pacotes marcados da origem.
    • CWR: enviado pela origem caso receba uma flag ECE ativada – mecanismo de controle de congestionamento.
    • ECE: é ativada se a flag SYN estiver ativada – mecanismo de controle de congestionamento.
  • FLAGS de Controle:
    • URG: quando ativado indica que a transferência prioritária é requisitada;
    • ACK: bit de confirmação;
    • PSH: bit de push – indica que o segmento suporta o recurso TCP Push.
    • RST: reset. Quanto ativado indica que o transmissor encontrou problemas e precisa resetar a conexão.
    • SYN: sincronismo. Requisição para sincronizar números de sequência.
    • FIN: finalização. Requisição para fechamento de uma sessão TCP.
  • Tamanho da Janela:  indica quantos segmentos o transmissor quer aceitar do host de destino.
  • Checksum: verificação de erros de cabeçalho.
  • Ponteiro Urgente: usado em conjunto com a flag URG para a priorização da transferência.
  • Opções: campo opcional com informações não informadas anteriormente como MSS (maximum segment size) que indica o tamanho máximo do segmento.
Handshake entre cliente e servidor