Академический Документы
Профессиональный Документы
Культура Документы
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)
10
11
12
13
14
15
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.
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.
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
Licena
Creative Commons Attribution-Share Alike 3.0 //creativecommons.org/licenses/by-sa/3.0/