2011-05-24 79 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流量的流量級別。

他們並不孤單,蘋果的推送實施完全一樣。