Que tipo de protocolo é o TCP?

TCP/IP � um acr�nimo para o termo Transmission Control Protocol/Internet Protocol Suite, dois dos mais importantes protocolos que conformam a pilha de protocolos usados na Internet. O protocolo IP, base da estrutura de comunica��o da Internet � um protocolo baseado no paradigma de chaveamento de pacotes (packet-switching).

Os protocolos TCP/IP podem ser utilizados sobre qualquer estrutura de rede, seja ela simples como uma liga��o ponto-a-ponto ou uma rede de pacotes complexa. Como exemplo, pode-se empregar estruturas de rede como Ethernet, Token-Ring, FDDI, PPP, ATM, X.25, Frame-Relay, barramentos SCSI, enlaces de sat�lite, liga��es telef�nicas discadas e v�rias outras.

A arquitetura TCP/IP, assim como a OSI, realiza a divis�o de fun��es do sistema de comunica��o em estruturas de camadas.

Que tipo de protocolo é o TCP?

Camada de Enlace:

A camada de enlace � respons�vel pelo envio de datagramas constru�dos pela camada de Rede. Esta camada realiza tamb�m o mapeamento entre um endere�o de identifica��o do n�vel de rede para um endere�o f�sico ou l�gico.

Os protocolos deste n�vel possuem um esquema de identifica��o das m�quinas interligadas por este protocolo. Por exemplo, cada m�quina situada em uma rede Ethernet, Token-Ring ou FDDI possui um identificador �nico chamado endere�o MAC ou endere�o f�sico que permite distinguir uma m�quina de outra, possibilitando o envio de mensagens espec�ficas para cada uma delas. Tais rede s�o chamadas redes locais de computadores.

Camada de Rede (ou Inter-Rede):

Esta camada realiza a comunica��o entre m�quinas vizinhas atrav�s do protocolo IP. Para identificar cada m�quina e a pr�pria rede onde essas est�o situadas, � definido um identificador, chamado endere�o IP, que � independente de outras formas de endere�amento que possam existir nos n�veis inferiores. No caso de existir endere�amento nos n�veis inferiores � realizado um mapeamento para possibilitar a convers�o de um endere�o IP em um endere�o deste n�vel.

Dentre os v�rios protocolos existentes nesta camada, tais como o ICMP e o IGMP, o protocolo IP � o mais importante pois implementa a fun��o mais importante desta camada que � a pr�pria comunica��o inter-redes. Para isto ele realiza a fun��o de roteamento que consiste no transporte de mensagens entre redes e na decis�o de qual rota uma mensagem deve seguir atrav�s da estrutura de rede para chegar ao destino.

O protocolo IP utiliza a pr�pria estrutura de rede dos n�veis inferiores para entregar uma mensagem destinada a uma m�quina que est� situada na mesma rede que a m�quina origem. Por outro lado, para enviar mensagem para m�quinas situadas em redes distintas, ele utiliza a fun��o de roteamento IP. Isto ocorre atrav�s do envio da mensagem para uma m�quina que executa a fun��o de roteador. Esta, por sua vez, repassa a mensagem para o destino ou a repassa para outros roteadores at� chegar no destino.

Camada de Transporte:

Esta camada re�ne os protocolos que realizam as fun��es de transporte de dados fim-a-fim, ou seja, considerando apenas a origem e o destino da comunica��o, sem se preocupar com os elementos intermedi�rios. A camada de transporte possui dois protocolos que s�o o UDP (User Datagram Protocol) e TCP (Transmission Control Protocol).

O protocolo UDP realiza apenas a multiplexa��o para que v�rias aplica��es possam acessar o sistema de comunica��o de forma coerente.

O protocolo TCP realiza, al�m da multiplexa��o, uma s�rie de fun��es para tornar a comunica��o entre origem e destino mais confi�vel. S�o responsabilidades desse protocolo: o controle de fluxo, o controle de erro, a sequencia��o e a multiplexa��o de mensagens.

Camada de Aplica��o:

A camada de aplica��o re�ne os protocolos que fornecem servi�os de comunica��o ao sistema ou ao usu�rio. Pode-se separar os protocolos de aplica��o em protocolos de servi�os b�sicos ou protocolos de servi�os para o usu�rio:

Protocolos de servi�os b�sicos, que fornecem servi�os para atender as pr�prias necessidades do sistema de comunica��o TCP/IP: DNS, BOOTP, DHCP.

Protocolos de servi�os para o usu�rio: FTP, HTTP, Telnet, SMTP, POP3, IMAP, TFTP, NFS, NIS, LPR, LPD, ICQ, RealAudio, Gopher, Archie, Finger, SNMP e outros.

Você sabe o que é TCP e UDP?

Para entender melhor como funciona cada um dos protocolos, vamos tentar enxergar uma situação prática onde cada um deles pudesse fazer diferença: o UDP e o TCP.

Recentemente, eu estive trabalhando em uma aplicação de bate-papo online, para treinar minhas habilidades de programação. Para testá-la, enviei o programa para um amigo para tentarmos conversar através dele.

Quando começamos a conversar, logo notei que havia algo de muito estranho - as mensagens do meu amigo não faziam muito sentido. Não só isso, mas ele parecia não conseguir entender o que eu estava dizendo também! Olha só como estava a conversa para mim:

Que tipo de protocolo é o TCP?

Mandei para o email dele esse screenshot de como a conversa estava aparecendo pra mim, para ele entender minha confusão e ele respondeu meu email com a imagem de como a conversa estava para ele:

Que tipo de protocolo é o TCP?

Agora sim fiquei confuso! Para mim, a conversa estava de um jeito, mas para meu amigo estava de outro… O que será que estava acontecendo com o meu programa?

A princípio, pensei que podia ter alguma relação com a nossa Internet, mas a conexão estava muito boa e, ainda, as mensagens estavam chegando bem rápido. O que, então, poderia ser?

Depois de diversas pesquisas, consegui entender qual era o problema - o protocolo que eu estava utilizando na camada de transporte. Mas como assim, um protocolo? Na camada de transporte? O que é tudo isso? Vamos com calma!

A camada de transporte

A Internet se baseia, no geral, em requisições e respostas. Se pensarmos na Web, temos um exemplo bastante concreto - usamos um navegador (como o Google Chrome ou o Mozilla Firefox) para fazer uma requisição para um servidor de determinado site. Se tudo der certo, esse servidor me devolve uma resposta com a página web que eu procurava.

Mas como é que funciona, de fato, uma requisição? O que está por trás disso?

Para descrever os passos de uma requisição, existem diversos modelos que descrevem os protocolos (isto é, as regras) por trás desse processo. Os modelos mais conhecidos são o OSI, que é dividido em 7 camadas, e o TCP/IP, que é dividido em 5 camadas.

Em ambos esses modelos, há uma mesma camada que é fundamental a camada de transporte. Nos dois casos, a camada de transporte é, como o próprio nome indica, a responsável pela transferência de dados entre diferentes máquinas (seja um servidor, ou mesmo um computador pessoal).

A respeito dessa camada, temos dois protocolos principais: o TCP e o UDP. No programa de bate-papo que eu fiz, utilizei o UDP, simplesmente porque pensava que não havia muita diferença. Afinal, foi justamente esse o meu erro!

O protocolo UDP

O protocolo UDP (sigla para User Datagram Protocol) tem, como característica essencial, um atributo que pode parecer esquisito para os iniciantes no tema - a falta de confiabilidade.

Isso significa que, através da utilização desse protocolo, pode-se enviar datagramas de uma máquina à outra, mas sem garantia de que os dados enviados chegarão intactos e na ordem correta.

Além do mais, o UDP é um protocolo que não é voltado à conexão. Isso significa que o "aperto de mão", ou, tecnicamente, handshake, não é necessário para que se estabeleça uma comunicação.

Dessa forma, com o UDP é possível enviar, pela mesma saída, dados para diversas máquinas diferentes sem problema algum.

Podemos fazer um paralelo com aqueles anúncios em alto-falante. O anúncio consegue sair em busca do destino, mas não temos certeza se o destinatário da mensagem conseguiu ouvi-la.

Entendendo o UDP, fica claro nosso problema - a falta de confiabilidade dele fez com que as mensagens trocadas pelo bate-papo se corrompessem de diversas formas! Mas se isso é natural desse protocolo, por que alguém escolheria usá-lo?!

As características já descritas do UDP podem parecer contraprodutivas no geral, mas elas formam um outro atributo que dá muito poder ao protocolo: a velocidade! No geral, o protocolo UDP permite uma comunicação bastante rápida, o que é muito vantajoso.

Velocidade alta mas confiabilidade baixa, ainda parece suspeito - não funcionou no nosso caso. Acontece que o UDP justamente não é feito para esse tipo de caso! Na verdade, o UDP tem sua grande vantagem quando se trata de serviços cuja velocidade é fundamental e a perda mínima de dados não muito desvantajosa.

Um exemplo é com jogos online, em que é normal alguns bytes se perderem na comunicação,mas que é sempre importante que a aplicação continue rodando com rapidez (sem se importar tanto com as perdas e falhas), para que não ocorra o famigerado lag.

Mas e agora? Se o UDP não serve para a gente, o que podemos usar em seu lugar?

O protocolo TCP

O protocolo TCP é, talvez, o mais utilizado na camada de transporte para aplicações na Web. Diferente do UDP, o TCP é voltado à conexão e tem como garantia a integridade e ordem de todos os dados.

Para manter a confiabilidade dos dados, o TCP utiliza um aperto de mãos de três vias, o _three way handshake_, também chamado de SYN,SYN-ACK,ACK.

O nome SYN,SYN-ACK,ACK é uma resumida descrição de como esse handshake funciona. A conexão entre dois hosts começa com o primeiro enviando ao segundo um pacote de sincronização (SYNchronize).

O segundo host recebe esse pacote e responde com a confirmação do sincronização (SYNchronize-ACKnowledgment). O primeiro host, por fim, manda uma confirmação (ACKnowledge) para o segundo, assim estabelecendo a conexão.

Com o TCP, de fato temos uma conexão entre um ponto e outro, comumente chamados de servidor e cliente. É interessante notar que o TCP permite o envio simultâneo de dados de ambos os pontos ao outro, durante todo o fluxo de comunicação.

Desse modo, o TCP é ideal para casos em que a confiabilidade dos dados é essencial, como quando se trata de mensagens de texto! Trocando o uso do UDP pelo TCP em minha aplicação,tudo vai funcionar bem, mesmo que com uma velocidade possivelmente um pouco menor.

Afinal, o importante é que a troca de dados, ou seja, de mensagens, seja efetuada com sucesso, de modo que quem está se comunicando consiga se entender!

UDP ou TCP?

É certo que não existe um protocolo certo ou errado, nem um melhor ou pior que outro por essência. O que existe são situações diferentes, e essa é a chave para trabalhar com aplicações que se comunicam com diferentes máquinas.

Nesse post, entendemos algumas das diferenças entre os dois principais protocolos da camada de transporte dos modelos da Internet: o UDP e o TCP. Assim, entendemos a importância de ambos os protocolos e quando devemos preferir um ou outro.

Ao final, como resumo, podemos entender que o UDP serve melhor casos em que a integridade constante dos dados não é essencial (é menos importante que a velocidade da comunicação), como em livestreams de vídeos e jogos online.

Por outro lado, o TCP funciona melhor em casos que a confiabilidade do transporte de dados é o foco, como quando trabalhamos com comunicação em texto ou com documentos.

O mais importante, portanto, é entender as diferenças entre os protocolos e, assim, saber qual utilizar em cada caso. Assim, teremos uma aplicação mais funcional!

E aí, achou o tema do post interessante? Então dê uma olhada em nossa formação de administrador de redes, em que você se aprofundará ainda mais em redes de computadores e como elas funcionam!

Que tipo de protocolo e TCP?

O protocolo TCP/IP é uma sigla para Transmission Control Protocol, utilizado no envio e no recebimento de dados na web. O protocolo TCP/IP é a “linguagem” dos computadores e especifica a forma como os dados são trocados pela internet.

Para que serve o protocolo TCP?

O TCP/IP (Transmission Control Protocol/Internet Protocol) representa um conjunto de protocolos que permitem que diversos equipamentos que constituem uma rede possam comunicar entre si. É um protocolo estruturado por camadas na qual cada camada utiliza e presta serviços às camadas adjacentes.

Qual protocolo usa TCP e UDP?

O TCP é usado principalmente em HTTP, HTTPs, FTP, SMTP e Telnet. Enquanto o UDP é usado em DNS, DHCP, TFTP, SNMP, RIP e VoIP.