为什么套接字模块无法获得真正的MTU值?

时间:2019-08-30 14:27:51

标签: sockets networking python-3.6 mtu

显示我的本地网络中的网络接口:

ifconfig 
enp3s0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.31.52  netmask 255.255.255.0  broadcast 192.168.31.255

lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
        inet 127.0.0.1  netmask 255.0.0.0

我想通过python套接字模块获取mtu值。

import IN,socket
def getMtu(host,port):
    sock = socket.socket(socket.AF_INET,socket.SOCK_DGRAM)
    sock.setsockopt(socket.IPPROTO_IP,IN.IP_MTU_DISCOVER,IN.IP_PMTUDISC_DO)
    sock.connect((host,port))
    max_mtu = sock.getsockopt(socket.IPPROTO_IP,IN.IP_MTU)
    print("Actual MTU :{}".format(max_mtu))

获取127.0.0.1的mtu值。

>>> getMtu("127.0.0.1",10000)
Actual MTU :65535

它与ifconfig节目相同。

获取192.168.31.52的mtu值。

>>> getMtu("192.168.31.52",10000)
Actual MTU :65535

为什么与ifconfig节目不同?我想获得预期的结果1500

0 个答案:

没有答案