前言
前几天在配置数据库主从结构时查询了一些IP配置,后来编写远程执行脚本时又配置了一些IP数据,在linux
上使用 ifconfig
命令查询IP配置时发现子网掩码不是常用的3个255,而是 255.255.254.0
,只是简单记得这样配置扩大了子网的范围,但是具体子网掩码怎么使用还是记不清楚了,所以查询了这些还给老师的知识,在此总结一下。
IP地址分类
关于IPv4的地址分类之前有专门的总结,可以参考这一篇《IP地址常见分类:A类、B类、C类、D类、E类》,其中常用到的也就是A类、B类、C类这三种,默认的子网掩码分别为 255.0.0.0
、255.255.0.0
、255.255.255.0
,通过IP地址和子网掩码进行与运算可以得出IP地址所对应的网络地址。
子网掩码
子网掩码通过它的名字来判断肯定和子网有关系,掩码又有遮遮掩掩之意,合在一起其实就是通过其作用来进行的命名,也就是对IP地址进行遮掩,然后得到子网地址的作用。
掩码的作用
刚刚说通过子网掩码和IP地址可以获得网络地址,那么没有子网掩码可不可以呢?实际上如果进行某些约定就可以不使用子网掩码来获得网络地址,比如IPv4是通过4个字节来表示一个IP地址的,分为网络号和主机号两部分,A类IP地址可以使用第一字节表示网络号,B类地址使用前两个字节表示网络号,C类地址使用前3个字节表示网络号,其实这也是默认的表示方法。
加入子网掩码只是为了更灵活的配置子网,如果都按照默认的“规矩”进行划分就太死板了,难以适应复杂的需求环境,比如一个A类地址 10.0.48.36
默认的子网 10.0.0.0
,可以容纳16777214台主机,这样如果一个子网的所需IP数量远远小于这个数字就会产生巨大的浪费。
再比如一个C类地址 192.168.0.1
的默认子网是 192.168.0.0
,可以容纳254台主机,如果一个公司或者组织有500人,那么一个C类的子网就无法满足要求,需要分配B类地址才能解决问题,所以才有了子网掩码的出现,可以使子网的划分更加合理。
掩码表示
掩码的表示比较简单,它由四个字节构成,表示成二进制形式时为前1后0,可以像IP地址一样的格式来书写,也可以写出掩码中有多少个1,举个例子,下面表示一个IP和子网:
192.168.1.1
和255.255.254.0
也可以将掩码中1的个数写在IP地址后面表示成:
192.168.1.1/23
子网拆分
增加子网掩码中1的个数可以将子网进行拆分,比如地址 192.168.1.1
和 192.168.1.130
在子网掩码是 255.255.255.0
时都属于 192.168.1.0
这个子网,但是将子网掩码换成 255.255.255.128
, 那么这两个IP地址就分别属于 192.168.1.0
和 192.168.1.128
这两个子网。
子网合并
减少子网掩码中1的个数可以将子网进行合并,比如地址 192.168.1.1
和 192.168.0.1
在子网掩码是 255.255.255.0
时分别属于 192.168.1.0
和 192.168.0.0
这两个子网,但是将子网掩码换成 255.255.254.0
, 那么这两个IP地址就都属于 192.168.0.0
这个子网了。
网络包的传播
网络包在子网内是以广播的形式传播,靠的是MAC地址,通过ARP协议可以获得,但是子网间的传播依赖IP地址,需通过路由或者三层交换机才能实现。
总结
- 通过IP地址和子网掩码进行按位与运算可以计算出IP地址所在的网络地址
- 通过子网掩码可以更合理的划分子网,对默认子网进行拆分与合并,一定程度上减少浪费和拥堵
- 子网内通信需要MAC地址,广播的形式来传递消息,这就是为什么网卡设置为混合模式可以截获到发给他人的消息
- 子网间通信需要借助IP地址才能实现,不过MAC地址也是需要的,通常被设置为网管的MAC地址
- 平时使用的
ping
命令,其实是ICMP
协议的一部分,它是TCP/IP协议族的一个子协议,用于在IP主机、路由器之间传递控制消息
勤劳的人总能挤出时间来坚持自己的习惯,懒惰的人总能找到借口来逃避应该做的事情,认定的目标就要大胆的开始,无论什么想法只要迈出了第一步就不算晚~
2021-2-14 23:57:52