为什么子网掩码会影响网速?
最近发现电脑网速很慢, 还以为路由器问题, 排查了好久, 无意中发现原来是子网掩码的导致的, 只怪大学没好好听课, 原来子网掩码会影响网速………. , 这是啥原理呢?


最近发现电脑网速很慢, 还以为路由器问题, 排查了好久, 无意中发现原来是子网掩码的导致的, 只怪大学没好好听课, 原来子网掩码会影响网速………. , 这是啥原理呢?


上图中全 255 的掩码,所有的数据包都会发送给网关,由网关的 cpu 进行中转,速度受限于网关的处理能力。
下图中,因为测速服务器在子网中,本地可以直接通过 arp 获取到服务器 mac 地址,发出的数据包会直接由交换机芯片直接中转,效率比 cpu 处理高很多。
搜索了一下,这里 https://networkengineering.stackexchange.com/a/11036 也说:
A more appropriate way to do things would be to set your device IP to 10.0.0.2, your gateway to 10.0.0.1, and your subnet mask to 255.255.255.252.
子网和网关是独立的。对于主机来说,子网、网关分别对应路由表里两条路由。举个例子:
default via 192.168.1.1 dev eth0
192.168.1.0/24 dev eth0
第一条是网关对应的路由,第二条是子网对应的路由。
子网掩码是 255.255.255.255 ,其实就是没有第二条路由。但是设置了网关,第一条路由就有的。
而且子网掩码的高位的 1 必须连续,低位的 0 也必须连续,常用的也就是 24 位掩码,255.255.255.0 ( 32bit binary,the high 24 bit is all 1 and the low 8 bit is all 0 )
掩码必须和 IP 地址一起使用,掩码和 IP 地址的二进制数字进行「按位与」的运算,计算得出这个 IP 地址所属的 network 是哪个(可以区别其他 network ),host 是哪个(具体主机是哪个)
图一的 32 位 掩码,也就是 255.255.255.255 ,任何 32 bit 二进制数和他进行与操作之后还是本身,也就是 32 位全是网络号,没有空间区分主机号。这表示网络只有一个 IPv4 地址,所有流量都将直接在具有该 IPv4 地址的设备和默认网关之间进行。 该设备将无法与网络上的其他设备进行通信。
于是当掩码是 32 时,路由器那边的 cpu 负担过重。而如果是 24 位掩码,其中的很多运算就在其他网络上进行了计算。
可以说一个网络就包含一个路由器。
子网掩码配置成 32 位,路由器是 192.168.199.1
这样你的 mac 发出去的数据包,请求的压力就全在这台路由器上(也就是网关)
而 LibreSpeed 的服务器 ip 是 192.168.199.50 这样子的吧
我后来搜了下 librespeed 没有客户端的 就是网页

我也搞了个,但是可能受限于 这台机器的 CPU (上古神器 intel P8600 )性能不够 千兆没有跑满
网关必须要在某个子网中的目的是为了能够通过广播 arp 拿到网关的二层地址(子网划分了广播域), 如果某种路由的网关可以直接去查询二层地址, 那就没有这个限制.
默认路由的网关就是这个特殊的存在. 比如 Linux 上网络地址是 default 的路由, 在 Windows 上 metric 标记为 Default 的路由. 这个网关的优先级是最低的, 所有其他路由没有匹配到的地址才会走这条路由的网关. 主机是会直接使用 ARP 查询这个网关的二层地址, 而不会管这个地址在其他的路由中是否可达.