8 votos

¿Cómo llegan los servicios de mensajes en la nube a los dispositivos que están detrás de un NAT/cortafuegos?

Recibir notificaciones push con dispositivos con una IP local funciona bien. Sólo me pregunto cómo es que funciona. ¿Es sólo uPnP? ¿El dispositivo inicia la comunicación con el servicio de mensajería en la nube y luego entra la IGD? Así que el mapeo se mantiene ¿El cliente de notificaciones push mantiene una conexión constante con el servidor en la nube? Me gustaría pensar que 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?

6voto

Michael Hampton Puntos 1470

Como se puede imaginar, Google está bastante callado en cuanto a los detalles de su aplicación. Así que me limitaré a describirlo en el caso general y de forma muy básica.

La forma en que se realiza el push es que el cliente (es decir, el teléfono) abre una conexión TCP con el 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 está transmitiendo nada, por lo que no gasta muchos datos, el transmisor de radio puede apagarse, etc.

La conexión puede permanecen abiertas indefinidamente, sin embargo, detrás de una NAT, la infraestructura de la NAT mantiene una tabla de las conexiones abiertas que está manejando, y elimina las conexiones que han estado inactivas durante algún tiempo, generalmente de 10 a 15 minutos. Ninguno de los dos extremos recibe notificación de esto. Así que esto se maneja enviando un paquete TCP keep-alive que refresca la entrada en la tabla de conexiones NAT del operador. Esto sólo cuesta unos 50 bytes más o menos, y sólo tiene que hacerse cada pocos minutos.

PreguntAndroid.com

PreguntAndroid es una comunidad de usuarios de Android en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X