我写了一个简单的Python程序来发送UDP数据报。
import socket
client_socket = socket.socket(socket.AF_INET,socket.SOCK_DGRAM)
host_name = socket.gethostname()
host_ip = '1.2.3.4'
print(host_ip)
port = 8080
message = b'0' * 65500
client_socket.sendto(message,(host_ip,port))
当我运行此代码时,它成功发送了 UDP 数据包。这是wireshark日志,
我的无线接口的 MTU 是 1500,这是我通过运行ip link
命令找到的。
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
2: eno2: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc fq_codel state DOWN mode DEFAULT group default qlen 1000
link/ether 58:11:22:82:c2:ec brd ff:ff:ff:ff:ff:ff
altname enp0s31f6
3: wlo1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP mode DORMANT group default qlen 1000
link/ether f4:26:79:33:7c:96 brd ff:ff:ff:ff:ff:ff
altname wlp0s20f3
我读到不能发送大于接口 MTU 的数据包,那么 UDP 数据包是如何传输的呢?有人可以向我解释一下这里发生了什么吗?
PS:我尝试将其发送到我拥有的服务器,并且我也能够收到该消息。