Portas TCP e UDP

A porta é um número de 16 bits que é adicionado no final do endereço IP, insinuando qual aplicativo está vinculado e atuando nessa porta.

Categoria de Tecnologia

Postado em 02 maio 2022

Atualizado em 23 junho 2023

Palavras-chave: protocol,protocolo,tcp,udp,internet,packet,pacote,transmission,transmissão

Visualizações: 6430

A entrega de encomendas pelo correio é possível porque cada casa tem um endereço único. Na internet acontece a mesma coisa. Cada dispositivo conectado à internet possui um endereço único, atribuído pelo servidor DHCP.

Porém, além de casas, existem os apartamentos que compartilham o mesmo endereço com outros apartamentos. Para um entregador encontrar o apartamento destino para fazer a sua entrega, ele vai precisar do número do apartamento. Na internet acontece exatamente a mesma coisa.

O que é porta?

A porta é um número que é adicionado no final do endereço IP. A porta é vinculada a um aplicativo que está em execução na máquina cujo endereço IP foi atribuído.

exemplo de endereço IP e porta

No exemplo acima, caso a máquina com o endereço IP 192.168.11.2 permita o acesso na porta 80, uma outra máquina pode acessar o seu conteúdo através da porta 80. Na porta 80, geralmente é permitido o acesso através do protocolo HTTP.

Mesmo tendo o endereço IP de alguma máquina hospedeira, não significa que podemos ter total acesso à ela. Só é possível acessar os aplicativos permitidos pela máquina hospedeira. Uma máquina é programada para permitir acesso em determinadas portas apenas para máquinas autorizadas através da internet.

Quando uma máquina disponibiliza um serviço através de uma porta, ela se torna um servidor. A diferença entre um servidor e um computador é o seu papel na transferência de dados. A máquina que acessa outro computador é chamada de cliente e a máquina que fornece dados é chamada de servidor.

Acesso
Cliente
Servidor

Um computador pode servir como cliente ou servidor. Quando visualizamos algum conteúdo na internet, nosso dispositivo se torna o cliente e o dispositivo que fornece o conteúdo é o servidor. O servidor é capaz de controlar os acessos com tecnologias como firewall e evitar múltiplos acessos em um curto período de tempo (DoS) para aumentar a segurança e manter a acessibilidade.

Uma máquina pode ter múltiplas portas e permitir mais do que um tipo de acesso. Um exemplo é a computação em nuvem que deve ter as suas portas configuradas para permitir o acesso remoto dos clientes através de protocolos específicos e seguros.

Obs: Porta é a expressão em português na área de informação para expressar a palavra “port”. Ambas palavras “porta” e “port” possuem significados diferentes se traduzidas em sua utilização ordinária. Essas palavras só possuem o mesmo significado se usadas na área de informação.

Considere o endereço IP abaixo:
150.94.177.5 150.94.177.5
O endereço IP acima é apenas o endereço IP de alguma máquina conectada à internet. Mesmo não tendo uma porta definida, as configurações desse servidor encaminham o cliente para a porta que permite o acesso. Se o acesso for feito através do navegador e o acesso for permitido, provavelmente a porta que o cliente será encaminhado será 443, onde geralmente atua o protocolo HTTPS.

O número da porta pode ser arbitrário. Porém, utilizamos algumas portas como padrão para alguns aplicativos. A porta 80 é usada como porta padrão para a visualização de sites através do navegador, ou seja, o protocolo HTTP.

Além dessa porta, existem muitas outras portas padrões. Algumas delas são:

Porta Protocolo
20, 21 FTP
22 SSH
25 SMTP
53 DNS
67, 68 DHCP
80 HTTP
110 POP3
443 HTTPS

A razão para usarmos uma porta padrão é para facilitar a identificação do aplicativo que está sendo executado em cada porta. Porém, como medida de segurança, alguns programadores usam portas aleatórias para o acesso.

Em resumo, para um servidor poder ser acessado através da internet, ele precisa ser configurado para liberar uma porta para o acesso externo. Mesmo se um computador ter um endereço IP e estar conectado com a internet, não é possível acessar essa máquina. Entretanto, há excessões onde uma máquina é infectada com malwares como o RAT para obter acesso remoto sem a permissão de um servidor.

A maioria dos protocolos usados na internet são extensões dos protocolos TCP e UDP. Os protocolos TCP e UDP são a base para muitos protocolos usados hoje na internet.

TCP (Transmission Control Protocol)

No modelo OSI, o TCP (protocolo de controle de transmissão) é utilizado na camada de transporte. O TCP permite uma conexão orientada e garante a entrega de dados seja feita entre o servidor e o cliente. Um conexão orientada significa que o servidor e o cliente deve estabelecer a conexão primeiro, e em seguida fazer a transferência de dados.

A unidade de dados básica do TCP é chamada de segmento. Um segmento tem um cabeçalho (header) e carga útil (payload). No cabeçalho são armazenadas informações sobre o segmento, uma dessas informações é a porta de origem e destino.

Máquinas1
Segmentos
Segmentos
Máquina2

Durante o tráfego dos segmentos, imprevistos como problemas de conexão podem acontecer durante o caminho. Nesse caso o TCP reenvia os segmentos e certifica que os dados chegaram em segurança na outra máquina para encerrar a conexão.

Apesar do TCP garantir o envio de dados, ele tem um ponto negativo: a latência. A latência pode se tornar um problema para clientes e servidores que necessitam transferência de dados volumosas em tempo real. Por isso, o TCP é usado em ocasiões onde a latência não apresenta prejuízos para a experiência do usuário, como em e-mails, visualização de sites e download de arquivos.

UDP (User Datagram Protocol)

Assim como o TCP (protocolo de datagrama do usuário), o UDP também também atua na camada de transporte. A unidade de dados do UDP é o datagrama e assim como o segmento TCP, possui cabeçalho e carga útil. A grande diferença do UDP com o protocolo TCP é que ele não garante que os dados cheguem ao computador cliente. O UDP simplesmente continua enviando dados de forma contínua para o cliente sem verificar se os dados chegaram no outro lado. Outro fato importante é que no UDP, um servidor pode realizar troca de dados com múltiplos clientes, ou seja, vários clientes podem acessar um único servidor ao mesmo tempo.

Mesmo não garantindo a entrega de dados, essa forma de transmissão pode ser vantajosa para aplicativos que necessitam alta velocidade de transmissão, como vídeos, jogos online ou conversas online.

Portas TCP e UDP

Como documentado no RFC 1180, os protocolos TCP e UDP ficam situados acima do IP que é o endereço lógico da máquina conectada com a internet externa.

estrutura tcp e udp e ip na internet

A imagem acima mostra a estrutura simplificada dentro de um computador que pode se conectar com a internet. Fora do quadrado, há o campo chamado “conexão” que indica um cabo que conecta o computador com a internet. ARP é um protocolo que gerencia o endereço MAC em relação ao endereço IP. ENET é a forma simplificada de “Ethernet” que indica um cabo com acesso a internet conectado diretamente ao computador.

Observando a imagem acima é possível observar que os protocolos TCP e UDP utilizam o endereço IP para fazer a comunicação entre computadores. No quadrado “IP”, a informação chega em pacotes IP (IP packets) que contém no seu cabeçalho (header) o tipo de protocolo a ser utilizado (TCP ou UDP) na conexão. Na carga útil (payload) do pacote IP, os dados podem ser segmentos TCP ou datagramas UDP. Em outras palavras, um endereço IP usando a mesma porta pode fazer transferência de dados com UDP ou TCP. Porém, há portas que só suportam TCP e portas que suportam apenas UDP.

Abaixo temos uma lista típica dessas portas:

Porta Protocolo Transmissão
20, 21 FTP TCP
22 SSH TCP
25 SMTP TCP
53 DNS TCP, UDP
67, 68 DHCP UDP
80 HTTP TCP
110 POP3 TCP
443 HTTPS TCP

tcp e udp
Exemplo de comunicação TCP e UDP.

A IANA (Autoridade para Atribuição de Números da Internet) é responsável por gerenciar as portas, os aplicativos que atuam nas portas e os protocolos utilizados. Mesmo não sendo padronizado pela IANA aplicativos podem ser vinculados a portas arbitrárias e usar o protocolo mesmo não sendo reconhecido oficialmente.

É importante lembrar que o uso de portas não oficializadas pode levar a problemas de compatibilidade com outros sistemas ou dispositivos de rede, especialmente se houver interação com serviços de terceiros. Alguns sistemas de firewall ou roteadores podem bloquear ou restringir o tráfego em portas não oficializadas por padrão.

Ao usar portas não oficializadas, é recomendável documentar e comunicar claramente a porta que está sendo usada, a fim de evitar conflitos ou problemas de conectividade com outros sistemas.

Conclusão

Aplicativos podem escolher entre TCP e UDP para atender as suas exigências, porém não podem usar ambos protocolos simultaneamente na mesma porta. É importante vincular os aplicativos com seus respectivos protocolos em portas documentadas pela IANA para evitar problemas de compatibilidade no futuro.

Projetos práticos

Implementando um algoritmo de pathfinding

Implementando um programa que encontra a menor distância entre dois pontos dentro de um labirinto usando o algoritmo A* (a-estrela).

Criando o esqueleto de um jogo de tiro 2D visto de cima usando P5.js

Usando lógicas matemáticas como trigonometria para criar e calcular o esqueleto de um jogo de tiro 2D em javascript

Criando artes de texto usando imagens

Convertendo imagens para ascii art usando o valor da intensidade das cores cinzentas.

Desenvolvendo um jogo de quebra blocos em javascript

Programando um jogo clássico de arcade usando javascript e p5.js. O usuário deve quebrar os blocos utilizando uma bola ao mesmo tempo que evita que a bola saia pela parte inferior da tela

Caixa eletrônico usando arquitetura limpa

Usando JavaFX e arquitetura limpa para criar um aplicativo de caixa eletrônico extremamente simples.

Veja também

A digitalização é o jeito moderno de gerenciamento de documentos

Digitalizar documentos facilita o gerenciamento, aumenta a disponibilidade e economiza tempo, consequentemente trazendo muitos outros benefícios.

Os três pilares de segurança da informação são o requerimento mínimo para um serviço seguro

A quantidade de programadores só tende a aumentar com o tempo. Porém, muitos programadores ainda não conhecem os três pilares de segurança da informação.

Link dedicado

Link dedicado é um caminho físico exclusivo que liga a empresa com o provedor diretamente, possibilitando a transferência de dados e o acesso à internet.

Máscara de sub-rede (subnet mask)

Responsável por identificar cada valor dentro de um endereço IP, como endereço da rede, endereço de sub-rede e endereço da máquina hospedeira.

Endereço IP (IP address)

O endereço de protocolo de internet (endereço IP) é o endereço lógico de um dispositivo conectado à uma rede privada pública.

DNS Domain Name System (Sistema de Nomes de Domínio)

Protocolo utilizado para buscar endereços IPs vinculados com um URL solicitado através de um navegador ou aplicativo de email.