回顾网络类型确定

回顾一下之前学过的如果确定IP地址网络号,这里先不考虑子网。

首先通过首个八位组字节规则很容易确定IP地址属于那个网络:

如果第1位是0,则是A类地址;

如果前两位是10,则是B类地址;

如果前三位是110,则是C类地址。

知道了属于哪个网络之后,就可以知道网络号和主机号分别占的位数,这样就可以知道主机号和网络号了,嘻嘻。

现在我们不用这种方法来确定网络号和主机号了,而是用地址掩码(Address Mask)。

数据链路地址

整个数据链路的地址可以用IP地址的网络部分来表示,其中主机位全部为0。

理解一下这个数据链路的地址,往这条数据链路连接的这个方向走到达的目的地址就IP网络号所指向的网络。

图1 数据链锯地址

IP地址分配

IP地址管理机构分配地址时,并不是一个个具体IP地址的分配,而是分配给你一个网络号,除去网络号之后就是主机号了。拿到网络号之后,对于后面的主机号你想怎么玩都行。

比如如果分配给你一个网络号是172.21.0.0,那么这是一个B类地址(大于127,小于192,嘻嘻),那么其中后两个八位组就作为了主机位。后面会对这个主机位有更多的动作,敬请期待。

网络中主机的自我认知

在这个世界上,稍微有点思想的人都会问我是谁,我在哪儿,我为何存在?你是这样想的,别个主机也是这么想的。主机也有生命,也想知道自己属于那个种族(网络号),自己的身份(主机号)是啥。就像人一出生就会有生理上的父母和民族一样——每一台设备和接口都将被分配一个惟一的、主机号明确的地址

不管设备是路由器还是主机,显然都需要知道自身的地址,而且它还需要能确定它所属的网络。而这一切都将交给我们可爱又迷人的地址掩码来完成。

地址掩码的形式

地址掩码是一个32位的字符串,与IPv4的每一位相对应。可以用点分十进制表示,但是这并不是它的本意。

记住:地址掩码,是掩码,并不是地址!!!

下面给出的是5类IPv4地址的标准地址掩码:

图2 IP地址的标准地址掩码

地址掩码的用法

对于每一位IPv4地址位,设备会拿它与地址掩码的对应位进行布尔AND操作。

AND函数

比较两位并得出结果。当且仅当两位全部为1时,结果为1。如果两个中任意一位为0,则结果为0。

 

经过布尔这一AND操作之后,同样可以得到一个32位的字符串,转为点分十进制就是网络号了。

图3 地址掩码与IP地址进行运算

遗留问题

留下的问题是:为啥要用地址掩码,用首个八位组不是更简单???

最新文章

  1. Nginx的配置文件
  2. 封装cookie localStorage sessionStorage
  3. ooize简介
  4. su和su -和sudo
  5. C++11多态函数对象包装器
  6. pat 1055 区间前k个
  7. Linux操作杂记
  8. laravel框架——路由
  9. 单点登录实现(spring session+redis完成session共享)
  10. HTML基础学习(一)—HTML
  11. markdown基础
  12. Azure cli使用arm创建多网卡虚拟机
  13. lodash源码分析之NaN不是NaN
  14. TDD实践感悟
  15. form表单发送请求实例
  16. vue实战记录(一)- vue实现购物车功能之前提准备
  17. frame与iframe的区别及基本用法
  18. mysql 设置、更改、找回密码
  19. Windows10 + IntelliJ IDEA 2017.3.2 + wamp2e + Yii + PHPunit 搭建测试环境
  20. Linux学习之---Xshell

热门文章

  1. NKOI 1469 通向自由的钥匙
  2. 【LA5059】Playing With Stones (SG函数)
  3. c#中使用事务
  4. [LeetCode] Add Two Numbers 链表
  5. Matcher类详解2-group
  6. CSU-ACM2018寒假集训选拔-入门题
  7. Go语言调度器之主动调度(20)
  8. bzoj1455&&luogu2713罗马游戏
  9. 在红米note4上实现自动安装软件
  10. nginx +uwsgi + django配置