互联网发展至今,网络可以说是基础,所有的数据、内容都跑在网络上,今天和同事在沟通工作的过程中,发现很多人对公网的网络延迟是没有概念的。
我们知道网络延迟是指数据在传输介质中传输所用的时间,即从报文开始进入网络到它开始离开网络之间的时间。针对这个延迟我们可以使用 Ping 命令基于 ICMP 协议来进行测试。比如我们 Ping 百度的域名。
1 | Erdong@Erdong-Test # ping baidu.com |
上边显示整个过程发送了 11 个数据包,平均延迟是 11.829ms ,这个就是我当前电脑本地到百度最近的服务的延迟,这个延迟相对来说是很好的了。
对于公网来说,网络延迟是和地理位置强相关的一个指标。假设我们在北京部署了一个站点,从深圳访问的时候,这个延迟大概要 40ms ,基本不会低于 30ms。那么这延迟是怎么来的,为什么是这个数值,能不能减少呢?
我们都知道,网络传输是通过传输介质来进行的,常见的传输介质就是双绞网线和光纤,另外还有其他类型的线材。短距离一般是双绞网线,普通场景下的网络延迟基本可以忽略不计,长距离和超长距离一般是光纤光缆,这个时候迟延就非常明显。
我们已知光在真空中传播,折射率为 1,其光速约为 c=30 万公里/秒,当光在其他介质里来面传播,其介质折射自率为 n,光在其中的速度就降为 v=c/n,光纤的材料是二氧化硅,其折射率 n 为 1.44 左右,计算延迟的时候,可以近似认为 1.5,我们通过计算可以得出光纤中的光传输速度近似为 v=c/1.5= 20 万公里/秒。
以北京和深圳为例,直线距离 1920 公里,接近 2000 公里,传输介质如果使用光纤光缆,那么延迟时间 t=L/v = 0.2 万公里/20 万公里/秒=10ms ,也就是说从北京到深圳拉一根 2000 公里的光缆,单纯的距离延迟就要 10ms ,实际上是没有这么长的光缆的,中间是需要通过基站来进行中继,并且当光功率损耗到一定值以后,需要通过转换器加强功率以后继续传输,这个中转也是要消耗时间的。另外数据包在网络中长距离传输的时候是会经过多次的封包和拆包,这个也会消耗时间。
综合考虑各种情况以后,以北京到深圳为例,总的公网延迟大约在 40ms 左右,北京到上海的公网延迟大约在 30ms ,同城的情况下,公网延迟大约在 10ms ~ 15ms ,基本维持在 20ms 以内。如果数据出国的话,延迟会更大,比如中国到美国,延迟一般在 150ms ~ 200ms 左右,因为要经过太平洋的海底光缆过去的。
现在我们对于公网的延迟有了一个基本的概念,也理解了为什么自己附近的网站打开会快一些,越远的网站打开会越慢。那么回到开头 Ping 百度域名的例子里,有没有人想过为什么 Ping 百度的域名总是很快,好像全国各地差别并不大?
这个其实是百度在全国很多城市都有放置服务器,我们每个人访问的百度都是离自己最近的服务器,并不会出现,人在北京,访问了一台深圳的服务器的情况。所以访问会快很多。
好了,今天就聊这么多。
======================
由于无法及时收到评论内容,所以关闭评论功能。
大家有问题欢迎发邮件到 erdong@mail.erdong.site ,或者 https://github.com/erdong/erdong.github.io/issues 提 Issue ,我会及时回复。
======================
Erdong, A Linux user !