在工作中谈论到计算机网络时,有几个经常出现的术语,比如:ip、子网掩码、网段等等。之前对这些概念的理解都比较模糊,只知其大概意思,随着工作中遇到的网络问题越来越多,有必要详细理解一下计算机网络的基础知识了。这篇文章就先介绍几个计算机网络领域的专业术语。
IP地址
ip这个词是计算机网络中出现频率最高的了,甚至只要使用过电脑的人都知道这个词。IP地址全程是互联网协议地址(英文:Internet Protocol Address)。IP地址就是给网络中的每台计算机都分配了一个地址,这个IP地址就是该计算机在网络中的身份id,通过ip就可以快速地定位到需要的那台计算机。
按照规定,IP是一个32为的二进制数,为了表示方便,通常将一个ip按照每8位一组转换成十进制数,然后每组中间用符号"."表示,这种表示方法称为“点分十进制表示法”。
-
ip地址的组成
IP地址 = 网络地址 + 主机地址 (又称:网络号和主机号)
或者,
IP地址 = 网络地址 + 子网地址 + 主机地址
最初设计的时候,IP地址只是由网络地址和主机地址两部分组成,IP地址的32位中,前面一些连续位称为网络号,用于表示该设备位于哪个网络,后面的其余位称为主机地址,用于在该网络中唯一标识一台主机。
基于以上的设计,IPv4地址按照网络号和主机号的长度不同分为五大类,通过ip中的最左边几位二进制数来区分,0开头的为A类,10开头的为B类,110开头的为C类,1110开头的为D类,1111开头的为E类,如图所示:
所以,如果按照这种划分方式得到的IPv4地址空间为:
然而实际上这种分类方式的缺陷是显而易见的,例如:A类地址的网络号少主机号多,C类地址的网络号多而主机号少,这就会造成IP地址资源利用率低下的问题。于是后来就出现了“IP地址 = 网络地址 + 子网地址 + 主机地址”的划分方式,也就是在原来的基础上又将主机号分成了子网号+主机号,这种方式被称为子网寻址。
子网是从每类的网络地址的主机部分拿出一定数量的位数,用该位数标识子网号,从而将每类的IP网络进一步分成更小的网络。
在出现子网之前,通过判断一个ip是A类、B类或者C类地址就可以直接从IP中获取到网络号,但是增加了子网后,如何判断一个ip中的子网部分和主机号部分呢?这就出现了子网掩码的概念。
子网掩码
子网掩码(subnet mask)就是用来从一台主机的ip地址中获取其网络信息、子网信息和主机号的。子网掩码跟ip的长度相同。子网掩码不能单独存在,他必须结合ip地址一起使用。
子网掩码跟ip的长度相同,也是由32为二进制数组成,不同的是,**子网掩码必须是由左边连续的若干个1和右边其余若干个连续的0组成。简单说就是子网掩码的左边若干位全部是1,剩下的右边所有为都是0 **。
那么是如何通过子网掩码来获取一个ip中对应的网络号和主机号的呢?将ip地址与子网掩码按位与得到的结果就是该ip对应的网络地址/子网标识符,这个标识符就确定了一台主机位于哪个网络中。下面举个例子:
例如,已知有一个ip为:192.168.10.2,它对应的子网掩码为255.255.255.240,求该ip对应的网络号/子网号,和主机号。
将ip地址转换成二进制为:11000000.10101000.00001010.00000010,将子网掩码也转换成二进制:11111111.11111111.11111111.11110000,然后将这两个二进制数按位与运算,结果为: 11000000.10101000.00001010.00000000,将这个结果转换成十进制就是192.168.10.0,所以这个ip对应的网络地址就是192.168.10.0。
-
子网掩码的ip表示法
有时候将ip和子网掩码都写出来这种方法写起来太麻烦了,所以就出现了ip表示法。例如我们在修改一些网络配置时,经常看到这种写法:192.168.10.2/28。这就是ip表示法,他即表明了ip地址,也表明了该ip对应的子网掩码。其中:192.168.10.2就是指ip地址,/28 是指子网掩码的前28位为1,其余为是0,即子网掩码为:11111111.11111111.11111111.11110000。
小结一下
这里我认为最为主要的也是比较难理解的一个概念就是子网掩码,那么这里就来总结一下子网掩码到底是干什么的。本来按照最开始的设计“ip = 网络地址 + 主机号”,将ip分为五大类,我们通过给定ip的前几位就可以判断这个ip属于哪一类,进而就可以知道这个ip的哪些位是网络地址,哪些位是主机地址。例如:已知一个ip:192.168.43.247,转换成二进制:11000000.10101000.00101011.11110111,因为是110打头的所以是C类地址,我们又知道C类地址的前24为是网络号,后8为是主机号,所以该ip对应的网络号就是192.168.43.0,而主机号就是247。但是由于这种设计使用起来有缺陷,所以人们又发明了一个叫子网的东西,有了子网以后,我们就不能单单通过一个IP属于哪一类来判断哪些位是网络地址了,于是人们又发明了子网掩码,用来标识一个ip的哪些位是网络地址。具体操作就是将ip与子网掩码按位与运算的结果就是网络地址。