引入IPV4
问题:
当公有地址和私有地址使用同一IP地址,那么服务器有可能将公有地址想要的资源错误发送给私有地址,或将私有地址想要的资源错误发送给公有地址。
解决:
使用IPV4对地址进行规划。
原因:
计算机识别的是二进制,而IP地址底层是二进制。平时我们看到的类似192.168.0.1是十进制,在计算机中会转换为二进制进行识别。
介绍IP地址
IP地址的作用:区分地址信息
IP地址的组成:网络号+主机号
下面给出三个IP地址:
130.20.11.2
130.20.11.3
130.20.11.4
网络号:IP地址相同的部分为网络号,即130.20.11,代表属于同一网络区域。
问题:
同一区域网络可以用网络号识别,不同区域之间怎么实现通信?
解决:
通过路由器来转发-->方式:查看网络号是否是当前区域,不是则将数据转发到对应的网络号代表的区域。
主机号:IP地址不同的部分为主机号,即2,3,4,同一网络区域里的不同地址用主机号来区分
问题:
为什么按顺序(层级)来划分主机号?
解决:
目的:方便管理。
IP地址的划分:
如图1
图1
注:多与少只是对于这些数字比较而言。
例子:假如分配了一个网络号给一个区域:195.10.10.X(C类地址),那么从195.10.10.0~195.10.10.255,一共有256个主机数可以使用。
问题:
如果需要257个地址数该怎么办?
解决:
分配一个新的C类地址给该区域。
缺点:
浪费了255个地址。
原因:
简单分类导致IP分配不合理。
解决:
使用子网掩码。
子网掩码的作用:划分网络号和主机号。
需求:
192.168.0.X(X⊂[0,255]),若某个区域要4个地址,即0,1,2,3
问题:
怎么将这四个地址归为同一个网络?
解决:
子网掩码。
如图2:
图2
1.首先将这4个IP地址由十进制转换为二进制。
2.因为192.168.0对于这4个IP地址来说是不变的,所以可以锁定前24位二进制数。
3.我们将转换后的二进制数里的不变的位数,用二进制里的1表示其不变。
4.对于这4个IP地址,变的是32位里的最后一位比特,因此我们也可以对剩下的六位用二进制1来锁定。
5.剩下两位就是该IP地址的主机号了,用0表示对这两位二进制不进行锁定。
6.现在将锁定位和不锁定位组合起来转换成十进制,就得到255.255.255.252,这个就是该这4个IP地址的子网掩码。
7.CIDR斜线记法可以在IP地址后简单表达子网掩码,用这个例子举例:192.168.0.0/30,表示了前30位是锁定状态,即前面有30个1,后面2位是可变的。规定了将未锁定位从0开始表达子网掩码,当前有2位是可变的,代表了同一区域有2²=4个主机号。
例题:
IP地址为192.168.50.10,子网掩码为255.255.192.0,在这里网络号是什么?主机号是什么?
解决:
因为子网掩码前面是255.255,代表前面16位都是锁定了的1,192转换二进制为11000000,也就是前面18位都是不变的1,前面18位在二进制中就是网络号,剩下的十四位在二进制中就是主机号,而将IP地址的192.168.50.10里的50转换为二进制为00110010,去掉前面的00正好是110010,也就是十进制的50,而去掉00后,加上前面16位,正好对应了是子网掩码中前18位不变的那前18位。
所以网络号是:192.168 主机号是50.10
IPV6引入
2019年,欧洲宣布43亿个IPV4地址已分配完毕。这代表已经没有任何一个IPV4地址能分给新制造的电脑了。
其实在2012年,全球IPV6的计划就启动了,截止到2022年,全球已经有79亿人口,IPV6的使用对于网民来说是迫切的。
冷知识:
问题:使用IPV6最多的是哪个国家?
答案:印度,中国排NO.39。
我们先来了解一下IPV4的组成,IPV4地址是由0~255的十进制组成,在计算机二进制中,是有4组8位二进制数组成,一共32位。
核心:计算机底层是二进制,IPV4是二进制,IPV6地址也得由二进制数组成。
如今IPV4地址满了该怎么办?
解决办法:
把32位的比特数增多就可以了,增多到多少?128位。
IPV4与IPV6的第一个区别:IPV4-->IPV6
32位 128位
问题:
由32位变为128位,如果把IPV6转换成十进制,那么地址会非常长,不方便书写和计算,该怎么办?
解决:
将IPV6的二进制转换为十六进制
十进制对应的16进制:
如图3:
图3
十六进制转换二进制表格:
如图4:
图4
IPV4与IPV6的第二个区别: IPV4:192.168.1.1,用.分割数字;IPV6:2001:0db8:85a3:0042:1000:8a2e:0370:7334,用:分割数字
需求:
对二进制数:0010000000000001转换为十六进制
解决:
1.首先对二进制数进行四位一组分组:0010/0000/0000/0001
2.每4位就是1个十六进制数,转换为十六进制就是2/0/0/1
对一组十六进制数观察:0000:0000:0000:0000:0000:0000:0000:0001
看到这么多的0,会不会很头疼?
IPV6可以对0进行缩写:0:0:0:0:0:0:0:1
遇到连续的0还可以再缩写-->::1
注意!
在IPV6里有这样一个规律:编头不编尾 双冒号(::)只能使用一次,如果从左边开始遇到两组0(0000 0000)),那么就可以使用双冒号,但后面遇到两组0需要写成0:0
需求:对下列IPV6地址进行缩写
2001:8000:0000:0000:0456:0000:0000:0000
解决:
2001:8000::0456:0:0
IPV4与IPV6的相同点与不同点:
如图5:
图5
相同点:版本,源地址,目的地址
更名(作用和之前类似,只是换了个名):区分服务——通信量类;总长度——有效载荷长度;TTL——跳数显示;协议——下一个首部
IPV6取消:首部长度、标识、标志、片偏移、首部检验和、可选字段、填充
IPV6新增:流标号
IPV4组成:网络号+主机号 弊端:例如一个IPV4地址227.82.157.176,很难确定网络号和主机号
IPV6组成:前64位是网络号,后64位由主机号改为接口ID,一台主机有一个接口,每个接口有独立的IP地址。
IPV6前64位为网络部分,但64位里又有另外的划分:前48位是互联网服务商给的,自己不能改变,剩下的16位是子网,公司对每个部分划分子网,然后每个子网再分配接口ID。
相同的地方在于:IPV4和IPV6都可以被路由器转发,地址为全球单播地址。
IPV4与IPV6的第三个区别:IPV6没有子网掩码!同时,IPV4有ABC类,IPV6没有。
为什么?
因为IPV6的地址足够多,子网掩码存在的意义就是在同一片网络下,区分主机,只要地址足够多,就不会有任何问题。
需求:
IPV6地址:2001:0db8:85a3:00042:1000:8a2e:0370:7334/64,区分网络号和接口ID
步骤:
1.先将十六进制转换为二进制。
2.根据/64可以得出,前64位为网络号,后64位为接口ID,并且这个/64是十进制的,而/64前是十六进制的。
IPV4与IPV6的第四个区别:
IPV4可以进行单播、组播、广播、任播(未正式支持,可以通过BGP来实现)
IPV6可以进行单播、组播、任播,可以通过组播来实现广播,可以节省带宽,IPV6没有广播,代表IPV6不需要ARP。
IPV6类型:
如图6:
图6
其中:
全球单播地址:
类似公有地址,可以被路由器转发,以2,3开头,这个地址规定前3个比特要为001,因此就会有0010(16)-->2(16),0011(2)-->3(10),因此用2,3表示全球单播地址(16进制)。
链路本地地址:
以FE80::/10开头,支持IPV6的电脑一定有链路本地地址,用于单个链路上寻址,路由器不转发,不能用ping命令,类似于单机。
环回地址:IPV4与IPV6的第五个区别:
IPV4环回地址:127.0.0.1
IPV6环回地址: ::1/128
未指明地址:
相当于IPV4的0.0.0.0
IPV6的未指明地址:::/128 全0地址
唯一本地地址:
以FC00::/7开头,类似于IPV4的私有地址。
内嵌IPV4:
将IPV4转换为IPV6:以前80位比特都是0的格式内嵌。
有人说,IPV6比IPV4更安全,这种说法是不对的,安全只是相对于某个环境或者条件而言,目前不能断定哪一个更安全;虽然IPV4结合CIDR和NAT可以解决大量地址不够的问题,但也不是长久之计,所以还是得通过IPV6来解决分配地址不够的问题。