热门标签 | 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版权协议。


推荐阅读
  • 2017-2018年度《网络编程与安全》第五次实验报告
    本报告详细记录了2017-2018学年《网络编程与安全》课程第五次实验的具体内容、实验过程、遇到的问题及解决方案。 ... [详细]
  • 本文深入探讨了UNIX/Linux系统中的进程间通信(IPC)机制,包括消息传递、同步和共享内存等。详细介绍了管道(Pipe)、有名管道(FIFO)、Posix和System V消息队列、互斥锁与条件变量、读写锁、信号量以及共享内存的使用方法和应用场景。 ... [详细]
  • 访问一个网页的全过程
    准备:DHCPUDPIP和以太网启动主机,用一根以太网电缆连接到学校的以太网交换机,交换机又与学校的路由器相连.学校的这台路由器与一个ISP链接,此ISP(Intern ... [详细]
  • 采用IKE方式建立IPsec安全隧道
    一、【组网和实验环境】按如上的接口ip先作配置,再作ipsec的相关配置,配置文本见文章最后本文实验采用的交换机是H3C模拟器,下载地址如 ... [详细]
  • 本题探讨了在大数据结构背景下,如何通过整体二分和CDQ分治等高级算法优化处理复杂的时间序列问题。题目设定包括节点数量、查询次数和权重限制,并详细分析了解决方案中的关键步骤。 ... [详细]
  • 本文详细介绍了如何在不同操作系统和设备上设置和配置网络连接的IP地址,涵盖静态和动态IP地址的设置方法。同时,提供了关于路由器和机顶盒等设备的IP配置指南。 ... [详细]
  • 本文介绍了如何利用Python进行批量图片尺寸调整,包括放大和等比例缩放。文中提供了详细的代码示例,并解释了每个步骤的具体实现方法。 ... [详细]
  • 本文详细介绍了优化DB2数据库性能的多种方法,涵盖统计信息更新、缓冲池调整、日志缓冲区配置、应用程序堆大小设置、排序堆参数调整、代理程序管理、锁机制优化、活动应用程序限制、页清除程序配置、I/O服务器数量设定以及编入组提交数调整等方面。通过这些技术手段,可以显著提升数据库的运行效率和响应速度。 ... [详细]
  • Nginx 反向代理与负载均衡实验
    本实验旨在通过配置 Nginx 实现反向代理和负载均衡,确保从北京本地代理服务器访问上海的 Web 服务器时,能够依次显示红、黄、绿三种颜色页面以验证负载均衡效果。 ... [详细]
  • 深入解析Java枚举及其高级特性
    本文详细介绍了Java枚举的概念、语法、使用规则和应用场景,并探讨了其在实际编程中的高级应用。所有相关内容已收录于GitHub仓库[JavaLearningmanual](https://github.com/Ziphtracks/JavaLearningmanual),欢迎Star并持续关注。 ... [详细]
  • 深入理解TCP/IP协议中的MTU与MSS及以太网数据帧
    本文详细探讨了TCP/IP协议中MTU(最大传输单元)和MSS(最大分段大小)的概念及其在以太网数据帧中的应用。通过分析这些关键参数的工作机制,帮助读者更好地理解网络通信中的数据包处理过程。 ... [详细]
  • 在编译BSP包过程中,遇到了一个与 'gets' 函数相关的编译错误。该问题通常发生在较新的编译环境中,由于 'gets' 函数已被弃用并视为安全漏洞。本文将详细介绍如何通过修改源代码和配置文件来解决这一问题。 ... [详细]
  • 序列化与反序列化是数据处理中的重要技术,特别是在网络通信和数据存储中。它们允许将复杂的数据结构转换为可传输或存储的格式,再从这些格式恢复原始数据。本文探讨了序列化与反序列化的基本概念,以及它们在不同协议模型中的角色。 ... [详细]
  • Redis安全防护深入解析
    本文详细探讨了如何通过指令安全、端口管理和SSL代理等措施有效保护Redis服务的安全性。 ... [详细]
  • 本文将介绍如何利用Python爬虫技术抓取国内主流在线学习平台的数据,并以51CTO学院为例,进行详细的技术解析和实践操作。 ... [详细]
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社区 版权所有