局域网文件传输卡在10mb/s、丢包或断连,很可能是网卡被错误协商为半双工模式;应通过设备管理器禁用自动协商并手动设置“100 mbps full duplex”或“1 gbps full duplex”。

当你发现局域网内两台电脑互传文件速度卡在10MB/s左右、频繁丢包或连接时断时续,很可能是网卡被错误协商成了半双工模式——它让数据像老式对讲机一样轮流说话,而全双工能让收发同时进行,就像打电话。
通过设备管理器强制设置双工模式
右键“此电脑”→选择“管理”→左侧点开“设备管理器”→展开“网络适配器”→找到正在使用的有线网卡(名称通常含Realtek、Intel或Broadcom)→右键→“属性”。
切换到“高级”选项卡→在属性列表中找到【Speed & Duplex】(英文系统)或【连接速度和双工模式】(中文系统)→点击右侧下拉框。
手动选择具体组合:如“100 Mbps Full Duplex”或“1 Gbps Full Duplex”。【不要选Auto Negotiation(自动协商)】——这是故障根源,尤其当对接老旧交换机、劣质网线或水晶头压接不良时,系统常误判为半双工。
点“确定”后,系统会立即重启该网卡连接。此时打开命令提示符,输入ipconfig /all,查看对应适配器的“连接特定 DNS 后缀”下方是否出现“媒体状态 . . . . . . . . . . : 已连接”,说明生效。
用PowerShell快速验证当前双工状态
以管理员身份运行PowerShell,执行:Get-NetAdapter | Where-Object {$_.Status -eq "Up"} | Select-Object Name, LinkSpeed, MediaType。
这只能看到连接速率,看不到双工类型——Windows GUI不暴露该字段,必须借助第三方工具或底层命令。
真正有效的验证方式是运行:netsh interface show interface,确认目标适配器状态为“已连接”;再执行:wmic nic where "netenabled=true" get name, speed, maxspeed,若显示速度为1000000000但实际传输慢,基本可判定是半双工伪装成高速。
Linux下用ethtool精准读写双工参数
第一步:用ip link或ls /sys/class/net/确认物理网卡名(如enp0s3、eth0)。
第二步:执行sudo ethtool [网卡名](例如sudo ethtool eth0),在输出中查找【Duplex: Full】或【Duplex: Half】这一行——这才是真实工作模式,比Windows界面更可信。
第三步:若需强制设为全双工,先关闭自动协商:sudo ethtool -s eth0 autoneg off;再设定速度与双工:sudo ethtool -s eth0 speed 100 duplex full。注意:这两条命令必须连用,单独设duplex无效。
第四步:为防止重启失效,把命令写入/etc/network/if-up.d/下的可执行脚本,或修改NetworkManager连接配置的[ethernet]段,添加duplex=full和speed=100。











