In che modo i servizi di messaggistica cloud raggiungono i dispositivi dietro NAT / firewall?


8

Ricevere notifiche push con dispositivi con un IP locale funziona correttamente. Mi chiedo solo come funziona. È solo uPnP? Il dispositivo avvia la comunicazione con il servizio di messaggistica cloud e quindi entra in funzione IGD? Rimane quindi la mappatura Il client di notifica push mantiene una connessione costante al server cloud? Vorrei pensare che non è così.

Sono interessato in particolare a come la notifica push sa come raggiungere il dispositivo dato che si trova dietro un NAT o un firewall. Esiste uno scenario in cui le notifiche push di Google non sarebbero in grado di raggiungere un dispositivo?

Risposte:


6

Come puoi immaginare, Google è piuttosto silenzioso per quanto riguarda i dettagli di implementazione. Quindi descriverò questo nel caso generale e in una forma molto semplice.

Il modo in cui viene eseguito il push è che il client (ad es. Il telefono) apre una connessione TCP al server di messaggistica (ad es. Google). Questa connessione è destinata a rimanere aperta fino a quando il telefono è acceso. Fortunatamente una connessione TCP non utilizza assolutamente alcuna larghezza di banda quando non trasmette nulla, quindi non spreca molti dati, il trasmettitore radio può spegnersi, ecc.

La connessione può rimanere aperta indefinitamente, tuttavia dietro un NAT, l'infrastruttura NAT mantiene una tabella di connessioni aperte che sta gestendo e rilascia connessioni che sono inattive da un po 'di tempo, in genere 10-15 minuti. Nessuna delle due parti riceve una notifica. Quindi questo viene gestito inviando un pacchetto keep-alive TCP che aggiorna la voce nella tabella di connessione NAT del corriere. Questo costa solo circa 50 byte circa e deve essere eseguito solo ogni pochi minuti.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.