Obviamente, o uso mais comum da palavra porto refere-se ao transporte. A computação, no entanto, também usa o termo porta. Na verdade, ele tem dois usos. A primeira refere-se ao soquete no qual um cabo pode ser conectado. Exemplos típicos incluem uma porta USB ou Ethernet. Tecnicamente, um soquete ethernet pode ser considerado uma porta de rede. Esse não é o significado aceito da palavra porta em rede. Uma porta de rede é um número lógico que identifica a qual processo ou serviço de rede o tráfego de rede se destina ou é enviado.
Por que os números de porta são necessários?
Quando seu computador se comunica com um servidor web na internet, ele coloca seu endereço IP no campo do remetente. Isso permite que o servidor saiba para qual endereço IP ele precisa enviar a resposta. Quando essa resposta retornar ao seu computador, seu navegador interpretará a resposta e renderizará a página da web.
Isso funciona bem em um sistema idealizado com um software fazendo e recebendo tráfego de rede. O mundo real não é assim, no entanto. Em qualquer computador, existe uma gama de softwares que fazem o tráfego de rede. Para garantir que o tráfego de rede seja entregue corretamente ao programa certo, em alguns casos, o processo adequado em um programa. Uma camada de endereçamento final é usada no número da porta.
Imagine ter um navegador web com duas abas abertas e um videogame online simultaneamente. Cada guia do navegador deve ser capaz de enviar e receber tráfego de rede, potencialmente simultaneamente. O jogo online também precisa enviar e receber tráfego de rede. Você não quer que seu jogo tenha que filtrar respostas aleatórias da web e também não quer que seu navegador precise filtrar o tráfego do seu jogo. Ambas as guias e o jogo receberão pelo menos uma porta de rede cada, para que o processo de destinatário pretendido possa ser facilmente determinado.
O mesmo também funciona para servidores. Suponha que você tenha um servidor que executa um servidor web e um servidor de e-mail. Nesse caso, o número da porta permite que o sistema operacional diferencie facilmente quais pacotes de rede são destinados a qual serviço.
O que são números de porta?
Os números de porta assumem a forma de um inteiro sem sinal de 16 bits. Isso significa que há dezesseis bits binários para compor os números, nenhum número negativo e todos os números são inteiros. Isso permite 65536 números de porta possíveis que variam de 0 a 65535. Não há sistema de porta física.
Todo o esquema de endereçamento, como com endereços IP e endereços MAC, é totalmente lógico. Você pode pensar nos endereços IP e MAC como o endereço em uma carta para levá-la à sua casa/computador. Nesta analogia, o número da porta seria como o nome no envelope, garantindo que ele chegue à pessoa/processo certo em sua casa/computador.
Dentro do espaço do número da porta, há alguma outra estrutura. A porta número 0 está reservada. No tráfego TCP, 0 é totalmente não utilizado. No tráfego UDP, o número da porta é opcional, com uma porta 0 significando “sem porta”. Isso funciona para o UDP porque é um protocolo sem estado que não espera necessariamente uma resposta. As portas TCP e UDPs são separadas. Um serviço pode se ligar a uma ou mais portas em um ou ambos os protocolos. Os serviços que usam ambos normalmente se conectam aos mesmos números de porta em TCP e UDP.
As portas 1-1023 são conhecidas como portas “conhecidas” e geralmente exigem permissões administrativas para vincular. Algumas portas conhecidas são 80 para HTTP, 443 para HTTPS e 53 para DNS. Em seguida, você tem o intervalo 1024 – 49151. Elas são conhecidas como portas “registradas”. Essas são portas usadas regularmente por determinados serviços, mas isso não é comum o suficiente ou não foi cedo o suficiente para obter um número abaixo de 1023. As portas entre 49152 e 65535 são conhecidas como portas efêmeras.
O uso de números de porta
A IANA, a Internet Assigned Numbers Authority, mantém as listas de portas conhecidas e registradas. As portas conhecidas têm apenas um serviço associado a elas. As portas registradas, no entanto, podem ter uma matriz de serviços conhecidos que usam a porta por padrão.
Geralmente, nada impede que qualquer programa seja vinculado a qualquer número de porta. Como mencionado acima, os números de porta abaixo de 1024 tendem a exigir permissões administrativas ou de root para vincular. Ainda assim, você pode forçar qualquer serviço a se ligar à porta 80, por exemplo, mesmo que não seja um servidor web. Os números de porta nos intervalos conhecidos e registrados tendem a ser usados apenas por ouvintes de rede, com portas efêmeras geralmente usadas para iniciar conexões.
Um ouvinte é uma porta que é aberta e deixada aberta. Ele escuta as mensagens para que possa processá-las e enviar uma resposta. Este é quase exclusivamente o comportamento de serviços do tipo servidor, como um servidor web. O servidor web seria hospedado nas portas 80 e 443, enquanto um navegador conectado a essas portas usaria localmente uma porta efêmera.
Números de porta padrão para ouvintes de aplicativos significam que é fácil saber como realmente se conectar a um serviço. Por exemplo, quando você coloca HTTPS na frente de uma URL, seu navegador assume por padrão que ele precisa se conectar à porta 443. Em alguns casos, os listeners serão configurados em portas alternativas. Isso pode ocorrer porque outro serviço ou versão do serviço já está usando a porta padrão. Também pode ser uma tentativa de segurança através da obscuridade.
Conclusão
Uma porta de rede é um endereço lógico. O software pode se vincular a uma porta, de modo que o sistema operacional saiba que qualquer tráfego enviado a essa porta é destinado a esse processo. Os números de porta variam de 0 a 65535. Muitos serviços estão associados a um número de porta padrão. Os servidores usam essas portas, enquanto os dispositivos que se conectam a eles usam portas aleatórias de alto número. Isso permite uma conexão padrão fácil aos serviços e garante que a conexão com esse serviço não o impeça de hospedar outro serviço por conta própria.