有什么命令可以知道 Android 的 MTU 大小吗?
7 回答
您应该使用NetworkInterface类来查询和获取网络接口,然后调用getMTU()
.
今天翻看netcfg的代码,看到接口的配置在/sys/class/net..然后就想到了你!(我昨天读了你的问题)
如果您有 root 访问权限,请打开终端并运行
cat /sys/class/net/<interface>/mtu
在没有 ROOTING手机的情况下,您可以使用 Windows/Mac/Unix 系统中的 ping 命令。但是,对于不同的操作系统,-options 的语法ping
非常不同。
对于 Windows
尝试这个:
ping /l 1473 /f 10.68.34.75
/l <Size>
— 指定发送的回显请求消息中数据字段的长度(以字节为单位)。默认值为 32。
/f
— 指定发送回显请求消息时将 IP 标头中的不分段标志设置为 1(仅在 IPv4 上可用)。
-l
使用命令行选项调整有效负载。当您达到上限时,您将看到此消息并且您会发现 MTU 大小:
> The packet needs to be fragmented but DF set.
更多详情:https ://kb.netgear.com/19863/Ping-Test-to-determine-Optimal-MTU-Size-on-Router
了解Android MTU大小的方法:
- 从终端:
ifconfig $DEVICE | egrep addr\|MTU
- 通过Android 调试桥(adb):
adb shell netcfg | grep UP
找到所需的地址和adb shell ip addr show rmnet0
如果是rmnet0
或adb shell cat /sys/class/net/rmnet0/mtu
如果出现rmnet0
(如@patedit 所述)
对于大多数网络访问,MTU 可以通过 MTU 发现来解决。您可以使用具有不同有效负载大小的 Ping 命令,并且不要分段来查找克莱斯勒值。祝你好运
1480,我相信,但你可以通过使用ifconfig $DEVICE
有根设备来检查,并在那里检查 MTU。
在没有 ROOTING手机的情况下,您可以使用 Windows/Mac/Unix 系统中的 ping 命令。但是,对于不同的操作系统,-options 的语法ping
非常不同。
从大多数 Unix/Linux/Mac 系统(无需 ROOTING 手机)
您可以从手机共享互联网连接,然后从连接到您的 android-phone 的任何 PC 运行ping
命令:
ping www.yahoo.com -s 1413 -M do
人平说:
-s <packetsize>
— 指定要发送的数据字节数。默认值为 56,当与 8 字节的 ICMP 报头数据组合时,它转换为 64 个 ICMP 数据字节。
-M <pmtudisc_opt>
— 选择路径 MTU 发现策略。<pmtudisc_option>
可以是do
(禁止分片,甚至是本地分片),want
(进行 PMTU 发现,当数据包大小较大时在本地分片)或dont
(不设置DF标志)。
使用命令行选项调整有效负载-s
(例如:1200、1300、1400、1500、1450、1425、1440、...)。当你达到上限时,你会看到这样的消息,你会发现 MTU 大小:
> From 192.168.1.1 icmp_seq=1 Frag needed and DF set (mtu = 1500)
ping: local error: Message too long, mtu=1500
我的答案基于 Windows 的这个:答案 #25165641