Sei sulla pagina 1di 7

Protocolo TCP

Origem: Wikipédia

(Redirecionado de TCP)
Protocolos Internet
Camada Aplicação HTTP, SMTP, FTP, SSH, IRC, SNMP ...
Camada Transporte TCP, UDP, SCTP, RTP, DCCP ...
Camada Rede IPv4, IPv6, ARP, ICMP ...
Camada Ligação de dados Ethernet, 802.11 WiFi, Token ring, FDDI, PPP, ...
Camada Física RS-232, EIA-422, RS-449, EIA-485...
editar...

O TCP (acrónimo para o inglês Transmission Control Protocol) é um dos protocolos sob
os quais assenta o núcleo da Internet nos dias de hoje. A versatilidade e robustez deste
protocolo tornou-o adequado para redes globais, já que este verifica se os dados são
enviados de forma correta, na sequência apropriada e sem erros, pela rede.

O TCP é um protocolo do nível da camada de transporte (camada 4) do Modelo OSI e é


sobre o qual assentam a maioria das aplicações cibernéticas, como o SSH, FTP, HTTP
— portanto, a World Wide Web.

Características técnicas

Cabeçalho de uma trama TCP

Bits 0 - 10 -
+ 4-9 16 - 31
3 15

0 Porta na origem Porta no destino

32 Número de sequência

64 Número de confirmação (ACK)

Reservado Janela
96 Offset
s
Flags
Window

12 Ponteiro de
Checksum
8 urgência
16
Opções (opcional)
0

19
Opções (cont.) Padding (até 32)
2

22
Dados
4

Detalhe do campo Flags

+ 10 11 12 13 14 15

9 UrgPt AC Pus RS SY FI
6 r K h T N N

As características fundamentais do TCP são:

• Orientado à conexão - A aplicação envia um pedido de conexão para o destino e


usa a "conexão" para transferir dados.

• Ponto a ponto - uma conexão TCP é estabelecida entre dois pontos.

• Confiabilidade - O TCP usa várias técnicas para proporcionar uma entrega


confiável dos pacotes de dados, que é a grande vantagem que tem em relação ao
UDP, e motivo do seu uso extensivo nas redes de computadores. O TCP permite
a recuperação de pacotes perdidos, duplicados, a recuperação de dados
corrompidos, e pode recuperar a ligação em caso de problemas no sistema e na
rede.

• Full duplex - É possível a transferência simultânea em ambas direcções (cliente-


servidor) durante toda a sessão.

• Handshake - Mecanismo de estabelecimento e finalização de conexão a três e


quatro tempos, respectivamente, o que permite a autenticação e encerramento de
uma sessão completa. O TCP garante que, no final da conexão, todos os pacotes
foram bem recebidos.
• Entrega ordenada - A aplicação faz a entrega ao TCP de blocos de dados com um
tamanho arbitrário num fluxo (ou stream) de dados, tipicamente em octetos. O
TCP parte estes dados em segmentos de tamanho especificado pelo valor MTU.
Porém, a circulação dos pacotes ao longo da rede (utilizando um protocolo de
encaminhamento, na camada inferior, como o IP) pode fazer com que os pacotes
não cheguem ordenados. O TCP garante a reconstrução do stream no destinatário
mediante os números de sequência.

• Controlo de fluxo - O TCP usa o campo janela ou window para controlar o fluxo.
O receptor, à medida que recebe os dados, envia ACK, que pode especificar o
tamanho do buffer no campo (janela) do segmento TCP, em que determina a
quantidade de bytes que o lado trasmissor do ACK pode receber. O transmissor
pode transmitir segmentos com um número de bytes que deverá estar confirmado
com tamanho da janela permitido.

[editar]

Descrição do funcionamento

Fig. 1 - Neste exemplo considera-se o backlog preenchido para forçar o timeout no cliente
para que o pacote SYN seja reenviado. No entanto, o primeiro pacote podia ter-se perdido
devido a erros na rede.

O protocolo TCP especifica três fases durante uma conexão: estabelecimento da ligação,
transferência e término de ligação. O estabelecimento da ligação é feito em três passos,
enquanto que o término é feito em quatro. Durante a inicialização são inicializados alguns
parâmetros, como o Sequence Number (número de sequência) para garantir a entrega
ordenada e robustez durante a transferência.

[editar]

Estabelecimento da ligação
Tipicamente, numa ligação TCP existe aquele designado de servidor (que abre um socket
e espera passivamente por ligações), num extremo, e o cliente no outro. O cliente inicia a
ligação enviando um pacote TCP com a flag SYN activa e espera-se que o servidor aceite
a ligação enviando um pacote SYN+ACK. Se, durante um determinado espaço de tempo,
esse pacote não for recebido ocorre um timeout e o pacote SYN é reenviado. O
estabelecimento da ligação é concluído por parte do cliente, confirmando a aceitação do
servidor respondendo-lhe com um pacote ACK.

Durante estas trocas, são trocados números de sequência iniciais (ISN) entre os
interlocutores que irão servir para identificar os dados ao longo do fluxo, bem como servir
de contador de bytes transmitidos durante a fase de transferência de dados (sessão).

No final desta fase, o servidor inscreve o cliente como uma ligação estabelecida numa
tabela própria que contém um limite de conexões, o backlog. No caso do backlog ficar
preenchido a ligação é rejeitada ignorando (silenciosamente) todos os subsequentes
pacotes SYN.

[editar]

Transferência de dados (sessão)

Durante a fase de transferência o TCP está equipado com vários mecanismos que
asseguram a fiabilidade e robustez: números de sequência que garantem a entrega
ordenada, código detector de erros (checksum) para detecção de falhas em segmentos
específicos, confirmação de recepção e temporizadores que permitem o ajuste e contorno
de eventuais atrasos e perdas de segmentos.

Como se pode observar pelo cabeçalho TCP, existem permanentemente um par de


números de sequência, doravante referidos como número de sequência e número de
confirmação (ACKnoledgement). O emissor determina o seu próprio número de
sequência e o receptor confirma o segmento usando como número ACK o número de
sequência do emissor. Para manter a fiabilidade, o receptor confirma os segmentos
indicando que recebeu um determinado número de bytes contíguos. Uma das melhorias
introduzidas no TCP foi a possibilidade do receptor confirmar blocos fora da ordem
esperada. Esta característica designa-se por selective ACK, ou apenas SACK.

A reassemblagem ordenada dos segmentos é feita usando os números de sequência, de


32 bit, que reiniciam a zero quando ultrapassam o valor máximo, 231-1, tomando o valor
da difereça. Assim, a escolha do ISN torna-se vital para a robustez deste protocolo.

O campo checksum permite assegurar a integridade do segmento. Este campo é expresso


em complemento para um consistindo na soma dos valores (em complemento para um)
da trama. A escolha da operação de soma em complemento para um deve-se ao facto de
esta poder ser calculada da mesma forma para múltiplos desse comprimento - 16 bit, 32
bit, 64 bit, etc - e o resultado, quando encapsulado, será o mesmo. A verificação deste
campo por parte do receptor é feita com a recomputação da soma em complemento para
um que dará -0 caso o pacote tenha sido recebido intacto.

Esta técnica (checksum), embora muito inferior a outros métodos detectores, como o
CRC, é parcialmente compensada com a aplicação do CRC ou outros testes de
integridade melhores ao nível da camada 2, logo abaixo do TCP, como no caso do PPP e
Ethernet. Contudo, isto não torna este campo redundante: com efeito, estudos de tráfego
revelam que a introdução de erro é bastante frequente entre hops protegidos por CRC e
que este campo detecta a maioria desses erros.

As confirmações de recepção (ACK) servem também ao emissor para determinar as


condições da rede. Dotados de temporizadores, tanto os emissores como receptores
podem alterar o fluxo dos dados, contornar eventuais problemas de congestão e, em
alguns casos, prevenir o congestionamento da rede. O protocolo está dotado de
mecanismos para obter o máximo de performance da rede sem a congestionar — o envio
de tramas por um emissor mais rápido que qualquer um dos intermediários (hops) ou
mesmo do receptor pode inutilizar a rede. São exemplo a janela deslizante, o algoritmo de
início-lento

[editar]

Adequação de parâmetros

Neste simples exemplo só está a ser considerada a janela do servidor. O cliente tem a
percepção do estado da janela do servidor a cada ACK recebido.

O cabeçalho TCP possui um parâmetro que permite indicar o espaço livre atual do
receptor (emissor quando envia a indicação): a janela (ou window). Assim, o emissor fica
a saber que só poderá ter em trânsito aquela quantidade de informação até esperar pela
confirmação (ACK) de um dos pacotes - que por sua vez trará, com certeza, um
atualização da janela. Curiosamente, a pilha TCP no Windows foi concebida para se auto-
ajustar na maioria dos ambientes e, nas versões actuais, o valor padrão é superior em
comparação com versões mais antigas.
Porém, devido ao tamanho do campo, que não pode ser expandido, os limites aparentes
da janela variam entre 2 e 65535, o que é bastante pouco em redes de alto débito e
hardware de alta performance. Para contornar essa limitação é usado uma Opção especial
que permite obter múltiplos do valor da janela, chamado de escala da janela, ou TCP
window scale; este valor indica quantas vezes o valor da janela, de 16 bit, deve ser
operado por deslocamento de bits (para a esquerda) para obter os múltiplos, podendo
variar entre 0 e 14. Assim, torna-se possível obter janelas de 1 gigabyte. O parâmetro de
escala é definido unicamente durante o estabelecimento da ligação.

[editar]

Término da ligação

Término de conexão.

A fase de encerramento da sessão TCP é um processo de quatro fases, em que cada


interlocutor responsabiliza-se pelo encerramento do seu lado da ligação. Quando um deles
pretende finalizar a sessão, envia um pacote com a flag FIN activa, ao qual deverá receber
uma resposta ACK. Por sua vez, o outro interlocutor irá proceder da mesma forma,
enviando um FIN ao qual deverá ser respondido um ACK.

Pode ocorrer, no entanto, que um dos lados não encerre a sessão. Chama-se a este tipo de
evento de conexão semi-aberta. O lado que não encerrou a sessão poderá continuar a
enviar informação pela conexão, mas o outro lado não.

[editar]

Portas ou serviços

O TCP introduz o conceito de porta tipicamento associado a um serviço (camada


aplicação)/ligação específica. Assim, cada um dos intervenientes na conexão dispõe de
um porta associado (um valor de 16 bit) que dificilmente será o mesmo do interlocutor.
Alguns serviços (que fazem uso de protocolos específicos) são tipicamente acessíveis em
portas fixos, conhecidos como portas bem conhecidos, que são aqueles numerados do 1
ao 1023. Além destes, existem ainda duas gamas de portas, registados e privados ou
dinâmicos. Os portas bem conhecidos são atribuídos pela Internet Assigned Numbers
Authority (IANA) e são tipicamente utilizados por processos com direitos de sistema ou
super-utilizador. Nestes portas encontram-se em escuta passiva os serviços triviais, como
HTTP, SSH, FTP, etc. Todos os protocolos da suite IP se encontram registados dentro
desta gama.

A gama de portas privados segue regras de atribuição específicas do sistema operativo e


serve para abrir ligações a outras máquinas, como surfar na rede, por exemplo.

[editar]

Utilização do IP para entrega de dados


Ver artigo principal: TCP/IP.

O TCP, tal como o UDP, usa o IP para a entrega dos datagramas à rede, e os pontos de
acesso à aplicação são identificados por portas acessadas por multiplexing, tal como
acontece com o UDP, o que permite múltiplas ligações em cada host. As portas podem
ser associadas com uma aplicação (Processo).

O IP trata o pacote TCP como dados e não interpreta qualquer conteúdo da mensagem do
TCP, sendo que os dados TCP viajam pela rede em datagramas IP. Os routers que
interligam as redes apenas verificam o cabeçalho IP, quando fazem o envio dos
datagramas. O TCP no destino interpreta as mensagem do protocolo TCP.

Potrebbero piacerti anche