我无法对具有大数据包大小的主机执行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上)。
有人知道是什么原因吗?
答案 0 :(得分:0)
此行为与IP分段有关,当您的数据包大小大于最大传输单位(MTU)占用的数据包数量并变得非常低效时,请查看https://en.wikipedia.org/wiki/IP_fragmentation