网络延迟是什么原因(分析降低优化网络延迟的原因)

网络延迟是什么原因(分析降低优化网络延迟的原因)

  这本来是为悟空问答中的一个问题

  写的答案。但是写啊写就说到延迟这个问题上去了,于是打算搬到头条号重新整理下发出来。

  我们常常念叨“网络太慢了”,慢的原因,除了受运营商网络带宽影响之外,还受到另一个叫“延迟”的概念的影响。对非计算机行业的普通用户而言,他们不关注“延迟”,总之就是感觉网络慢,影响了体验。其实有时候,还真不是带宽不够,而是延迟这口锅让带宽来背了。

  作为技术人员,就需要刨根问底研究一下,哪些原因会导致网络延迟呢?

  第一,不同的网络协议,应用场景不同,实时性要求不一样,会影响网络延迟。

  但是我们做开发的,是不是都有一个印象:HTTP比TCP慢。为什么会感觉慢呢?这个“慢”,并不是HTTP这个协议让网络传输变慢了,而是有别的原因导致了延迟:

  传输同样的有效载荷,HTTP比TCP需要传输的内容多一些了。因为HTTP是在TCP之上设计的文本协议,增加了很多应用相关的头字段,身材变得臃肿了,在给定带宽的条件下,耗时会多一些,哪怕是毫秒/微秒级的。这是第一个原因。

  HTTP协议是基于Request-Response模式的,Client请求,Server响应。早期的HTTP协议(1.0)在设计的时候,是短链接的,就是响应完毕之后,就Disconnect了。下一次请求的时候,又得重新建立连接,发起请求等待响应。打开一个网页,各种script、css、图片…好多,每次建立一个连接就干一件事情,就需要不断地请求/连接/响应/关闭,这个过程非常耗时,比第一个因素得影响要大很多。所以HTTP/1.1在设计时增加了Keep-Alive的选项,支持客户端与服务器建立长连接,效率就提升了很多。

  我们习惯将端到端的视觉效果认定是网络传输速率,这种思维也是会影响到对网络传输速率的直观体验。比如你在浏览器上click一个超链,跳转到一个网页,网页在浏览器里显示出来。这个过程经历了很多复杂的处理,其中耗费在网络传输上的时间其实很少,Server的响应,Client的解析渲染占用了多数时间。但我们就习惯地说,网络好慢啊。

  第二,服务器端软硬的并发处理能力(吞吐量),会影响网络延迟。

  即便是同一种传输协议(比如TCP),也会出现有快有慢的感觉。网络传输的速率要比软件处理数据的速度高得多。网络传输得再快,服务器处理不过来,那就只能等着,堵塞住了。半天没响应,用户会觉得这网络真慢,是不是带宽不够啊。所以,设计针对海量用户、高并发或者实时场景的服务器端软件架构,是一门比较有难度的学问。

  第三,在操作系统层面,不同的系统中,TCP/IP协议栈的实现本身也存在效率差别,可能这个差别比较细微。比如,协议栈运行在内核态就比运行在用户态的效率略高。这一点就不展开说了,否则会写很长很长。

  第四,网络交换和路由,也存在延迟。

  在交换和路由层面,一个包跨越的路由节点越多,需要查路由表的次数就越多。经历了漫长的网络路由,到了交换节点,还得查MAC地址和端口映射表,如果这个交换机是新装上的,这个映射表还没建立完整,还得在全网段上广播。查表啊这些动作自然也就会耗费更多的时间。路由器和交换机虽然效率很高,但在核心网络上,传输的数据包太多了,存在性能瓶颈是在所难免的,也会导致延迟发生。

  第五,纯粹的物理层面的影响,也不能忽略。

  比如局域网中的双绞线用的是五类、超五类、六类?不同的线缆类别和质量对传输速率有所影响。RJ45接头做得规范与否,线缆敷设是否规范(比如双绞线距离过长、折弯)、光纤焊接是否规范,都会影响到传输速率网络稳定性。还有些网络环境中,增加了协议转换硬件(比如MODBUS转RJ45),都会耗费额外的时间,发生延迟。

推荐阅读

    1394连接是什么1394网络适配器知识

    1394连接是什么1394网络适配器知识,,今天有网友在QQ群中问了这样一个问题:1394连接是什么?。由于笔者对1394连接不清楚,通过百度搜索与谷歌

    无线路由器网络如何自动断开线路

    无线路由器网络如何自动断开线路,,如何解决无线路由器网络自动断线?大家应该知道无线网络是很方便的,但是就是网络方面相对来说没那么稳定,对

    网络设置教程|如何网络设置

    网络设置教程|如何网络设置,,如何网络设置wifi路由器信道的设置步骤如下:1.打开浏览器,输入192.168.1.1,进入路由器的网关页面。2.输入管理员

    陈天乔:盛大网络为移动互联网

    陈天乔:盛大网络为移动互联网,,12月2日,北京时间,简称:盛大发布的2011财年第三季度财务报告,截至9月30日,在随后的电话会议上,盛大网络董事长和陈

    无法打开网络正常网页的解决方案

    无法打开网络正常网页的解决方案,,昨天我在一家电脑公司做了一个奇怪的现象,在网络的开始都是正常的,QQ是正常的,但不久之后,我发现无法打开网

    路由网络共享设置

    路由网络共享设置,,互联网已经与人们的生活息息相关,但是高昂的入网费用却成了不少人的负担(特别对于广大的莘莘学子),某些网络供应商还会限制

    vivo网络设置代码|vivo功能代码

    vivo网络设置代码|vivo功能代码,,1. vivo功能代码代码是*#558#1.首先在手机桌面里找到电话。2.在拨号键盘里输入*#558#3.这时候就进入了手