目录
在看完本篇文章之后,
1、希望大家能够理解IP地址的作用、构成、分类。
2、能够了解二进制与十进制的IP换算。
3、能够知道掩码与子网的关系。
4、简单了解NAT和VPN内容。
5、通读此文之前需要具备一定的交换机和路由器基础知识。
1、IP地址的作用
今天讲这个IP地址,第1步你要搞清楚IP地址到底是做什么用的?
IP地址的全称叫做internet protocol,互联网协议。我们现在用的版本是IPV 4,就是互联网协议版本4,它的作用是什么?它的作用是用来寻址!寻址这两个字中的这个寻字很重要,IP地址要帮我们找的是什么?找到的是主机吗?
IP地址的目的主要作用是不是帮我们找主机?不是!IP地址不是为了找主机,它是为了找到广播域。
通俗的讲,可以说是为了找到1个网段,或者找到1个网络都可以,找到1个广播域。
那如果说只是找到广播域的话,那为什么IP地址还是要配在主机上呢?这是一个容易出现的常见问题。如果说IP地址是为只是为了找到广播域,那我们为什么还是需要把IP地址配在主机上?而不是只用配在路由器上就行了。为什么呀?
举个例子,一个主机A 接1个路由器,再接另外一个主机B。主机A 是11,主机B 是21。那为什么这个21是配在B 上面的,而不是说配在这个路由器上面就够了?
这里是涉及到两件事情,就是当我们的11 访问21 的时候。这个数据包发给了路由器之后,数据包到达路由器之后,那么路由器最终还是得到达主机的,那么在路由器到达主机的过程当中,请问这个路由器与主机b之间通信依靠什么地址?
这个路由器从中间分开,路由器有两个接口。1口属和a属于同一个广播域,2口和b属于同一个广播域,所以当路由器的2口和b通信的时候,它们由于是在同一个广播域中,永远记得同一个广播域中通信,依靠的是MAC地址,而不是IP地址。
在同一个广播域中通信的原理,中间如果有交换机。这台交换机是不会识别IP的,它只会识别mac,所以说2和b之间通信依靠MAC地址。
这个时候有对方的目的,我们的路由器会通过对方的IP地址21,通过1个ARP协议去解析到对方的MAC地址。所以我们IP地址最终还是得配在主机上的原因就是这样,
要借助ARP协议。通过IP要请求到对方的mac,你如果是配在我们的这个路由器上,主机上没有IP,你怎么ARP呢?这是一个很重要的事情。
所以我们IP地址它一共就得具备两个功能,第1个功能就是找广播域。第2个功能其实是通过ARP去找主机Mark。
2、IP地址组成
IP地址为了同时具备这两个功能,它就有两个部分组成。第一部分叫做网络部分,我们称为网络位。第二部分叫做主机部分,我们叫做主机位。
但是不管是网络位还是主机位,这些位数加起来1共总是有32位,这是个固定值,而且这32位每一位都是二进制数。
我们的IP地址一共是32位,2进制数大家看到非常的不好记,也不好读。那么为了让我们这个普通人啊,愚蠢的人类能够记得和容易辨认IP地址。所以我们就需要把二进制数转换为十进制数来,让我们人类易于辨认和记忆。
那么,在转换的过程当中,我们并不是把32位全部拿在一起,转换成一个十进制数,而是把32位数每八位用 . 隔开,这个叫做.分十进制。
那么,每八位二进制数换算成一个十进制数,比如11后面跟6个0,换成十进制就是192。
不会换算不会换算不要紧,打开你的计算器算!
比如说192.168.1.1/24,可能没学过的同学会认为网络位一共3位,这不对,这叫做24位!
那24位的网络位,我们一般可能写个/24。这个/24的意思就是表示这个IP地址的前面24位为网络位。
3、网络号
那么我们在编址的时候要注意,真正我们一般来说能够使用的IP地址,有一个非常重要的地址,大家一定要记得,就是我们这一个网络位确定之后,比如这个例子里面我们已经确定前面24位是网络位之后。
我们如果此时把它的主机位,也就是后八位全部写为0,那么我们把这个地址称为这个网络的网络号,或者说叫网络地址都可以。
比如说刚才的地址,我们是这样写的,写成我们直接写十进制啊,是192.168.10,然后写个/24就代表这个地址的前24位是网络位,那么这个地址的网络号是多少呢?
非常简单。把后面的八位写0全部写为0,也就是前面24位不变192.168.1,前面24位不变的情况下,后面写.0。192.168.1.0/24 这个地址就代表我们这个网络的网络号,
那么网络号有什么用呢?注意网络号就代表了这整个网络。比如说当网络位是24位的时候,你会发现属于同1个网络中的IP地址有非常多个。
可以从192.168.1.1 到 192.168.1.255,这么多个地址,他们前面的网络位都是一样的,那么我们就把这些地址称为他们在同一个网络号下。那么,他们的网络号就是192.168.1.0。
网络号实际上是这一段地址的第一个地址。这一段完整IP地址的第一个地址0到255是它的最大范围。在网络位不变的情况下。那么我们为了简单的来表示这个网络,我们就使用网络号来表示这整个网络。网络号就是为了同时来表示所有的这个网段中的所有地址的叫做网络号。
需要注意的是这个网络号是不能给主机使用的。
4、广播地址
第二个不能使用的就是当我们的主机位全为1的时候,主机位全为0的时候叫做网络号。主机位全为1的时候,我们把它称为广播地址,这个广播地址,它就是专门用来为我们这个网络发广播用的。
比如我举个例子。如果a的IP地址是192.168.1.1。b的IP地址是192.168.1.2。我们在a上面 去ping 192.168.1.2,那么b就会会响应我们的这个ICMP的报文,但是如果我ping的是192.168.1.3,那么1.3是另外一个主机b 就不回复了。
如果这个时候我们网络中有很多主机,除了b还有c。还有如果有很多主机,它可能是1.3,它可能是1.4,如果我的想一次性ping 出去,让我们所有主机都回复。那么这个时候我们可以发一个广播,这个广播就是255,这个255代表主机位全为1。
因为主机位有八位,8个1换算成十进制呢,就是255。那么这就表示这个地址为这个网络的广播地址。
同理,这个广播地址也是专门用来广播的,也不能给普通的主机使用。
那这个广播地址会用在什么地方呢?
比如我们有一个路由器。现在有主机a。主机b。现在我们路由器的IP地址假设是192.168.1.254,然后我们主机a的IP地址是192.168.1.1。那么首先在我们正常的通信过程当中,在主机a上肯定会产生一个ARP表,肯定会产生这个表中会保存,会保存网关的消息192.168.1.254对应的MAC地址,比如说C。
假如网关的MAC地址为c的话,如果这个时候这个网关坏掉了,我们赶紧的拿1个备用的新买的网关替换掉这个网关。那么在替换到这个网关的时候,请问大家IP地址你会不会改变?你会不会去改变这个网关的IP地址?要不要修改?
这是一个很实际的问题,比如说我们你是一个小企业的网管,今天突然上不了网,你发现网关坏了,你要换一个新的。首先你的这个网关的地址肯定是不变的,因为这个地址是大家都用的网关地址。你肯定还配1.254,但是不可避免的MAC地址会不会还是c啊?很显然不会。因为你换了一台设备,这个MAC地址是在跟着设备走的,你的MAC地址换了一个地址变成d了。
那请问这个时候,普通的主机a能不能上网?
注意它是不行的。上不了网的,为什么上不了网?
因为此时a认为1.254的MAC地址是C,a的ARP表如果不更新的情况下。他一直认为1.254对应的MAC地址是c,但是在这个网络中c已经不存在了。明白了吗?
这个时候如果a的ARP表不更新,那么它是上不了网的。
我们想解决它的办法就有几种,第1种通知所有人。通知所有人重启是自动学习的呀,但是学到了之后我不会一直自动学呀。
另外一个简单的办法是你不用管这些员工,你在你的路由器上去 ping192.168.1.255,你用你的路由器发一个广播。你的路由器发一个广播的同时,就会把这些主机的ARP表刷新。
所以这就是广播的一个很重要的用途。
ARP这个东西是不会自动刷新的,它必须要隔很长时间,可能要隔十分钟甚至20分钟。甚至1个小时,它才会过期才会老化,
其实这个时候你ping这个广播,目的并不是让对方回复你,你ping这个广播的目的只是让对方获得你的MAC和IP的对应关系。
5、主机地址
在一个网络中,除开网络号和网络位和这个广播地址之后,剩下的地址我们把它称为可用主机地址。
6、IP地址分类
其实是IP地址这个设计方案在今天看来其实已经有点过时了,已经有一点跟不上这个我们现在使用的这个时代潮流了。
1)A类地址
简单说一下,大家了解一下就行了,首先我们规定如果IP地址的第一位二进制数是0打头的。那么我们就将这一类IP地址称为A类地址。如果把这个类IP地址换算成十进制,就是从0.0.0.0到127.255.255.255。
对于A类地址而言,我们就规定前八位是网络位。
十进制属于0到127,这个IP地址我们就认为它是属于A类地址。
那么A类地址在默认情况下网络位就是前八位,所以它就是10.1.1.1/8,这就是它的网络位,前八位是网络位。
2的N次方减2 是可用主机地址数量的公式。n等于什么呢?n等于主机位。
比如这个例子里面八位是网络位,所以主机位是24位,那么就是2的24次方就是总的这个IP地址总范围,但是要减去第一个地址是网络号,还要减去最后一个地址是广播地址,这两个地址是不能给主机使用的,所以要减2,这就是我们这个网络中可以使用的这可用主机地址的数量。
这个数量就决定了这个网络中你到底可以放多少台PC,因为每一个PC都要一个IP地址。所以A类地址,它的网络可以是说可以说是相当的大,可以放很多很多的主机!
2)B类地址
二进制的前两位,必须是10打头。
前两位是10打头,那么从十进制上看,那么就是从128.0.0.0到191.255.255.255。
举个例子,我们常见的172.16.1.1这个地址,看第一段十进制数。它是在128到191之间,所以它就是b类地址。
那么这个b列地址我们在默认情况下,它是前16位是网络位,172.16.1.1/16 这是它的网络位,网络位不变,网络号就是主机位后面的16位写0。172.16.0.0 是它的网络号。
那么它的这个广播地址就是172.16.255.255。那么可用主机地址的数量。就用它的主机位的16位,2的16次方减2。2的16次方65534。
b类地址明显就比A类地址,这个网络的范围要小一些。
3)C类地址
它的定义是2进制的前三位为110打头。
从十进制看,就是192到223,这是c类地址。
c类地址也是我们在日常生活中最常见的地址。比如我们常见的192.168.1.1,这就是c类地址。c类地址的默认前24位为网络位。
所以它的网络号就是192.168.1.0,它的广播地址是192.168.1.255。那么可用主机的数量就是2的8次方减2=254个。254个这是ABC类地址的分类。
网络号和广播域之间什么关系,其实是每为了让广播域之间可以通信。
4)D类和E类
ABC类就是我们平时可以使用的IPV4地址啊。
然后还有两类地址是我们平时不能使用的,叫做d类和e类地址。
d类地址的2进制前4位为1110,那么它的实际制是224到239这1类地址,没有网络号,
这一类地址,每1个地址都是1个单独的地址,它是专门用来做组播地址的,
什么叫做组播呢?组播其实是一种特殊的广播,我们把它称为特殊的广播。
组播就只是在微信群里面发消息,并不是让所有人看到就叫发组播。
组播的范围可能更小,但是它也是1对多的。你可以认为主播就是一种部分的广播。
最后呢,还有240到255这些地址,前4位是111这些地址呢,是科研保留地址。我们平时不能使用啊。
7、私有地址-解决IP地址不够用问题
IP地址一共是32位。2的32次方,大概是42亿9000万。大概这么多个地址现在又没有全部能够使用,够不够我们现在全球互联网使用?42亿个地址根本就不够每个人用。
那为什么当初这么设计呢?因为其实当初设计IPV 4地址,并没有准备给全世界使用,当时设计这个地址只是准备给军队,科研和军队使用并没有想的这么长远。
那就重复使用,不是IPV 6。
比如我们在这个网络连接的过程当中发现了一个这样的事情,比如企业a它有一个自己的网络。企业b也有一个自己的网络,如果我们说企业a和企业b两者之间永远都不需要通信,就a和b之间都不需要通信,我们总是不通信。那么,请问此时a和b的网络ip地址冲突了,要不要紧?
不要紧!
这些拿出来可以重复使用的地址,我们把它称为私有地址!
A类地址中,我们将10.0.0.0到10.255.255.255拿出来,作为私有地址重复使用。谁都可以用,随便用,不需要申请,不需要花钱购买,
b类地址中从172.16.0.0到172.31.255.255拿出来。
c类地址中把192.168.0.0/0到192.168.255.255拿出来给大家随便使用。
- A类地址范围为“10.0.0.0~10.255.255.255”,即“10.0.0.0/8”;
- B类地址范围为“172.16.0.0~172.31.255.555”,即“172.16.0.0/12”;
- C类地址范围为“192.168.0.0~192.168.255.255”。
- 私有IP地址是在A、B、C3类IP地址中保留下来为企业内部网络分配地址时所使用的IP地址。
所以我们在家里常用的IP地址是192.168.1.1或者是1.2,1.254。
用多了以后,大家自然这个IP地址的这个呃不够用的问题就得到了1定程度的缓解啊,就OK了就搞定了。
我们就将这样使用重复地址的网络称为私网。而全世界的这个互联网呢,我们就称为公网。
私网使用私网地址,公网使用公网地址。
8、特殊地址
这里有1个地址是127.0.0.0到127.255.255.255。这个地址我们把它称为还回测试地址。
这个地址的设计其实也是一个败笔啊,为什么说是个败笔呢?
因为这个地址只是为了测试你自己这个设备上的这样一个tcp/ip协议栈是否安装成功,
比如在我们自己的网卡,去ping 127.0.0.1,还回测试中的任意1个IP地址都是可以ping得通的。因为这个就等于自己在ping自己,如果ping不通这个地址,只有一个原因,就是你的网卡可能没有正确的安装tcpip协议,才会ping不通,只要安装了就能ping得通,这个你无需联网就能ping得通,这是还回测试地址。
但是你们会看到就仅仅这样一个测试地址,它却用了这么一大段A类地址去测试。这就是当初设计的时候没有考虑周全,可以说是一个小小的败笔,拿了太多地址去浪费了。
第2个特殊地址呢是0.0.0.0这个地址。
这个地址我们一般用来代表全世界,我们可以写0.0.0.0/0。也就是说它的主网络位是0位,也就是没有任何一位是网络位,那么这个地址很特殊,用来代表全世界网络。也就是说如果你把这个看作一个网络号,那么全世界的网络都在这个网络号中。
然后这个地址255.255.255.255,也就是全是1对吧32个1?这个地址就是一个全网广播地址啊。
9、掩码子网划分
掩码可以控制我们网络位。
什么叫做子网掩码?刚才也讲过,在这个设计之初,把我们地址分为a类,b类,c类这样分。这类分配,它是一个硬性的规定。10.1.1.1属于A类,所以它的前八位是网络位。但是这样的分配呢,你会发现1个问题,它在我们普通网络中就不太好使。
我们看这个网络,它有2的24次方减2这么多个主机。那就会出现一个问题,现在我如果在两个网络中。这边主机a给它配的地址是10.1.1.1/8,这个时候你会发现一个问题,b能不能使用10.1.2.1/8呢?
不行的啊,因为这里是八位,它的网络号是10.0.0.0/8。它的网络号也是10.0.0.0/8,
因为网络位只有八位,导致一个IP地址规定好了以后,就占用了这个网络大量的IP地址,导致b如果再想去分配IP地址的话,就只能从11开始了,这样分配这就可以。
你想想看有哪个广播域中会放2的24次方减2这么多台主机啊,不可能!
现在我们一般来说一个广播中放那个100台主机都觉得已经很多了,放那么多主机这个广播就会发死对吧?
所以我们就觉得这么去设计IP地址A类设计8位,b类设计16位,其实都不太好,其实我们常用的我们发现c类地址/24位,其实是比较好的,c类地址192.168.1.0/24,它能够真正使用的主机位是2的8次方等于254个地址。这是他能用的地址数量,这个地址数量就非常OK,给普通的网络啊,用使用都好。
而且因为是正好24位,后面是八位主机位。从十进制上看,也比较容易看得懂,不用频繁的做十进制到2进制的转换。
我们不能把A类和b类的这些地址给浪费了,那怎么办呢?我们就做一个叫做子网掩码的东西,来用来规定IP地址的网络位。
c类地址默认是24位的网络位,连续的24个1。它就表达了这个掩码所对应的这个IP地址,前面的24位是网络位。而掩码有八个连续的0,就表达了这个八个0所对应的主机位的IP地址的这八位是主机位。
也就是说一句话,掩码的1代表了网络位。掩码的0代表了主机位。
所以192.168.1.0/24这个网络号24位的掩码,如果你要写成这样1个掩码的形式的话,就是前面要写24个,1换成十进制就是255,3个255就是24个1,0就表示了这个IP地址的前24位是网络位。
172.16.1.1/16的的掩码是255.255.0.0。
10.1.1.1/8,它的掩码是255.0.0.0。
所以8位的掩码255.0.0.0,16位的掩码255.255.0.0。24位的掩码255.255.255.0。分别对应了A类,b类和c类的默认掩码长度。这就是子网掩码。
那么我们为什么要这么规定呢?就是为了可以灵活的控制网络位。
比如说172.16.1.7这个地址是属于b类的。它的默认的掩码是255.255.0.0是16位的,所以它的网络号是172.16.0.0。
在172.16.0.0这个网络中,一共有多少个IP地址?2的16次方,可用地址就要再减去头尾,2的16次方减2,这一共有65536个地址还剩65534个。
这是一个b类地址,现在我们觉得这个地址太大了。一个网络中我不可能一次性放65534个主机,我最多放十台主机或者最多放100台主机。那么这就意味着其他的65500多个地址就可能全部都浪费了,对吧?
为了不去浪费这些地址,我怎么办呢?我可以做一个子网掩码的变化。
比如我把这个子网掩码,本来是16位的,再加1个255,八个1加起来就是24位的网络位。
加了1个255之后,网络号变了叫做172.16.1.0/24。
这么变完了之后,主机位变短了,只有八位,最后八位是主机位。
所以此时IP地址只有2的8次方等于256个地址了,这256个地址你甚至可以枚举出来。就是从1.0开始,1.0直到1.255,1共256个地址。
然后再根据公式2的8次方减2插头去尾,还剩254个地址,这254个地址写出来就是从1.11.21直到1.254。254个地址。
当我们增加子网掩码的长度的时候,首先我们会发现网络主机变少,IP地址变少了!
但是这个时候你会会发现一个问题就是网络变多了,原来的网络是172.16.0.0/16,现在的网络是172.16.1.0/24,这时候你会发现一个事情,就是这个网络和172.16.2.0/24这两个是属于两个不同网络的。也就是你会发现原来是一个大的网络,变成了两个小的网络,甚至还包括了3.0/24,还包括了172.16.4.0/24。
那么一共包含到哪呢?包含到172.16.255.0/24。
相当于把这一个大的网络划分成了256个小网络。
好处就在我将来在分配IP地址的时候。会更加的节省地址。变长子网掩码可以起到很大的1个节约IP地址的作用。
10、掩码二进制变长
变长子网掩码中的2进制变长,而不是十进制变长了。
192.168.1.0 ,c类地址它默认的掩码长度应该是24位的。它默认的网络号应该是192.168.1.0/24。
但是现在,我如果还想把这个网络再变小,更进一步变小。这个网络我觉得还是大了,它一共有254个2的八次方减2=254个,可用主机地址。
还是大了,我再想变小怎么办?
这个时候我们就必须在二进制中借位。
这是IP的二进制数,这是换算过来的结果。
然后这个时候我们将掩码再加一个掩码,掩码多写一位1。
那么此时等于我们将这个IP地址看成二进制数,这个IP地址二进制数的前25位定义为它的网络位。那么把这25位定义为网络位之后。再写出这个IP地址的网络号,就是前面25位保持不变的情况下。后面还有七位我全写0。就表示这个IP地址的网络号,这就是网络号。
192.168.1.0。
你会发现这个网络号怎么和原来的网络号一模一样啊?注意这两个网络号是不一样的。
因为这里要加上一个/25。也就是说此时的网络位有25位,而不是24位,长度变了。那么长度变了带来的直接影响就是网络变小。
网络位变长,那么这个网络就会变小,主机的数量就会变小。
还剩七位主机位,所以地址的数量就只有2的七次方,而不是2的八次方等于128个,那么可用主机数量叫2的七次方减2=126个。
那么请问还有地址去哪儿了呢?还有一些地址去哪里了呢?
这是第1个子网,还有1个第2个子网。
第2个子网长什么样呢?长这样192.168.1.128/25。这是另第2个子网,这个子网中是从11.128到1.255。
好,那这个子网怎么来的?这个子网怎么来的?
我们把192.168.1.128换算成二进制数。这个数前面24位,我不用管它,我只用管最后八位,128其实就是10000000 ,这就是128。你会发现和上面的127 正好网络位变了。
127是01111111,正好这第25位的网络位变了,所以就正好从这里划开了。
因为网络位和上面不一样。所以我们就把这个称为另外一个网络,因为128第25位全部都是11直到所有都是1。这个数换算过来是255。就是这么换算过来的。
子网划分就是利用变长变长子网掩码来实现的。
子网划分我建议大家在B站随便找一个视频看一下就能懂!