![计算机网络奖励:查找小于 1500 的 MTU](https://linux22.com/image/563553/%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%BD%91%E7%BB%9C%E5%A5%96%E5%8A%B1%EF%BC%9A%E6%9F%A5%E6%89%BE%E5%B0%8F%E4%BA%8E%201500%20%E7%9A%84%20MTU%20.png)
这是我的网络课上的一道加分题:我必须找到一个路径 MTU < 1500 字节的目的地。
例如使用命令
traceroute -F www.uwaterloo.ca 1500
有效,但traceroute -F www.uwaterloo.ca 1501
无效。
所以我需要找到一个在 1500 以下会失败的目的地(而且它不能是私人网络,那样就是作弊了)。
我怀疑这是一个诡计,因为几乎所有以太网 IP 实现都使用支持 1500 MTU 的以太网 V2 帧格式。
有任何想法吗?
答案1
你有多少时间?你可以暴力破解它。例如像这个 bash 脚本:
while [ 1 ]
do
ip=`expr $RANDOM \* $RANDOM`;
traceroute -F -I $i 1472 2>/dev/null >/dev/null
if [ $? -ne 0 ]
then
echo Traceroute with 1472 bytes failed for $i
exit
fi
done
注意事项:此消息将 IP 显示为整数,您必须将其转换为以点分隔的八进制格式。另请注意,traceroute 默认使用 ICMP。在这种情况下,您需要将数据大小设置为 1472 字节(1472 + 8 字节 ICMP 标头 + 20 字节 IP 标头)= 1500 字节。
答案2
在互联网上搜索分配给 ADSL 调制解调器的 IP(大多数调制解调器使用 PPPoE 或 PPPoA)。在 ping 测试期间运行tcpdump icmp
并注意 ICMP Fragmentation Needed(类型 3,代码 4)。如果您看到,则您找到了目标。