9

有什么命令可以知道 Android 的 MTU 大小吗?

4

7 回答 7

6

您应该使用NetworkInterface类来查询和获取网络接口,然后调用getMTU().

于 2012-07-06T14:33:09.083 回答
5

今天翻看netcfg的代码,看到接口的配置在/sys/class/net..然后就想到了你!(我昨天读了你的问题)

如果您有 root 访问权限,请打开终端并运行

cat /sys/class/net/<interface>/mtu
于 2012-07-07T10:22:05.383 回答
4

在没有 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

于 2014-08-06T16:38:14.697 回答
3

了解Android MTU大小的方法:

  1. 终端ifconfig $DEVICE | egrep addr\|MTU
  2. 通过Android 调试桥(adb)
    • adb shell netcfg | grep UP找到所需的地址和
    • adb shell ip addr show rmnet0如果是rmnet0
    • adb shell cat /sys/class/net/rmnet0/mtu如果出现rmnet0(如@patedit 所述)
于 2018-06-11T05:54:45.420 回答
1

对于大多数网络访问,MTU 可以通过 MTU 发现来解决。您可以使用具有不同有效负载大小的 Ping 命令,并且不要分段来查找克莱斯勒值。祝你好运

于 2014-11-14T10:40:24.750 回答
1

1480,我相信,但你可以通过使用ifconfig $DEVICE有根设备来检查,并在那里检查 MTU。

于 2012-07-06T14:30:36.470 回答
0

在没有 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

于 2020-04-13T01:57:56.980 回答