智睿享
白蓝主题五 · 清爽阅读
首页  > 电脑设置

传输层参数设置建议:让网速更稳、延迟更低

家里宽带明明是千兆,打游戏却老掉线;公司服务器跑着几十个 TCP 连接,偶尔卡顿半天才响应——这些现象,很可能不是网线或带宽的问题,而是传输层参数没调对。

先搞清楚:传输层参数管什么?

简单说,TCP/IP 协议栈里的传输层(主要是 TCP)负责端到端的可靠传输。它不是“发了就完事”,而是靠窗口大小、超时重传、连接保活、拥塞控制等一整套机制来协调数据怎么发、发多少、断了怎么重连。默认参数是为通用场景设计的,但你的路由器、笔记本、NAS 或 Linux 服务器,可能早就该换个“脾气”了。

几个最值得调的参数(Windows 和 Linux 都适用)

TCP 窗口缩放(Window Scaling)
如果你经常传大文件、看高清直播、或者用 NAS 同步多路视频,窗口太小会严重拖慢速度。现代系统基本默认开启,但老旧设备或某些精简版系统可能关着。确认方法:

Linux 下检查:

cat /proc/sys/net/ipv4/tcp_window_scaling

返回 1 表示已启用;若为 0,可临时开启:

echo 1 | sudo tee /proc/sys/net/ipv4/tcp_window_scaling

要永久生效,编辑 /etc/sysctl.conf,加入:

net.ipv4.tcp_window_scaling = 1

初始拥塞窗口(initcwnd)
新建立的 TCP 连接一开始能发多少数据?默认常是 10 个 MSS(约 14KB),但在高带宽低延迟网络(比如本地千兆局域网或云服务器直连)里,这个值太保守。你可以把它提到 30~40:

Linux 下对某接口设置(如 eth0):

sudo ip route change default via 192.168.1.1 dev eth0 initcwnd 30

注意:需配合路由表使用,重启后失效,建议写入网络管理脚本。

别乱碰的“危险区”

tcp_fin_timeout(FIN 超时)、tcp_tw_reuse 这类参数,很多人听说“能防 TIME_WAIT 占满端口”就一股脑开启。但实际在普通家用电脑上几乎没用——你浏览器同时开 50 个标签页,活跃连接也就十来个,根本撞不上端口耗尽。强行调反而可能导致 Nginx、Docker 等服务偶发连接异常。除非你运维的是日均百万请求的代理网关,否则先放着。

一个真实例子:远程桌面卡顿怎么办?

同事用 Windows 远程桌面连公司工作站,操作鼠标像幻灯片。查了带宽和延迟都正常,最后发现是 Windows 默认关闭了 TCP 快速打开(TCP Fast Open)。启用后,连接建立快了一半,画面立刻跟手:

PowerShell(管理员运行):

Set-NetTCPSetting -SettingName InternetCustom -AutoTuningLevelLocal Normal
Enable-NetTCPFastOpen

再配合把 net.ipv4.tcp_slow_start_after_idle 设为 0(Linux 服务端),效果更稳。

参数不是越多越好,也不是越激进越快。盯着你的真实场景调:打游戏?重点压延迟,调小重传间隔;做 NAS 备份?优先吞吐,拉大接收窗口;跑 Docker 微服务?留足连接跟踪资源,别瞎改 TIME_WAIT。手边有台终端,敲两行命令试试,比换路由器还见效。