tft每日頭條

 > 生活

 > 蘋果來消息有延遲怎麼辦

蘋果來消息有延遲怎麼辦

生活 更新时间:2024-09-06 23:36:21

我們知道曆代iPhone手機出現問題最多的一個就是通知延遲、無提醒,實際上,這個問題不管你是什麼型号,幾代的iOS系統都會出現這個問題,很多人會問,這個問題出現了這麼久,難道蘋果不知道麼?實際上不是不知道,二十無能為力,下面會講到。

說到蘋果系統的通知,我們就要知道蘋果系統的推送原理

首先蘋果系統的通知是由蘋果的APNs(蘋果推送服務器)統一推送到我們手機的,也就是我們發送的消息必須經過app廠商服務器,然後app廠商服務器将消息轉發到APNs服務器,APNs服務器在發送到我們手機上指定的app,最後經過iOS系統處理彈出提示框,原理圖如下:

蘋果來消息有延遲怎麼辦(蘋果無法給你解決的通知延遲這裡有辦法給你徹底解決)1

推送示意圖

蘋果的推送通知分為兩種,一種是遠程通知,一種是本地通知,遠程通知包括各個app發送給你的資訊,微信qq發送給你的消息在,這種必須經過互聯網的消息;本地通知包括手機鬧鐘鈴聲這種不需要經過互聯網的通知,隻需要定時設定就能在規定的時間彈出的通知。

我們消息的延遲是發生在遠程通知裡面的,所以下面我将詳細地解釋發生的原因,以及如何解決!

首先我們要知道消息的及時推送大多是建立在tcp/ip協議連接的,就像上圖的箭頭就可以看作一條TCP連接的,任何一條斷開,都将無法收到通知推送。

問題出現的原因:

我們現在使用的ip地址大多數為ipV4,IPV4規定了IP的地址長度32,那麼總共就要為了2*32-1個地址,但是沒這些地址已經在2014年左右被分配完了,那麼為什麼我們現在還在使用呢?這就不得不說局域網(内網)的發明了。局域網的出現緩解了IPV4地址不足的壓力,我們現在所辦理的寬帶,不管是哪個運營商,分配給你的都是私網(内網)地址,而且是可以重複使用的,但是我們内網是無法訪問外網(公網) 的,那麼就出現了地址轉換技術(nat轉換)也就是說路由器分配給我們的192.168.0.1這種類似的ip 地址都是内網地址,都無法直接訪問外網,必須要将這種地址轉換為公網地址才能訪問互聯網,我們使用的最多的就是多對1的這種轉換模式,就是多條寬帶對應一個公網IP地址,每條寬帶裡面可以分配許多的内網IP地址,而且可以相同,所有内網的用戶訪問外網都會把分配到的内網IP地址轉換為那一個公網IP地址,所以這個技術非常完美地解決了公網IP地址的不足,因為現在一個公網IP地址可以給非常多的用戶使用,而之前是一人一個公網IP地址。

但是由于我們國内網絡環境是非常複雜的,而且網絡質量并不是很好,以及這個地址轉換技術也存在一些不足,導緻我們在某些使用場景下會很差,推送通知就是其中一個!

雖然IP地址不足得到了一些解決,雖然大部分人都很清楚IP地址的緊缺導緻的動态IP分配的必然,卻忽略了由于IP地址不足引起的端口資源不足。

由于需要動态分配IP地址(這裡不僅僅指互聯網入口的IP,還包括局域網内部的IP),路由器的工作原理都是經過端口映射,把内部網絡(包括PC、手機、平闆、Wifi、2G、3G、4G)IP與端口映射成外部IP(通常是公網IP)和對應的端口,并維持這個映射關系,才能正常地修改、轉發報文信息,保證内部各個ip、端口與外部的各個ip、端口的通信。

然而,單個IP地址的端口資源是有限的,理論上限是65535個端口。對于普通寬帶路由器來說,這個已經很充足了。但是!對于大型的網絡服務、網絡主幹接入點等來說,如果IP資源不足,每個IP幾萬個端口的資源很快會耗盡,從而影響正常通訊。

正因為如此,所有的路由器都會為每個端口映射關系設置老化時間,如果老化時間倒數到0,則端口映射關系失效,該端口被釋放給其他連接使用。如果端口全部耗盡,則無法再新建内部與外部的網絡連接。

端口映射老化時間,比很多人想象中的要短很多。一般的家用寬帶路由器,老化時間一般是兩三分鐘;在有線寬帶運營商接入部分,老化時間可能少于兩分鐘。在無線電話網絡運營商接入部分(例如GPRS連接),老化時間甚至不超過一分鐘!

也就是說,任何一個網絡通訊(不管是TCP或UDP),如果幾分鐘之内沒有網絡傳輸,其占用的IP地址端口将被路由器回收。這個時候該次通信必将終止,不管TCP還是UDP,什麼都是浮雲。

更可怕的是我們路由器WAN口獲取到的IP如果是内網IP,那麼消息通知延遲将會異常恐怖!

如果内網到公網之間沒有任何設備了,那麼路由器的WAN口獲取到的就是公網ip,但是實際上,你的路由器到公網之間隔了非常多的設備,試想一下,内網到公網之間已經存在老化設置了,如果之間還隔了很多運營商的上層設備,那麼之間就會存在非常多的老化設置,隻有全部在連接的時候,那麼整個連接才是通的,其中任何一個老化時間到了,不管其他的老化設置時間到沒到,整個TCP都将斷開從。這就像在一個開關上串聯了許多的開關,隻要其中一個開關是斷開的,那麼燈就無法亮,隻有全部閉合,燈泡才會亮起。這就是我們消息推送的原因,這個比喻可謂是非常的恰當!

因此我們消息推送在鎖屏下更容易延遲是因為,長時間沒有數據流通,根據老化原則,tcp連接将斷開,直到下次自動連接,這就是蘋果消息為什麼總是延遲、無法收到消息的原因。

如何解決

首先要明确一點的是不要相信任何設置就能解決這個問題的,手機上的任何設置都是沒有作用的,不管是重啟,卸載重裝都是沒有作用的!千萬不要相信!

我們能做的隻有以下兩點:

  1. 跟運營商索要公網IP,這一點在移動可能很難實現,畢竟移動是租用的電信的主幹網絡,索要公網IP是要收費的,該公網IP能解決是因為,我們的内網和外網之間直接沒有那麼多隔閡了,之間隻存在一個ip 老化設置,可以忽略不計,這個時候推送就非常的及時了,不在存在推送延遲等問題。
  2. 将路由器橋接,這麼做的目的也是為了減少私網到公網之間的隔閡,就那上面的比喻來說,這麼做的目的相當于減少了電燈泡之間的開關,IP老化時間設置減少,TCP連接沒有那麼容易斷開了,但是這麼做隻能是減少中間設備的轉發,而不能達到直接索要公網IP的那種效果,但是确确實實推送延遲的問題減少了很多

總結:消息延遲是由于内網與外網直接的轉發設備過多,導緻TCP連接性能大幅度降低,從而導緻消息不通知、延遲等問題,我們能做的隻能是索要公網IP和将路由器橋接,盡量減少中間設備的轉發從而解決推送延遲等問題

其次,我對消息延遲的說明已經是非常簡略了,裡面要說的東西實在是太多了,我把主要原因和解決辦法給大家說一下就好了,還有就是國内網絡實際上是非常的複雜的,大多數可能隻是看看視頻,聊聊微信是感覺不出的,不然也就不會有内網穿透技術的産生了

,

更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!

查看全部

相关生活资讯推荐

热门生活资讯推荐

网友关注

Copyright 2023-2024 - www.tftnews.com All Rights Reserved