Pergunta

Recentemente, notei que não preciso encaminhar portas para o MMORPG que toco.

Estou pensando em trabalhar em um jogo que as pessoas podem jogar on -line e tive uma pergunta.

Por que esse é o caso, considerando uma conexão de soquete de duas vias que está constantemente enviando dados de um lado para o outro? O servidor deles não precisa passar pelo meu firewall para me conectar a mim?

Foi útil?

Solução

Lição de falha do TCP: o TCP é um protocolo de mão dupla. O desafio é que pelo menos um host precisa iniciar. Como dentro de um MMORPG, seu próprio computador nunca atua como servidor, ninguém precisa se conectar a ele. Todas as informações sobre o estado de jogo são passadas pelos servidores públicos da empresa que têm endereços IP voltados para o público (e ei, talvez eles realmente usem o encaminhamento de porta para lá, apenas para confundir minha explicação ... mas você nunca precisa ver seus belos internos de rede , proxies e outros magos.).

De qualquer forma, quando você se conecta ao StackOverflow, está fazendo uma conexão de saída que solicita dados do servidor e, em seguida, sobre a mesma conexão que está recebendo de volta. O mesmo cenário exato, apenas com um servidor da web em vez de um jogo.

Outras dicas

Upnp Permite que você lide com muitos roteadores. Há também Nat Punch-through Se você tem acesso a terceiros, não está por trás de um roteador.

De qualquer forma, o encaminhamento de porta só é necessário se você deseja atuar como um servidor (ou o remetente em um relacionamento P2P). Um cliente não precisa encaminhar portas.

Você também não precisa encaminhar portas para acessar a web, apesar dos dados chegarem dentro também.

Quando você faz uma conexão TCP de saída, seu roteador NAT coloca a conexão em uma tabela, para que, quando os dados entrem, ele saiba para qual máquina na sua LAN enviar o pacote.

Todo mundo menciona o TCP, mas o NAT também funciona para o UDP: o primeiro pacote UDP de saída associa que a porta de origem com o endereço IP interno e seu dispositivo NAT encaminhará o tráfego de entrada para essa porta para o host correto na rede interna.

Em outras palavras, se o seu computador solicitar a conexão (saída) primeiro, o roteador abrirá a porta automaticamente, na suposição de que você desejará de volta os dados. Mas se você deseja que os usuários remotos se conectem ao seu computador sem o seu computador solicitando, o roteador normalmente soltaria os pacotes, pois não saberia para onde enviá -los (eles não eram solicitados). Então, em vez disso, você precisa dizer ao roteador para fornecer pacotes não solicitados na porta N no seu computador.

Lamento adicionar outra resposta tão tarde, e eu sei que uma já foi aceita, mas eu pessoalmente achei as outras respostas mais confusas do que essa explicação simples.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top