Vous êtes sur la page 1sur 6

31/03/2018 Transmission Control Protocol – Wikipédia, a enciclopédia livre

Transmission Control Protocol


Origem: Wikipédia, a enciclopédia livre.
O TCP (acrônimo para o inglês Transmission Control Protocol, que significa "Protocolo de Controle de
Transmissão") é um dos protocolos sob os quais assenta a Internet. Ele é complementado pelo Protocolo da Internet,
sendo normalmente chamado de TCP/IP. A versatilidade e robustez do TCP tornou-o adequado a 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 de nível da camada de transporte (camada 4) do Modelo [1]OSI e é sobre o qual que se assentam
a maioria das aplicações cibernéticas, como o SSH, FTP, HTTP — portanto, a World Wide Web[2]. O Protocolo de
controle de transmissão provê confiabilidade, entrega na sequência correta e verificação de erros dos pacotes de
dados, entre os diferentes nós da rede, para a camada de aplicação.

Aplicações que não requerem um serviço de confiabilidade de entrega de pacotes podem se utilizar de protocolos mais
simples como o User Datagram Protocol (UDP), que provê um serviço que enfatiza a redução de latência da conexão.

Índice
Origem histórica
Características técnicas
Funcionamento do protocolo
Estabelecimento da conexão
Transferência de dados (sessão)
Adequação de parâmetros
Término da ligação
Portas ou serviços
Utilização do IP para entrega de dados
Referências
Ver também
Ligações externas

Origem histórica
Em maio de 1974, o Instituto de Engenheiros Eletricistas e Eletrônicos publicou um artigo intitulado "A Protocol for
Packet Network Interconnection."[2] Os autores do artigo, Vinton G. Cerf e Robert Kahn descreveram um protocolo de
interconexão para compartilhamento de recursos usando comutação de pacotes ao longo dos nós. Um componente
central de controle deste modelo foi o Transmission Control Program, que incorporou os elos e serviços orientados
para datagrama entre hosts. O programa de controle de transmissão monolítico foi dividido depois dentro de uma
arquitetura modular formada de um Protocolo de controle de transmissão na camada orientada a conexão e o
Protocolo de internet na camada de interconexão. O modelo se torna informalmente conhecido como TCP/IP, embora
formalmente tenha sido chamado de Internet Protocol Suite.

https://pt.wikipedia.org/wiki/Transmission_Control_Protocol 1/6
31/03/2018 Transmission Control Protocol – Wikipédia, a enciclopédia livre

Características técnicas
As características fundamentais do TCP são:
Cabeçalho de uma trama TCP
Orientado à conexão - A aplicação envia + Bits 0 - 3 4-9 10 - 15 16 - 31
um pedido de conexão para o destino e usa
a "conexão" para transferir dados. Portanto, 0 Porta na origem Porta no destino
se faz necessário o estabelecimento de
uma conexão, por meio de uma sequência 32 Número de sequência
de passos definida no protocolo para que
os dois pontos da conexão possam 64 Número de confirmação (ACK)
interagir entre si.
Janela
Handshake - Mecanismo de 96 Offset Reservados Flags
Window
estabelecimento e finalização de conexão a
três e quatro tempos, respectivamente, o 128 Checksum Ponteiro de urgência
que permite a autenticação e encerramento
de uma sessão completa. O TCP garante 160 Opções (opcional)
que, no final da conexão, todos os pacotes
foram bem recebidos. Padding (até 32)
Ponto a ponto - uma conexão TCP é
estabelecida entre dois pontos. A princípio,
pacotes de broadcasting parecem violar 224 Dados
esse princípio, mas o que ocorre é que é
enviado um pacote com um endereço
especial em seu cabeçalho que qualquer
computador em sua rede pode responder a Detalhe do campo Flags
esse pacote, mesmo que não esteja + 10 11 12 13 14 15
explicitamente endereçado pra ele.
Confiabilidade - O TCP usa várias técnicas 96 UrgPtr ACK Push RST SYN FIN
para proporcionar uma entrega confiável
dos pacotes de dados que, dependendo da
aplicação, gera uma grande vantagem que
tem em relação ao UDP. Aliado a outros fatores, o protocolo se mantém bastante difundido nas redes de
computadores. O TCP permite a recuperação de pacotes perdidos, a eliminação de pacotes 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 direções (cliente-servidor) durante toda a sessão.
Apesar disso, em alguns momentos, o protocolo necessita que algum pacotes de dados cheguem para que se dê
o envio de outros, o que limita as transmissões.
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.
Controle de fluxo - O TCP usa o campo janela ou window para controlar o fluxo. O receptor, à medida que recebe
os dados, envia mensagens ACK (=Acknowledgement), confirmando a recepção de um segmento; como
funcionalidade extra, estas mensagens podem especificar o tamanho máximo do buffer no campo (janela) do
segmento TCP, determinando a quantidade máxima de bytes aceita pelo receptor. O transmissor pode transmitir
segmentos com um número de bytes que deverá estar confinado ao tamanho da janela permitido: o menor valor
entre sua capacidade de envio e a capacidade informada pelo receptor.
Controle de congestionamento - Baseado no número de mensagens de reconhecimentos ACK
(=Acknowledgement) recebidos pelo remetente por unidade de tempo calculada com os dados do tempo de ida e
de volta, ou em inglês RTT (Round Trip Travel), o protocolo prediz o quanto a rede está congestionada e diminui
sua taxa de transmissão de modo que o núcleo da rede não se sobrecarregue. Esse tipo de comportamento, a
princípio ineficiente, se baseia fortemente na teoria dos jogos - especificamente em jogos simétricos que, dentre
várias coisas, difunde a ideia de que se ninguém recua um pouco, para dar passagem aos demais, todos
perdem.

Funcionamento do protocolo
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.

https://pt.wikipedia.org/wiki/Transmission_Control_Protocol 2/6
31/03/2018 Transmission Control Protocol – Wikipédia, a enciclopédia livre

Estabelecimento da conexão
Para estabelecer uma conexão, o TCP usa um handshake (aperto de mão) de
três vias. Antes que o cliente tente se conectar com o servidor, o servidor
deve primeiro ligar e escutar a sua própria porta, para só depois abri-la para
conexões: isto é chamado de abertura passiva. Uma vez que a abertura
passiva esteja estabelecida, um cliente pode iniciar uma abertura ativa. Para
estabelecer uma conexão, o aperto de mão de três vias (ou 3 etapas) é
realizado:

1. SYN: A abertura ativa é realizada por meio do envio de um SYN pelo


cliente ao servidor. O cliente define o número de sequência de
segmento como um valor aleatório A.
2. SYN-ACK: Em resposta, o servidor responde com um SYN-ACK. O
Fig. 1 - Neste exemplo considera-
número de reconhecimento (acknowledgment) é definido como sendo
um a mais que o número de sequência recebido, i.e. A+1, e o número se o backlog preenchido para
de sequência que o servidor escolhe para o pacote é outro número forçar o timeout no cliente para
aleatório B. que o pacote SYN seja reenviado.
3. ACK: Finalmente, o cliente envia um ACK de volta ao servidor. O No entanto, o primeiro pacote
número de sequência é definido ao valor de reconhecimento recebido, podia ter-se perdido devido a
i.e. A+1, e o número de reconhecimento é definido como um a mais que
erros na rede.
o número de sequência recebido, i.e B+1.
Neste ponto, o cliente e o servidor receberam um reconhecimento de
conexão. As etapas 1 e 2 estabelecem o parâmetro (número de sequência) de conexão para uma direção e ele é
reconhecido. As etapas 2 e 3 estabelecem o parâmetro de conexão (número de sequência) para a outra direção e ele é
reconhecido. Com isto, uma comunicação full-duplex é estabelecida.

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 completamente preenchido a ligação é rejeitada ignorando
(silenciosamente) todos os subsequentes pacotes SYN.

Transferência de dados (sessão)


Durante a fase de transferência o TCP está equipado com vários mecanismos que asseguram a confiabilidade 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 (ACKnowledgement). 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 confiabilidade, 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.

https://pt.wikipedia.org/wiki/Transmission_Control_Protocol 3/6
31/03/2018 Transmission Control Protocol – Wikipédia, a enciclopédia livre

A remontagem 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 diferenç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 fato 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

Adequação de parâmetros
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, uma atualização da janela.
Curiosamente, a pilha TCP no Windows foi concebida para se auto-ajustar
na maioria dos ambientes e, nas versões atuais, 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
Neste simples exemplo só está a em redes de alto débito e hardware de alta performance. Para contornar essa
ser considerada a janela do
limitação é usado uma Opção especial que permite obter múltiplos do valor
servidor. O cliente tem a
da janela, chamado de escala da janela, ou TCP window scale; este valor
percepção do estado da janela do
servidor a cada ACK recebido. 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.

Término da ligaçã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
ativa, 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.

https://pt.wikipedia.org/wiki/Transmission_Control_Protocol 4/6
31/03/2018 Transmission Control Protocol – Wikipédia, a enciclopédia livre

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.

Portas ou serviços
O TCP introduz o conceito de porta tipicamente associado a um serviço
(camada aplicação)/ligação específica. Assim, cada um dos intervenientes na
conexão dispõe de uma porta associada (um valor de 16 bit) que dificilmente Término de conexão.
será o mesmo do interlocutor. Alguns serviços (que fazem uso de protocolos
específicos) são tipicamente acessíveis em portas fixas, conhecidas como portas bem conhecidas, que são aqueles
numerados do 1 ao 1023. Além destas, existem ainda duas gamas de portas, registradas e privadas ou dinâmicas. As
portas bem conhecidas são atribuídas pela Internet Assigned Numbers Authority (IANA) e são tipicamente utilizados
por processos com direitos de sistema ou super-utilizador. Nestas portas encontram-se em escuta passiva os serviços
triviais, como HTTP, SSH, FTP, etc. Todos os protocolos da suite IP se encontram registrados dentro desta gama.

A gama de portas privadas 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.

Utilização do IP para entrega de dados


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 multiplexação, 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 roteadores 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.

Referências
1. Citação vazia (ajuda)
2. Vinton G. Cerf, Robert E. Kahn, A Protocol for Packet Network Intercommunication, IEEE Transactions on
Communications, Vol. 22, No. 5, May 1974 pp. 637-648

Ver também
bic-tcp
Lista de protocolos de redes
SCTP

Ligações externas
RFC 793 (http://www.ietf.org/rfc/rfc793.txt)

Obtida de "https://pt.wikipedia.org/w/index.php?title=Transmission_Control_Protocol&oldid=51539736"

Esta página foi editada pela última vez à(s) 18h50min de 16 de março de 2018.

Este texto é disponibilizado nos termos da licença Creative Commons - Atribuição - Compartilha Igual 3.0 Não
Adaptada (CC BY-SA 3.0); pode estar sujeito a condições adicionais. Para mais detalhes, consulte as condições de

https://pt.wikipedia.org/wiki/Transmission_Control_Protocol 5/6
31/03/2018 Transmission Control Protocol – Wikipédia, a enciclopédia livre

uso.

https://pt.wikipedia.org/wiki/Transmission_Control_Protocol 6/6

Vous aimerez peut-être aussi