【來源申明】本文引用了微信公眾號“網優雇傭軍”的《是誰偷走了我家的手機信號?》文章內容。為了更好的內容呈現,下文在引用和收錄時內容有改動,轉載時請注明原文來源信息,尊重原作者的勞動。
1、系列文章引言
1.1適合誰來閱讀?
本系列文章盡量使用最淺顯易懂的文字、圖片來組織內容,力求通信技術零基礎的人群也能看懂。但個人建議,至少稍微了解過網絡通信方面的知識后再看,會更有收獲。如果您大學學習過《計算機網絡》這門課,那么一定不要錯過本系列文章。
特別推薦即時通訊開發者來閱讀,因為針對移動弱網的問題,確實可以找到很多有價值的答案。
友情提示:本系列文章可能涉及以下通信技術范疇,如您有興趣,也可自行系統地學習:

- 移動端IM開發入門文章:《新手入門一篇就夠:從零開發移動端IM》
- 開源IM框架源碼:https://github.com/JackJiang2011/MobileIMSDK(備用地址點此)
1.2本系列文章的初衷
作為即時通訊(IM、消息推送等應用場景)相關技術的開發者人員來說,似乎了解跨專業的通信技術(這是大學通信工程專業類學生的學習內容),有點過于深入和底層了,因為一般來說熟練掌握邏輯層的TCP\IP相關協議、網絡編程相關的應用技術就差不多能勝任這方面的本職工作了。
沒錯,確實是這樣。但在開發IM、推送這類應用系統時,尤其在移動網絡下,各種弱網問題,讓人非常痛苦。
典型的弱網問題,比如:
- 1)頻繁掉線;
- 2)丟包嚴重;
- 3)網絡抖動;
- 4)網絡延遲;
- ........
那么,針對以上現象,怎么才能有底氣的跟老板、客戶、產品經理地解釋以下問題?
- 1)導致這些現象的根本原因到底是什么?
- 2)怎么跟老板解釋,要搞定在高鐵上用好音視頻聊天功能很困難?
- 3)怎么跟客戶解釋P2P在3G、4G甚至5G網絡下的成功率問題?
- 4)怎么向客戶說明,商場或人多場合下,明明信號很好,但你的APP確用不了?
- .......
你說這些都是網絡問題,APP代碼無能為力。那么,你倒是講講到底是什么樣的網絡問題?能把人講信服了,就可以甩鍋給網絡,不然只能是APP代碼背鍋了。現實吧!
所以,我們還是老老實實花點功夫來研究研究通信技術吧(通信技術直面的是網絡通信物理層),至少遇到問題,不說給別人,至少給自已找到一個說的過去的解釋。這才是一個優秀程序員的修養!
1.3本系列文章的價值
網上能找到的通信技術資料都太過專業或太不專業,要么都是搞網絡工程方面的內行人編寫的(內容專業但很枯燥難懂),要么就是外行的IT開發人員寫的(很少見,且價值不大,因為不夠專業,所以內容并不準確,參考價值很有限)。
既能讓外行的普通程序員看懂,還能準確地講明白通信技術知識,這樣的資料簡直比找金礦還難。因為普通程序員能接觸到的網絡編程、網絡通信方面的資料多針對數據通信的邏輯層(比如:tcpip、socket等知識范疇),而通信技術涉及的是數據通信的物理層(交換機、路由器、天線、網絡制式等),某種意義上來說,這是完全不同的技術方向。
好消息是,經過長時間的資料搜集,終于有了本系列文章,希望能給你帶來幫助。
1.4拓展閱讀
即時通訊網之前已經整理過《移動端IM開發者必讀(一):通俗易懂,理解移動網絡的“弱”和“慢”》、《移動端IM開發者必讀(二):史上最全移動弱網絡優化方法總結》、《現代移動端網絡短連接的優化手段總結:請求速度、弱網適應、安全保障》這幾篇初涉通信層的文章,但都因技術廣度和深度有限,能帶給讀者的幫助比較局限。如果您看過這幾篇文章,那么一定不要錯過本次的《IM開發者的零基礎通信技術入門》系列文章。
另外,如果您對最基本的程序員本該掌握的網絡編程知識都還不怎么了解的話,建議首先閱讀《網絡編程懶人入門系列文章》、《腦殘式網絡編程入門系列》,以及更高深一點的《不為人知的網絡編程系列文章》。
1.5番外:通信技術女神鎮樓

▲ 史上最高顏值科學雜志封面,人物為 “CDMA之母”——海蒂·拉瑪(一個被演藝事業耽誤的科學女神)
2、本系列文章目錄
《IM開發者的零基礎通信技術入門(一):通信交換技術的百年發展史(上)》
《IM開發者的零基礎通信技術入門(二):通信交換技術的百年發展史(下)》
《IM開發者的零基礎通信技術入門(三):國人通信方式的百年變遷》
《IM開發者的零基礎通信技術入門(四):手機的演進,史上最全移動終端發展史》
《IM開發者的零基礎通信技術入門(五):1G到5G,30年移動通信技術演進史》
《IM開發者的零基礎通信技術入門(六):移動終端的接頭人——“基站”技術》
《IM開發者的零基礎通信技術入門(七):移動終端的千里馬——“電磁波”》
《IM開發者的零基礎通信技術入門(八):零基礎,史上最強“天線”原理掃盲》
《IM開發者的零基礎通信技術入門(九):無線通信網絡的中樞——“核心網”》
《IM開發者的零基礎通信技術入門(十):零基礎,史上最強5G技術掃盲》
《IM開發者的零基礎通信技術入門(十一):為什么WiFi信號差?一文即懂!》
《IM開發者的零基礎通信技術入門(十二):上網卡頓?網絡掉線?一文即懂!》
《IM開發者的零基礎通信技術入門(十三):手機信號差?一文即懂!》(* 本文)
《IM開發者的零基礎通信技術入門(十四):高鐵上無線上網有多難?一文即懂!》
《IM開發者的零基礎通信技術入門(十五):理解定位技術,一篇就夠》
3、本文內容概述
移動通信早已深入人們的日常生活,對于IM開發者或者移動端程序員來說,自已和兄弟們辛辛苦苦開發的產品,經常被用戶、測試、產品經理、老板等各種噴,最常見的就是:“為什么我在公司里,APP用的好好的,回到家就說網絡不行了?”、“我在路上還是好的,怎么一回來就報通信超時?到底是代碼有bug還是怎么回事?”

▲ IM里最煩這個紅色圖標了(表示消息發送失敗了呢..)
針對這類問題的上報,每次都要費很大的勁,查找原因、進行解釋,但往往因對移動通信技術的了解太淺,找到的理由就比較牽強,別說用來說服用戶,就連我們自已都有點不信。
實際上,關于手機信號的問題真的不是大家想象得那么簡單。所以本文正好收集整理了這一塊的通信技術知識,一如既往的力求通俗易懂,希望對你有用。

▲ 信號不好而已...
4、什么叫手機信號差?
對于手機信號差,大家最直觀的感受通常是,手機上網速度慢,打電話會時斷時續,聽不清對方的聲音。
實際上,手機信號的質量,是可以有參照基準的。
首先第一個基準,就是信號格數。當手機上顯示的信號格數只剩下一格或二格時,人們就會判斷為手機信號差。

但是,這種判斷方式不太準確。因為手機信號格數并不是準確而一致的判斷標準。手機的信號格數不是按照統一的標準計算出來的,它是手機廠商自己定義的,它只與手機廠商使用的算法有關。所以,不同品牌的手機在相同的環境下顯示的信號格數不一定一致。它并不能真實反映你手機的信號強度。
不過,幸運的是,有一種方法可以發現手機的真實信號強度。比如,蘋果手機在撥號界面輸入*3001#12345#* —>撥號 —>在屏幕左上角顯示信號強度(單位為dBm)。

安卓手機可通過系統設置—> 關于手機 —> 狀態消息 —>信號強度查看。安卓手機還可以在撥號界面,輸入 *#*#4636#*#* ,也可以查看(親測小米手機可以)。

現在就拿起你的手機試一試,你會看到一個負值,后面的單位為dBm。這個數字代表什么意思呢?通常它的范圍在 -50 dBm 到 -120 dBm之間。-50 dBm一定是信號滿格,代表信號很好。而如果是-120 dBm,你的手機或者沒有信號,或者只有一格信號。
下面兩張圖是早期對信號格數和真實信號強度的對比測試,供參考。

從上圖可知,大致對應關系如下:
- 1)-50 到 -79 dBm,4到5格信號,表明信號非常好;
- 2)-80 到 -89 dBm,3到4格信號,表明信號良好;
- 3)-90 到 -99 dBm,2到3格信號,表明信號一般;
- 4)-100 到 -109 dBm,1到2格信號,表明信號較差;
- 5)-110 到 -120 dBm,0到1格信號,表明信號非常差。
細心一點,你還會看到,安卓和蘋果手機的信號格數與信號強度的對應關系是不一樣的。甚至,蘋果不同IOS版本的信號格數與信號強度的對應關系也不一樣。
好了,現在您理解了到底什么叫信號差。
5、為什么你家里的信號差?
與收音機、衛星、WiFi等一樣,2G/3G/4G信號都是通過無線電波傳送的,這個無處不在的無線電波其實沒有你想象的那么強大,它們脆弱而敏感。
它不但易受干擾,而且信號傳播時衰減極快,幸好背后有一群通信工程師隨時都在呵護著這些脆弱而且神秘的家伙。
其中,建筑物阻擋是手機信號的最大殺手,也是你家里手機信號差的根本原因。
這個建筑物阻擋有多狠呢?這得看你家的建筑結構和材料。
現在,我來羅列一下扼殺手機信號的九大殺手…
【第九名】:自然植被

信號衰減:3 到 20 dB。
好吧,這不是建筑材料,但你家周邊總有花花草草吧。最厲害的樹葉,其導致信號衰減約 7至20 dB。你不妨留意一下,如果你家周圍樹子較多,秋天時候的手機信號一定比夏天好。為啥呢?秋天落葉了啊!

【第八名】:透明玻璃窗

信號衰減:4 dB。
除了阻擋,加之反射和折射,其可導致手機信號衰減 4 dB。
【第七名】:層板/膠合板

信號衰減:4 至 6 dB。
值得一提的是,如果層板不防水,在回南天遇潮,或下雨天進水,其信號衰減可到20dB。艾瑪,我勒個去!
【第六名】:實木

信號衰減:5 至 12 dB。
別看實木家具好看,這玩意就是個信號殺手。不管是橡木、桃木、櫸木、楓木等任何類型的木材,都會吸收和阻擋手機信號。木材越厚,信號越差。
【第五名】:灰漿

信號衰減:8 至 16 dB。
俗稱抹灰,它是由石灰或水泥制成的建筑材料,涂在墻壁上以保護墻體不受風、雨、雪的侵蝕。可是,誰知道,就這么薄的一層糊對手機信號的傷害是多么大啊!

【第四名】:磚

信號衰減:8 至 28 dB。
不管是從建筑設計還是審美角度,磚頭都是偉大的建筑材料發明。但是,對手機信號,它可一點也不友好。
【第三名】:混凝土和水泥(15厘米厚)

信號衰減:10 至 20 dB。
大多數的現代建筑都用混凝土制成,挺拔而堅固,然后,手機信號表示受不了。
【第二名】:有色玻璃/低輻射玻璃

信號衰減:24 至 40 dB。
所謂低輻射玻璃,就是在玻璃表面上鍍上含有一層或兩層甚至多層膜系的金屬薄膜或金屬氧化物薄膜,來降低能量吸收或控制室內外能量交換,保障生活、工作的舒適性,并以此達到環保節能的目的。一些高大上的辦公大樓采用的正是這種材料,信號衰減嚇死個人。
【第一名】:金屬

信號衰減:32 至 50dB。
不管是鋁、銅、鋼、鐵等,金屬是手機信號的最大殺手,沒有之一。
所以,如果你家樓頂上有個金屬棚,手機信號就很難抵達了,另外,家中的金屬物也會導致RF信號失真。
所以,現在就很容易解釋您家里的手機信號為什么差了。
假設您在室外的手機信號滿格,顯示的信號強度為-70dBm,現在,你走進你家室內,假設您家是紅磚墻,家里有紅木家私,至少導致手機信號衰減25dB:-70 - 25 = -95(dBm),對應的信號格數為2格或3格。
這,就是你家里手機信號差的原因。

6、基站輻射的謬傳
為了解決上述信號問題,運營商們只能不斷建基站,盡量讓基站離你家近一點。

因為離基站越近,到達您家室外的信號越強,那么抵達室內的信號強度就能稍微改善。
但是,很多居民都對此并不理解,認為基站會帶來輻射,影響自己和家人的身體健康。
甚至很多小區,都出現了抵制基站建設和破壞基站的行為。

▲ 小區居民抵制基站建設

▲ 被強行破壞的基站
實際上,這種擔心完全是多余的。基站的輻射非常小,不會對人體造成任何傷害。基站的電磁輻射會隨著傳輸距離增大而減弱。而人與手機是近距離接觸,因此手機輻射對人的影響都比基站要大得多。

▲ 生活電器的輻射對比
基站輻射甚至是太陽光輻射的千分之一,足以說明基站輻射有多么微弱。
7、寫在最后
好了,今天的內容,就介紹到這。
正如正文所說,手機信號一點也不強大,它們是脆弱而敏感的,當信號不好時,如果普通用戶都能了解到本文這些常識性的知識,那就能對廣大移動應用開發者們少一份誤解了(其實真的跟代碼沒毛關系)。

▲ 印度部長爬樹打手機(印度的手機信號更爛)
附錄:更多網絡編程干貨文章
《技術往事:改變世界的TCP/IP協議(珍貴多圖、手機慎點)》
《通俗易懂-深入理解TCP協議(下):RTT、滑動窗口、擁塞處理》
《理論聯系實際:Wireshark抓包分析TCP 3次握手、4次揮手過程》
《P2P技術詳解(一):NAT詳解——詳細原理、P2P簡介》
《P2P技術詳解(二):P2P中的NAT穿越(打洞)方案詳解》
《P2P技術詳解(三):P2P技術之STUN、TURN、ICE詳解》
《高性能網絡編程(一):單臺服務器并發TCP連接數到底可以有多少》
《高性能網絡編程(二):上一個10年,著名的C10K并發連接問題》
《高性能網絡編程(三):下一個10年,是時候考慮C10M并發問題了》
《高性能網絡編程(四):從C10K到C10M高性能網絡應用的理論探索》
《高性能網絡編程(五):一文讀懂高性能網絡編程中的I/O模型》
《高性能網絡編程(六):一文讀懂高性能網絡編程中的線程模型》
《不為人知的網絡編程(一):淺析TCP協議中的疑難雜癥(上篇)》
《不為人知的網絡編程(二):淺析TCP協議中的疑難雜癥(下篇)》
《不為人知的網絡編程(三):關閉TCP連接時為什么會TIME_WAIT、CLOSE_WAIT》
《不為人知的網絡編程(七):如何讓不可靠的UDP變的可靠?》
《網絡編程懶人入門(五):快速理解為什么說UDP有時比TCP更有優勢》
《網絡編程懶人入門(六):史上最通俗的集線器、交換機、路由器功能原理入門》
《網絡編程懶人入門(八):手把手教你寫基于TCP的Socket長連接》
《網絡編程懶人入門(九):通俗講解,有了IP地址,為何還要用MAC地址?》
《技術掃盲:新一代基于UDP的低延時網絡傳輸層協議——QUIC詳解》
《現代移動端網絡短連接的優化手段總結:請求速度、弱網適應、安全保障》
《移動端IM開發者必讀(一):通俗易懂,理解移動網絡的“弱”和“慢”》
《移動端IM開發者必讀(二):史上最全移動弱網絡優化方法總結》
《從HTTP/0.9到HTTP/2:一文讀懂HTTP協議的歷史演變和設計思路》
《腦殘式網絡編程入門(一):跟著動畫來學TCP三次握手和四次揮手》
《腦殘式網絡編程入門(二):我們在讀寫Socket時,究竟在讀寫什么?》
《腦殘式網絡編程入門(三):HTTP協議必知必會的一些知識》
《腦殘式網絡編程入門(四):快速理解HTTP/2的服務器推送(Server Push)》
《腦殘式網絡編程入門(五):每天都在用的Ping命令,它到底是什么?》
《腦殘式網絡編程入門(六):什么是公網IP和內網IP?NAT轉換又是什么鬼?》
《以網游服務端的網絡接入層設計為例,理解實時通信的技術挑戰》
《全面了解移動端DNS域名劫持等雜癥:技術原理、問題根源、解決方案等》
《美圖App的移動端DNS優化實踐:HTTPS請求耗時減小近半》
《Android程序員必知必會的網絡通信傳輸層協議——UDP和TCP》
>> 更多同類文章 ……
(本文已同步發布于:http://www.52im.net/thread-2415-1-1.html)
作者:Jack Jiang (點擊作者姓名進入Github)
出處:http://www.52im.net/space-uid-1.html
交流:歡迎加入即時通訊開發交流群 215891622
討論:http://www.52im.net/
Jack Jiang同時是【原創Java
Swing外觀工程BeautyEye】和【輕量級移動端即時通訊框架MobileIMSDK】的作者,可前往下載交流。
本博文
歡迎轉載,轉載請注明出處(也可前往 我的52im.net 找到我)。