当一台电脑有多个网卡(比如有线、无线、虚拟网卡等)时,它是如何决定“从哪个网卡上网”的?
一、什么是“多个网卡”?
“网卡”就是电脑用来连网的接口,一台电脑可能同时有:
网卡类型 | 说明 |
---|---|
有线网卡 | 连接网线的(Ethernet) |
无线网卡 | 连接 Wi-Fi |
虚拟网卡 | 虚拟机、VPN、热点共享等虚拟出来的 |
蓝牙网卡 | 支持蓝牙上网的设备 |
这些网卡都可以有自己的 IP 地址、网关、路由表。
二、多个网卡同时插上,电脑如何决定走哪一条?
电脑其实有一套 “路由优先级机制”,用来决定:
“我发出去的网络请求,走哪个网卡?”
核心是:路由表(Routing Table)
Windows/Linux/Mac 都有“路由表”这个东西,它会根据“优先级”决定走哪个网卡。
你可以在终端查看:
- Windows:
route print
- Linux/macOS:
ip route
或netstat -rn
路由优先级的核心指标是:
项目 | 解释 |
---|---|
跃点数(Metric) | 数值越小,优先级越高 |
默认网关(Default Gateway) | 如果目标地址不知道,就从默认网关走 |
子网掩码越精准,越优先 | 比如要去 192.168.1.100,192.168.1.0/24 优先于 0.0.0.0/0 |
三、举个真实的例子
场景:你的电脑同时连了:
- 一个 Wi-Fi(192.168.1.2,网关 192.168.1.1,metric 50)
- 一个有线网(10.0.0.2,网关 10.0.0.1,metric 25)
结果:
- 默认走有线网卡(metric 更小)
- 你访问百度、B站,都是从有线走出去的
- Wi-Fi 还连着,但不走网流量
如果你拔掉网线,路由表会更新,流量就自动切到 Wi-Fi。
四、怎么手动控制“用哪个网卡上网”?
方法 1:禁用你不想用的网卡
- 右键“网络连接” > 禁用某个网卡
方法 2:修改跃点值(metric)
- Windows 网络设置 > 高级 > TCP/IP 设置
- 手动设置 metric 数值(小的优先)
方法 3:绑定应用程序到指定网卡(高级)
- 某些 VPN、游戏可以选择“走哪个网络”
- 也可以用第三方软件如 ForceBindIP(Windows)
五、为什么有多个网卡?
场景 | 用途 |
---|---|
一边内网、一边外网 | 比如一边连公司内网,一边上公网 |
开热点 | 有线上网 + 无线开热点(虚拟网卡) |
虚拟机、Docker | 会创建虚拟网卡 |
同时测试多个网络 | 测速、诊断故障 |