【来源申明】本文引用了微信公众号“网优雇佣军”的《是谁偷走了我家的手机信号?》文章内容。为了更好的内容呈现,下文在引用和收录时内容有改动,转载时请注明原文来源信息,尊重原作者的劳动。
1、系列文章引言
1.1适合谁来阅读?
本系列文章尽量使用最浅显易懂的文字、图片来组织内容,力求通信技术零基础的人群也能看懂。但个人建议,至少稍微了解过网络通信方面的知识后再看,会更有收获。如果您大学学习过《计算机网络》这门课,那么一定不要错过本系列文章。
特别推荐即时通讯开发者来阅读,因为针对移动弱网的问题,确实可以找到很多有价值的答案。
友情提示:本系列文章可能涉及以下通信技术范畴,如您有兴趣,也可自行系统地学习:
技术交流:
- 移动端IM开发入门文章:《新手入门一篇就够:从零开发移动端IM》
- 开源IM框架源码:https://github.com/JackJiang2011/MobileIMSDK(备用地址点此)
(本文已同步发布于:http://www.52im.net/thread-2415-1-1.html)
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)