Eu acho que a maioria, se não todas, as provedoras usam CGNAT e, devido a um problema recente que tive, estou tentando descobrir uma resposta para uma pergunta antiga que ainda tenho.
Para dar um contexto, vamos supor que eu suba um servidor de um game na porta 30000. Se eu tentar acessar isso usando o IP público da internet, não vou conseguir porque não tem nenhum port forwarding para a porta 30000 do meu PC. Mas então, como é possível eu acessar e jogar um jogo? Afinal, eu me conectaria a uma porta do servidor de um jogo online e ele deve abrir uma conexão comigo, provavelmente na porta padrão do jogo, então de alguma forma essa porta 30000 minha precisa estar aberta para receber pacotes.
E mais, essa porta 30000 não precisaria estar aberta no servidor da minha provedora que tem o meu IP público? Porque o jogo enviaria as coisas para a porta 30000 e ela precisaria estar liberada no servidor da minha provedora.
Aprofundando mais, por que se eu subo algo na porta 80 eu não consigo acessar isso do lado de fora da internet? E, mesmo nada podendo se conectar na porta 80 para falar com meu servidor, eu ainda consigo receber respostas HTTP de sites (sei que seria HTTPS, mas dá no mesmo).
Como um AnyDesk ou algum software que precisa abrir uma porta no seu PC e alguém se conectar funciona mesmo sem fazer nenhuma alteração no seu roteador?
E por fim, todos os meus computadores são vistos do lado de fora como se fossem um mesmo IP, então todos os serviços que recebem as minhas requests montam o pacote como se fossem enviar para esse IP público. Então, como o meu roteador sabe que um pacote da Google N é para o meu PC e um outro X é para o meu celular?
Ps: Eu espero que isso ainda esteja dentro do escopo do fórum Diolinux kkkkkk e também eu sei que várias coisas aí estão erradas, premissas, conclusões minhas etc… mas é justamente porque eu não sei então eu tentei colocar como eu estou pensando nessas coisas.