百科问答小站 logo
百科问答小站 font logo



子网掩码与ip地址有实际关系吗? 第1页

  

user avatar   james-swineson 网友的相关建议: 
      

楼上写了一大堆的答主 DADAman 请回去重读 RFC。

题主写 IP 地址的记法叫做 IP-CIDR,全称 Classless Inter-Domain Routing,在这种记法下面是没有 ABCDE 类(Class)地址的概念的。还有人说什么 IP 和掩码一起传,喵喵喵?哪个协议要传掩码?

IP 都是一样的 IP,子网掩码并不是 IP 的一部分;但是路由功能(你的电脑是有路由功能的,不是只有路由器才需要它)必须有 IP、子网掩码和路由表才能正常工作。

子网掩码这个翻译并不好。英文 netmask(全称 subnet mask),mask 就是个罩子,简单地说来,你把 IP 和 netmask 都写成二进制表示,用 netmask 为 0 的部分罩住 IP(就是逻辑与 AND),罩住的部分是主机号,没罩住的部分是网络号。

这东西的标准也改了很多次,最早子网掩码不一定要 1 都堆在左边 0 都堆在右边的(标准里面没说),后来强制要求了,再后来 IP-CIDR 以后就隐含要求了。至今 Cisco 的路由器里面有些反掩码也是可以交替写 1 和 0 的,可以做一些诸如给所有十进制偶数结尾的 IP 应用某个防火墙规则一类的鬼畜配置。

而它有什么用呢?只有答主 ubitsp 讲到了核心概念。IP 都是一样的 IP,而子网掩码的作用之一是用来处理广播域和 IP 地址之间的对应关系(用于一些路由表条目)。它的另一个作用是简单地表示符合一定要求的连续 IP 地址块(用于另一些路由表条目或者别的任何地方)。

广播域,就是二层广播可达的范围。任何数据包要发到别的主机上必须通过二层,而目标 IP 是否被认为在该主机的广播域内可达会改变该主机在二层发送该网络包时的行为[1]。

补充阅读:

表示连续 IP 地址块也是子网掩码或者 IP-CIDR 记法的重要用途。192.168.1.0-192.168.1.255 可以简单地写成 192.168.1.0/24。 IPv6 下面就更为重要了,毕竟 2000::/3 写成完整形式可是 2000:0000:0000:0000:0000:0000:0000:0000-3fff:ffff:ffff:ffff:ffff:ffff:ffff:ffff 来着……谁想这么写……

===================================

[1]:不是所有入网设备都需要有路由功能的。

车小胖dading1234 都只说了设备有路由功能的情况。

下面只说 IPv4 的术语,IPv4 的 IP 查 MAC 协议叫做 ARP,IPv6 下面功能相同的协议叫 NDP(Neighbor Discovery Protocol),自行替换就行。

大家都知道,IP 包要发出去,首先要知道它发给哪台设备,这个靠的是 MAC 地址。比如 192.168.1.2 想要发包给 192.168.1.3,那么它先要发送 ARP 广播来查询 192.168.1.3 的 MAC 地址,然后在二层头部 dst mac 那段写上查询结果,再发包。

对于一个没有路由功能的设备,它是只有 IP 没有子网掩码设定的。那么它一定得做一个假设,就是所有 IP 地址都是在二层可达的,也就是它们接在同一个广播域上。那么如果一个 IP 事实上不在内网怎么办呢?我们让路由器假装是目标设备不就好了吗,路由器只要检测到查询非内网 IP 的 ARP 广播,就返回自己的 MAC 地址,这样这台机子就会把所有事实上不在内网的 IP 包发给路由器,路由器就成了这台机子的事实默认网关。这就是 proxy-arp 做的事情。

对于有路由功能的设备,它通过子网掩码来确定哪些 IP 在广播域内。比如它的 IP 是 192.168.1.1/24,那么它给 192.168.1.2 发包的时候,先 ARP 请求 192.168.1.2,然后发包;如果它给 192.168.2.1 发包,那么它会先在路由表里面找到 192.168.2.1 的路由条目,对该条目指定的网关(比如 192.168.1.1)请求 ARP,然后把包发给 192.168.1.1 的 MAC 地址。

这是个同一广播域不能有两台设备用同一个 IP 地址的问题……如果是 10.10.10.1/24 和 10.10.10.2/25 两台机子在同一个广播域的话,尽管我们会认为这么配置的人是 SB,但是不得不说,这两台机子之间通信绝对没啥问题。


user avatar   Ivony 网友的相关建议: 
      

1、子网掩码不是IP地址的一部分。

2、10.10.10.1/24和10.10.10.1/25都不是IP地址,所以问题根本不成立。

3、上面的答案大部分都是错的。



子网掩码和IP地址一起,可以用于标识子网范围,所以,子网掩码是不能单独使用的,其与IP地址一并使用时,可以用于标识子网范围。所以,如同上面某些答主所说,10.10.10.1/24这个东西其实是个CIDR,可以用于标识一个子网范围。




  

相关话题

  为什么没有核动力货轮? 
  现在人们为什么不再经常使用激光雷达探测器了? 
  如何理解小米有品提出的降低隐性付出是一种新生活方式? 
  每秒 30 米有多快呢? 
  把现在各行各业的精英带到原始社会,依靠这些人的知识储备,需要多久才能恢复到现在的繁荣? 
  如何评价中国航天与《斗破苍穹》的联动? 
  家庭装修,有哪些电子化产品能让家变的便捷、大气、奢华、高科技? 
  如何区分 Intelligence 表示智能还是情报? 
  网传华为即将发布两款全新手机,分别使用国产芯片麒麟 830 和720,这两款手机定价多少才值得购买? 
  如何评价「线程的本质就是一个正在运行的函数」? 

前一个讨论
有一部分中国人对高加索人的特殊感觉是生理上的还是心理上的?是怎么产生的?
下一个讨论
windows有更方便的IDE进行开发, 为什么互联网公司的服务器还是用linux?





© 2024-05-04 - tinynew.org. All Rights Reserved.
© 2024-05-04 - tinynew.org. 保留所有权利