在计算机网络中,不需要很大的网络,就会碰到 光速极限 的限制。
光速是每秒30万公里。但是光在光纤(玻璃)中的速度大约是每秒20万公里。折合一毫秒200公里,一微秒200米。
而现在的计算机内的高精度计时器(HPET)基本上都可以达到0.1微秒以上的计时精度。也就是说,只要两台机的网线超过20米,它们之间的网络信号延迟就已经可以测量出来了。
如果说上述延迟的实际影响仅存于理论上的话,那大一点的网络就会影响实际问题了。
如果是稍大一点的网络,例如说广州到北京,2000公里,光是不可避免的信号延迟就已经达到了10ms。这个延迟值已经可以显著的影响实际应用了——例如说传输吞吐率,例如说高精度时间戳等。受这些影响,例如说分布式系统,或者数据同步/ 备份系统等,都需要有针对性的设计和考虑。
好几个朋友在评论中指出了类似的问题:
光在光纤中是斜斜的走的。……
在光纤里,光是不断折射传播的, 实际距离比直线传播远多了
……
延时应该更高点,因为光在光缆中不是顺着光缆线直线传播的,而是通过不断折射传播的,所以20米的光缆线,光在里面走了20*1.414=28米
因此,(计算延迟时)应该把这路程差异考虑进去。
应该说,你们确实考虑得很仔细。然而,你们是被半桶水的科普给误导了。因为几乎所有对光纤原理,以及全反射的科普里,都是这样的图:
还有这样的直观效果:
当然,这确实也是光纤,也有一定的应用(因为便宜)。然而,这种简单的光纤,会导致严重的色散。所以,在通信领域,尤其是长距离干线通信领域,我们实际使用的,都是 自聚焦 的多模光纤或者(原理上)更复杂的单模光纤。
这种多模光纤的结构并不是上面说的那种简单的内外两层全反射,而是 折射率渐变 的:
直观点的话,光在这种光纤中的实际路径是这样的:
因为内层的折射率大,而外层的折射率小,光在外层走时,虽然路程较长,但是因为折射率较低,所以速度也较快。所以,只要设计好每层的折射率 梯度 ,使得 光速差 刚好能补偿其 光程差 ,就可以实现: 自聚焦 效果——也就是无论光实际走哪条路,总是能同时到达对端(当然,这是理论理想情况)。
所以,一般计算这种自聚焦光纤的延时,我们只需要直接计算沿子午线(中心)传输的路径就可以了,不需要额外考虑光程差带来的额外延时。
至于单模光纤,其实光在光纤里面的运行方式已经不适合用大家所熟悉的几何光学来描述了。所以,几何光学里的「折射」/「全反射」/「平行」等几何光学里的概念,都不太合适用于这个场合。需要用「非线性光学」才能去研究和描述里面的行为,所以就不详细展开了。
但是计算延时的话,也同样只需要计算沿子午线的传输距离就行了。