电子邮件推送在非黑莓手机上究竟是如何运作的?

电子邮件推送在非黑莓手机上究竟是如何运作的?

过去 6 年来,我一直是黑莓用户。我已说服自己改用 Android 设备。我已经开始进行一些 Android 开发,因此拥有一台真正的 Android 设备将是一个额外的好处。

我的问题:非黑莓手机上的推送电子邮件究竟是如何工作的?以下是我通过一些演绎推理得出的结论,但请纠正我:在黑莓上,有黑莓互联网服务或黑莓企业服务。它们是 RIM 控制的服务器,它们汇集您的电子邮件帐户(无论是 gmail 帐户还是您自己的 Linux 机器上的 imap 帐户)以接收新电子邮件。一旦收到新电子邮件,它们就会将该电子邮件推送到您的手机上。它们知道您的手机的位置(其 IP 地址或其他独特特征),因为每次您订阅 GPRS/3G 天线时,您的移动运营商都会通知黑莓,可以通过地址 Z 联系到拥有电话 Y 的客户 X。

现在在非 BB 场景中会发生什么?我自己的运行 imap 的 Linux 服务器(比如 dovecot)如何知道如何联系我的手机来“推送”新邮件?

阅读了一点之后,我偶然发现了 IMAP IDLE,据我所知,这是一个 IMAP 命令,客户端(在本例中是我的手机)使用该命令向服务器发送消息:“嘿,我是客户端 X,我的地址是 Y,所以如果有任何新电子邮件到来,就将其推送到这里”。

这是我逐渐失去理解的地方:这是否意味着每次我从一个移动天线切换到另一个移动天线时(比如说我在路上开车),我的手机都会向我的 dovecot 服务器发送一个新的 IMAP IDLE 命令,说“嘿,我的联系地址已更改,请使用这个”。

当您同时使用 WIFI 和 3G 时会发生什么?您的手机是否发出两个 IMAP IDLE 命令?

最后,所有手机(使用数据套餐)是否都有唯一的 IP 地址?如果没有(比如说电信公司将您设置为 NAT),我的 imap 服务器如何与我的设备建立通信?

正如您所看到的,我有点迷茫,如果能提供更多信息我将非常感激。

答案1

Does this mean that each time I switch from one mobile antenna to the next 
(say i'm driving down the road) my phone will send a new IMAP IDLE command
to my dovecot server saying "Hey, my contact address has changed, 
please use this one".

- IP 连接

您的手机与基站通信时使用的协议栈与您用于与互联网建立“数据”连接的 TCP/IP 堆栈不同(例如s7堆栈)。当您在基站之间漫游时,IP 堆栈无法感知这些变化。您的手机仍然始终使用相同的 IP(通常如此)(除非您长途跋涉,而不仅仅是沿着道路到达下一个基站,而是到达运营商已分配单独地理 IP 块的地方)。

- 单一默认路由

当您同时使用 WIFI 和 3G 时会发生什么?您的手机是否发出两个 IMAP IDLE 命令?

不会,您的手机只会使用其中一个在互联网上发送/接收数据(除非您拥有某种神奇的负载平衡手机,我从未见过,但嘿,我们不可能都见过所有的东西!)。它将选择一个首选的,并通过该介质(当然通常是 wifi)在其路由表中安装默认路由。

Finally, do all mobile phones (with a data plan) have unique IP addresses?

- 你也知道,存在短缺问题 ;)

这确实非常罕见,事实上我从未见过,只是听说过。所以我仍然不相信。给每个移动用户一个公共 IP 太浪费了,就像给家里的每台电脑一个公共 IP 一样。你家里能上网的手机可能和电脑一样多。使用一个 wifi AP,它们都可以共享 1 个 IP。对于“典型”家庭使用来说,这是理所当然的。

If not (say the telco NATs you) how can my imap server initiate a 
communication to my device?

单端口/UPNP- 你不需要“完全”的 IP 可见性

为了让您的手机与您的服务器通信(通过 IMAP),您将从手机上 1024 以上的随机传出端口号连接到 TCP 端口 143(或者如果您聪明的话可能是 993)。运营商的 NAT 设备可以在他们的 GCN 设备中创建一个 NAT 状态表条目,将您的手机私有 IP 和源端口映射到您的服务器公共 IP 和端口号。这将解释NAT进一步。但本质上,你只需要连接到一个端口,这对于 NAT 来说相当简单。另一种选择(例如家用路由器中经常使用的)是UPnP 转发但这不太可能在运营商层面使用。

总结- IP 变更

因此,当您不断使用 3G 时,当您在各个蜂窝或基站之间漫游时,您与运营商之间的私有 IP 可能会发生变化,但与 IMAP 服务器通信的公共 IP 应该保持不变,因此 IMAP 连接应该保持活动状态。如果您更改公共 IP 映射,可能发生的最坏情况是 IMAP 服务器无法识别 IDLE 提示以保持连接活动,因为它无法将其识别为已经通过身份验证的会话,因此假设您的 IMAP 用户名和密码已保存到您的手机中,它应该只需从您的新公共 IP 重新进行身份验证(取决于手机和邮件应用程序,但这是我发现 9/10 次的行为)。

如果您连接到无线接入点,情况也应该如此。如果 IMAP 服务器出现故障,您只需从新 IP 重新进行身份验证并照常进行即可。

相关内容