热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

浅析IM即时通讯开发出现上网卡顿?网络掉线?im即时通讯技术

本文主要分享【im即时通讯技术】,技术文章【浅析IM即时通讯开发出现上网卡顿?网络掉线?】为【wecloud1314】投稿,如果你遇到相关问题,本文相关知识或能到你。im即时通讯技术特别推荐即时通

本文主要分享【im即时通讯技术】,技术文章【浅析IM即时通讯开发出现上网卡顿?网络掉线?】为【wecloud1314】投稿,如果你遇到相关问题,本文相关知识或能到你。

im即时通讯技术

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

作为即时通讯(IM、消息推送等应用场景)相关技术的开发者人员来说,似乎了解跨专业的通信技术(这是大学通信工程专业类学生的学习内容),有点过于深入和底层了,因为一般来说熟练掌握逻辑层的TCP\IP相关协议、网络编程相关的应用技术就差不多能胜任这方面的本职工作了。

 

没错,确实是这样。但在开发IM、推送这类应用系统时,尤其在移动网络下,各种弱网问题,让人非常痛苦。

典型的弱网问题,比如:

    1)频繁掉线;
    2)丢包严重;
    3)网络抖动;
    4)网络延迟;
    ........


那么,针对以上现象,怎么才能有底气的跟老板、客户、产品经理地解释以下问题?

    1)导致这些现象的根本原因到底是什么?
    2)怎么跟老板解释,要搞定在高铁上用好音视频聊天功能很困难?
    3)怎么跟客户解释P2P在3G、4G甚至5G网络下的成功率问题?
    4)怎么向客户说明,商场或人多场合下,明明信号很好,但你的APP确用不了?
    .......


你说这些都是网络问题,APP代码无能为力。那么,你倒是讲讲到底是什么样的网络问题?能把人讲信服了,就可以甩锅给网络,不然只能是APP代码背锅了。现实吧!

所以,我们还是老老实实花点功夫来研究研究通信技术吧(通信技术直面的是网络通信物理层),至少遇到问题,不说给别人,至少给自已找到一个说的过去的解释。这才是一个优秀程序员的修养!

网上能找到的通信技术资料都太过专业或太不专业,要么都是搞网络工程方面的内行人编写的(内容专业但很枯燥难懂),要么就是外行的IT开发人员写的(很少见,且价值不大,因为不够专业,所以内容并不准确,参考价值很有限)。

既能让外行的普通程序员看懂,还能准确地讲明白通信技术知识,这样的资料简直比找金矿还难。因为普通程序员能接触到的网络编程、网络通信方面的资料多针对数据通信的逻辑层(比如:tcpip、socket等知识范畴),而通信技术涉及的是数据通信的物理层(交换机、路由器、天线、网络制式等),某种意义上来说,这是完全不同的技术方向。

好消息是,经过长时间的资料搜集,终于有了本系列文章,希望能给你带来帮助。

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

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


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

对于即时通讯网的开发者来说,为了更深入地搞清楚这些常见的网络问题,很有必要系统地了解导致这些问题的方方面面。即时通讯聊天软件app开发可以加蔚可云的v:weikeyun24咨询

 

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

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

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

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

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

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

什么是数据呢?

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

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

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

大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。(这只是理论上的最高速度,人一多,速度就达不到。)

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

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

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

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

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

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

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

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

移动通信?有线宽带?  

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

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

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

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


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

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

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

本文《浅析IM即时通讯开发出现上网卡顿?网络掉线?》版权归wecloud1314所有,引用浅析IM即时通讯开发出现上网卡顿?网络掉线?需遵循CC 4.0 BY-SA版权协议。


推荐阅读
  • 本文介绍了计算机网络的定义和通信流程,包括客户端编译文件、二进制转换、三层路由设备等。同时,还介绍了计算机网络中常用的关键词,如MAC地址和IP地址。 ... [详细]
  • [译]技术公司十年经验的职场生涯回顾
    本文是一位在技术公司工作十年的职场人士对自己职业生涯的总结回顾。她的职业规划与众不同,令人深思又有趣。其中涉及到的内容有机器学习、创新创业以及引用了女性主义者在TED演讲中的部分讲义。文章表达了对职业生涯的愿望和希望,认为人类有能力不断改善自己。 ... [详细]
  • 如何用UE4制作2D游戏文档——计算篇
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了如何用UE4制作2D游戏文档——计算篇相关的知识,希望对你有一定的参考价值。 ... [详细]
  • 开发笔记:计网局域网:NAT 是如何工作的?
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了计网-局域网:NAT是如何工作的?相关的知识,希望对你有一定的参考价值。 ... [详细]
  • 本文详细介绍了在Linux虚拟化部署中进行VLAN配置的方法。首先要确认Linux系统内核是否已经支持VLAN功能,然后配置物理网卡、子网卡和虚拟VLAN网卡的关系。接着介绍了在Linux配置VLAN Trunk的步骤,包括将物理网卡添加到VLAN、检查添加的VLAN虚拟网卡信息以及重启网络服务等。最后,通过验证连通性来确认配置是否成功。 ... [详细]
  • CISCO ASA防火墙Failover+multiple context详细部署By 年糕泰迪[操作系统入门]
    一.文章概述本文主要就CISCOASA防火墙的高可用和扩张性进行阐述和部署。再cisco防火墙系列中主要有3种技术来实现高可用和扩张性。分别是Failover,multiplese ... [详细]
  • 网关(Gateway)又称网间连接器、协议转换器。网关在传输层上以实现网络互连,是最复杂的网络互连设备,仅用于两个高层协议不同的网络互连。网关的结构也和 ... [详细]
  • 配置IPv4静态路由实现企业网内不同网段用户互访
    本文介绍了通过配置IPv4静态路由实现企业网内不同网段用户互访的方法。首先需要配置接口的链路层协议参数和IP地址,使相邻节点网络层可达。然后按照静态路由组网图的操作步骤,配置静态路由。这样任意两台主机之间都能够互通。 ... [详细]
  • 如何提高PHP编程技能及推荐高级教程
    本文介绍了如何提高PHP编程技能的方法,推荐了一些高级教程。学习任何一种编程语言都需要长期的坚持和不懈的努力,本文提醒读者要有足够的耐心和时间投入。通过实践操作学习,可以更好地理解和掌握PHP语言的特异性,特别是单引号和双引号的用法。同时,本文也指出了只走马观花看整体而不深入学习的学习方式无法真正掌握这门语言,建议读者要从整体来考虑局部,培养大局观。最后,本文提醒读者完成一个像模像样的网站需要付出更多的努力和实践。 ... [详细]
  • 本文讨论了在VMWARE5.1的虚拟服务器Windows Server 2008R2上安装oracle 10g客户端时出现的问题,并提供了解决方法。错误日志显示了异常访问违例,通过分析日志中的问题帧,找到了解决问题的线索。文章详细介绍了解决方法,帮助读者顺利安装oracle 10g客户端。 ... [详细]
  • 合并列值-合并为一列问题需求:createtabletab(Aint,Bint,Cint)inserttabselect1,2,3unionallsel ... [详细]
  • Java和JavaScript是什么关系?java跟javaScript都是编程语言,只是java跟javaScript没有什么太大关系,一个是脚本语言(前端语言),一个是面向对象 ... [详细]
  • 恶意软件分析的最佳编程语言及其应用
    本文介绍了学习恶意软件分析和逆向工程领域时最适合的编程语言,并重点讨论了Python的优点。Python是一种解释型、多用途的语言,具有可读性高、可快速开发、易于学习的特点。作者分享了在本地恶意软件分析中使用Python的经验,包括快速复制恶意软件组件以更好地理解其工作。此外,作者还提到了Python的跨平台优势,使得在不同操作系统上运行代码变得更加方便。 ... [详细]
  • 用ESP32与Python实现物联网(IoT)火焰检测报警系统
    下图是本案例除硬件连线外的3步导学开发过程,每个步骤中实现的功能请参考图中的说明。在硬件连线完成之后我们建议您先使用“一分钟上云体验”功能预先体验本案例的实际运行效果 ... [详细]
  • 动态多点××× 单云双HUB
    动态多点是一个高扩展的IPSEC解决方案传统的ipsecS2S有如下劣势1.中心站点配置量大,无论是采用经典ipsec***还是采用greoveripsec多一个分支 ... [详细]
author-avatar
璨然2502869273
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有