Para qualquer conexão TCP ou UDP, existem quatro componentes que compõem um endereçamento de um pacote. O endereço IP de origem, o endereço IP de destino, a porta de origem e a porta de destino.
O IP de destino é o servidor ao qual você está se conectando e a porta de destino é a porta à qual você está se conectando, como a porta TCP 80 para uma conexão http. A porta de origem é "efêmera", o que significa que ela é escolhida de um intervalo e não possui um significado específico. O intervalo está entre 1024-65535. A seleção da porta depende do sistema operacional, mas não importa muito qual porta é escolhida.
O endereço IP de origem é o PC que origina a conexão. Então vamos dizer que a conexão é para 222.222.222.222:80 e temos dois PCs conectados internamente a este endereço IP, 10.1.1.1 e 10.1.1.2
Assim como os pacotes são originados, eles podem ser endereçados assim:
10.1.1.1:3434 -> 222.222.222.222:80
10.1.1.2:5455 -> 222.222.222.222:80
Os pacotes de resposta estão invertidos, assim:
222.222.222.222:80 -> 10.1.1.1:3434
222.222.222.222:80 -> 10.1.1.2:5455
Assim, podemos ver que a porta de origem é o que permite que o pacote de retorno chegue ao originador.
Quando passamos por um roteador NAT, o IP de origem é alterado para o IP do roteador - nesse caso, 111.111.111.111. Então os pacotes são assim:
111.111.111.111:3434 -> 222.222.222.222:80
111.111.111.111:5455 -> 222.222.222.222:80
Assim, desde que o roteador mantenha um controle da porta de origem de uma conexão, ele saberá que os pacotes de resposta para a porta 3434 devem ser enviados para 10.1.1.1. Esta é a tabela de tradução do NAT.
Mas e se os dois PCs escolhessem a mesma porta de origem?
10.1.1.1:3434 -> 222.222.222.222:80
10.1.1.2:3434 -> 222.222.222.222:80
Os pacotes NATted ficariam assim:
111.111.111.111:3434 -> 222.222.222.222:80
111.111.111.111:3434 -> 222.222.222.222:80
Portanto, um pacote de resposta para o 3434 destinado a 10.1.1.1 é indistinguível do pacote destinado a 10.1.1.2.
Para resolver isso, o roteador não apenas alterará o endereço IP de origem, mas também a porta de origem. Em seguida, o roteador pode garantir que cada saída de conexão tenha uma porta de origem única e mantenha uma tabela de conversão para alterar o IP e a porta dos pacotes de resposta para que eles sejam enviados para o originador correto.
Para responder à sua pergunta de segurança, realisticamente, somente o roteador precisa alterar a porta de origem no caso de uma colisão, mas a maioria alterará a porta de origem em todos os casos e escolherá uma fonte aleatória porta. Isso dificulta a previsão do que a próxima porta de origem escolhida pode ser e dificulta que um invasor injete pacotes na sequência.