为什么需要子网掩码?


37

由于IPv4地址已经提供了网络和主机的信息,为什么我们仍然需要子网掩码?

第一个八位位组已经指定了网络类别(1-127:A,128-191:B,192-223:C等)。A,B或C表示网络的八位位组数目(分别为255.0.0.0、255.255.0.0、255.255.255.0),这会自动告诉您每个网络类别允许多少个主机。

IP提供子网掩码具有的所有信息,以及更多信息。为什么首先需要子网掩码?如果子网包含的信息不完全是IP内信息的子集,那么它还包含什么或子网还做什么,这要求我们独立指定?


21
A,B,C类是1980年代,已经死了。随着地址穷竭的出现,人们意识到,分配给所有者的A和B类空间被完全浪费了,因此CIDR以及整个地址空间中给定的小的可用地址块的分配。
Fiasco Labs 2012年

2
@FiascoLabs那家伙没有回答他的问题。路由器是否仍使用这些子网掩码?是的,如果是有类的(如果没有进一步的子网划分,这可能不太可能),则可以根据地址计算子网掩码。但是a)是否必须使用带有逻辑AND的子网掩码,如果您已经知道想要多少位,那为什么呢?可能是因为CPU操作无法测试字节的x位,所以必须将其他操作清零并应用EQU运算符。
barlop 2012年

8
我使用过的路由器不假定Class A,B或C的第一个八位字节有任何意义。我一直必须设置一个网络掩码或CIDR,以使路由器知道网络和广播所在的地址。当然,类地址分配具有非常简单的网络掩码,即255.0.0.0、255.255.0.0和255.255.255.0,因此,是的,有必要使用子网掩码。
Fiasco Labs '02

VLSM-可变长度摘要屏蔽,您可以创建任意大小的网络或广播域!
Mark S.

3
即使在上课的日子里,您也可以将大型网络划分为其他各种较小的网络。大型大学中的工作站仍然在A类网络中具有地址,但是它可以是整个A类子网的子网的子网。因此,路由器自然不需要做任何假设。
Alexios '02

Answers:


38

我们需要IPv4地址的子网掩码,因为该地址没有提供有关网络大小的任何信息。类的大小不是网络的大小。在实际网络中,所有IPv4网络都被分解为小于类大小的子网

例如,您可以将C类网络200.200.200.0/255.255.255.0分解为两个较小的网络(可能在单独的位置)200.200.200.0/255.255.255.128和200.200.200.128/255.255.255.128(假设它们都不需要超过126个主机)。实际上,大多数公司只为需要在公共Internet上的服务器获得足够的IPv4地址。我亲自看到设置有32、16和8个地址网络(分别是255.255.255.224、255.255.255.240和255.255.255.248的掩码)

仅以类大小为单位的IP网络在限制可以允许的网络数量方面过于严格-127个A类网络占据了一半的空间。更不用说拥有240亿个节点的网络是完全无法管理的,而是在1993 年引入了无类别域间路由(CIDR)来允许网络分离。

同样要明确的是,子网掩码的目的是确定哪些主机位于本地网络上,哪些位于网络外部。主机可以直接与同一网络上的主机对话,但是它们需要与路由器进行通信才能与外部网络上的主机对话。


使用CIDR时,您要在前缀上附加用于网络寻址的位数,其余部分用于主机地址。例如200.200.200.0/27,则自动暗示主机地址必须为63或更低。同样,IP仍会告诉您这条信息,因此请继续提出我的问题...
KMC 2012年

说完之后,它仍然是一个地址和一个网络掩码,这就是基础硬件用来计算其netblock的内容,不是吗?
Fiasco Labs'2

我的问题仍然存在,因为IP仍然包含子网掩码必须具有的所有信息。我仍然完全没有找到子网掩码的理由。
KMC 2012年

1
@KMC:我真的没有得到您的评论,CIDR前缀可与子网掩码和软件相提并论,因此,根据喜好,通常使用前缀或掩码。
莱戈拉斯

20
@KMC:/27 子网掩码,只是用不同的符号表示。
Heinzi 2012年

20

第一个八位位组已经指定了网络类别(1-127:A,128-191:B,192-223:C等)。A,B或C表示网络的八位位组数目(分别为255.0.0.0、255.255.0.0、255.255.255.0),这会自动告诉您每个网络类别允许多少个主机。

是的,但是如果有人要对该网络进行子网划分,则需要使用子网掩码来知道您所在的子网的大小。是的,通过分类寻址,该类可以告诉您网络的大小,并允许您判断网络的规模。主机与您位于同一网络中,但是如果该网络是子网划分的,并且没有子网掩码,那么您如何知道另一个节点是否与您位于同一子网中?

假设您在以太网上。我们使用带子网划分的分类寻址。您的IP地址是1.2.3.4并且您想访问1.3.1.1。您是否使用ARP到达该地址?好吧,这取决于1.2.3.41.3.1.1是否在同一子网中。即使它们位于同一网络中,即使它们位于不同的子网中,也需要使用路由器。如果它们在同一子网中,则应使用ARP。

因此,即使在使用分类网络的情况下,如果正在使用子网划分,也需要子网掩码。

我认为您实际上将子网划分与CIDR混淆了。没有CIDR,即使有子网划分,您也不需要管理区域之间的子网掩码。但是您仍然需要在网络内部使用它!


6

子网掩码用于对IP地址和网络地址进行按位操作。如果我的记忆很好,您可以使用一个IP地址并对其进行“与”运算,然后对给定网络进行子网掩码设置。如果结果等于网络地址,则IP地址在该特定网络上。具有网络地址和子网掩码路由表的路由器可以使用简单的二进制数学运算(如果计算机处理速度不是最快的话,这将是非常快的,如果不是最快的话),以找出将数据包从哪个接口中拉出。


3

“第一个八位位组已经指定了网络类别(1-127:A,128-191:B,192-223:C等)。”

如今,不再有很多常用的协议可以尊重这一点(请参阅@Fiasco Labs评论-RIP是我能想到的唯一协议)。因此,您的问题中的以下语句:

IP提供子网掩码具有的所有信息,以及更多信息。

对于当今Internet中使用的绝大多数协议而言,情况并非如此。

如果您有许多相互连接的机器,并且彼此之间仅进行通信,而没有涉及路由器,那么就不需要子网掩码了(尽管现代TCP / IP堆栈坚持要求您指定一个)。

路由器定义(子)网络的边缘。任何需要通过路由器的东西都在不同的网络上,反之亦然:任何需要去不同网络的东西都需要通过路由器。

子网掩码是所有机器如何判断流量是针对当前网络还是需要发送至路由器以到达其目的地的方式。如果计算机的TCP / IP堆栈位于子网掩码之内,它将直接将其流量发送到目的地,否则它将查询其路由表,通常的情况是将其他流量发送到默认网关。


3

第一个八位位组已经指定了网络类别(1-127:A,128-191:B,192-223:C等)。A,B或C表示网络的八位位组数目(分别为255.0.0.0、255.255.0.0、255.255.255.0),这会自动告诉您每个网络类别允许多少个主机。

虽然历史上确实如此。多年以来并非如此。多年前,向各种ISP分发了24.0.0.0/8。(我相信这主要是给有线电视提供商的。)

即使对于网络分配来说确实如此,内部网络也必须使用网络掩码来简化路由。像10.0.0.0/8这样的网络的高效路由需要细分成更小的网络。这可能是使用/ 16和/ 8细分的简单方案,但更可能是无类细分。较大的子网可以更有效地利用地址空间(设备中超过24%的/ 24可用,而设备中只有30%的/ 30可用。

本地网络直接从设备路由,而其他地址则通过路由器传递。具有多个接口的主机可以连接到不同大小的网络。

对于没有多宿主主机的子网,/ 24包含的地址数量超出了所需数量。我使用过的大多数路由器都有24、48或96个端口,并且可以通过/ 27,/ 26或/ 25子网来支持。这为DCHP和/或多宿主提供了一些额外的地址。组织可以标准化分配/ 24或/ 23的子网以进行路由。

由于IPv4地址已经提供了网络和主机的信息,为什么我们仍需要子网掩码?

许多设备使用/ 24的默认网络掩码,在许多情况下,该掩码与分配给路由器的本地子网(localnet)的大小匹配。这同样适用于A,B和C类。除非子网大小与默认子网匹配,否则需要网络掩码。

如果使用CIDR格式指定地址,则可以从该地址计算网络掩码和网络。如果不是,则可以根据地址和网络掩码来计算网络。无法根据地址和网络可靠地计算网络掩码。

提供子网的网关(路由器)地址可以配置默认路由,从而允许路由到子网外部的地址。


2

除了@Adrian的回答外,我不确定这些内容中有没有提到我们为什么使用遮罩而不是一些更简单的解决方案,而且他只提到了遮罩是FAST的事实,我的意思是为什么不仅仅指定您是对地址192.168.1.200-192.168.1.220感兴趣,或者为什么不为此使用诸如* .my.address.com之类的名称,仅命名每台计算机而不是分配数字?

实际上,您现在可以在某种程度上完全从路由中删除数字,大多数PC可以处理它们发送的流量类型,但是在大型设备上仍然存在问题。

像这样的过滤一直在发生,并且很多。掩蔽可以在硬件中完成,完全不需要浪费时间在无趣的数据包上(过去,这些数据包是您通过网络传输的数据包的99%,现在有了交换式集线器,您应该看不到任何不需要的数据包)地址到您的机器上,再次使其不那么相关)。

对于在硬件上如此简单的解决方案,它也非常灵活。相同的硬件可以通过相同的实现路由整个A类网络(10.xxx)或仅路由一个或两个IP地址。

这不能替代任何其他答案,只是更多信息。


“为什么不只使用* .my.address.com这样的名称,而只是为每台计算机命名呢?”-您的意思是像DNS?
Piskvor,2012年

@Piskvor正是!DNS解析为IP地址,您可以直接使用DNS,但是使用的处理能力会提高。您甚至可以细分域名,以便* .meh.com可以到达一个地址,而* .alt.meh.com可以到达另一个地址...
Bill K

是的,这是有效的-也就是说,什么时候有效(附加复杂性);另外,您需要知道DNS服务器在哪里;鸡和蛋的问题。
Piskvor

@Piskvor我只是说,除了性能(在某些情况下仍然很重要)以及需要重写所有内容这一事实之外,还有其他可行的方法。(您真的认为,如果您切换到其他寻址方案,DNS服务器的问题会有所不同吗?)
Bill K

不,问题确实会存在。(顺便说一句,对简单网络堆栈的推动并没有消失-相反,通过“物联网”变得更强大:简单也意味着需要更少的电力和更长的电池寿命)
Piskvor 2012年

1

其他答案已经解释了很多事情,但不是主要问题。

您想知道,如果IP地址已经可以为您提供收件人的完整地址,那么为什么存在子网掩码。您知道,在大型组织中,有时部门需要单独的网络,例如,会计师位于不同的子网中,而无法访问营销部门的内部IP地址。因此,例如,IP地址为192.168.10.3的员工将无法访问192.168.15.76的打印机,因为它位于不同的子网中。


1

迄今为止,对于为何仍在使用子网(与CIDR相反),仍无任何答案。子网掩码存在两个问题:

  1. 您可以指定无效的掩码。
  2. (同样适用于CIDR)它们引入了可能的重叠-ISP可以提供相同的IP地址作为不同子网的一部分。例如

    客户A:22.132.124.121子网掩码255.255.255.0
    客户B:22.132.114.55子网掩码255.255.0.0

并没有立即可见。

https://blog.certskills.com/ccent/vlsmo_01_01/


0

名义上,子网掩码可以指示以下子网。 通常,一个网络包含多个子网,而路由器使用的子网掩码是将流量传送到特定目标的方式(在任何使用子网掩码的子网中), 此链接包含子网掩码的介绍。


1
请从链接中将重要信息添加到此处,并将链接添加为源。
2014年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.