在过去的 6 年里,我一直是黑莓用户。我说服自己改用 Android 设备。我已经开始了一些 Android 开发,所以拥有一个真正的 android 设备将是一个奖励。
我的问题:推送电子邮件在非黑莓手机中究竟如何工作?这是我通过一些演绎推理收集到的,但请纠正我:在 BB 上,有 Blackberry Internet Service 或 Blackberry Enterprise Service。它们是 RIM 控制的服务器,它们汇集您的电子邮件帐户(无论是 gmail 帐户还是您自己的 linux 机器上的 imap 帐户)以接收新电子邮件。一旦收到新电子邮件,他们就会将该电子邮件推送到您的手机。他们知道您的电话的方式/位置(它的 IP 地址或其他独特特征),因为每次您订阅 GPRS/3G 天线时,您的移动运营商都会通知 BB,可以通过地址 Z 联系到使用电话 Y 的客户 X。
现在在非 BB 场景中会发生什么?我自己运行 imap(比如 dovecot)的 linux 服务器如何知道如何联系我的手机以“推送”新电子邮件?
阅读了一些内容后,我偶然发现了 IMAP IDLE,据我所知,这是客户端(在本例中为我的手机)用来对服务器说的 IMAP 命令:“嘿,我是客户端 X,我的地址是Y,所以如果有任何新电子邮件出现,请将其推送到这里”。
这是我逐渐失去理解的地方:这是否意味着每次我从一个移动天线切换到另一个(假设我正在路上行驶)我的手机都会向我的 dovecot 服务器发送一个新的 IMAP IDLE 命令说“嘿,我的联系地址变了,请用这个”。
当您同时使用 WIFI 和 3G 时会发生什么?您的手机是否发出两个 IMAP IDLE 命令?
最后,是否所有手机(有数据计划)都有唯一的 IP 地址?如果不是(比如电信公司 NATs 你)我的 imap 服务器如何启动与我的设备的通信?
如您所见,我有点迷路了,如果能提供更多信息,我将不胜感激。
否- IP 连接
您的电话正在使用不同于您用来与互联网建立“数据”连接的 TCP/IP 堆栈(例如s7堆栈)的协议堆栈与基站通信。当您从一个基站漫游到另一个基站时,IP 堆栈不知道这些变化。您的电话仍然(通常)一直使用相同的 IP(除非您长途跋涉,而不仅仅是沿着下一个桅杆的道路,到您的运营商分配了单独的地理 IP 块的某个地方)。
否- 单一默认路由
不,你的手机只会使用其中之一在互联网上发送/接收数据(除非你有一些神奇的负载平衡手机,我从未见过,但是嘿,我们不可能都看到一切!)。它会选择一个首选并通过该介质(当然通常是 wifi)将默认路由安装到它的路由表中。
不- “你”知道短缺 ;)
这确实是非常罕见的,事实上我从未见过它只是听说过它。所以我还是不相信。给每个移动用户一个公共 IP 将是非常浪费的,就像给你家里的每台电脑一个公共 IP 一样。您家中拥有的可上网手机的数量可能与 PC 的数量一样多。使用一个 wifi AP,他们可以共享 1 个 IP。“典型”家庭使用无需动脑筋。
单端口/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 服务器有一个 strop,您只需从您的新 IP 重新验证并照常进行。