问问大家关于 PING 的小白问题

2021-07-05 10:54:47 +08:00
 zhoudaiyu

假设在节点 A 可以 PING 通节点 B 且节点 B 可以 PING 通节点 A 的情况下,从节点 A 看 PING 节点 B 的延迟和从节点 B 看 PING 节点 A 的延迟一定是一样的吗?

3875 次点击
所在节点    Linux
25 条回复
asyqm
2021-07-05 10:58:14 +08:00
感觉不一定一样吧。网络双向速度不一定是对称的。如果同样规模的网络拥堵+非对称速度,那延迟就不一样了。
745839
2021-07-05 11:02:39 +08:00
不一定。虽然互通,但是,A 去 B 的路由,和 B 去 A 的不一定一样,延时也会根据链路开销有关系。
myd
2021-07-05 11:11:47 +08:00
楼上说的有道理。

网络是动态的:
1. A -> B 的路由会变,B -> A 的路由也会变。
2. 网络拥挤程度也是动态的。

如果来回链路一样,没有网络拥挤,延迟应该是一样的。
HB9527
2021-07-05 11:13:46 +08:00
不一定一样啊,来回的路由(线路)可能不同。
aitaii
2021-07-05 11:26:37 +08:00
得看 A 到 B 的路由,B 到 A 的路由,可以用 tracert 看一下
40EaE5uJO3Xt1VVa
2021-07-05 11:31:11 +08:00
不一样,来回线路不同,ping 结果也不会一样。BGP 动态路由 /负载均衡了解一下
xJogger
2021-07-05 11:32:28 +08:00
国庆的前几天的时候,一般是进景点堵,出景点不堵。
网络上也有类似的现象。
另外就是 ping 走的协议和开网页走的协议不一样,所以 ping 的速度和开网页的速度也可能不一样。
个人粗浅理解,欢迎指正。
CRVV
2021-07-05 11:40:29 +08:00
ping 测的是来回的时间不是单程的时间,和来回链路一不一样没关系。
另外测量单程时间需要两边先对表,ping 根本没有这种高端功能。


> 从节点 A 看 PING 节点 B 的延迟和从节点 B 看 PING 节点 A 的延迟一定是一样的吗

跑一次 ping,基本上每个包的延迟都不一样,所以你要怎么定义 “一定一样” ?
只能说两个方向上用 ping 的测出来的时间是数据包经过了相同的路径花的时间。
但中间的路由器也许会做一些操作让这两种情况的数据包通过的路径不一样。

所以说这些都是没谱的事情,答案当然是不一定一样
raaaaaar
2021-07-05 11:57:05 +08:00
了解下分组交换,互联网不是像电线网那样是电路交换,线路不建立连接,所以每次走的路由都可能不一样
no1xsyzy
2021-07-05 12:25:38 +08:00
你就是同样 A > ping B 都会不一样。
还有路由协议启动较慢的问题,第一次 ping 可能延迟比之后高得多。

除此以外,还可能遇到软件造成的不同延迟。比如 A 在硬件层面**响应** ICMP,B 在软件层面**响应** ICMP,那就会造成差异。A ping B 会往 B 的 CPU 走一圈。

@CRVV 因为相对论的关系,光速造成延迟还少的对表是科学上没有实证意义的行为,工程上是如何宽松限制的?
zhoudaiyu
2021-07-05 12:48:18 +08:00
@asyqm #1
@745839 #2
@myd #3
@hungrybirder #4
@aitaii #5
@yanzhiling2001 #6
@xJogger #7
@CRVV #8
@raaaaaar #9
@no1xsyzy #10

学到了很多,谢谢大家!如果假定 A 到 B 和 B 到 A 的路由是一样的,A 和 B 硬件和软件性能是相同的,且整个链路只有 A 和 B 两台节点,那是不是 A->B 和 B->A 的延迟近乎就是相同的了?
no1xsyzy
2021-07-05 13:08:50 +08:00
@zhoudaiyu 要科学上准确地描述的话,应当是叫「简并」
你做的是测量而不是计算,测量是有误差和不确定度的。除此以外的话,你确实可以说
『 A ping B 和 B ping A 测量的是两个简并的实量』
包括在同一个交换机下接 N 个设备,这 N 个设备间互 ping 也是简并的。
aqqwiyth
2021-07-05 13:09:00 +08:00
没有其他干扰的话, 理论上讲是一致的
jorneyr
2021-07-05 13:29:39 +08:00
网络有上下行之别
nicetoomeetyou
2021-07-05 13:44:22 +08:00
@zhoudaiyu 网络会有波动, 不可能相同。
120qwer
2021-07-05 14:32:18 +08:00
这是结果,不太清楚是不是想要的:

<a href="https://imgtu.com/i/R4P7Cj"><img src="https://z3.ax1x.com/2021/07/05/R4P7Cj.md.png" alt="R4P7Cj.png" border="0" /></a>
twllz
2021-07-05 14:57:31 +08:00
> 如果假定 A 到 B 和 B 到 A 的路由是一样的,A 和 B 硬件和软件性能是相同的,且整个链路只有 A 和 B 两台节点,那是不是 A->B 和 B->A 的延迟近乎就是相同的了?

大致相同,但还是会有差别。即使路由完全对称,路由器前往不同方向的 buffer 里面,排队长度(拥塞程度)也会不一样,从而排队延迟也会有区别。这个差别是可大可小的。
manfred4527
2021-07-05 15:13:21 +08:00
不考虑太大的网络环境和负载均摊的话,理论上是一样的
CRVV
2021-07-05 15:20:05 +08:00
@no1xsyzy

这个和狭义相对论没关系。

狭义相对论是说在两个存在相对运动的参照系上分别测量一段时间,得到的结果不一样。
比如坐一个速度为 0.99c 的飞船,从地球飞到火星,在地球上放一个表,在火星上放一个表,在飞船上也放一个表,得到三个结果。
地球上的表测出来的结果和火星上的表相同,它俩和飞船上的表的结果不同。
地球和火星相对运动速度不接近光速,可以忽略相对论的效应,所以这两边可以分别测量飞船用的时间得到相同的结果。

和广义相对论就更没关系了吧。
CRVV
2021-07-05 15:24:27 +08:00
@zhoudaiyu

> 如果假定 A 到 B 和 B 到 A 的路由是一样的,A 和 B 硬件和软件性能是相同的,且整个链路只有 A 和 B 两台节点,那是不是 A->B 和 B->A 的延迟近乎就是相同的了?

如果整个链路只有两个节点,这个网络里就没有路由的事情了,两台机器直连。

这个问题本身其实没什么意义,从北京开车去上海的时间和从上海开车去北京的时间是不是一样?
如果是问 ping 的时间,从北京去上海再开回北京,从上海开车去北京再开回上海,这两个的时间是不是一样?

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/787558

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX