Kioskea
Pesquisar

O protocolo TCP

Março 2015

As características do protocolo TCP


O TCP (que significa Transmission Control Protocol, em português: Protocolo de Controle de Transmissão) é um dos principais protocolos da camada de transporte do modelo TCP/IP. Ele permite, a nível das aplicações, gerir os dados em proveniência da (ou com destino à) camada inferior do modelo (ou seja, o protocolo IP). Quando os dados são fornecidos ao protocolo IP, este encapsula-os em datagramas IP, fixando o campo protocolo em 6 (para saber que o protocolo ascendente é o TCP...). O TCP é um protocolo orientado para a conexão, isto é, ele permite a duas máquinas comunicantes, controlar o estado da transmissão.

As principais características do protocolo TCP são:

  • TCP entrega ordenadamente os datagramas provenientes do protocolo IP
  • TCP verifica a onda de dados para evitar uma saturação da rede
  • TCP formata os dados em segmentos de comprimento variável para "entregá-los" ao protocolo IP
  • TCP permite o multiplex dos dados, quer dizer, faz circular, simultaneamente, as informações que proveem de fontes (aplicações, por exemplo) distintas numa mesma linha
  • TCP permite a início e o fim de uma comunicação de maneira educada.

O objectivo do TCP


Graças ao protocolo TCP, as aplicações podem comunicar de forma segura (graças ao sistema de avisos de recepção do protocolo TCP), independentemente das camadas inferiores. Isto significa que os roteadores (que trabalham na camada Internet) teem como único papel o encaminhamento dos dados sob a forma de datagramas, sem se preocuparem com o controle dos dados, porque este é realizado pela camada de transporte (mais concretamente pelo protocolo TCP).

Durante uma comunicação através do protocolo TCP, as duas máquinas devem estabelecer uma conexão. A máquina emissora (a que pede a conexão) chama-se cliente, enquanto a máquina receptora se chama servidor. Diz-se então que estamos num ambiente Cliente-Servidor.
As máquinas em tal ambiente comunicam em modo ligado, ou seja, que a comunicação é feita nos dois sentidos.

Para permitir o bom desenrolar da comunicação e de todos os controles que a acompanham, os dados são encapsulados, isto é, juntamos ao pacote de dados um cabeçalho que vai sincronizar as transmissões e assegurar a sua recepção.

Outra particularidade do TCP é poder controlar o débito dos dados graças à sua capacidade para emitir mensagens de dimensão variável: estas mensagens são chamadas de "segmentos".

A função multiplex


O TCP permite efetuar uma tarefa importante: multiplex/desmultiplex, quer dizer, fazer transitar numa mesma linha dados que proveem de aplicações diversas ou, em outras palavras, pôr em série informações que chegam em paralelo.

|180px|]

Estas operações são realizadas graças ao conceito de portas (ou sockets), ou seja, um número associado a um tipo de aplicação que, combinada com um endereço IP, determina, de maneira única, uma aplicação que roda numa dada máquina.

O formato dos dados em TCP


Um segmento TCP é constituído do seguinte modo:


012345678910111213141516171819202122232425262728293031
Porta Fonte Porta de destino

Número de ordem

Número de aviso de recepção
Defasagem
dados
reservada URG ACK PSH RST SYN FIN Janela

Soma de controle

Ponteiro de emergência
Opções Preenchimento

Dados



Significado dos diferentes campos:

  • Porta Fonte (16 bits): Porta relativa à aplicação corrente na máquina fonte
  • Porta de Destino (16 bits): Porta relativa à aplicação corrente na máquina de destino
  • Número de ordem (32 bits): Quando a bandeira SYN é 0, o número de ordem é o da primeira palavra do segmento corrente.

Quando SYN é 1, o número de ordem é igual ao número de ordem inicial utilizado para sincronizar os números de sequência (ISN)
  • Número de aviso de recepção (32 bits): O número de aviso de recepção, igualmente chamado número de pagamento, corresponde ao número (de ordem) do próximo segmento esperado, e não o número do último segmento recebido.
  • Defasagem dos dados (4 bits) : localiza o início dos dados no pacote. A defasagem é essencial aqui porque o campo de opções é de dimensão variável
  • Reservada(6 bits): Campo inutilizado atualmente, mas previsto para o futuro
  • As bandeiras(flags) (6x1 bit): representam informações suplementares:
    • URG: se esta bandeira estiver em 1 o pacote deve ser tratado urgentemente.
    • ACK: se esta bandeira estiver em 1 o pacote é um aviso de recepção.
    • PSH (PUSH): se esta bandeira estiver em 1, o pacote funciona de acordo com o método PUSH.
    • RST: se esta bandeira estiver em 1, a conexão é reiniciada.
    • SYN: A Bandeira TCP SYN indica um pedido de estabelecimento de conexão.
    • FIM: se esta bandeira estiver em 1, a conexão é interrompida.
  • Janela (16 bits): Campo permitindo conhecer o número de bytes que o receptor quer receber, sem aviso de recepção.
  • Soma de controle: (Checksum ou CRC) : A soma de controle é realizada fazendo a soma dos campos de dados do cabeçalho, para poder verificar a integridade do cabeçalho.
  • Ponteiro de emergência (16 bits): Indica o número de ordem a partir do qual a informação se torna urgente.
  • Opções (Dimensão variável): Opções diversas
  • Preenchimento: Preenche-se o espaço que fica após as opções com zeros, para ter um comprimento múltiplo de 32 bits

Fiabilidade das transferências


O protocolo TCP assegura a transferência dos dados de maneira fiável, embora utilize o protocolo IP, que não integra nenhum controle de entrega de datagrama.

Na realidade, o protocolo TCP possui um sistema de aviso de recepção que permite ao cliente e ao servidor terem a certeza da recepção, correcta e mútua, dos dados.

Durante a emissão de um segmento, um número de ordem (também chamado de número de sequência) é associado. Na recepção de um segmento de dado, a máquina receptora vai devolver um segmento de dado cuja bandeira ACK é 1 (para assinalar que se trata de um aviso de recepção), acompanhado de um número de aviso de recepção igual ao número de ordem precedente.




Além disso, graças a um cronômetro desencadeado a partir da recepção de um segmento na máquina emissora, o segmento é reenviado assim que o tempo fixado esgotar, porque, neste caso, a máquina emissora considera que o segmento se perdeu...




Contudo, se o segmento não se perder e chegar ao destino mesmo assim , a máquina receptora saberá, graças ao número de ordem, que se trata de uma cópia e conservará apenas o último segmento a chegar ao destino...

Estabelecimento de uma ligação


Já que este processo de comunicação, feito graças a uma emissão de dados e a um aviso de recepção, se baseia em um número de ordem (geralmente chamado número de sequência), é necessário que as máquinas emissoras e receptoras (cliente e servidor) conheçam o número de ordem inicial da outra máquina.

Frequentemente, o estabelecimento da ligação entre duas aplicações é feito de acordo com o seguinte esquema :

  • As portas TCP devem estar abertas
  • A aplicação no servidor é passiva,ou seja, a aplicação está à escuta, à espera de uma conexão.
  • A aplicação no cliente faz um pedido de conexão ao servidor cuja aplicação está em abertura passiva. Diz-se que a aplicação do cliente está "em abertura ativa"



Então, as duas máquinas deverão sincronizar as suas sequências graças a um mecanismo chamado habitualmente three ways handshake (aperto de mãos em três tempos), que encontramos também no encerramento de sessão.

Este diálogo inicia a comunicação e se desenrola em três tempos, como seu nome indica:

  • Inicialmente a máquina emissora (o cliente) transmite um segmento cuja bandeira SYN é de 1 (para assinalar que se trata de um segmento de sincronização), com um número de ordem NO., que se chama número de ordem inicial do cliente
  • A seguir, a máquina receptora (o servidor) recebe o segmento inicial que provem do cliente e envia-lhe um aviso de recepção, isto é, um segmento cuja bandeira ACK é de 1 e a bandeira SYN é de 1 (porque ainda se trata de uma sincronização). Este segmento contém o número de ordem desta máquina (do servidor), que é o número de ordem inicial do cliente. O campo mais importante deste segmento é o campo de aviso de recepção, que contém o número de ordem inicial do cliente, incrementado de 1
  • Por último, o cliente transmite ao servidor um aviso de recepção, ou seja, um segmento cuja bandeira ACK é de 1, cuja bandeira SYN é de zero (não se trata mais de um segmento de sincronização). O seu número de ordem é incrementado e o número de aviso de recepção representa o número de ordem inicial do servidor, incrementado de 1






Depois desta sequência com três trocas, as duas máquinas sincronizadas e a comunicação podem começar !

Existe uma técnica de hacker, chamada spoofing IP, que corrompe esta relação de aprovação , com fins maliciosos!

Método da janela que desliza


Em muitos casos, é possível limitar o número de avisos de recepção, a fim de descongestionar a rede, fixando um número de sequência na extremidade do qual umaviso de recepção é um necessário. Este número é, na verdade, armazenado no campo janela do item TCP/IP.

Efetivamente, este método é chamado de "método da janela que desliza" porque, de uma certa maneira, definimos um trecho de sequências que não teem necessidade de aviso de recepção e, este trecho se desloca à medida que os avisos de recepção são recebidos.







Além disso, a dimensão desta janela não é fixa. Com efeito, o servidor pode incluir nos seus avisos de recepção, armazenando no campo da janela, a dimensão da janela que lhe parece mais adequada. Assim, quando o aviso de recepção indica um pedido de aumento da janela, o cliente vai mover a borda direita da janela.




Por outro lado, no caso de uma diminuição, o cliente não vai mover a borda direita da janela para a esquerda, mas esperar que a borda esquerda avance (com a chegada dos avisos de recepção).


Fim de uma conexão


O cliente pode pedir para terminar uma conexão assim como o servidor.
O fim da conexão é feita da seguinte maneira:

  • Uma das máquinas envia um segmento com a bandeira FIM em 1 e a aplicação é posta em estado de espera de fim, ou seja, ela acaba de receber o segmento em curso e ignora os seguintes.
  • Depois da recepção deste segmento, a outra máquina envia um aviso de recepção com a bandeira FIM em 1 e continua a expedir os segmentos em curso. Depois disso, a máquina informa à aplicação que um segmento FIM foi recebido, e envia um segmento FIM para outra máquina, que encerra a conexão...

Mais informações


Para mais informações sobre o protocolo TCP, o melhor é se referir ao RFC 793, que explica de maneira detalhada o protocolo :

Para uma leitura offline, é possível baixar gratuitamente este artigo no formato PDF:
O-protocolo-tcp.pdf

A ver igualmente


TCP protocol
TCP protocol
Protocolo TCP
Protocolo TCP
Das TCP Protokoll
Das TCP Protokoll
Le protocole TCP
Le protocole TCP
Il  protocollo TCP
Il protocollo TCP
Este documento, intitulado « O protocolo TCP »a partir de Kioskea (pt.kioskea.net) está disponibilizado sob a licença Creative Commons. Você pode copiar, modificar cópias desta página, nas condições estipuladas pela licença, como esta nota aparece claramente.