Você está na página 1de 6

Explorando os protocolos de transporte

Um pouco sobre Pacotes e sobre os protocolos de Transporte


O TCP/IP, na verdade, formado por um grande conjunto de diferentes protocolos e servios de rede. O
nome TCP/IP deriva dos dois protocolos mais importantes e mais utilizados, que so os seguintes:

IP: um protocolo de endereamento, um protocolo de rede. Eu me arriscaria a afirmar que as


principais funes do protocolo IP so endereamento e roteamento, ou de uma maneira mais
simples, fornecer uma maneira para identificar unicamente cada mquina da rede (endereo IP)
e uma maneira de encontrar um caminho entre a origem e o destino (Roteamento).

TCP: O TCP um protocolo de transporte e executa importantes funes para garantir que os
dados sejam entregues de uma maneira confivel, ou seja, sem que os dados sejam
corrompidos ou alterados.

Vamos imaginar uma situao prtica, onde voc deseja enviar um arquivo com cerca de 10 MB de um
computador de origem para um computador de destino. Uma das primeiras coisas que tem que ser
feitas encontrar uma rota, um caminho entre a origem e o destino. Este o papel do protocolo IP,
mais especificamente da funo de roteamento. Uma vez encontrado o caminho, o prximo passo
dividir o arquivo de 10 MB em pacotes de tamanhos menores, os quais possam ser enviados pelos
equipamentos da rede. Alm da diviso em pacotes menores, o TCP/IP tem que garantir que os pacotes
sejam entregues sem erros e sem alteraes. Pode tambm acontecer de os pacotes chegarem fora de
ordem. O TCP/IP tem que ser capaz de identificar a ordem correta e entregar os pacotes para o
programa de destino, na ordem correta. Por exemplo, pode acontecer de o pacote nmero 10 chegar
antes do pacote nmero 9. Neste caso o TCP tem que aguardar a chegada do pacote nmero 9 e
entreg-los na ordem correta. Pode tambm acontecer de serem perdidos pacotes durante o transporte.
Neste caso, o TCP tem que informar origem de que determinado pacote no foi recebido no tempo
esperado e solicitar que este seja retransmitido. Todas estas funes garantir a integridade, a
seqncia correta e solicitar retransmisso so exercidas pelo protocolo TCP Transmission Control
Protocol. Alm do TCP existe tambm o UDP, o qual no faz todas estas verificaes e utilizado por
determinados servios. A seguir apresento uma descrio dos protocolos TCP e UDP e um estudo
comparativo.

TCP Uma Viso Geral


O Transmission Control Protocol (TCP) , sem dvidas, um dos mais importantes protocolos da famlia
TCP/IP. um padro definido na RFC 793, "Transmission Control Protocol (TCP)", que fornece um
servio de entrega de pacotes confivel e orientado por conexo. Ser orientado por conexo, significa
que todos os aplicativos baseados em TCP como protocolo de transporte, antes de iniciar a troca de
dados, precisam estabelecer uma conexo. Na conexo so fornecidas, normalmente, informaes de
logon, as quais identificam o usurio que est tentando estabelecer a conexo. Um exemplo tpico so
os aplicativos de FTP (Cute FTP, ES-FTP e assim por diante). Para que voc acesse um servidor de FTP,
voc deve fornecer um nome de usurio e senha. Estes dados so utilizados para identificar e autenticar
o usurio. Aps a identificao e autenticao, ser estabelecida uma sesso entre o cliente de FTP e o
servidor de FTP.
Algumas caractersticas do TCP:

Garante a entrega de datagramas IP: Esta talvez seja a principal funo do TCP, ou seja,
garantir que os pacotes sejam entregues sem alteraes, sem terem sido corrompidos e na
ordem correta. O TCP tem uma srie de mecanismos para garantir esta entrega.

Executa a segmentao e reagrupamento de grandes blocos de dados enviados pelos


programas e Garante o seqenciamento adequado e entrega ordenada de dados
segmentados: Esta caracterstica refere-se a funo de dividir grandes arquivos em pacotes
menores e transmitir cada pacote separadamente. Os pacotes podem ser enviados por

caminhos diferentes e chegar fora de ordem. O TCP tem mecanismos para garantir que, no
destino, os pacotes sejam ordenados corretamente, antes de serem entregues ao programa de
destino.

Verifica a integridade dos dados transmitidos usando clculos de soma de verificao:


O TCP faz verificaes para garantir que os dados no foram alterados ou corrompidos durante o
transporte entre a origem e o destino.

Envia mensagens positivas dependendo do recebimento bem-sucedido dos dados. Ao


usar confirmaes seletivas, tambm so enviadas confirmaes negativas para os
dados que no foram recebidos: No destino, o TCP recebe os pacotes, verifica se esto OK e,
em caso afirmativo, envia uma mensagem para a origem, confirmando cada pacote que foi
recebido corretamente. Caso um pacote no tenha sido recebido ou tenha sido recebido com
problemas, o TCP envia uma mensagem ao computador de origem, solicitando uma
retransmisso do pacote. Com esse mecanismo, apenas pacotes com problemas tero que ser
reenviados, o que reduz o trfego na rede e agiliza o envio dos pacotes.

Oferece um mtodo preferencial de transporte de programas que devem usar


transmisso confivel de dados baseada em sesses, como bancos de dados
cliente/servidor e programas de correio eletrnico: Ou seja, o TCP muito mais confivel
do que o UDP (conforme mostrarei mais adiante) e indicado para programas e servios que
dependam de uma entrega confivel de dados.

Funcionamento do TCP
O TCP baseia-se na comunicao ponto a ponto entre dois hosts de rede. O TCP recebe os dados de
programas e processa esses dados como um fluxo de bytes. Os bytes so agrupados em segmentos que
o TCP numera e seqncia para entrega. Estes segmentos so mais conhecidos como Pacotes.
Antes que dois hosts TCP possam trocar dados, devem primeiro estabelecer uma sesso entre si. Uma
sesso TCP inicializada atravs de um processo conhecido como um tree-way handshake (algo como
Um Aperto de Mo Triplo). Esse processo sincroniza os nmeros de seqncia e oferece informaes de
controle necessrias para estabelecer uma conexo virtual entre os dois hosts.
De uma maneira simplificada, o processo de tree-way handshake, pode ser descrito atravs dos
seguintes passos:

O computador de origem solicita o estabelecimento de uma sesso com o computador


de destino: Por exemplo, voc utiliza um programa de FTP (origem) para estabelecer uma
sesso com um servidor de FTP (destino).

O computador de destino recebe a requisio, verifica as credenciais enviadas (tais como as


informaes de logon e senha) e envia de volta para o cliente, informaes que sero utilizadas
pelo cliente, para estabelecer efetivamente a sesso. As informaes enviadas nesta etapa so
importantes, pois atravs destas informaes que o servidor ir identificar o cliente e liberar
ou no o acesso.

O computador de origem recebe as informaes de confirmao enviadas pelo servidor e envia


estas confirmaes de volta ao servidor. O servidor recebe as informaes, verifica que elas
esto corretas e estabelece a sesso. A partir deste momento, origem e destino esto
autenticados e aptos a trocar informaes usando o protocolo TCP. Se por algum motivo, as
informaes enviadas pela origem no estiverem corretas, a sesso no ser estabelecida e
uma mensagem de erro ser enviada de volta ao computador de origem.

Depois de concludo o tree-way handshake inicial, os segmentos so enviados e confirmados de forma


seqencial entre os hosts remetente e destinatrio. Um processo de handshake semelhante usado
pelo TCP antes de fechar a conexo para verificar se os dois hosts acabaram de enviar e receber todos
os dados.
Os segmentos TCP so encapsulados e enviados em datagramas IP, conforme apresentado na figura a
seguir, obtida na ajuda do Windows 2000 Server:

O conceito de Portas TCP


Os programas TCP usam nmeros de porta reservados ou conhecidos, conforme apresentado na
seguinte ilustrao, da ajuda do Windows 2000 Server:

O que uma Porta TCP?


Bem, sem entrar em detalhes tcnicos do TCP/IP, vou explicar, atravs de um exemplo prtico, o
conceito de porta. Vamos imaginar um usurio, utilizando um computador com conexo Internet. Este
usurio, pode, ao mesmo tempo, acessar um ou mais sites da Internet, usar o Outlook Express para ler
suas mensagens de email, estar conectado a um servidor de FTP, usando um programa como o WS-FTP,
para fazer download de um ou mais arquivos, estar jogando DOOM atravs da Internet e assim por
diante.
Todas as informaes que este usurio recebe esto chegando atravs de pacotes que chegam at a
placa de Modem ou at o Modem ADSL, no caso de uma conexo rpida. A pergunta que naturalmente
surge :
Como o sistema sabe para qual dos programas se destina cada um dos pacotes que esto
chegando no computador?
Por exemplo, chega um determinado pacote. Este pacote para uma das janelas do Navegador, para
o cliente de FTP, um comando do DOOM, referente a uma mensagem de email ou quem o
destinatrio deste pacote? A resposta para esta questo o mecanismo de portas utilizado pelo TCP/IP.
Cada programa trabalha com um protocolo/servio especfico, ao qual est associado um nmero de
porta. Por exemplo, o servio de FTP, normalmente opera na porta 21 (na verdade usa duas portas,
uma para controle e outra para o envio de dados). Todo pacote que for enviado do servidor FTP para o
cliente, ter, alm dos dados que esto sendo enviados, uma srie de dados de controle, tais como o
nmero do pacote, cdigo de validao dos dados e tambm o nmero da porta. Quando o pacote
chega no seu computador, o sistema l no pacote o nmero da porta e sabe para quem encaminhar o
pacote. Por exemplo, se voc est utilizando um cliente de FTP para fazer um download, os pacotes que
chegarem, com informao de Porta = 21, sero encaminhados para o cliente de FTP, o qual ir ler o
pacote e dar o destino apropriado. Outro exemplo, o protocolo HTTP, utilizado para o transporte de
informaes de um servidor Web at o seu navegador, opera, por padro, na porta 80. Os pacotes que
chegarem, destinados porta 80, sero encaminhados para o navegador. Se houver mais de uma janela
do navegador aberta, cada uma acessando diferentes pginas, o sistema inclui informaes, alm da
porta, capazes de identificar cada janela individualmente. Com isso, quando chega um pacote para a
porta 80, o sistema identifica para qual das janelas do navegador se destina o referido pacote.

Nmeros de porta
Os nmeros de porta so divididos em trs intervalos: as conhecidas portas, portas registrado e o
dinmico e/ou portas particular. Portas conhecidas so aqueles de 0 a 1023.The portas registrados so
aqueles de 1024 a 49151. O dinmico e/ou portas particulares so aqueles de 49152 a 65535.
Portas conhecidas so atribudas por Internet Assigned Numbers Authority (IANA) e s devem ser
usadas por processos do sistema ou por programas executados por usurios privilegiada. Um exemplo
desse tipo de porta 80/TCP e UDP/80. Essas portas so privilegiada e reservado para uso pelo
protocolo HTTP.
Portas registradas so listadas pela IANA e na maioria dos sistemas podem ser usadas por processos de
usurio comum ou programas executados por usurios comuns. Um exemplo desse tipo de porta
1723/TCP e UDP/1723. Embora essas portas podem ser usadas por outros processos que eles
geralmente so aceitos como a porta de controle de conexo para ponto para ponto Tunnelling PPTP
(protocolo).
Dinmico ou portas particular pode ser usadas por qualquer processo ou usurio. Eles so irrestritos.
IANA mantm uma lista das portas no site da Web em:
http://www.iana.org/assignments/port-numbers
Em resumo: O uso do conceito de portas, permite que vrios programas estejam em funcionamento,
ao mesmo tempo, no mesmo computador, trocando informaes com um ou mais servios/servidores.
O lado do servidor de cada programa que usa portas TCP escuta as mensagens que chegam no seu
nmero de porta conhecido. Todos os nmeros de porta de servidor TCP menores que 1.024 (e alguns
nmeros mais altos) so reservados e registrados pela Internet Assigned Numbers Authority (IANA,
autoridade de nmeros atribudos da Internet). Por exemplo, o servio HTTP (servidor Web), instalado
em um servidor, fica sempre escutando os pacotes que chegam ao servidor. Os pacotes destinados a
porta 80, sero encaminhados pelo sistema operacional para processamento do servidor Web.
A tabela a seguir uma lista parcial de algumas portas de servidor TCP conhecidas usadas por
programas baseados em TCP padro.
Nmero de porta TCP Descrio
Servidor FTP (File Transfer Protocol, protocolo de
20
transferncia de arquivo) (canal de dados)
21
Servidor FTP (canal de controle)
23
Servidor Telnet
Transferncias de zona DNS (Domain Name System,
53
sistema de nomes de domnios)
Servidor da Web (HTTP, Hypertext Transfer Protocol,
80
protocolo de transferncia de hipertexto)
139
Servio de sesso de NetBIOS

UDP Uma Viso Geral


O User Datagram Protocol (UDP) um padro TCP/IP e est definido pela RFC 768, "User Datagram
Protocol (UDP)." O UDP usado por alguns programas em vez de TCP para o transporte rpido de dados
entre hosts TCP/IP. Porm o UDP no fornece garantia de entrega e nem verificao de dados. De uma
maneira simples, dizemos que o protocolo UDP manda os dados para o destino; se vai chegar ou se vai
chegar corretamente, sem erros, s Deus sabe. Pode parecer estranho esta caracterstica do UPD,
porm voc ver que em determinadas situaes, o fato de o UDP ser muito mais rpido do que o TCP
(por no fazer verificaes e por no estabelecer sesses), o uso do UDP recomendado.
O protocolo UDP fornece um servio de pacotes sem conexo que oferece entrega com base no melhor
esforo, ou seja, UDP no garante a entrega ou verifica o seqenciamento para qualquer pacote. Um
host de origem que precise de comunicao confivel deve usar TCP ou um programa que oferea seus
prprios servios de seqenciamento e confirmao.
As mensagens UDP so encapsuladas e enviadas em datagramas IP, conforme apresentado na seguinte
ilustrao, da ajuda do Windows 2000 Server:

Portas UDP
O conceito de porta UDP idntico ao conceito de portas TCP, embora tecnicamente, existam diferenas
na maneira como as portas so utilizadas em cada protocolo. A idia a mesma, por exemplo, se um
usurio estiver utilizando vrios programas baseados em UDP, ao mesmo tempo, no seu computador,
atravs do uso de portas, que o sistema operacional sabe a qual programa se destina cada pacote UDP
que chega.
O lado do servidor de cada programa que usa UDP escuta as mensagens que chegam no seu nmero de
porta conhecido. Todos os nmeros de porta de servidor UDP menores que 1.024 (e alguns nmeros
mais altos) so reservados e registrados pela Internet Assigned Numbers Authority (IANA, autoridade
de nmeros atribudos da Internet).
Cada porta de servidor UDP identificada por um nmero de porta reservado ou conhecido. A tabela a
seguir mostra uma lista parcial de algumas portas de servidor UDP conhecidas usadas por programas
baseados em UDP padro.
Nmero de porta UDP Descrio
Consultas de nomes DNS (Domain Name System, sistema de
53
nomes de domnios)
69
Trivial File Transfer Protocol (TFTP)
137
Servio de nomes de NetBIOS
138
Servio de datagrama de NetBIOS
161
Simple Network Management Protocol (SNMP)
Routing Information Protocol (RIP, protocolo de informaes
520
de roteamento)
Para obter uma lista atualizada e completa de todas as portas TCP conhecidas e registradas atualmente,
consulte o seguinte endereo:
http://www.iana.org/assignments/port-numbers

Comparando UDP e TCP:


Geralmente, as diferenas na maneira como UDP e TCP entregam os dados assemelham-se s
diferenas entre um telefonema e um carto postal. O TCP funciona como um telefonema, verificando se
o destino est disponvel e pronto para a comunicao. O UDP funciona como um carto postal as
mensagens so pequenas e a entrega provvel, mas nem sempre garantida.
UDP geralmente usado por programas que transmitem pequenas quantidades de dados ao mesmo
tempo ou tm necessidades em tempo real. Nessas situaes, a baixa sobrecarga do UDP (pois este no
faz as verificaes que so feitas pela TCP) e as capacidades de broadcast do UDP (por exemplo, um
datagrama, vrios destinatrios) so mais adequadas do que o TCP.

O UDP contrasta diretamente com os servios e recursos oferecidos por TCP. A tabela a seguir compara
as diferenas em como a comunicao TCP/IP tratada dependendo do uso de UDP ou TCP para o
transporte de dados.

UDP

TCP

Servio sem conexo; nenhuma sesso


estabelecida entre os hosts.

Servio orientado por conexo; uma sesso


estabelecida entre os hosts.

UDP no garante ou confirma a entrega ou


seqncia os dados.

TCP garante a entrega atravs do uso de


confirmaes e entrega seqenciada dos dados.

Os programas que usam UDP so responsveis


Os programas que usam TCP tm garantia de
por oferecer a confiabilidade necessria ao
transporte confivel de dados.
transporte de dados.
UDP rpido, necessita de baixa sobrecarga e TCP mais lento, necessita de maior sobrecarga
pode oferecer suporte comunicao ponto a e pode oferecer suporte apenas comunicao
ponto e ponto a vrios pontos.
ponto a ponto.
Tanto UDP quanto TCP usam portas para identificar as comunicaes para cada programa TCP/IP,
conforme descrito anteriormente.
Fragmentao
Um pacote IP pode ter um tamanho de at 64 Kbytes. Entretanto o nvel de rede geralmente tem um
tamanho mximo menor que 64K. Por exemplo, uma rede Ethernet pode transmitir uma mensagem de
at 1500 bytes. Este valor chamado de MTU - Maximum Transmission Unit - para este tipo de rede. A
camada IP deve ento ser capaz de dividir um pacote IP maior que 1500 bytes em diversos fragmentos
de at 1500 bytes cada um.
A fragmentao do pacote IP pode ocorrer na mquina origem ou em algum roteador que possua uma
rede com MTU menor que o tamanho do pacote IP sendo roteado. Note que durante o percurso at o
destino, um fragmento pode ser novamente fragmentado se o MTU da rede seguinte for ainda menor
que o tamanho do fragmento. A remontagem do pacote s realizada pela mquina destino, baseado
nas informaes de FRAGMENT OFFSET e bit MF. A perda de um fragmento inutiliza o datagrama inteiro.
O campo FRAGMENT OFFSET identifica a posio em Bytes do fragmento face ao pacote IP completo
conforme pode ser visto nas figuras abaixo:

4 5

63784
20
OCTETOS

4020

00000000

000

UDP

01F5

139.82.17.20
206.12.56.23
DVB9834H4K432BVIVV
FVNEOFVHNOEF9345F
342589J3948302FJJFV

4000
OCTETOS

Fragmento 1
4 5
8

1500

00000000

63784
UDP

Fragmento 2
0

100

0756

4 5

63784
8

1500

00000000

UDP

100

1480
0FD0

Fragmento 3
4 5

63784
8

1060

00000000

UDP

000

2960
4AFF

139.82.17.20

139.82.17.20

139.82.17.20

206.12.56.23

206.12.56.23

206.12.56.23

Primeiros 1480 octetos

Prximos 1480 octetos

ltimos 1040 octetos