Como os serviços de mensagens na nuvem alcançam dispositivos protegidos por NAT / firewall?

8

Receber notificações push com dispositivos com um IP local funciona bem. Eu só me pergunto como é que isso funciona. É apenas UPnP? O dispositivo inicia a comunicação com o serviço de mensagens na nuvem e o IGD entra em ação? Portanto, o mapeamento permanece. O cliente de notificação por push mantém uma conexão constante com o servidor em nuvem? Eu gostaria de pensar que não é esse o caso.

Estou interessado especificamente em como a notificação por push sabe como alcançar o dispositivo, uma vez que está atrás de um NAT ou firewall. Existe um cenário em que as notificações por push do Google não poderiam alcançar um dispositivo?

cloudraven
fonte

Respostas:

6

Como você pode imaginar, o Google está bastante quieto em relação aos detalhes de implementação. Então, descreverei isso no caso geral e de uma forma muito básica.

A maneira como o push é feito é que o cliente (ou seja, o telefone) abra uma conexão TCP com o servidor de mensagens (por exemplo, Google). Essa conexão deve permanecer aberta enquanto o telefone estiver ligado. Felizmente, uma conexão TCP não usa absolutamente nenhuma largura de banda quando não está transmitindo nada; portanto, não desperdiça muitos dados, o transmissor de rádio pode desligar etc.

A conexão pode permanecer aberta indefinidamente, no entanto, por trás de um NAT, a infraestrutura do NAT mantém uma tabela de conexões abertas que ele está manipulando e descarta as conexões que ficaram inativas por algum tempo, geralmente de 10 a 15 minutos. Nenhuma extremidade recebe notificação disso. Portanto, isso é tratado enviando um pacote TCP keep-alive que atualiza a entrada na tabela de conexão NAT da operadora. Isso custa apenas cerca de 50 bytes e precisa ser feito a cada poucos minutos.

Michael Hampton
fonte