¿Cómo llegan los servicios de mensajes en la nube a dispositivos detrás de NAT / firewall?

8

Obtener notificaciones push con dispositivos con una IP local funciona bien. Me pregunto cómo es que funciona. ¿Es solo uPnP? ¿El dispositivo inicia la comunicación con el servicio de mensajería en la nube y luego se activa IGD? Entonces, la asignación permanece ¿El cliente de notificaciones push mantiene una conexión constante con el servidor de la nube? Me gustaría pensar que ese no es el caso.

Estoy interesado específicamente en cómo la notificación push sabe cómo llegar al dispositivo dado que está detrás de un NAT o firewall. ¿Hay algún escenario en el que las notificaciones push de Google no puedan llegar a un dispositivo?

Cloudraven
fuente

Respuestas:

6

Como puede imaginar, Google es bastante silencioso con respecto a los detalles de su implementación. Así que solo describiré esto en el caso general y en una forma muy básica.

La forma en que se realiza la inserción es que el cliente (es decir, el teléfono) abre una conexión TCP al servidor de mensajería (por ejemplo, Google). Esta conexión debe permanecer abierta mientras el teléfono esté encendido. Afortunadamente, una conexión TCP no utiliza absolutamente ningún ancho de banda cuando no transmite nada, por lo que no desperdicia muchos datos, el transmisor de radio puede apagarse, etc.

La conexión puede permanecer abierta indefinidamente, sin embargo, detrás de un NAT, la infraestructura NAT mantiene una tabla de conexiones abiertas que está manejando y deja caer las conexiones que han estado inactivas durante algún tiempo, generalmente 10-15 minutos. Ningún extremo recibe notificación de esto. Entonces, esto se maneja enviando un paquete TCP keep-alive que actualiza la entrada en la tabla de conexión NAT del operador. Esto solo cuesta alrededor de 50 bytes, y solo debe hacerse cada pocos minutos.

Michael Hampton
fuente