Portas TCP e UDP

Introdução

Muita gente já ouviu dizer que instalar um firewall é uma boa maneira de proteger o PC, já que ele controla o uso das portas. Por outro lado, há pessoas que descobrem que é necessário liberar uma determinada porta em seu computador para que um dado programa funcione. Quando alguém fala dessas portas, está se referindo às portas TCP e UDP, que são meios utilizados por softwares e serviços do sistema operacional para a comunicação em rede e, conseqüentemente, na internet.

O InfoWester apresenta a seguir explicações que lhe ajudarão a entender melhor os conceitos e utilidades dessas portas. Para tanto, é conveniente apresentar primeiro uma descrição dos protocolos TCP e UDP.

O protocolo TCP

A comunicação pela internet é feita, basicamente, através de protocolos, sendo o TCP (Transmission Control Protocol) um dos mais importantes deles. Isso porque o TCP está incluído no conjunto de protocolos que formam o TCP/IP, a base de comunicação via dados de toda a internet. De acordo com a definição dada por Júlio Battisti neste artigo, as principais características do TCP são:

:: Garantir a entrega de datagramas IP: esta talvez seja a principal função do TCP, ou seja, garantir que os pacotes sejam entregues sem alterações, sem terem sido corrompidos e na ordem correta. O TCP tem uma série de mecanismos para garantir esta entrega;

:: Executar a segmentação e o reagrupamento de grandes blocos de dados enviados pelos programas, garantir o seqüenciamento adequado e a entrega ordenada de dados segmentados: esta característica refere-se ao recurso de dividir grandes arquivos em pacotes de dados 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.

:: Verificar a integridade dos dados transmitidos usando cálculos de soma de verificação: o TCP faz verificações para garantir que os dados não foram alterados ou corrompidos durante o transporte entre a origem e o destino.

:: Enviar mensagens positivas dependendo do recebimento bem-sucedido dos dados. Ao usar confirmações seletivas, também são enviadas confirmações negativas para os dados que não foram recebidos: no destino, o TCP recebe os pacotes de dados, verifica se estão ok e, em caso afirmativo, envia uma mensagem para a origem, confirmando cada pacote que foi recebido corretamente. Caso um pacote não tenha sido recebido ou tenha sido recebido com problemas, o TCP envia uma mensagem ao computador de origem, solicitando uma retransmissão do pacote. Com esse mecanismo, apenas pacotes com problemas terão que ser reenviados, o que reduz o tráfego na rede e agiliza o envio dos pacotes.

:: Oferecer um método preferencial de transporte de programas que devem usar transmissão confiável de dados baseada em sessões, como bancos de dados cliente/servidor e programas de correio eletrônico: o TCP é muito mais confiável do que protocolos como o UDP (explicado adiante) e é indicado para programas e serviços que dependam de uma entrega confiável de dados.

O funcionamento do TCP é baseado em conexões. Assim, para um computador cliente iniciar uma "conversa" com um servidor, é necessário enviar um sinal denominado SYN para este último. O servidor então responde enviando um sinal SYN combinado com um sinal de nome ACK para confirmar a conexão. O cliente responde com outro sinal ACK, fazendo com que a conexão esteja estabelecida e pronta para a troca de dados. Por ser feita em três transmissões, esse processo é conhecimento como three-way handshake (algo como triplo aperto de mãos).

Processo three-way handshake

Protocolo UDP

O UDP (User Datagram Protocol) é tido como um protocolo "irmão" do TCP, mas é mais simples e também menos confiável. Isso acontece porque o funcionamento do TCP é, como já dito, baseado em conexões, o que não ocorre com o UDP. Como conseqüência, não há procedimentos de verificação no envio e recebimento de dados (todavia, pode haver checagem de integridade) e se algum pacote não for recebido, o computador de destino não faz uma nova solicitação, como acontece com o TCP. Tudo isso faz do UDP um pouco mais rápido, porém inutilizável em certas aplicações.

Por essas características, pode parecer que o UDP é inútil, mas não é. Há aplicações em que é preferível entregar os dados o mais rapidamente possível, mesmo que algumas informações se percam no caminho. É o caso, por exemplo, das transmissões de vídeo pela internet (streaming), onde a perda de um pacote de dados não interromperá a transmissão. Por outro lado, se os pacotes não chegarem ou demorarem a chegar, haverá congelamentos na imagem, causando irritação no usuário.

Portas TCP e portas UDP

Agora que você já conhece algumas características dos protocolos TCP e UDP, já está apto a entender o conceito de portas. Para uma compreensão mais fácil, usaremos o seguinte exemplo: suponha que, neste momento, você esteja usando um navegador de internet, um cliente de e-mail e um software de comunicação instantânea. Todas essas aplicações fazem uso da sua conexão à internet, mas como o computador faz para saber quais os dados que pertencem a cada programa? Simples, pelo número da porta que cada um utiliza. Por exemplo, se você está usando um programa de FTP (File Transfer Protocol), a conexão à internet é feita pela porta TCP 21, que é uma porta convencionada a este protocolo. Se estiver baixando arquivos pelo BitTorrent, uma das portas que vão de 6881 à 6889 estará sendo utilizada para tal atividade.

Compare seu computador a um prédio. Ao chegar uma correspondência, é necessário saber a qual apartamento entregá-la. Se no envelope estiver escrito que o destino é o apartamento número 123, onde reside Fulano, basta fazer a entrega. Em seu computador, o conceito é o mesmo: basta substituir a correspondência pelo pacote de dados, o apartamento pela porta e o Fulano pelo programa. No entanto, é importante frisar que um aplicativo pode utilizar mais de uma porta.

Ilustração de uso de portas TCP

Ao todo, é possível usar 65536 portas TCP e UDP, começando em 1. Tanto no protocolo TCP como no UDP, é comum o uso das portas de 1 a 1024, já que a aplicação destas é padronizada pela IANA (Internet Assigned Numbers Authority). De acordo com essa entidade, eis algumas das portas TCP mais utilizadas:

:: 21 - FTP;
:: 23 - Telnet;
:: 25 - SMTP;
:: 80 - HTTP;
:: 110 - POP3;
:: 143 - IMAP;
:: 443 - HTTPS.

A IANA disponibiliza uma lista completa e atualizada da utilização das portas TCP e UDP nesta página.

Dependendo do caso, uma aplicação não precisa, necessariamente, estar restrita a um dado conjunto de portas. É possível utilizar outras, mas é necessário que isso seja especificado. É por isso, por exemplo, que há determinados endereços na internet que são disponibilizados assim: http://www.site.com:abcd, onde abcd é o número da porta. Neste caso, seu computador está sendo orientado a acessar o endereço pela porta abcd.

Finalizando

É graças ao conceito de portas que você consegue utilizar vários serviços ao mesmo tempo na internet. No entanto, isso também pode representar um perigo, razão pela qual é importante ter controle sob o tráfego de dados nas portas TCP e UDP. O uso de firewalls, por exemplo, ajuda a impedir que aplicações maliciosas utilizem portas abertas no computador para atividades prejudiciais. Além disso, um administrador de redes pode fazer configurações manuais para que determinadas portas fiquem bloqueadas, impedindo a conexão de aplicativos que fazem uso destas.

Caso queira ir mais a fundo no assunto, é recomendável estudar os seguintes assuntos: TCP/IP e camadas OSI.

Matérias relacionadas:

- Firewall: conceitos e tipos;
- Endereços IP.

Escrito por - Publicado em 11_01_2007 - Atualizado em 11_01_2007