TCP - Transmission Control Protocol

Esse protocolo tem como principal objetivo realizar a comunicação entre aplicações de dois hosts diferentes. O protocolo TCP é um protocolo de nível de transporte muito utilizado que trabalha com mensagens de reconhecimento, especificação do formato da informação e mecanismos de segurança. Ele garante que todos os PDU's (Protocol data Unit) serão enviados com sucesso, pois realiza transmissões orientadas à conexão. Além disso, ele possibilita o uso de várias aplicações voltadas a conversação.

Quando executado, utiliza o protocolo IP, não orientado à conexão. O TCP então fica responsável pelo controle dos procedimentos da transferência segura de dados. Cabe salientar que o IP não é o único protocolo não orientado à conexão que pode ser utilizado pelo TCP.

Para maior eficiência nas comunicações, o TCP engloba várias funções que poderiam estar nas próprias aplicações, como processador de texto, base de dados e correio eletrônico. Ele foi criado com o intuito de ser um software universal contendo essas funções.

Existem ainda outros serviços do TCP:



Controle de fluxo - O controle de fluxo atrubui uma janela de transmissão ao host de origem. Essa janela limita o número de bytes transmitidos por vez. O controle de fluxo em si está na possibilidade de atribuir diferentes valores às janelas.


Segurança na transmissão - A confiabilidade nas transmissões via TCP está baseada no fato de que esse protocolo é orientado à conexão e trabalha com números de reconhecimento sequenciais e positivos.

O TCP do host origem transfere os dados em forma de octetos, onde a cada octeto vão sendo atrubuidos números em sequência. O TCP do host destino analisa então esses números para garantir a ordem e a integridade da mensagem enviada. Se a tranferência for perfeita, o TCP do host destino envia uma mensagem de reconhecimento à origem. Caso contrário, é enviada uma sequência númerica para o TCP do host origem que informará o tipo do problema, bem como ordenará uma nova transmissão.

Os números em sequência podem ser utilizados ainda para eliminar octetos duplos, que por causa da transmissão não orientada à conexão, podem ocorrer.

O TCP da origem possui um timer para garantir que não se perca muito tempo entre uma mensagem errada e sua correção. Então, quando o TCP origem recebe uma mensagem de erro, ocorre um "time-out" e o reenvio da mensagem.

A margem de tempo do "time-out" é controlada pelo administrador do host.


Comandos de OPEN/CLOSE -Por meio de todos os dispositivos físicos, o TCP pode estabelecer uma conexão virtual, a partir do comando OPEN. Nesse momento,o TCP realiza o "three-way handshake", que é um processo onde os TCP's origem e destino trocam mensagens de reconhecimento que possibilitam a conexão.

No momento em que a transferência de informações terminar, qualquer host (origem ou destino) poderá fechar a conexão virtual, a partir do comando CLOSE.

 figura abaixo mostra em detalhes o "three-way handshake" do TCP:


Gerenciamento da informação nas transmissões orientadas a conexão - O protocolo TCP pode controlar todos os aspectos da informação que esta sendo transmitida, pois é um protocolo de transmissão orientada à conexão. A ação do TCP se estende a toda a tragetória da informação, onde ele procura garantir o sucesso da transmissão.


Prioridade e segurança - O protocolo TCP permite que o administrador do host controle os níveis de segurança e permissão de acesso, bem como as prioridades nas conexões.Essas características não estão presentes em todas as versões, embora estejam definidas nos padrões TCP.


Transferência orientada a "stream" - Os aplicativos de nível de interface em geral enviam dados ao TCP de forma orientada a "stream", onde a informação é transmitida byte a byte,um após o outro.Quando a informação chega ao TCP, é então agrupada em pacotes e assim enviada aos demais níveis de transmissão.

O protocolo TCP pode utilizar-se de várias formas de envio de mensagens. Ele pode ser utilizado com linhas telefônicas, redes locais ou ainda redes de fibra ótica de alta velocidade.


A estrutura do Header TCP é a seguinte:


Estrutura do Header TCP

onde:

Source Port:
Número da Porta de origem

Destination Port:
Número da Porta de destino.

Sequence Number:
O número de sequência do primeiro octeto de dados do segmento (exceto quando SYN está presente). Se o SYN está presente, o número de sequência é o número de sequencia inicial (ISN) e o primeiro octeto de dados é ISN +1.

Acknowledgment number
Se o bit de controle ACK está acionado, o campo contém o valor do próximo número de sequência que o destinatário do segmento está esperando receber.

Data offset:
Indica onde inicia o campo de dados dentro do Header TCP.

Reserved
6 bits reservados para uso futuro, pode ser zero
Control bits
O bit de controle pode ser (da esquerda p/ direita):
U (URG)  Informa à aplicação a chegada de dados urgentes, que devem ser processado antes no buffer.
A (ACK) Indica que o campo Acknowledgment é significante.
P (PSH) Função Push.
R (RST) Reinicializa a conexão.
S (SYN) Sincronisa os números de sequência.
F (FIN)  Indica o fim da transmissão de dados.

Window:
16 bits. O número de octetos de dados que o destinatário está aguardando receber, iniciando com o octeto que idica o campo acknowledgment.

Checksum
16 bits. Controle de erros.