1.本机以及对端机器的处理时延
这 部分指的是发送端和接收端主机由于操作系统调度,中断,网卡数据包调度等处理引入的时延,基本属于操作系统的范畴,如果一个TCP数据包可以发送(窗口足 够容纳),但是由于此时CPU被操作系统切换到了另外一个进程造成了延迟,或者说该数据包确实已经被发送了,但是由于网卡性能很低,需要将数据包的内容逐 字节的拷贝,这也会引入额外的延迟,这部分时间就应该算到主机处理时延中。
2.中间网络设备的处理时延
这是中间设备的“主机处理时延”,与端主机的处理时延类似,所不同的是,这部分时延大多数是排队时延,相比较排队时延,路由器或者交换机的处理时延可以忽略,当前骨干
网 设备的pps线速都是超高的,如果你想优化那些设备的转发表,路由查找等逻辑,那是没找对地方,如今都是线卡硬件快速转发,交换网络处理都是纳秒级的,如 果想优化路由转发等,那就去华为做光猫的部门谋份职位吧,那里会让你大展才华(绝非广告!)。再次重申,中间网络设备的处理时延主要是指排队时延。
3.中间网络的传输时延
这 部分就不多说了,我们知道,光速很快,但也是有个值的,也就是说,光从一个地方到达另一个地方也是需要时间的,因此数据在载波中通过介质从一个主机到达另 一个主机或者中间节点也是需要时间的,这部分时间就是网络传输时间,它主要受到串扰,折射率,光色散等物理因素的影响。
知道了上述的因素,那么我们如果想测量一条TCP连接的数据传输速率,该怎么办呢?
理论非常简单但却很苍白!总数据量除以时间。然而问题是,我在哪个层面上去测量速率,我需要什么样的精度。如果说我想知道我的主机的处理速率,那么时间就 是指本机的处理时延,数据量就是在该时延内通过的数据量,更一般的,如果我想知道一个文件从一个WEB服务器上下载下来的速率,我就需要用总文件大小除以 下载完成需要的时间,这部分时间包括上述三种时延的总和。