Portas são portas. Um programa cria uma porta conforme necessário e realiza operações de E / S através dela (o mesmo que ler / gravar um arquivo, exceto por meio de uma porta em vez de um caminho de arquivo). O processo é responsável por todas as operações na porta, incluindo configuração e desmontagem, independentemente do sistema operacional envolvido. Tudo isso é definido nos protocolos da camada de transporte (TCP, UDP, etc.) que todos os computadores devem implementar para participar de redes IP como a Internet.
As portas são necessárias para que um pacote possa diferenciar qual serviço / processo no host remoto deseja conversar. caso contrário, todos os endereços IP poderão hospedar exatamente um serviço. com portas, você pode executar um servidor web em 80, um servidor de e-mail em 25, e um servidor de dns em 53. baseado no número da porta, nós sabemos para qual serviço cada pacote é.
veja a interface de programação Sockets para mais informações sobre como os aplicativos usam portas para comunicação.
Os firewalls não têm nada a ver com as próprias portas, além de poderem processar pacotes de maneira diferente, dependendo do atributo de porta que eles observam à medida que o pacote passa por eles.
para que uma porta seja "aberta", ela deve ter um processo de escuta e um caminho acessível pelo qual os sistemas remotos possam acessá-la. Firewalls e NAT frequentemente bloqueiam pacotes endereçados a portas específicas, mas eles não afetam se a porta está realmente aberta.