陋室铭
永远也不要停下学习的脚步(大道至简至易)

最近在移植新版本代码,但发现在新版本软件中,居然找不到子网掩码这个参数。与旧版本软件不同的是,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地址:

net-id=24位,host-id=8位,拥有2**8-2=254个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)

posted on 2020-09-25 11:12  宏宇  阅读(1881)  评论(0编辑  收藏  举报