【来源申明】本文引用了微信公众号“网优雇佣军”的《是谁偷走了我家的手机信号?》文章内容。为了更好的内容呈现,下文在引用和收录时内容有改动,转载时请注明原文来源信息,尊重原作者的劳动。

1、系列文章引言

1.1适合谁来阅读?

本系列文章尽量使用最浅显易懂的文字、图片来组织内容,力求通信技术零基础的人群也能看懂。但个人建议,至少稍微了解过网络通信方面的知识后再看,会更有收获。如果您大学学习过《计算机网络》这门课,那么一定不要错过本系列文章。

特别推荐即时通讯开发者来阅读,因为针对移动弱网的问题,确实可以找到很多有价值的答案。

友情提示:本系列文章可能涉及以下通信技术范畴,如您有兴趣,也可自行系统地学习:

技术交流:

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详解 - 第11章·UDP:用户数据报协议

TCP/IP详解 - 第17章·TCP:传输控制协议

TCP/IP详解 - 第18章·TCP连接的建立与终止

TCP/IP详解 - 第21章·TCP的超时与重传

技术往事:改变世界的TCP/IP协议(珍贵多图、手机慎点)

通俗易懂-深入理解TCP协议(上):理论基础

通俗易懂-深入理解TCP协议(下):RTT、滑动窗口、拥塞处理

理论经典:TCP协议的3次握手与4次挥手过程详解

理论联系实际:Wireshark抓包分析TCP 3次握手、4次挥手过程

计算机网络通讯协议关系图(中文珍藏版)

UDP中一个包的大小最大能多大?

P2P技术详解(一):NAT详解——详细原理、P2P简介

P2P技术详解(二):P2P中的NAT穿越(打洞)方案详解

P2P技术详解(三):P2P技术之STUN、TURN、ICE详解

通俗易懂:快速理解P2P技术中的NAT穿透原理

高性能网络编程(一):单台服务器并发TCP连接数到底可以有多少

高性能网络编程(二):上一个10年,著名的C10K并发连接问题

高性能网络编程(三):下一个10年,是时候考虑C10M并发问题了

高性能网络编程(四):从C10K到C10M高性能网络应用的理论探索

高性能网络编程(五):一文读懂高性能网络编程中的I/O模型

高性能网络编程(六):一文读懂高性能网络编程中的线程模型

不为人知的网络编程(一):浅析TCP协议中的疑难杂症(上篇)

不为人知的网络编程(二):浅析TCP协议中的疑难杂症(下篇)

不为人知的网络编程(三):关闭TCP连接时为什么会TIME_WAIT、CLOSE_WAIT

不为人知的网络编程(四):深入研究分析TCP的异常关闭

不为人知的网络编程(五):UDP的连接性和负载均衡

不为人知的网络编程(六):深入地理解UDP协议并用好它

不为人知的网络编程(七):如何让不可靠的UDP变的可靠?

网络编程懒人入门(一):快速理解网络通信协议(上篇)

网络编程懒人入门(二):快速理解网络通信协议(下篇)

网络编程懒人入门(三):快速理解TCP协议一篇就够

网络编程懒人入门(四):快速理解TCP和UDP的差异

网络编程懒人入门(五):快速理解为什么说UDP有时比TCP更有优势

网络编程懒人入门(六):史上最通俗的集线器、交换机、路由器功能原理入门

网络编程懒人入门(七):深入浅出,全面理解HTTP协议

网络编程懒人入门(八):手把手教你写基于TCP的Socket长连接

网络编程懒人入门(九):通俗讲解,有了IP地址,为何还要用MAC地址?

技术扫盲:新一代基于UDP的低延时网络传输层协议——QUIC详解

让互联网更快:新一代QUIC协议在腾讯的技术实践分享

现代移动端网络短连接的优化手段总结:请求速度、弱网适应、安全保障

聊聊iOS中网络编程长连接的那些事

移动端IM开发者必读(一):通俗易懂,理解移动网络的“弱”和“慢”

移动端IM开发者必读(二):史上最全移动弱网络优化方法总结

IPv6技术详解:基本概念、应用现状、技术实践(上篇)

IPv6技术详解:基本概念、应用现状、技术实践(下篇)

从HTTP/0.9到HTTP/2:一文读懂HTTP协议的历史演变和设计思路

脑残式网络编程入门(一):跟着动画来学TCP三次握手和四次挥手

脑残式网络编程入门(二):我们在读写Socket时,究竟在读写什么?

脑残式网络编程入门(三):HTTP协议必知必会的一些知识

脑残式网络编程入门(四):快速理解HTTP/2的服务器推送(Server Push)

脑残式网络编程入门(五):每天都在用的Ping命令,它到底是什么?

脑残式网络编程入门(六):什么是公网IP和内网IP?NAT转换又是什么鬼?

以网游服务端的网络接入层设计为例,理解实时通信的技术挑战

迈向高阶:优秀Android程序员必知必会的网络基础

全面了解移动端DNS域名劫持等杂症:技术原理、问题根源、解决方案等

美图App的移动端DNS优化实践:HTTPS请求耗时减小近半

Android程序员必知必会的网络通信传输层协议——UDP和TCP

>> 更多同类文章 ……

(本文已同步发布于:http://www.52im.net/thread-2415-1-1.html

IM开发者的零基础通信技术入门(十三):为什么手机信号差?一文即懂!的更多相关文章

  1. IM开发者的零基础通信技术入门(二):通信交换技术的百年发展史(下)

    1.系列文章引言 1.1 适合谁来阅读? 本系列文章尽量使用最浅显易懂的文字.图片来组织内容,力求通信技术零基础的人群也能看懂.但个人建议,至少稍微了解过网络通信方面的知识后再看,会更有收获.如果您大 ...

  2. IM开发者的零基础通信技术入门(一):通信交换技术的百年发展史(上)

    [来源申明]本文原文来自:微信公众号“鲜枣课堂”,官方网站:xzclass.com,原题为:<通信交换的百年沧桑(上)>,本文引用时已征得原作者同意.为了更好的内容呈现,即时通讯网在收录时 ...

  3. IM开发者的零基础通信技术入门(三):国人通信方式的百年变迁

    [来源申明]本文原文来自:微信公众号“鲜枣课堂”,官方网站:xzclass.com,原题为:<中国通信的百年沉浮>,本文引用时已征得原作者同意.为了更好的内容呈现,即时通讯网在收录时内容有 ...

  4. 【转载】salesforce 零基础开发入门学习(一)Salesforce功能介绍,IDE配置以及资源下载

    salesforce 零基础开发入门学习(一)Salesforce功能介绍,IDE配置以及资源下载   目前国内已经有很多公司做salesforce,但是国内相关的资料确是少之又少.上个月末跳槽去了新 ...

  5. 序言 - PHP零基础快速入门

    我为什么要写<PHP零基础快速入门>? 原因: PHP 真心简单,适合零基础的人快速入门掌握,身边的人学习一两周上手开发的比比皆是: 市面上的文章或书籍对初学者并不友好,多半枯燥乏味,我相 ...

  6. 零基础快速入门web学习路线(含视频教程)

    下面小编专门为广大web学习爱好者汇总了一条完整的自学线路:零基础快速入门web学习路线(含视频教程)(绝对纯干货)适合初学者的最新WEB前端学习路线汇总! 在当下来说web前端开发工程师可谓是高福利 ...

  7. C#消息队列(RabbitMQ)零基础从入门到实战演练

    一.课程介绍 如果您从工作中之听过但未有接触过消息对队列(MQ),如果你接触过一点关于MQ的知识,如果没有这么的多如果的话......,那么阿笨将通过本次<C#消息队列零基础从入门到实战演练&g ...

  8. 零基础快速入门SpringBoot2.0 (一)

    零基础快速入门SpringBoot2.0 (一) 一.SpringBoot2.x依赖环境和版本新特性说明 简介:讲解新版本依赖环境和springboot2新特性概述 1.依赖版本jdk8以上, Spr ...

  9. C++零基础到入门

    (1)C语言概述 (2)编写.运行一个简单的C语言程序 (3)数据类型 (4)运算符和表达式 如果你对C语言一窍不通,那你就好好看这篇文章,我会力争让你真正的做到从零基础到入门,同时这篇文章会让你基本 ...

  10. 小D课堂 - 零基础入门SpringBoot2.X到实战_第1节零基础快速入门SpringBoot2.0_1、SpringBoot2.x课程介绍和高手系列知识点

    1 ======================1.零基础快速入门SpringBoot2.0 5节课 =========================== 1.SpringBoot2.x课程全套介绍 ...

随机推荐

  1. Kubernetes 备份容灾服务产品体验教程

    作者:尹珉,KubeSphere 社区用户委员会杭州站站长 前言 Kubernetes 集群天生自带自愈功能,但是往往有些意外情况使自愈功能不起作用,比如:公司同事把某个 namespace 删除.存 ...

  2. 乐观锁CAS

    在 Java 中,我们可以使用 synchronized 关键字和 CAS 来实现加锁效果. 悲观锁: 对于悲观锁来说,它总是认为每次访问共享资源时会发生冲突,所以必须对每次数据操作加上锁,以保证临界 ...

  3. Java 面向对象高级

    文章目录 1.静态 1.1 static修饰成员变量 1.2 static修饰成员变量的应用场景 1.3 static修饰成员方法 1.4 工具类 1.5 static的注意事项 1.6 static ...

  4. 2.5 使用U盘安装Linux系统

    前面章节介绍了如何通过虚拟机 VMware 安装 Linux 系统,而实际开发中,我们更多的是要将 Linux 系统直接安装到电脑上. 直接在电脑上安装 Linux 系统的常用方法有 2 种,分别是用 ...

  5. php yield使用

    在循环一个大数组的时候yield非常好用能节省内存. 比如有个大文件需要读取并处理,如果全部读出来太耗费内存,就可以这样做 <?php function getRows($file) { $ha ...

  6. 高性能计算-gemm串行计算优化(3)

    目标:Darknet 源码cpu矩阵乘法函数 gemm_nn 优化.参数说明:lda A的列数; ldb B的列数; ldc C的列数; M C的行数; K A的列数 测试方法:Darknet源码,m ...

  7. 【昌哥IT课堂】MySQL8.0新特性之不可见主键

    一.概述作为 MySQL DBA ,相信大家都经历过在复制模式下,如果没有主键,遇到 load data ,大事务,ddl 等有大量表数据行扫描的行为时,会带来严重的主从延迟,给数据库稳定性和数据一致 ...

  8. Solr Facet技术的应用与研究

      http://tech.meituan.com/solr-facet.html 问题背景 在 <搜索引擎关键字智能提示的一种实现> 一文中介绍过,美团的CRM系统负责管理销售人员的门店 ...

  9. JUC (Java Util Concurrency) 基础内容概述

    目录[-] 转自:http://www.goldendoc.org/2011/05/juc/ 1. JUC概况 2. 原子操作 3. 指令重排 4. Happens-before法则:(Java 内存 ...

  10. Tornado框架之应用安全(四)

    知识点 Cookie操作 安全Cookie 跨站请求伪造原理 XSRF保护 模板 请求体 HTTP报文头 用户验证 authenticated装饰器 get_current_user()方法 logi ...