Table of Contents
This chapter explains why current solutions are bad for the mobile networks and how we designed this server to solve these issues.
In order to understand the complete problem, we need to introduce how the mobile networks work at radio level and also how the carriers have their network infrastructure.
Since on IPv4 the amount of free addresses is really low (it is usually 224 IPs, or 16777216), cellular networks are divided into the ones with real IPv4 addresses (normally for 3G modems) and private addressing model for handsets, usually with NAT protocols.
In the case of private networks, it's obvious that it's not possible to directly notify the handset when the server has a notification for it (because it is behind a NAT), so smartphone manufacturers or mobile OS developers decided to maintain opened channels with their servers so it is possible to notify handsets asynchronously, and only when something happens on the server.
On the other hand, if the handset has a public address, or is using IPv6, it is theoretically possible to send the message directly making third party solutions not useful, however in order to protect users, carriers might deploy firewalls to avoid direct access from Internet to handsets.