Recebendo pacotes UDP sem encaminhamento de porta

0

Acabei de testar um código remetente / remetente do udp e não consegui entender o encaminhamento de porta.

Um é meu PC em uma rede não encaminhada pela porta, e B é um servidor UDP no meu vps, que é encaminhado por porta.

  • caso 1:

A começa a ouvir os pacotes udp na porta X . O vps (B) envia pacotes da porta Y , mas A não os obtém porque não é encaminhado por porta.

  • caso 2:

Mas quando A envia algo para o servidor (B) e o servidor responde, recebo a resposta. Por que isso não precisa do encaminhamento de porta?

A pode estar em uma LAN com vários dispositivos conectados. Como o roteador sabe que o pacote deve ser encaminhado para A no caso 2, mas não no caso 1?

    
por arnab321 25.02.2017 / 22:27

2 respostas

3

A can be in a LAN with several connected devices. How does the router know that the packet has to be forwarded to A in case 2, but not in case 1?

Como os roteadores, firewalls e dispositivos que usam NAT (conversão de endereço de rede) têm uma tabela NAT que controla a entrada pacotes que serão NAT e enviados para o seu destino.

A tabela NAT inclui um endereço IP do dispositivo de origem, um número de porta e um protocolo (TCP / UDP). Então, quando A envia um pacote para B (vps), o dispositivo NAT adiciona um registro à tabela NAT, de modo que quando o pacote é retornado de B , lê o IP, a porta e o protocolo de destino e tenta encontrar uma correspondência na tabela NAT, e a resposta do NAT volta para o servidor A .

A starts listening to udp packets on port X. The vps (B) sends packets from port Y but A doesn't get them because it is not port forwarded.

O servidor A não receberá o pacote, porque ele será descartado pelo seu roteador. Como não há encaminhamento de porta, a tabela NAT não inclui um registro que corresponda ao IP de destino, porta e protocolo.

Quando você tem um dispositivo protegido por um firewall ou roteador e está usando NAT, é necessário usar o encaminhamento de porta para que o roteador saiba que o pacote enviado de B inclui o endereço IP de destino O número da porta e o protocolo do servidor A precisam ser encaminhados para o servidor A e não descartados.

Espero ter respondido sua pergunta.

    
por 26.02.2017 / 01:47
0

A inicia uma conversa com B . Mas B não pode iniciar uma conversa com A .

Quando A iniciar uma conversa com B , B poderá responder a essa conversa. Mas ele ainda não pode começar um com A .

pouco mais técnico

Com A você está iniciando um soquete UDP. Uma vez que o socket UDP tenha iniciado, A pode enviar pacotes para B e B pode responder a ele escrevendo a resposta para o socket. A então lê a resposta. B não pode falar com A porque A não permite que ele inicie o soquete com eles.

Como ele sabe que é você? Bem B não sabe quem você é. O roteador apenas rastreia a associação de soquete que leva a A .

É muito parecido quando você navega pela web. Você é o único a baixar os arquivos e visualizá-los. Você está abrindo uma conexão através da qual você baixou os arquivos. E não o contrário. O servidor web está apenas respondendo às suas solicitações.

    
por 25.02.2017 / 22:31