linux - echo 2 >/proc/sys/net/ipv4/tcp_mtu_probing 能够解决我的问题,但为什么呢?这个命令是做什么的?

标签 linux ubuntu networking tcp ipv4

我无法将大于 1.2 kB 的文件从我的系统 (Ubuntu) 上传到我的网站,请求一直停滞不前。不知何故我发现了这个命令 echo 2 >/proc/sys/net/ipv4/tcp_mtu_probing 现在我可以将任何大小的文件从我的桌面上传到我的网站。 我不知道这个命令的作用以及为什么会这样。请帮我找出这个问题。

我在我的桌面上运行了 echo 2 >/proc/sys/net/ipv4/tcp_mtu_probing 并且它起作用了我没有在服务器上做任何改变。

最佳答案

根据man 7 tcp:

tcp_mtu_probing (integer; default: 0; since Linux 2.6.17):

This parameter controls TCP Packetization-Layer Path MTU Discovery. The following values may be assigned to the file:

0 Disabled

1 Disabled by default, enabled when an ICMP black hole detected

2 Always enabled, use initial MSS of tcp_base_mss.

这意味着一旦启用,您的操作系统会尝试使用 Path MTU discovery 查找客户端和服务器之间的 MTU机制。它可能会增加您的默认 MTU(Linux 上为 1500),从而允许发送更大的数据包。

您可以通过运行 ip a 检查接口(interface)上的 MTU:

1: lo: <LOOPBACK,UP,LOWER_UP> mtu 16436 qdisc noqueue state UNKNOWN # <= here MTU is 16436 bytes
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
    inet6 ::1/128 scope host
       valid_lft forever preferred_lft forever
 # below MTU is 1500 bytes
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UNKNOWN qlen 1000
    link/ether 00:0c:29:28:fd:4c brd ff:ff:ff:ff:ff:ff
    inet 192.168.50.2/24 brd 192.168.50.255 scope global eth0
    inet6 fe80::20c:29ff:fe28:fd4c/64 scope link
       valid_lft forever preferred_lft forever

这是一种奇怪的行为,您无法传输文件,因为 IP 分段和 TCP 分段通常会在通过网络发送文件之前将文件分 block 。也许您应该检查您机器上的默认碎片/分段配置是什么。

关于linux - echo 2 >/proc/sys/net/ipv4/tcp_mtu_probing 能够解决我的问题,但为什么呢?这个命令是做什么的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37454773/

相关文章:

linux - udev 规则不起作用

c - 对 'pthread_create' 的 undefined reference — 链接器命令选项顺序(目标文件之前/之后的库?)

ssl - DNS - 将 A 记录指向 SSL 证书的新 IP

带有 header 和其他字段的 Flutter Multipart Request

java - java.io.FileDescriptor.sync() 在 Linux 上 fsync 目录吗?

linux - 如何在 docker 镜像中安装 python 模块?

python - 在 R 的自定义安装中使用 rpy2

ubuntu - 使用 pdftk 将多个 pdf 页面合并到特定的 pdf 页面

Django - Apache2 内部服务器错误

c - 强制通过网络进行 UDP 广播(禁用环回)