网络为什么需要子网掩码

“子网掩码”是为了和ip地址做“位与”运算,得出“网络号”,但是为什么要多此一举呢?直接配置网络号不是更方便么?这样就位与运算都不用做了,拿到的就直接是网络号了。

阅读 234
评论
    6 个回答
    • 2.8k

    这个和你写信要分哪个市哪个区哪个街道再哪户一样,直接配置网络号还是不知道发给谁,那不还得配置一个主机号(你的门牌号)?你问为什么要网络号+主机号两层结构?因为IPv4里需要用网络号来表示某一堆主机同属一个组,即同一网段,组与组之间的通信先能实现了,才好进一步解决任意主机之间的通信问题。网段内主机大家自由通信,跨网段通信都交给网段内的网关负责。如果不引入两层结构,好家伙每台电脑都要知道所有其他电脑的 Mac 地址才行。数据链路层需要 mac 地址通信。

    好了,也就是说你要知道网络号和主机号这两项数据,所以不用掩码一样没省事。子网掩码加IP地址本质上包含的信息就是网络号和主机号,但是比起在通信的时候传递两项配置,写明哪个网络下的哪个主机收,掩码方案的优势就来了,实际上IP数据包是不需要把掩码带上,就是说,你写信给另一个主机只需要指明哪个 IP 收,并不要说多此一举说收信人的掩码是什么。系统拿自身配置的掩码和收信人的IP按位与就知道接收人是不是同一网段的啦。如果是,直接ARP广播喊一声就能找到对方。如果不是那就发给网关,类似你把信交给收发室让他帮你转发。网关参照自己的路由表帮你把数据包发到下一个节点。

    公网IP都是有规定分好的网段的,即ABCD类,所以公网IP的掩码其实是确定的,不存在一个公网IP同属两个网段。私有段IP可以自行搭配不同掩码来调节网络大小。

      子网掩码、子网掩码,顾名思义,划分子网用的啊。

      如果不需要划分子网,所有设备都接入的是同一个网络,那确实可以不用掩码。

        最直接干脆的解释就是,比如,一个路由器,自身内网地址是192.168.0.1,多个手机连上了路由器,192.168.0.8、192.168.0.39,此时,子网掩码255.255.255.0与一下,就可以知道哪些手机是内网设备了,当然你会认为这么一说,似乎,使用额外独立的32位网络号(子设备号)的方案也可以啊,子网掩码和网络号是同等优劣的方案啊。

        子网掩码就是用来判断任意两台网络设备IP是否属于同一个网络(子网)。

        120.48.4.1 这是一个IP地址,当我有个需求,我希望公司对外只有一个IP地址,公司内部网络设备的IP都不暴露(建立一个高度安全的公司内网),那么就有个问题,显然公司需要有一台网络设备拥有外网IP和内网IP,这样就可以保护内网的同时,提供安全可靠的内外通讯,那么内网显然天然就形成一个局域网(子网),能想到的最直接,最省资源(不增加字节)的方式就是子网掩码,通过子网掩码的方式,人为规定,IP地址中 120.48.4.1 第三个点后面的数字代表内网设备的编号,如过内网是上千个网络设备,那么就固定第二点后面的数字代表内网设备编号,相比给每一个内网设备存储一个子设备号,每个内网设备一个IP地址,公司网关设备存一个子网掩码,网络传输的字节明显能少很多,而且技术上内外网一致,技术成本低,就多存一个子网掩码而已,而且可以根据需要修改子网掩码就能灵活控制内网设备的数目

          子网掩码不是为了计算网络号,而是通过“掩盖”网络号来划分子网IP地址(范围)。

          比如我们要把192.168.1网段平均划分为4个子网,那么简单计算,每个子网分别有256/4=64个IP地址,64用二进制表示为6位,那么子网掩码应该有26位(32-6),表示为255.255.255.192(11111111.11111111.11111111.11000000)。通过子网掩码我们可以这样表示四个子网:

          子网一:192.168.1.0/26
          子网二:192.168.1.64/26
          子网三:192.168.1.128/26
          子网四:192.168.1.192/26

          相当于子网掩码“掩盖”了前26位,用IP部分表示子网起始地址,掩码表示子网地址数量(结束地址)。可以用下面的方式形象的理解这个过程(第一个子网):

          掩码地址:11111111.11111111.11111111.11000000
          起始地址:11000000.10101000.00000001.00000000
          掩盖部分:xxxxxxxx.xxxxxxxx.xxxxxxxx.xx

          没有被掩盖部分为6位,最大是63,那么第一个子网地址就是“掩盖”部分不变,从起始地址开始以及之后的63个IP,都属于改子网。

            • 9k

            对于一个ip ,比如 192.168.0.1 ,它的子网掩码可能能是 255.255.0.0, 也可以是 255.255.255.0 ,对应的子网的“容量”是不同的。在前一个配置下,192.168.1.1与它是同一个子网,但在后一个配置下则不是。

            但是,你位与一下就会发现,他们的“网络号”是一样的。

            所以,只有网络号,是不够的。

              子网掩码是为了区分前几位代表网络号,后几位代表网络内编号

              直接配置网络号的意思是只配置一个网络号吗?那好像和子网掩码的作用不太一样哦

              而且位运算是人类觉得麻烦,对于计算机来说位运算是最简单的运算了

                撰写回答

                登录后参与交流、获取后续更新提醒