Você está na página 1de 6

Transmission Control Protocol

Transmission Control Protocol


O TCP (acrnimo para o ingls Transmission Control Protocol, que significa "Protocolo de controle de transmisso") um dos protocolos sob os quais assenta o ncleo da Internet. A versatilidade e robustez deste protocolo tornou-o adequado a redes globais, j que este verifica se os dados so enviados de forma correta, na sequncia apropriada e sem erros, pela rede. O TCP um protocolo de nvel da camada de transporte (camada 4) do Modelo OSI e sobre o qual que se assentam a maioria das aplicaes cibernticas, como o SSH, FTP, HTTP portanto, a World Wide Web.

Origem histrica
Em maio de 1974, o Instituto de Engenheiros Eletricistas e Eletrnicos publicou um artigo intitulado "A Protocol for Packet Network Interconnection."[1] Os autores do artigo, Vinton G. Cerf e Bob Kahn descreveram um protocolo de interconexo para compartilhamento de recursos usando comutao de pacotes ao longo dos ns. Um componente central de controle deste modelo foi o Transmission Control Program, que incorporou os elos e servios orientados para datagrama entre hosts. O programa de controle de transmisso monoltico foi dividido depois dentro de uma arquitetura modular formada de um Protocolo de controle de transmisso na camada orientada a conexo e o Protocolo de internet na camada de interconexo. O modelo se torna informalmente conhecido como TCP/IP, embora formalmente tenha sido chamado de Internet Protocol Suite.

Caractersticas tcnicas
Cabealho de uma trama TCP + 0 32 64 96 Offset Bits 0 - 3 4-9 10 - 15 16 - 31 Porta no destino

Porta na origem

Nmero de sequncia Nmero de confirmao (ACK) Reservados Flags Janela Window Ponteiro de urgncia

128 160

Checksum

Opes (opcional)

Padding (at 32) 224 Dados

10

11

12

13

14

15

96 UrgPtr ACK Push RST SYN FIN

As caractersticas fundamentais do TCP so: Orientado conexo - A aplicao envia um pedido de conexo para o destino e usa a "conexo" para transferir dados. Ponto a ponto - uma conexo TCP estabelecida entre dois pontos. Confiabilidade e- O TCP usa vrias tcnicas para proporcionar uma entrega confivel dos pacotes de dados, que a grande vantagem que tem em relao ao UDP, e motivo do seu uso extensivo nas redes de computadores. O TCP permite a recuperao de pacotes perdidos, a eliminao de pacotes duplicados, a recuperao de dados

Transmission Control Protocol corrompidos, e pode recuperar a ligao em caso de problemas no sistema e na rede. Full duplex - possvel a transferncia simultnea em ambas direes (cliente-servidor) durante toda a sesso. Handshake - Mecanismo de estabelecimento e finalizao de conexo a trs e quatro tempos, respectivamente, o que permite a autenticao e encerramento de uma sesso completa. O TCP garante que, no final da conexo, todos os pacotes foram bem recebidos. Entrega ordenada - A aplicao faz a entrega ao TCP de blocos de dados com um tamanho arbitrrio num fluxo (ou stream) de dados, tipicamente em octetos. O TCP parte estes dados em segmentos de tamanho especificado pelo valor MTU. Porm, a circulao dos pacotes ao longo da rede (utilizando um protocolo de encaminhamento, na camada inferior, como o IP) pode fazer com que os pacotes no cheguem ordenados. O TCP garante a reconstruo do stream no destinatrio mediante os nmeros de sequncia. 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 recepo de um segmento; como funcionalidade extra, estas mensagens podem especificar o tamanho mximo do buffer no campo (janela) do segmento TCP, determinando a quantidade mxima de bytes aceita pelo receptor. O transmissor pode transmitir segmentos com um nmero 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.

Descrio do funcionamento
O protocolo TCP especifica trs fases durante uma conexo: estabelecimento da ligao, transferncia e trmino de ligao. O estabelecimento da ligao feito em trs passos, enquanto que o trmino feito em quatro. Durante a inicializao so inicializados alguns parmetros, como o Sequence Number (nmero de sequncia) para garantir a entrega ordenada e robustez durante a transferncia.

Estabelecimento da ligao
Tipicamente, numa ligao TCP existe aquele designado de servidor (que abre um socket e espera passivamente por ligaes) num extremo, e o cliente no outro. O cliente inicia a ligao enviando um pacote TCP com a flag SYN activa e espera-se que o servidor aceite a ligao enviando um pacote SYN+ACK. Se, durante um determinado espao de tempo, esse pacote no for recebido ocorre um timeout e o pacote SYN reenviado. O estabelecimento da ligao concludo por parte do cliente, confirmando a aceitao do servidor respondendo-lhe com um pacote ACK.

Fig. 1 - Neste exemplo considera-se o backlog preenchido para forar 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.

Durante estas trocas, so trocados nmeros de sequncia iniciais (ISN) entre os interlocutores que iro servir para identificar os dados ao longo do fluxo, bem como servir de contador de bytes transmitidos durante a fase de transferncia de dados (sesso). No final desta fase, o servidor inscreve o cliente como uma ligao estabelecida numa tabela prpria que contm um limite de conexes, o backlog. No caso do backlog ficar completamente preenchido a ligao rejeitada ignorando (silenciosamente) todos os subsequentes pacotes SYN.

Transmission Control Protocol

Transferncia de dados (sesso)


Durante a fase de transferncia o TCP est equipado com vrios mecanismos que asseguram a confiabilidade e robustez: nmeros de sequncia que garantem a entrega ordenada, cdigo detector de erros (checksum) para deteco de falhas em segmentos especficos, confirmao de recepo e temporizadores que permitem o ajuste e contorno de eventuais atrasos e perdas de segmentos. Como se pode observar pelo cabealho TCP, existem permanentemente um par de nmeros de sequncia, doravante referidos como nmero de sequncia e nmero de confirmao (ACKnowledgement). O emissor determina o seu prprio nmero de sequncia e o receptor confirma o segmento usando como nmero ACK o nmero de sequncia do emissor. Para manter a confiabilidade, o receptor confirma os segmentos indicando que recebeu um determinado nmero de bytes contguos. Uma das melhorias introduzidas no TCP foi a possibilidade do receptor confirmar blocos fora da ordem esperada. Esta caracterstica designa-se por selective ACK, ou apenas SACK. A remontagem ordenada dos segmentos feita usando os nmeros de sequncia, de 32 bit, que reiniciam a zero quando ultrapassam o valor mximo, 231-1, tomando o valor da diferena. 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 operao de soma em complemento para um deve-se ao facto de esta poder ser calculada da mesma forma para mltiplos desse comprimento - 16 bit, 32 bit, 64 bit, etc - e o resultado, quando encapsulado, ser o mesmo. A verificao deste campo por parte do receptor feita com a recomputao da soma em complemento para um que dar -0 caso o pacote tenha sido recebido intacto. Esta tcnica (checksum), embora muito inferior a outros mtodos detectores, como o CRC, parcialmente compensada com a aplicao do CRC ou outros testes de integridade melhores ao nvel da camada 2, logo abaixo do TCP, como no caso do PPP e Ethernet. Contudo, isto no torna este campo redundante: com efeito, estudos de trfego revelam que a introduo de erro bastante frequente entre hops protegidos por CRC e que este campo detecta a maioria desses erros. As confirmaes de recepo (ACK) servem tambm ao emissor para determinar as condies da rede. Dotados de temporizadores, tanto os emissores como receptores podem alterar o fluxo dos dados, contornar eventuais problemas de congesto e, em alguns casos, prevenir o congestionamento da rede. O protocolo est dotado de mecanismos para obter o mximo de performance da rede sem a congestionar o envio de tramas por um emissor mais rpido que qualquer um dos intermedirios (hops) ou mesmo do receptor pode inutilizar a rede. So exemplo a janela deslizante, o algoritmo de incio-lento

Transmission Control Protocol

Adequao de parmetros
O cabealho TCP possui um parmetro que permite indicar o espao livre atual do receptor (emissor quando envia a indicao): a janela (ou window). Assim, o emissor fica a saber que s poder ter em trnsito aquela quantidade de informao at esperar pela confirmao (ACK) de um dos pacotes - que por sua vez trar, com certeza, uma atualizao da janela. Curiosamente, a pilha TCP no Windows foi concebida para se auto-ajustar na maioria dos ambientes e, nas verses atuais, o valor padro superior em comparao com verses mais antigas. Porm, devido ao tamanho do campo, que no pode ser expandido, os limites aparentes da janela variam entre 2 e 65535, o que bastante pouco em redes de alto dbito e Neste simples exemplo s est a ser considerada a janela hardware de alta performance. Para contornar essa limitao do servidor. O cliente tem a percepo do estado da janela usado uma Opo especial que permite obter mltiplos do valor do servidor a cada ACK recebido. 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 mltiplos, podendo variar entre 0 e 14. Assim, torna-se possvel obter janelas de 1 gigabyte. O parmetro de escala definido unicamente durante o estabelecimento da ligao.

Trmino da ligao
A fase de encerramento da sesso TCP um processo de quatro fases, em que cada interlocutor responsabiliza-se pelo encerramento do seu lado da ligao. Quando um deles pretende finalizar a sesso, 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. Pode ocorrer, no entanto, que um dos lados no encerre a sesso. Chama-se a este tipo de evento de conexo semi-aberta. O lado que no encerrou a sesso poder continuar a enviar informao pela conexo, mas o outro lado no.

Trmino de conexo.

Portas ou servios
O TCP introduz o conceito de porta tipicamente associado a um servio (camada aplicao)/ligao especfica. Assim, cada um dos intervenientes na conexo dispe de uma porta associada (um valor de 16 bit) que dificilmente ser o mesmo do interlocutor. Alguns servios (que fazem uso de protocolos especficos) so tipicamente acessveis em portas fixas, conhecidas como portas bem conhecidas, que so aqueles numerados do 1 ao 1023. Alm destas, existem ainda duas gamas de portas, registradas e privadas ou dinmicas. As portas bem conhecidas so atribudas pela Internet Assigned Numbers Authority (IANA) e so tipicamente utilizados por processos com direitos de sistema ou super-utilizador. Nestas portas encontram-se em escuta passiva os servios triviais, como HTTP, SSH, FTP, etc. Todos os protocolos da suite IP se encontram registrados dentro desta gama.

Transmission Control Protocol A gama de portas privadas segue regras de atribuio especficas do sistema operativo e serve para abrir ligaes a outras mquinas, como surfar na rede, por exemplo.

Utilizao 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 aplicao so identificados por portas acessadas por multiplexao, tal como acontece com o UDP, o que permite mltiplas ligaes em cada host. As portas podem ser associadas com uma aplicao (Processo). O IP trata o pacote TCP como dados e no interpreta qualquer contedo da mensagem do TCP, sendo que os dados TCP viajam pela rede em datagramas IP. Os roteadores que interligam as redes apenas verificam o cabealho IP, quando fazem o envio dos datagramas. O TCP no destino interpreta as mensagem do protocolo TCP.

Ligaes externas
RFC 793 [2]
[1] 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 [2] http:/ / www. ietf. org/ rfc/ rfc793. txt

Fontes e Editores da Pgina

Fontes e Editores da Pgina


Transmission Control Protocol Fonte: http://pt.wikipedia.org/w/index.php?oldid=36889549 Contribuidores: !Silent, 555, Emersonmello, Eriberto, Erico Tachizawa, Gunnex, IRedRat, Ja eras, Jonas AGX, Jos Eugnio, Leonardo.stabile, LeonardoRob0t, Manuel Anastcio, Mschlindwein, Novais, Nuno Tavares, Onjacktallcuca, PedroPVZ, PequijanFAP, Profvalente, Rodrigo.haus, Suisui, Ts42, Viniciusmc, Vitor Mazuco, Yone Fernandes, 100 edies annimas

Fontes, Licenas e Editores da Imagem


Ficheiro:TCP establishment.png Fonte: http://pt.wikipedia.org/w/index.php?title=Ficheiro:TCP_establishment.png Licena: GNU Free Documentation License Contribuidores: User:Nuno Tavares Ficheiro:TCP windowing.png Fonte: http://pt.wikipedia.org/w/index.php?title=Ficheiro:TCP_windowing.png Licena: GNU Free Documentation License Contribuidores: User:Nuno Tavares Ficheiro:TCP termination.png Fonte: http://pt.wikipedia.org/w/index.php?title=Ficheiro:TCP_termination.png Licena: GNU Free Documentation License Contribuidores: User:Nuno Tavares

Licena
Creative Commons Attribution-Share Alike 3.0 //creativecommons.org/licenses/by-sa/3.0/