【来源申明】本文引用了微信公众号“鲜枣课堂”的《坐高铁手机没信号?原因远比你想的要复杂!》文章内容。为了更好的内容呈现,本文在引用和收录时内容有改动,转载时请注明原文来源信息,尊重原作者的劳动。
本系列文章尽量使用最浅显易懂的文字、图片来组织内容,力求通信技术零基础的人群也能看懂。但个人建议,至少稍微了解过网络通信方面的知识后再看,会更有收获。如果您大学学习过《计算机网络》这门课,那么一定不要错过本系列文章。
特别推荐即时通讯开发者来阅读,因为针对移动弱网的问题,确实可以找到很多有价值的答案。
友情提示:本系列文章可能涉及以下通信技术范畴,如您有兴趣,也可自行系统地学习:
1.2本系列文章的初衷
作为即时通讯(IM、消息推送等应用场景)相关技术的开发者人员来说,似乎了解跨专业的通信技术(这是大学通信工程专业类学生的学习内容),有点过于深入和底层了,因为一般来说熟练掌握逻辑层的TCP\IP相关协议、网络编程相关的应用技术就差不多能胜任这方面的本职工作了。
没错,确实是这样。但在开发IM、推送这类应用系统时,尤其在移动网络下,各种弱网问题,让人非常痛苦。
典型的弱网问题,比如:
那么,针对以上现象,怎么才能有底气的跟老板、客户、产品经理地解释以下问题?
你说这些都是网络问题,APP代码无能为力。那么,你倒是讲讲到底是什么样的网络问题?能把人讲信服了,就可以甩锅给网络,不然只能是APP代码背锅了。现实吧!
所以,我们还是老老实实花点功夫来研究研究通信技术吧(通信技术直面的是网络通信物理层),至少遇到问题,不说给别人,至少给自已找到一个说的过去的解释。这才是一个优秀程序员的修养!
网上能找到的通信技术资料都太过专业或太不专业,要么都是搞网络工程方面的内行人编写的(内容专业但很枯燥难懂),要么就是外行的IT开发人员写的(很少见,且价值不大,因为不够专业,所以内容并不准确,参考价值很有限)。
既能让外行的普通程序员看懂,还能准确地讲明白通信技术知识,这样的资料简直比找金矿还难。因为普通程序员能接触到的网络编程、网络通信方面的资料多针对数据通信的逻辑层(比如:tcpip、socket等知识范畴),而通信技术涉及的是数据通信的物理层(交换机、路由器、天线、网络制式等),某种意义上来说,这是完全不同的技术方向。
好消息是,经过长时间的资料搜集,终于有了本系列文章,希望能给你带来帮助。
即时通讯网之前已经整理过《移动端IM开发者必读(一):通俗易懂,理解移动网络的“弱”和“慢”》、《移动端IM开发者必读(二):史上最全移动弱网络优化方法总结》、《现代移动端网络短连接的优化手段总结:请求速度、弱网适应、安全保障》这几篇初涉通信层的文章,但都因技术广度和深度有限,能带给读者的帮助比较局限。如果您看过这几篇文章,那么一定不要错过本次的《IM开发者的零基础通信技术入门》系列文章。
另外,如果您对最基本的程序员本该掌握的网络编程知识都还不怎么了解的话,建议首先阅读《网络编程懒人入门系列文章》、《脑残式网络编程入门系列》,以及更高深一点的《不为人知的网络编程系列文章》。
▲ 史上最高颜值科学杂志封面,人物为 “CDMA之母”——海蒂·拉玛(一个被演艺事业耽误的科学女神)
《IM开发者的零基础通信技术入门(一):通信交换技术的百年发展史(上)》
《IM开发者的零基础通信技术入门(二):通信交换技术的百年发展史(下)》
《IM开发者的零基础通信技术入门(三):国人通信方式的百年变迁》
《IM开发者的零基础通信技术入门(四):手机的演进,史上最全移动终端发展史》
《IM开发者的零基础通信技术入门(五):1G到5G,30年移动通信技术演进史》
《IM开发者的零基础通信技术入门(六):移动终端的接头人——“基站”技术》
《IM开发者的零基础通信技术入门(七):移动终端的千里马——“电磁波”》
《IM开发者的零基础通信技术入门(八):零基础,史上最强“天线”原理扫盲》
《IM开发者的零基础通信技术入门(九):无线通信网络的中枢——“核心网”》
《IM开发者的零基础通信技术入门(十):零基础,史上最强5G技术扫盲》
《IM开发者的零基础通信技术入门(十一):为什么WiFi信号差?一文即懂!》
《IM开发者的零基础通信技术入门(十二):上网卡顿?网络掉线?一文即懂!》
《IM开发者的零基础通信技术入门(十三):手机信号差?一文即懂!》
《IM开发者的零基础通信技术入门(十四):高铁上无线上网有多难?一文即懂!》(* 本文)
《IM开发者的零基础通信技术入门(十五):理解定位技术,一篇就够》
众所周知,我们国家有目前世界上最发达的高速铁路网络。高铁,拉近了城市之间的时间距离,彻底改变了我们的生活。
可是,高铁千好万好,有一点却始终困扰着乘客,那就是高铁上面的手机信号难题。
乘坐高铁的时候,漫漫旅途,寂寞难耐,你一定会掏出手机,以此来打发时间。
不过,你经常会发现,手机信号很不稳定,时好时坏,甚至有时候干脆彻底无信号。
在这种信号质量下使用手机,只能勉强聊聊微信,看看网页。看视频的话,会频繁出现卡顿。
此时要是玩游戏就更别想了,一定会坑死队友:
这种情况下,对于IM程序员来说,被用户、产品经理、老板抱怨:“为什么我们的APP不能在高铁上好好聊?”,貌似是再正常不过的事了。。。
好吧,那么你到底有没有认真考虑过,为什么在高铁上手机信号会这么差?这个无线通信难题真的无法解决吗?今天,作为通信老司机的笔者,就详细和大家聊聊这个问题。
首先,我们把目光聚焦在十年之前的2008年。这一年很重要,可以说具有划时代的意义。
从通信的角度来看:2008年之前,我们长期处于2G时代,使用的是GSM和CDMA网络。智能手机刚刚起步,我们的通信方式,还是以电话和短信为主。
从铁路的角度来看:2008年之前,我们还没有高铁,铁路出行,基本上都是乘坐普速列车,也就是我们常说的绿皮车、红皮车、蓝皮车。
▲ 普速列车,运行速度基本上在80-120km/h左右
2008年8月1日,中国第一条真正意义上的高铁——京津城际,正式开通,时速350公里。由此,正式宣告中国进入高铁时代。
不久之后,通信这边也发生巨变,2009年1月7日,工信部正式发放3G牌照,中国进入3G时代。
经过十年的发展,从京津城际,到武广客专,再到京沪高铁,新的高铁线路不断开通,如今中国高铁运营里程已经接近3万公里。
而通信方面,经过短暂的3G时代,中国很快迈入了4G时代。现在,4G网络已经基本实现了全国覆盖。
以上是背景知识铺垫。接下来,进入具体分析。
首先我们来看看影响信号的最主要因素之一——基站数量。
2008年,全国基站总数大约是641100个。
看上去这个数量很多,但实际上,按面积平均一下,就不多了——平均每平方公里仅0.07个基站。
而且,这些基站主要集中在城区和村镇。铁路所经过的区域,多为人烟稀少地区,基站密度更小。尤其是山区,受地形影响,信号会更差。
2008年之后,进入高铁时代和3G/4G时代,我国基站数量大幅增长。根据2017年底的数据,我国基站总数是604万个,其中3G/4G基站总数为447万个。平均每平方公里0.63个基站,是2008年的9倍。
所以,除了极少数非常偏僻的地区之外,大部分铁路沿线,我们也都实现了信号的覆盖。
▲ 在山区修建和维护基站,不是一件容易的事情
而且,如果说普速铁路运营商不太重视的话,高速铁路的信号质量,运营商是不敢不重视的。
很简单,作为国家名片、地区名片的高铁,它上面的信号质量,不仅代表经济效益,更意味着社会影响。如果高铁上自家信号不好,不仅影响用户的满意度,也会影响品牌声誉。
所以,运营商是愿意为高铁信号改善投入资金的。
问题的关键在于,有些事情,光靠砸钱建基站,不一定有用。
高铁基站的建设,和普通基站有很大不同。
高铁沿线的网络覆盖,主要有两种方式:
公网方式:是将高铁沿线的覆盖,融入周边大网统一规划和考虑。也就是说,利用周边已有的基站进行覆盖,只不过稍加优化和调整。
专网方式:采用的是单独组网,即高铁专网和周边大网分开,除车站外,高铁专网基站和周边大网基站不设邻区关系,避免发生切换。
▲ 公网方式(红色为周边常规基站)
▲ 专网方式(绿色为高铁专用基站)
这里解释一下,什么叫邻区和切换。
我们在走路或坐车时,是处于运动状态。从一个区域,移动到另一个区域。也就会从一个基站范围,到另一个基站范围。
如果你正在打电话,或者正在上网追剧,为了不让你的电话或网剧中断,系统会进行自动切换。
看这个图,就明白了:
切换分为软切换和硬切换,涉及的技术有点复杂,今天不深入研究。总之大家只需要记住,一切都是为了让你“不掉线”。
如果用公网方式,好处是节约了投资。坏处的话,就是即使做了优化,效果也很有限,容易受公网其它基站的影响,导致掉线。(简单从技术角度来说,就是所有基站的频点都是一样的,手机容易“跳来跳去”。)
专网就不一样了,可以理解为独立的一张网络,享受VIP服务。因为专网和公网的频点都不一样,系统上也会做配置,不允许你去“勾搭”外面的公网基站,所以你必须老老实实待在专网里面,掉线的概率会大幅降低。
▲ 专网下的高铁信号(蓝色块=高铁列车行驶模拟)
上面的内容说过,高铁上的手机信号,需要在高铁行进时在基站间进行频繁切换。而切换的成功率,受很多方面的影响。其中很重要的因素,就是速度。
我们来看一组数据:一个普通WCDMA基站的覆盖范围(1950Hz,郊区,天线挂高45米),是979米。
▲ WCDMA 天线挂高对应覆盖半径(郊区)
人走路的速度,每小时6公里(每分钟100米);
汽车的速度,就算是高速公路吧,每小时120公里(每分钟2000米);
高铁的速度,每小时差不多是350公里(每分钟5833米)。
按人的运动速度,跨区切换的时间是充足的。汽车也问题不大。但是,高铁的话,根据切换算法时间的估算,3~6秒就要发生一次切换。这样的频率,是非常考验系统覆盖和性能的。
一不小心,切换就失败了,你也就掉线了。
高铁的高速度,除了会带来频繁的切换之外,还有一个很要命的,就是多普勒效应。
▲ 多普勒和多普勒效应公式
最痛恨公式,我就不介绍了哈!简单来说,多普勒效应的意思,就是手机运动的速度太快,信号都追不上了。。。当信号到达的时候,已经错位了。。。
速度越快,多普勒效应越明显,频率越高,多普勒效应越明显。针对高铁+4G场景(4G的频率高于2G),这简直就是要了老命。
以 350km/h 的时速为例,在 GSM 900MHz 频段,多普勒频移能够达到300Hz;在 WCDMA 2000MHz 频段,多普勒频移最高能够达到 650Hz。
尤其是LTE采用的OFDM正交频分复用技术,对载波频率偏移更加敏感。
我画了几个图,方便大家理解。
▲ 不是OFDM的情况下,就是这样
▲ OFDM的情况下,是这样
大家交错分开,占用的空间更小(提高频谱利用率),但是还是能分清对象(提取有效数据)。
▲ But,如果因为多普勒效应,开始错位,就很难看清楚人了(错误增加)
除了多普勒效应之外,还有多径效应等,也影响信号的传输。
虽然3G/4G会通过专门算法对这些效应进行抑制,但是效果有限。
不过,好消息是,到了5G时代,情况就不一样了。5G的性能指标里面,明确指出,可以支持终端最高移动速度为500km/h。除非是超级高铁(时速1000km/h),不然5G都能hold住。
除了基站数量和密度之外,站址的选择,也是很大的一门学问。高铁线路,呈狭长带状分布,区域跨度大,沿途经过车站、地面、高架桥、地堑、隧道和桥梁等多种地形、地貌。
在明确具体的覆盖方案之前,需要结合地形场景、指标要求、列车速度,进行链路预算,确定站址以及站距。
架设基站,是不是离列车越近越好呢?并不是,离得越远,信号的入射角越大,穿透损耗越小。垂直入射时,损耗最小。
高铁车厢都是金属合金,无线信号的衰减很大。
所以,基站和铁轨之间的距离,要保持在50米以上,最佳间距是100-500米。
天线的高度也有讲究,不能太低,也不能太高,一般是天线高出轨面15米,保证天线与轨面视通,保证天线朝向正对车窗。
现在大家明白为什么坐高铁的时候,总是能看到基站天线了吧。它们就是故意这么架设的,方便信号能到达你的手机。
在直线轨道路段,相邻站点宜交错分布于轨道的两侧,呈“之”字状分布。在弯道路段,站点宜设置在弯道的内侧,提高入射角,保证覆盖的均衡性。
最后一个问题,在山区或丘陵地带,会有大量的隧道,那么,隧道中如何保证信号覆盖呢?
如果是短隧道,可以通过隧道口的天线,向隧道内进行定向辐射,进行覆盖。
如果是长隧道,就需要用到“泄漏电缆”。
就是下面这个:
▲ 隧道电缆的高度,一般和高铁的中部窗口平齐
泄漏电缆结构与普通的同轴电缆基本一致,由内导体、绝缘介质和开有周期性槽孔的外导体三部分组成。电磁波在泄漏电缆中纵向传输的同时,通过槽孔向外界辐射电磁波;外界的电磁场也可通过槽孔感应到泄漏电缆内部,并传送到接收端。
▲ 泄露同轴电缆
泄漏电缆的信号效果还是不错的,即使在非隧道环境下,也可以考虑使用(前提是不差钱,因为还要修挡风墙或屏蔽罩)。
▲ 挡风墙
在隧道里,通常也有小型机房,里面有RRU和一些信号中继设备。
▲ 隧道机房
好啦!洋洋洒洒说了那么多,相信大家一定对高铁上无线上网的技术难度有了初步了解。正如文章所说,高铁的移动信号优化,是一项非常复杂的工作,既要投入大量的资金,还要克服很多技术困难,无论是技术投入还是资金投入,都远比我们想象的要复杂。
以后老板要是再对你唧唧歪歪:“为什么我们的IM不能在高铁上实时视频聊天?”,你就把本文扔给他,让他有种自已写代码吧。。。
附录:更多网络编程干货文章
《技术往事:改变世界的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》
>> 更多同类文章 ……
技术交流:
- 移动端IM开发入门文章:《新手入门一篇就够:从零开发移动端IM》
- 开源IM框架源码:https://github.com/JackJiang2011/MobileIMSDK(备用地址点此)
本文系转载,前往查看
如有侵权,请联系 cloudcommunity@tencent.com 删除。
本文系转载,前往查看
如有侵权,请联系 cloudcommunity@tencent.com 删除。