为什么子网掩码会影响网速?

yitingbai 1月前 24

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

最新回复 (28)
  • gux928 26天前
    引用 2
    拓扑结构及设备清单也放出来看看
  • 楼主 yitingbai 26天前
    引用 3
    @gux928 就是家庭网络, 光猫 > 路由器 > 电脑, 啥拓扑结构, 不会弄啊
  • v2020 26天前
    引用 4
    理论 /24 范围很小不至于,难道是因为手动指定和网关播发冲突,我在虚拟内网掉速这个问题看到你这个突然想到了,还有种网卡缺陷类似 i217 -*之类
  • 楼主 yitingbai 26天前
    引用 5
    @v2020 255.255.0.0 也不会影响网速, 只有 255.255.255.255 会影响, 简单百度了一下, 也没找到类似的解释, 而且只影响上传速度, 下载不影响, 网络延迟也正常
  • weyou 26天前
    引用 6
    猜想你的 librespeed 服务一定是架在本地内网的。

    上图中全 255 的掩码,所有的数据包都会发送给网关,由网关的 cpu 进行中转,速度受限于网关的处理能力。

    下图中,因为测速服务器在子网中,本地可以直接通过 arp 获取到服务器 mac 地址,发出的数据包会直接由交换机芯片直接中转,效率比 cpu 处理高很多。
  • Lemeng 26天前
    引用 7
    真没研究过,了解了
  • sujin190 26天前
    引用 8
    @weyou #5 正解了,这也是下行不受影响的原因,可以抓包看看链路层信息就更清楚了
  • 楼主 yitingbai 26天前
    引用 9
    @weyou 测速网站确实在内网, 受教了
  • ysc3839 26天前
    引用 10
    @weyou 借楼问一下,/32 的子网掩码不是代表同一网段内没有其他设备吗?那怎么发给网关的?按理说网关也得在同一子网内吧?

    搜索了一下,这里 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.
  • LinePro 26天前
    引用 11
    @weyou #5 有个问题,子网掩码是 255.255.255.255 的话,按计算机网络知识正常来讲主机并不知道如何能够与网关互联。但为什么这里可以?
  • muzuiget 26天前
    引用 12
    子网掩码无非就是定义一个 IP 范围而已,九成就是网络程序自己的问题。
  • XiaoxiaoPu 26天前
    引用 13
    @LinePro
    @ysc3839

    子网和网关是独立的。对于主机来说,子网、网关分别对应路由表里两条路由。举个例子:

    default via 192.168.1.1 dev eth0
    192.168.1.0/24 dev eth0

    第一条是网关对应的路由,第二条是子网对应的路由。

    子网掩码是 255.255.255.255 ,其实就是没有第二条路由。但是设置了网关,第一条路由就有的。
  • ch2 26天前
    引用 14
    32 位子网,只能靠网关中转发 ip 包,24 位子网就不需要网关代劳了,子网内部可以直接发包
  • lcdtyph 26天前
    引用 15
    @ysc3839 #9
    网关不必在同一子网,典型的例子是 ipv6 的 link-local 地址。
    在路由阶段网关的 ip 只是用来在 arp 过程中获取下一跳的 mac 地址,因此内核只需要知道应该从哪个 interface 广播 arp request 就可以了。
  • AllenHua 26天前
    引用 16
    子网掩码的作用是划分 IP 地址中哪一部分是网络号(区分哪些 network ),哪一部分是主机号(区分哪些主机)的 (回想起谢希仁计算机网络……),用来区分 ip 地址在这个私网内属于哪个网段

    而且子网掩码的高位的 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 位掩码,其中的很多运算就在其他网络上进行了计算。

    可以说一个网络就包含一个路由器。
  • AllenHua 26天前
    引用 17
    @AllenHua #15 楼主的 mac 获取 ipv4 地址是手动配置的

    子网掩码配置成 32 位,路由器是 192.168.199.1

    这样你的 mac 发出去的数据包,请求的压力就全在这台路由器上(也就是网关)

    而 LibreSpeed 的服务器 ip 是 192.168.199.50 这样子的吧
  • AllenHua 26天前
    引用 18
    @AllenHua #16 没仔细看图,你的 LibreSpeed 的服务器 ip 是 192.168.199.101
  • shutan 26天前
    引用 19
    带宽好大啊!
  • AllenHua 26天前
    引用 20
    @shutan #18 人家这是局域网,千兆内网都能达到的
  • x86 26天前
    引用 21
    @weyou #5 牛皮牛皮,学习了
  • rationa1cuzz 26天前
    引用 22
    学习了
  • LinePro 26天前
    引用 23
    @XiaoxiaoPu #12 @lcdtyph #14 拿 Windows 测试了一下,确实是这个逻辑,受教了,感谢。不过 IPv6 的 link-local 地址不是默认子网前缀长度是 10 吗?那应该算同一子网吧?
  • 楼主 yitingbai 26天前
    引用 24
    @AllenHua 不是啥客户端, 就是一个开源测速 web 项目 https://github.com/librespeed/speedtest, 局域网内搭建, 用来测试局域网速度非常方便
  • lcdtyph 26天前
    引用 25
    @LinePro
    不是说默认子网前缀是 10,是 fe80::/10 这个网段的地址都是 link-local 地址,本地单播实际上前缀是 64 。
    拿这个例子是想说,当时用 ipv6 全局地址通信的时候,网关可以使用与通信地址不在同一网段的链路地址。
  • AllenHua 26天前
    引用 26
    @yitingbai #23 嗯嗯

    我后来搜了下 librespeed 没有客户端的 就是网页

    ![20210409115131.png]( https://cdn.jsdelivr.net/gh/hellodk34/[email protected]/img/20210409115131.png)

    我也搞了个,但是可能受限于 这台机器的 CPU (上古神器 intel P8600 )性能不够 千兆没有跑满
  • Telegram 26天前
    引用 27
    @weyou #5 一个是菜鸟驿站,一个是京东送货上门,这比喻差不多吧
  • weyou 26天前
    引用 28
    @ysc3839
    @LinePro

    网关必须要在某个子网中的目的是为了能够通过广播 arp 拿到网关的二层地址(子网划分了广播域), 如果某种路由的网关可以直接去查询二层地址, 那就没有这个限制.

    默认路由的网关就是这个特殊的存在. 比如 Linux 上网络地址是 default 的路由, 在 Windows 上 metric 标记为 Default 的路由. 这个网关的优先级是最低的, 所有其他路由没有匹配到的地址才会走这条路由的网关. 主机是会直接使用 ARP 查询这个网关的二层地址, 而不会管这个地址在其他的路由中是否可达.
  • julyclyde 26天前
    引用 29
    一本正经的胡说八道
  • 游客
    30
返回