请选择 进入手机版 | 继续访问电脑版

默认
打赏 发表评论 0
IM开发者的零基础通信技术入门(十二):上网卡顿?网络掉线?一文即懂!

【来源申明】本文引用了微信公众号“鲜枣课堂”的《上网慢?经常掉线?这篇文章告诉你该怎么办!》文章内容。为了更好的内容呈现,即时通讯网在引用和收录时内容有改动,转载时请注明原文来源信息,尊重原作者的劳动。


1、系列文章引言


1.1适合谁来阅读?


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

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

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

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番外:通信技术女神镇楼


htlm.jpg
▲ 史上最高颜值科学杂志封面,人物为 “CDMA之母”——海蒂·拉玛(一个被演艺事业耽误的科学女神)

2、本系列文章目录


IM开发者的零基础通信技术入门(一):通信交换技术的百年发展史(上)
IM开发者的零基础通信技术入门(二):通信交换技术的百年发展史(下)
IM开发者的零基础通信技术入门(三):国人通信方式的百年变迁
IM开发者的零基础通信技术入门(四):手机的演进,史上最全移动终端发展史
IM开发者的零基础通信技术入门(五):1G到5G,30年移动通信技术演进史
IM开发者的零基础通信技术入门(六):移动终端的接头人——“基站”技术
IM开发者的零基础通信技术入门(七):移动终端的千里马——“电磁波”
IM开发者的零基础通信技术入门(八):零基础,史上最强“天线”原理扫盲
IM开发者的零基础通信技术入门(九):无线通信网络的中枢——“核心网”
IM开发者的零基础通信技术入门(十):零基础,史上最强5G技术扫盲
IM开发者的零基础通信技术入门(十一):为什么WiFi信号差?一文即懂!
IM开发者的零基础通信技术入门(十二):上网卡顿?网络掉线?一文即懂!》(* 本文
IM开发者的零基础通信技术入门(十三):手机信号差?一文即懂!
IM开发者的零基础通信技术入门(十四):高铁上无线上网有多难?一文即懂!
IM开发者的零基础通信技术入门(十五):理解定位技术,一篇就够

3、本文内容概述


对于不太了解网络通信的人来说(包括开发者),可能会经常碰到下面这些问题:

  • “手机(电脑)上网经常掉线,是为什么?”
  • “手机(电脑)上网总是很慢,看个抖音都很卡,是怎么回事?”
  • ……

想要搞清楚这些看似简单的问题,其实并不容易。归根到底的原因,就是因为上网牵扯到的技术和环节太多,容易出现问题的地方也很多。即使是老司机,也有可能被难住。

对于即时通讯网的开发者来说,为了更深入地搞清楚这些常见的网络问题,很有必要系统地了解导致这些问题的方方面面。

本文将详细介绍生活中遇到的常见网络问题,及可能的解决方法,虽说是一篇技术文章,但内容将一如既往地通俗易懂,简单实用。

废话不多说,我们直入主题。

4、基础知识


正文开始之前,几个基本知识需要先说明一下。(如果是老司机,请跳过本节。如果是零基础,请认真阅读。)

我们首先来解释一下,到底什么是“网速慢”。

网速慢,就是上网速度慢。上网,就是上互联网。互联网,就是因特网(Internet)。

关于上网的本质,给大家看一个示意图:
1.jpg

手机(电脑),首先通过有线信号(网线、光纤)或无线信号(WiFi、基站),连到运营商(移动、电信、联通)的网络里。然后,运营商会把我们的数据,送到互联网。同时,把互联网的数据,送给手机(电脑)。

什么是数据呢?

文字、声音、图片、视频(电视剧、电影等),这些都是数据:
2.jpg

数据的大小,是有度量单位的。单位有两种,一种是比特(bit),一种是字节(byte)。它们的换算关系,是1字节=8比特(1 byte = 8 bit)。因为bit和byte都是b开头,所以,为了区分,把byte简写成大写的B。我们口语上,把B叫做“大B”,把b叫做“小b”。

3.jpg

bit是一个很小的单位。通常,一张图片的大小,就有40000000bit。所以,为了方便,我们就创造了更大的单位:b、Kb、Mb、Gb、Tb。(就像长度有毫米、厘米、分米、米一样。)

它们之间的换算关系如下:
4.jpg

Byte也是一样,也有B、KB、MB、GB、TB:
5.jpg

大B和小b,都是数据的大小单位。如果是网速(数据传输速率)的话,就是每秒多少比特(bit/s)或每秒多少字节(byte/s)。

因此,大家判断网速,一定要先搞清楚使用的是什么单位。

例如,中国电信的200M宽带,其实是指200M bit/s,实际上,最高速度只有200÷8=25MB/s。

再例如,你的千兆网卡,是指1000M bit/s,也就是1000÷8=125MB/s。

还有大家现在使用的4G LTE手机,理论峰值速率是150M,也是bit/s,实际上,也就是150÷8=18.75MB/s。(这只是理论上的最高速度,人一多,速度就达不到。)

好了,搞清楚这些,我们开始真正进入正文。

5、上网=用水管  


刚才说了,所谓上网,就是手机访问互联网上的数据。这些数据,都在别人公司的电脑(服务器)上。

也就是说,网络通信,就是把你的手机和别人公司(例如腾讯、阿里、优酷)的服务器之间,连一个通道。

6.jpg

如果这个通道有任何一处出现问题,那么,整个通道的速率,就会出现问题。

7.jpg

就像一根水管,它最细的地方,决定了整个水管的流速。

出现问题导致的后果,就是——消息发不出去(或收不到),音乐或视频播放会停顿或模糊,游戏也会停顿,甚至重连。

8.jpg

这就影响了功能的正常使用,影响了你的体验还有心情:
9.gif

因此,处理网速问题,说白了,就是找到这根水管的最窄处,把它拓宽。解决断网问题,也是这个道理,找到水管断掉的位置,把它接上。

有的人会抱怨网速:“我家不是百兆光纤嘛,怎么还会卡顿?”。其实就是搞错了问题的方向——他没有找水管的最窄处,而是强调自己水管的最宽处。

6、移动通信?有线宽带?  


处理网络问题的第一步,就是先判断——你到底是用的什么上网方式?

前面我提到,之所以我们能上网,是使用了运营商提供的“电信服务”。

10.jpg

这种服务,主要分为两种:

  • 1)一种是卖手机SIM卡给你,你把卡插入手机,进行通信。这种叫移动通信服务;
  • 2)另一种,是给你家里拉根宽带,可能是网线,或者是光纤(现在基本上是光纤为主)。然后你通过这根线上网。这种,叫有线宽带服务。

包括固定电话,还有iptv,也是属于有线通信服务的范畴。

13.jpg
▲ 电信师傅调测iptv(iptv其实就是上网看电视)

这两种上网方式(移动通信和有线宽带),问题排查的方法不尽相同。所以,应该首先搞清楚自己到底用的是什么方式。

注意:大家所熟知的WiFi,虽然看上去也是在“移动”中通信,但是本质上属于有线宽带(待会我们会说明)。

7、移动通信上网问题的排查  


我们首先说说移动通信上网的问题排查。

移动通信,就是通过基站,提供网络信号(关于基站更详细的知识,请见:《IM开发者的零基础通信技术入门(六):移动终端的接头人——“基站”技术)。

14.jpg
▲ 基站

然后你的手机通过这个信号,连入运营商的网络,从而访问互联网。

15.jpg

大家都知道,如果你使用移动通信上网或打电话,网络不好,通常会表现为:你手机上的信号标志,格数只有1格,甚至是无信号。

16.jpg

信号好,上网就快。信号不好,上网就慢,甚至不能上网。决定这个信号强弱的,就是运营商的基站和天线。基站越多,天线和你之间的距离越短,或者基站和手机之间的障碍物越少,你的手机信号就会越好

17.jpg

如果你所在的地方手机信号不好,怎么办呢?

答案是打客服电话投诉。一次不行就多打几次。如果还是不行,就拨打工信部的投诉电话:12300。

18.jpg
▲ 工信部是运营商们的上级主管部门

很多人问我,是不是可以自行安装信号放大器或者中继器的方式,加强所在区域的运营商信号?

答案是——不行。

任何个人或单位都没办法中继或加强运营商的基站信号。这主要是为了保证公众的通信安全。

你只能让运营商自己来解决。他们的办法,无非是多安装几个基站,或微基站。

19.jpg

如果你看到信号格数是满的,但始终觉得速度很慢,可以安装软件进行网速测试。例如“speedtest”这个软件,就可以用于测速。

20.jpg
▲ Speedtest软件界面

现在我们所处的4G LTE时代,手机上网测速如果达到30-40Mbps(注意单位是bit/s,bps)以上,就算是不错的了。

如果信号格数满的,但测速值很低,依然可以打运营商客服电话投诉。

注意:如果你身边的用户(必须是相同运营商),测速结果很好,那么有可能是你的手机存在问题。这种,就属于“用户侧”问题。

所谓用户侧,也就是手机(电脑)这一侧。相对应的,运营商那边,叫做“网络侧”。

21.jpg

如果手机上网有问题,第一件事,就是问问身边的人,是否存在同样的问题。

当然,也有可能是你的SIM卡有问题,或者运营商那边,把你的数据设置错了,导致问题。

通常来说,用户侧出问题的概率明显高于网络侧。如果网络侧出问题,就是大面积问题,大家都无法使用网络,很容易察觉。

8、用户侧问题的排查


如果确认了是自己的手机存在问题,就需要进一步排查了。

手机出现卡顿,首先要判断清楚的,就是——到底是手机卡顿,还是网络卡顿?

现在新出的手机,配置都比较高,对于绝大部分软件(例如微信、爱奇艺、百度地图等)来说,都是可以流畅运行的。(对手机配置要求高的,主要是一些游戏软件。)

如果是几年前购买的手机,可能会存在手机卡顿的毛病。还有安卓手机,时间久了就会变卡,这也是产品本身的问题,没办法的(现在安卓手机性能很强,配置很好,这个问题不像以前那么明显)。电脑也是如此。

如何判断是手机卡顿,还是网络卡顿呢?

一般来说,如果是手机卡,那么主要表现为:

  • 1)打开软件缓慢,半天没有反应;
  • 2)点击按钮时,屏幕卡顿;
  • 3)运行游戏时,图像不流畅。

如果是网速卡,通常会有一个很重要的符号,那就是缓冲圆圈。

22.gif
▲ 类似这样的

这个圆圈会不停地转,然后可能还会提示你:“正在缓冲,请等待,Loading”,之类的。(缓冲,就是等待服务器过来的数据。)

如果是手机卡顿,解决方案有两个:

  • 1)重置手机,也就是初始化手机,通过手机设置,恢复成最开始的样子(数据会全部丢失,要记得备份);
  • 2)购买新的手机。

23.jpg

注意:大家别急着去买新手机,如果只是运行某个程序有卡顿,并不一定是你的问题。也有可能是这个程序的服务提供商那边存在问题。例如它们的服务器挂了,它们的机房断网了,之类的。

24.jpg
▲ 服务商的机房

9、有线宽带上网问题的排查   


刚才说了移动通信问题和手机自身问题。接下来,我们看看有线宽带上网问题。

这个里面的问题,就多了去了。

对于有线宽带来说,运营商只是提供了一根线,也就是一个“水龙头”。如果只是拿一台电脑直接接它,显然太浪费了。

所以,每个人家里,都会安装一个路由器,将一个水龙头,变成好多个水龙头。

以前的路由器,只能分出多根网线。现在的路由器,都是无线路由器,除了分出网线之外,还可以发出无线信号,这也就是大家所熟知的——WiFi。

25.jpg
▲ 常见的家庭网络组成

一般来说,有线宽带的网络信号质量,要比移动基站更为稳定,速率也要更快一些。(无线信号容易受障碍物阻挡,也容易受干扰。)

再加上手机上网需要使用流量,费用更贵。所以,大家都喜欢用WiFi,喜欢用光纤宽带上网。

但是,光纤宽带也不一定都很快。不同省份和城市之间,不同的运营商之间,差异会比较大。

而且,有线宽带也分专享宽带和共享宽带,如果是共享宽带,好几家一起用的,高峰期就会很慢,不建议使用。(当然,共享宽带价格便宜。)

很多用户,贪便宜,装了不好的宽带,结果速度还不如使用手机流量上网。

26.jpg

使用有线宽带上网,最重要的,就是你的无线路由器。

无线路由器!无线路由器!无线路由器!重要的东西说三遍!

目前市面上的无线路由器,牌子很多,价格差别很大,品质差别也很大。

27.jpg
▲ 各种品牌的无线路由器

我很严肃地告诉大家,请不要使用一两百块钱的那种低端路由器。哪怕它外观很漂亮、拥有各种功能(都是噱头)。

以我的经验,路由器的外观越低调,反而越靠谱。

28.jpg

现在我们所处的这个信息时代,网络的质量决定了生活的质量,所以,多花点钱,买个好的无线路由器,很有必要。

好的无线路由器,运行更加稳定,不容易掉线、死机,网速的抖动也不会大。而且,好路由器在信号和辐射之间的平衡,也控制得更好。

29.jpg
▲ 例如华硕、网件的无线路由器,就做得不错

另外,请大家注意,很多无线路由器号称是千兆路由器,但实际上是玩的“文字游戏”。

现在的无线路由器,可以同时提供两个无线网络,分别是2.4GHz频段和5GHz频段。

所以一般你手机能搜到两个无线网络,名字类似这样:
30.jpg
▲ 有一些WLAN网络,名字以“_5G”结尾

商家宣传无线路由器的时候,有一个潜规则——它所说的XX兆,实际上是两个无线网络的理论峰值速率相加。

例如这个路由器,所谓1200M,就是300M+867M:
31.jpg
▲ 1200M≈300M+867M

32.jpg
▲ 市售路由器宣传速率和实际速率对照表

这显然是不合理的——你的手机不可能同时连两张WiFi网络,更不可能网速进行叠加,更更不可能达到极限速度。但是,所有的路由器厂家都在这么做。

更需要注意的是,现在的很多所谓“千兆”路由器(尤其是低端型号),网线物理端口都是百兆的,根本不是千兆。

33.jpg
▲ 出去的口(WAN口)是千兆的,可是内部的口(LAN口)是百兆的

也就是说,如果你安装运营商的“千兆宽带”,但使用的是这样的路由器,你根本发挥不出千兆的能量。

而且,事实上,就算你用了千兆物理网口的路由器,如果网线没有达到标准,都很难达到千兆速率。

34.jpg
▲ 网线对网速的影响,也很大

所以,对绝大部分用户来说,完全没有必要追求所谓“千兆宽带”。两百兆的宽带,绝对足够了

如何判断有线宽带的问题点在哪里呢?

最简单的办法,就是直接拿电脑,接上网线,连在运营商的光猫上,然后进行测速。

35.jpg
▲ 家庭宽带最简测速模型

测速软件很多,简单一点的话,腾讯电脑管家的工具箱—测试网速工具,就可以进行测速。

36.jpg

如果测速结果不能达到运营商承诺的值,那么,请拨打客服电话,让运营商工作人员上门解决。

测速的时候需要注意,建议选本地或附近的测速点。不要选异地或别的运营商的测速点。

例如,你是南京电信的用户,那么,不要选择北京电信或者四川联通的测速点。

注意:现在运营商的光猫基本上都带无线WiFi功能,但是我建议不要使用。因为光猫的WiFi功能很烂,很容易出问题。我建议专门购买无线路由器,用路由器进行PPPOE拨号。光猫的话,只用用光纤拨号功能就好了。此外,建议关掉光猫的Wi-Fi,减少辐射,也减少对自家无线路由器的信号干扰。

如果测速正常,那么,要么是无线路由器的问题,要么是手机(电脑)的问题。

如果家里多部手机(电脑)都工作正常,而只有某部手机(电脑)网速异常的话,基本上是这个手机(电脑)的问题。还是建议采用替换法进行排查处理。

实在不行,就只能找手机(电脑)的厂家或专业维修人员了。

好啦,以上就是今天文章的全部内容。

其实,大家也应该看明白了,虽然网络问题纷繁复杂,但是,只要逻辑思路清晰,按照顺序逐一排查,就不难找到原因。平时开发应用程序,或向客户、产品经理、老板解释相关网络问题时,也更有依据、更有底气了。

希望这篇文章能够给大家带来帮助,感谢大家的耐心观看,我们系列文章的下篇再见咯!

附录:更多网络编程干货文章


计算机网络通讯协议关系图(中文珍藏版)[附件下载]
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
>> 更多同类文章 ……

即时通讯网 - 即时通讯开发者社区! 来源: - 即时通讯开发者社区!

上一篇:IM开发者的零基础通信技术入门(十一):为什么WiFi信号差?一文即懂!下一篇:IM开发者的零基础通信技术入门(十三):为什么手机信号差?一文即懂!

本帖已收录至以下技术专辑

推荐方案
打赏楼主 ×
使用微信打赏! 使用支付宝打赏!

返回顶部