为了完成路由选择,每个数据链路(网络)都必须有一个惟一的地址;

另外,数据链路上的每台主机也必须有一个地址,这个地址不仅标识主机为一个网络成员,还可以把主机与网络上的其他主机区分开来。

粗放使用IPv4地址

在目前位置,一个A类、B类或C类地址仅仅能用在一个单一网络中。

为了建立一个网络,每个数据链路都必须使用不同的地址,以便这些网络可以被惟一地标识。

如果每一个数据链路都使用一个单独的A类、B类或C类地址,那么即使使用尽所有的IPv4地址,也只能给少于1700万个数据链路分配地址。

所以这样使用资源是不明智滴。

使用子网实现梯度使用

使A类、B类或C类地址实用化的惟一方法是对主网地址进行划分,例如将172.21.0.0划分为子网地址。

注意到两个事实:

  • IPv4地址的主机部分可以随意使用
  • IPv4地址的网络号由分配给接口的地址掩码确定

对于一个B类地址172.21.0.0,标准的地址掩码是16位。现在为了对子网进行划分,这里使IP地址的前24位都被解释为网络位。换句话说,掩码使路由器和主机把读取的前8位主机网络作为网络地址的一部分。

结果是:

  • 主网络地址用于整个网络,而每一个数据链路则变为一个子网(subnet);一个子网是一个主A类、B类或C类地址空间的一个子集。
  • 现在IPv4地址包括了3个部分:网络部分、子网部分和主机部分。
  • 地址掩码现在变为子网掩码,或比标准掩码长的掩码。

实例

现在地址的前两个八位组依然是172.21,但第3个八位组——主机位已经由子网位代替——的变化范围位0~255。

下图中的网络有子网1、2、3、4和5(172.21.1.0~172.21.5.0),图1中用红色圈圈圈出来的就是5个子网咯。

图1 子网划分案例,子网掩码使得单一网络地址可以用于多个数据链路

注意事项

比如对于B类地址172.21.0.0来说,如果以第三个八位组作为子网划分依据,那么这样就有172.21.0~172.21.255一共256个子网。但我们需要注意的是并不是其中所有的子网都可以实际拿来使用的。

原因:

并不是所有的路由选择协议都支持子网地址,如果子网位全为0或者全为1。

因为这些协议是有类别化协议,它们并不能区分一个全0子网和主网络号。

例如,在图1中,子网0为172.21.0.0;而主网IP地址也为172.21.0.0。没有更多的信息来区分二者。

同样,有类别路由选择协议也不能区分全1子网的广播地址和一个所有子网的广播地址。

例如,图1中全1子网为172.21.255.0,对于这个子网,广播地址是172.21.255.255,但是这也是主网172.21.0.0的所有子网上所有主机的广播地址。

第一版的RIP协议和IGRP协议都是有类别路由选择协议,不能区分上述地址。无类别路由选择协议则可以真正地使用全0或者全1子网。

对子网的理解

类似图1中,对B类地址的第3个八位组进行子网划分是非常普遍的。但是会出现其他错误的表述:

"B类地址使用C类地址掩码"或者"将B类地址划分为C类地址",这两种表述都是错误的,会引起会子网涉及不正确的理解。

对图1的解释应该是:

"使用8位进行子网划分的B类地址"或者"一个带有24位掩码的B类地址"。

可以用以下3中格式中的任何一种表示子网掩码:

点分十进制:255.255.255.0

位计数:172.21.0.0/24

十六进制:0xFFFFFF00

与点分十进制相比,位计数格式可以更清楚地描述掩码的实际作用。

IPv4(四)子网和子网掩码的更多相关文章

  1. IP地址分类、私有地址、子网、子网掩码

    IP地址分类介绍 这里讨论IPv4,IP地址分成了A类.B类.C类.C类.E类,如下图所示: 解释: A类以0开头,网络地址有7位,主机地址有24位,举例:A类地址:0 10000000 000000 ...

  2. 子网/ip/子网掩码

    IP地址由网络地址和主机地址组成 而现在IP由“子网掩码”通过子网网络地 址细分出 A,B,C类更小的网络.这种方式 实际上就是将原来的A类,B类,C类等分类 中的的主机地址部分用作子网地址,可以 将 ...

  3. 计算机网络之IPv4(IPv4分组、IPv4地址、NAT、子网划分与子网掩码、CIDR、ARP协议、DHCP、ICMP)

    文章转自:https://blog.csdn.net/weixin_43914604/article/details/105138313 学习课程:<2019王道考研计算机网络> 学习目的 ...

  4. IPv4地址分类及子网划分

    IPv4地址分为A,B,C,D,E类: A类:1.0.0.0~126.255.255.255,默认子网掩码/8,即255.0.0.0 (其中127.0.0.0~127.255.255.255为环回地址 ...

  5. 可变长度子网掩码(VLSM)在子网划分中的应用

    在学习可变长度子网掩码时,必须先熟练掌握二进制与十进制的转化.计算机中数据的单位(字节.位)等知识. 一.什么是可变长度子网掩码? 要理解可变长度子网掩码,先要理解子网掩码:要理解子网掩码,先要理解I ...

  6. IPv4子网掩码回顾

    子网掩码的介绍: IP协议标准规定:每一个使用子网的节点都选择一个32位的位模式,若位模式中的某位置为1,则对应IP地址中的某位就为网络地址(包括网络部分和子网号)中的一位:若位模式中的某位置0,则对 ...

  7. IP地址、子网掩码详解

    如何通过子网掩码划分网段 资料一: 一.缺省A.B.C类地址,子网掩码:  二.子网掩码的作用:  code:  IP地址 192.20.15.5 11000000 00010100 00001111 ...

  8. IPv4地址学习总结

    一. IPv4地址格式 网络互连的一个重要前提条件是要有一个有效的地址结构,并且所有的互连网络用户都应遵守这个地址结构.因为只有这样所有的互连网络用户才能在统一的规定下相互之间通讯.这个地址结构可以有 ...

  9. 计算机网络知识点总结2:IP协议(IPV4)

    一.Internet网络是一种数据报网络(另一种是虚电路网络,用于ATM等),主要功能是路由和转发. 二.IP数据报(分组)格式(IPV4版本) 首部 描述 版本号(4bit) 描述IP协议的版本号, ...

随机推荐

  1. Java抽象类,接口,抽象方法

    创建Animal抽象类 public abstract class Animal { public abstract void eat(); public abstract void sleep(); ...

  2. 《Linux命令行与shell脚本编程大全 第3版》Linux命令行---26

    以下为阅读<Linux命令行与shell脚本编程大全 第3版>的读书笔记,为了方便记录,特地与书的内容保持同步,特意做成一节一次随笔,特记录如下:

  3. 《Linux命令行与shell脚本编程大全 第3版》Linux命令行---13

    以下为阅读<Linux命令行与shell脚本编程大全 第3版>的读书笔记,为了方便记录,特地与书的内容保持同步,特意做成一节一次随笔,特记录如下:

  4. WSL学习:安装ArchLinux和Root/Cling以及注意事项

    1.前言 在Windows下使用Linux常见的软件存在许多困难.选择之一是使用VMWare和VirtualBox之类的虚拟机软件,另一种选择是使用类UNIX模拟环境,如Cygwin,GNUWin32 ...

  5. C++学习(一):现代C++尝试

    C++是一门与时俱进的语言. 早期的C++关注的主要问题是通用性,却没有太多关注易用性的问题,使得C++成为了一门多范式语言,但是使用门槛较高. 从2011开始,C++的标准进行了较大的更新,开始更多 ...

  6. Python学习杂记_3_字符串操作的常用方法

    字符串操作 字符串是可以通过下标来进行取值的,但是由于字符串是不可变变量,不能通过下标来修改它的值(形式如 字符串[下标]),下标从0开始,最大下标值是字符串长度减1,即len(string)-1 P ...

  7. Day 29 process&thread_1

    进程和线程 1 进程(process): 1.定义: 最小的执行单元.进程就是一个程序在一个数据集上的一次动态执行过程. 进程一般由程序.数据集.进程控制块三部分组成: 我们编写的程序用来描述进程要完 ...

  8. Linux和Cisco命令行通用快捷键。

    Ctrl a e 行首,行尾(ahead,end)Esc f b 单词首,单词尾Ctrl f b 移动光标(forward,backwards) Ctrl u k 剪切光标前所有,剪切光标后所有Ctr ...

  9. UVA 11059 Maximum Product【三层暴力枚举起终点】

    [题意]:乘积最大的子序列.n∈[1,10],s∈[-10,10] [代码]: #include<bits/stdc++.h> using namespace std; int a[105 ...

  10. 一次程序bug的排查

    这周准备下一个QA测试的版本,把版本发到测试环境就开始发现各种问题,修修补补搞了一周,总算告一段落了.   分析一下几个bug的问题,都集中在程序模块的整合中.一个模块的一个小的修改,造成另一个模块的 ...