2011-05-24 36 views
12

我注意到谷歌C2DM(推)tcp连接使用端口5228.我也知道一些防火墙阻止80 443以外的端口(因为htttp和https),这会导致很多用户抱怨例如,他们无法在他们的公司电话上使用Market应用程序或GTalk。Android C2DM端口号的选择

现在我的问题是:为什么没有谷歌选择端口443或80为他们的持久tcp连接?

回答

12

有我认为谷歌的一些原因可以选择使用5228,而不是80或443

首先,在大多数(但肯定不是全部)的情况下,5228应该不成问题(即阻止),因为推送通知主要用于设备在旅途中。这意味着他们正在使用手机数据连接,不会阻止此端口,也不会受到防火墙限制。其次,在可能存在防火墙(即在公司内部具有WiFi)的环境中,http流量也可能以某种方式被代理或控制。 C2DM不依赖于标准的HTTP协议,预计会是一个长期的连接。这意味着在80/443上运行它可能会在这些环境中导致问题。

第三,在C2DM发布之前,这些服务可能使用了5228,并且没有明确的理由来改变它。根据我的经验,我认为如果他们使用5228作为默认值,并试图在其他情况下回退到443会是理想的(因为肯定有很多情况下443会工作,而5228不会, T)。至少在443的情况下,数据修改的可能性比在端口80上的可能性小,因为协议通常会被加密。但是,仍然有可能在443处过早终止连接。但是,这种风险在任何网络环境中都存在,并且在尝试时不会出现失败。

另外需要注意的是,在443上启用C2DM可能比谷歌似乎更困难,因为他们的分布式前端服务器可能知道如何将80/443流量专门处理为HTTP,并且需要大量重新处理C2DM。

+0

很好的解释! 我只是想知道如何决定是否退回到443?我这样说是因为可能有其他条件,比如没有互联网连接,例如,与WiFi阻塞某些端口无法区分。我没有看到这一点,但似乎是正确的做法。谢谢! – Erdal 2011-08-19 00:36:53

+0

您是否认为运营商完全基于端口号来限制/切断短连接?或者他们白名单,例如谷歌IP的,在这种情况下,端口号的选择并不重要? – Erdal 2011-08-21 02:30:51

+0

他们可能为某些端口加油 - 但我怀疑端口80或端口443或任何任意端口是这种情况。更有可能的是通常用于文件共享的端口(但在大多数情况下,这些端口是随机的,并且更有可能需要某种类型的流量嗅探来进行整形)。我怀疑谷歌的流量是否得到任何特殊待遇。 – 2011-08-21 06:51:17

1

我怀疑他们想要获得其他东西的标准端口,并且这样他们可以轻松监控C2DM流量的流量级别。

他们并不孤单,苹果的推送实施完全一样。