我在 ping 具有大数据包的主机时遇到一些问题。
我正在对一种配置与另一种配置之间的延迟进行一些研究。
我编写了 bash/zsh 脚本,以便更简单地 ping 8.8.8.8,然后解析输出以获得平均 ping 值。脚本如下:
#!/bin/zsh
for SIZE in {100..65500..100}
do
ping 8.8.8.8 -c 5 -s $SIZE > tempfile
TEMP=$(cat tempfile | tail -1 | awk '{print $4}' | cut -d / -f 2)
echo "$SIZE - $TEMP" | tee -a results
done
rm tempfile
问题是,对于大数据包(当标准值为 64b 时超过 30kB),ping 不起作用,我没有得到任何响应,就像服务器不可用一样。有趣的是,当我在另一个地方时,一切都工作正常(那里的互联网连接有点差),那里的问题开始大约 60kB,但在这里他们开始大约 30kB 并得到一个(从〜300到最后,更大=更糟)结果我需要调用这个脚本大约 10-20 次。这真的很烦人,因为对于较小的数据包,它的工作方式就像一个魅力(使用相同的服务器 8.8.8.8)。
有人知道是什么原因造成的吗?
答案1
如果如此大的 ping 的任何片段在任一方向上被丢弃,您将根本得不到响应。这就是知识产权的运作方式。检查丢失片段的 IP 统计信息;如果损失发生在回程途中,则损失会增加,但如果损失发生在出境途中,则您将一无所获。