最近在移植新版本代码,但发现在新版本软件中,居然找不到子网掩码这个参数。与旧版本软件不同的是,IP地址后面接了“/24”,类似192.168.1.1/24,但一直未去理会IP地址后面这个“/24”表示什么意思。
通过跟踪代码发现,这个“/24”大有含义,于是上网搜索了下,不查不知道,一查发现这就是我在苦苦寻找的子网掩码!这是一种现在流行的子网掩码表示方法,这种表示方法很好计算子网络的规模。
明白过来后,恍然大悟,记得以前也曾接搜索了解过“/24”的含义,看样子是忘记了。
这里转载了一篇优秀文章,详细介绍了IP地址的定义及其划分、子网掩码的表示及其作用,让大家可以更好的了解一些网络通信的基础知识。
IP的定义
ip 是32位无符号整数,最小,最大分别是- 0.0.0.0 – 255.255.255.255 具体来说,由一个ip由 Net-ID+Host-ID 两部分组成,Net-ID 相同,那么就说明在一个网段内,可以用mac数据帧直接通信。
给定一个Net-ID
- host-ID全为0的ip,(192.168.2.0)代表整子小网络,
- host-ID全为1的ip,是这个子网络的广播地址
ip总共就32个字节,当 HostID 所占用的位越大,亦即 HostID 数量越多时,表示同一个网络内可用以设定主机的 IP 数量越多
国际NIC组织把ip分成5类
- Class A : 0xxxxxxx.xxxxxxxx.xxxxxxxx.xxxxxxxx ==> NetI_D 的开头是 0
|–net–|———host————| - Class B : 10xxxxxx.xxxxxxxx.xxxxxxxx.xxxxxxxx ==> NetI_D 的开头是 10
|——net——-|——host——| - Class C : 110xxxxx.xxxxxxxx.xxxxxxxx.xxxxxxxx ==> NetI_D 的开头是 110
|———–net———–|-host–| - Class D : 1110xxxx.xxxxxxxx.xxxxxxxx.xxxxxxxx ==> NetI_D 的开头是 1110
- Class E : 1111xxxx.xxxxxxxx.xxxxxxxx.xxxxxxxx ==> NetI_D 的开头是 1111
class D用作特殊用途,class E保留,因此,能够用来设定在一般系统上面的,就只有 Class A、B、C 三种等级的IP。
Netmask
这个数值就是用一种很直观的方式表明Net-ID/Host-ID各有多少位
netmark的定义非常简单,netmask 也是 32 位,在数值上,位于 Net-ID 的为 1 而 Host-ID 为 0
例如一个常见的C类IP地址:
一个传统的c类网络,比如 192.168.10.0,它的netmark是必然是255.255.255.0 如果在把这个网络分成2个子网络,很简单,设定net-id使用25位,host-id就只有7位了 那么这个时候的 netmark= 255.255.255.1 0000000 = 255.255.255.128,这次划分得到的两个子网分别是:
- 129.168.10.0/25
- 192.168.10.128/25
很显然,”/25″:就是标示 这个ip中net-id 占用的位数(这2个ip的host-id全部为0,所以这两个ip代表的是其所在的子网络)
这种表示方法很好计算子网络的规模,例如:
- 192.168.0.0/27 表示2的5(32-27=5)次方-2(每个网段的第一个和最后一个地址都被特殊用途占用)=62个ip
- 192.168.0.0/28,表示2的4(32-28=4)次方-2=30个ip
所以 192.168.1.1/24 标示的是一个子网络192.168.1.0(拥有254个ip地址: 从192.168.1.1到192.168.1.254)