- 分散网络 traffic, 避免不必要的 packet 在 LAN 里头流动
- 如果全世界的机器都在同一 subnet, 那么这个网络将会非常的拥挤
- 分 subnet 之后, 每部机器只会看到和自己同一 subnet 机器的相关 packet, 与自己 subnet 内无关的 packet 不会跑进来
Netid与subnet
- 每部机器的 IP 都可分成
- 当两部机器的 netid 相同时, 我们说这两部机器在同一个 subnet
- 那如何决定一个 IP 的 netid 是多少呢?
- by IP class (default)
- by NetMask
由 IP class 计算 Netid
- 例
120.1.1.2 与 120.2.2.2 算同一 subnet
140.1.1.2 与 140.2.2.2 算不同 subnet
140.1.1.2 与 140.1.2.2 算同一 subnet
192.1.1.2 与 192.1.2.2 算不同 subnet
192.1.1.2 与 192.1.1.3 算同一 subnet
由 Netmask 计算 Netid
在 IP Class A, hostid 有 24 bit, 就是说在一个 Class A的 net 中, 同时最多可以有 2 24部机器, 这个网络太大了, 一样会有 traffic 过重的情形, 此时我们便会希望将网络切小一点. 同样的情形也会发生在 Class B 的网络.
- Netmask 为一连串 bit 1 接着 一连串 0 , 总长度为 32 bit
255.255.255.0
(11111111.11111111.1111111.00000000)
255.255.255.224
(11111111.11111111.1111111.11100000)
- 利用 Netmask 与 IP 作位相乘, 所得出的部份便是 netid
- 通常是利用 Netmask 来把 IP 中的 netid 字段变长, 也就是将网络切细一点
Netid 计算
- netid by IP class
140.116.72.219 netid=140.116.0.0
140.116.32.55 netid=140.116.0.0
=> 同一 subnet
- netid by netmask 255.255.255.0
140.116.72.219 netid=140.116.72.0
140.116.32.55 netid=140.116.32.0
=> 不同 subnet
分割 Subnet 步骤
- 先决定每个 subnet 上想要多少部机器
- 根据 step 1 选定一个 netmask
- 现有的 net 在经过 subnet 后, 第 0 个与最后一个subnet 不能被使用
- 对每个 subnet 而言,
第 0 个 IP address 要保留做为网络代表地址
最后一个 IP address 保留作为网络广播地址
这两者不能拿来当做机器的 IP 地址 - 对每个 subnet 而言, 在可用的 IP 地址中要选出一个当作 Gateway address
范例
假设我们分到一个 Subnet , IP range 是140.116.49.xxx, 现在我我们要将其细分为数个约 20 部计算机的 subnet
- 20 部
- 20 < 25, =>hostid 5 bit, netid = 32-5 bit, 所以定 netmask 为 255.255.255.224(11111111.11111111.11111111.11100000)
- 我们得到 8 个 subnet
Subnet 的另一用途
subnet 到 c class 大小时, 通常不会再往下细切, 因为如果是考虑要降低广播封包以提高网络效能, 一般会利用 switch 作为网络骨干来解决这个问题. C class subnet 会再往下细切, 一般都是发生在要节省 IP 使用的场合
IP 在授权时, 一般都是以一个子网络为单位, 而由于目前 IP 地址渐渐有不足的情形, 因此很多时候 IP 授权单位会将 subnet 缩小再发给下层单位, 原因就是为了节省 IP 地址的使用量(不用一次发那么多出去)