IPv4(三)地址掩码
回顾网络类型确定
回顾一下之前学过的如果确定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地址进行运算
遗留问题
留下的问题是:为啥要用地址掩码,用首个八位组不是更简单???

IPv4(三)地址掩码的更多相关文章
- 在Ubuntu12.0.4下搭建TFTP服务器
一.安装相关安装包 tftpd(服务端),tftp(客户端) sudo apt-get install tftp-hpa tftpd-hpa 安装xinetd sudo apt-get install ...
- TFTP Server的搭建和使用(Fedora)
一.tftp服务的安装 yum install xinetd tftp tftp-server 表示我安装的已经是最新版本的tftp服务了,不用更新了. 二.配置tftp服务的相关参数(没有就创建新的 ...
- 哈工大 计算机网络 实验三 IPv4 分组收发实验&IPv4 分组转发实验
计算机网络实验代码与文件可见github:计算机网络实验整理 实验名称 IPv4 分组收发实验&IPv4 分组转发实验 实验目的: (注:实验报告模板中的各项内容仅供参考,可依照实际实验情况进 ...
- IPv4到IPv6的三种过渡技术
1. 双协议栈 ( Dual Stack, RFC2893 ) 主机同时运行IPv4和IPv6两套协议栈,同时支持两套协议. 2. 隧道技术 ( Tunnel, RFC2893 ) 这种机制用来在IP ...
- IPv4地址段、地址掩码、可用地址等常用方法
package com.xxx.iptools; import java.util.ArrayList; import java.util.HashMap; import java.util.List ...
- [华三] IPv6技术白皮书(V1.00)
IPv6技术白皮书(V1.00) http://www.h3c.com/cn/d_200802/605649_30003_0.htm H3C S7500E IPv6技术白皮书 关键词:IPv6,隧道 ...
- IPv4(四)子网和子网掩码
为了完成路由选择,每个数据链路(网络)都必须有一个惟一的地址: 另外,数据链路上的每台主机也必须有一个地址,这个地址不仅标识主机为一个网络成员,还可以把主机与网络上的其他主机区分开来. 粗放使用IPv ...
- IPv4地址表示法详解
在TCP/IP协议中,IP地址是一个最基本的概念,本文就来参考<计算机网络>谢希仁 这本书,总结一下IPv4地址表示法的发展阶段,做个读书笔记. IP地址的编址方法共经过了三个历史阶段: ...
- Linux基础介绍【第三篇】
更改SSH服务端远程登录的配置 windows服务端的默认远程管理端口是3389,管理员用户是administrator,普通用户是guest.Linux的管理用户是root,普通用户默认有很多个,远 ...
随机推荐
- 洛谷P1135 奇怪的电梯
题目描述 呵呵,有一天我做了一个梦,梦见了一种很奇怪的电梯.大楼的每一层楼都可以停电梯,而且第i层楼 (1<=i<=N)上有一个数字Ki(0<=Ki<=N).电梯只有四个按钮: ...
- 【CF1043D】Mysterious Crime(贡献)
题意:给定m个人,每个人有n个数字且每个人的所有数字都是一个n的排列,求有多少种方案去掉某个前缀和后缀后m个人剩余的部分相等 m<=10,n<=1e5 思路:考虑极长的一段连续匹配的串,因 ...
- 高级参数绑定(数组和List绑定)
1.绑定数组: (1) 需求 在商品列表页面选中多个商品,然后删除. (2). 需求分析 功能要求商品列表页面中的每个商品前有一个checkbok,选中多个商品后点击删除按钮把商品id传递给Contr ...
- Android开发基础(java)1
基本概念: 一.结构化方法与结构化程序设计 1.结构化方法:源自迪克斯特拉(E.W.Dijkstra)提出的结构化概念,采用自顶向下.逐步求精的模块化设计方法.核心是将工作分成若干个相互独立的模块,使 ...
- vue 设置头文件
vue的头文件是在index.html文件中设置的,毕竟vue的入口 先说一下标签页的名字: 就是这个名字的设置,要想每个标签页的名字都不一样,需要做以下这三步:1. 首先,在index.html文件 ...
- jdk、maven、tomcat环境变量配置
1.jdk 新建环境变量: JAVA_HOME:C:\Program Files\Java\jdk1.8.0_91 CLASSPATH:.;%JAVA_HOME%\lib;%JAVA_HOME%\li ...
- javascript 移动鼠标高亮显示改行
主要用到两个事件 onmouseover onmouseout <!DOCTYPE html> <html> <head> <meta charset=&qu ...
- Android Studio中删除所有的断点
直接上图,我相信你们能看的懂,骚年们. 第1个图:Run–>>View Breakpoints.. 第2个图:现在可以看到所有的断点了,在左侧栏全选,然后点"-",就全 ...
- AndroidStudio不重新运行,Debug调试已有进程
们在使用AndroidStudio进行编写Android应用程序的时候,经常需要对抛出的问题进行断点调试跟踪,如果不知道怎样直接调试已经运行的进程.那么调试的效率会非常低下!下面我就来教大家如何快速调 ...
- 长安大学第四届“迎新杯”程序设计竞赛 H 圣诞节糖果【二分】
时间限制:C/C++ 1秒,其他语言2秒空间限制:C/C++ 131072K,其他语言262144K64bit IO Format: %lld 题目描述 圣诞节临近,彩虹岛的黑心商人