计算机网络第十章——网络层
一、回顾知识点
- 【网络层】是网络层面的【主机IP寻址】
- 【数据链路层】是局域网内的【MAC物理寻址】
提示:【网络层】也被叫做【网际层】
二、IP协议对于网络体系结构中的总作用
首先IP简单的说,就是可以向下支持互连各种不同的网络接口(因为TCP/IP模型里网络接口支持各个厂商自由发挥,可以是wifi无线接口、可以是同轴电缆有线接口......)
然后向上可以为不同的协议的网络提供服务(传输层有TCP或UDP协议网络,网络层的IP协议能适配他两)
‘
IP也因为常和TCP协议搭配,所以常用TCP/IP这两协议代表整个协议大家族,统称TCP/IP协议族
三、IP地址具体是啥?发展历史?
最简单的计算机网络
一开始我们要在两个计算机传输数据,就用一根线连起来就行
但是随着要互联的电脑越来越多,直接连线就不太合适了
集线器局域网的MAC地址
于是诞生了集线器,通过它在中间作为信息转发的中介来传送信息
回顾集线器的原理:每个计算机设备都有代表自己的一个MAC地址,集线器将发送方的数据包直接一股脑复制粘贴发给所有其他计算机设备,然后其他计算机设备拿到消息之后自己检查这个MAC地址是不是给我自己的,是就解析接收,不是就不要
那这样就会非常麻烦,就好比物流发快递,虽然填了发件人和收件人的地址,但是物流公司直接把快递一股脑给所有人都发一遍,然后客户收到一堆垃圾快递之后去一个一个检查哪个快递是自己的
网络层IP地址诞生
于是又诞生了交换机,在集线器的基础上增加了一个【IP地址】,用它来实现精准的 “点对点” 发送而不是发给所有人了
(交换机有多种形式,路由器、服务器也是交换机的高阶Pro Max版本)
MAC和IP之间的关系
那么现在假设
- MAC地址是身份证或者手机号等能代表你个人的唯一身份标识
- IP地址是你家的具体地址
那么现在茫茫庞大的网络里,你的网恋对象想给你寄个情人节快递给你,那么她就会在快递上填上你的IP地址 + MAC地址,快递员会根据IP地址在这庞大的网络“交通系统”里找到你在“广东省佛山市狮山镇南海区依云小镇”,但是这个住宅里可能几百户业主、就算同一个房子里还住了:你爸、你妈、你奶、你爷....,快递员肯定不能甩门口就走人了,就得再根据MAC联系到你本人:“XXX来取你的快递”
由此可得知:
- mac地址是你这个设备的实际【物理地址】
- ip地址是专指你的设备在互联网【网络中的网络地址】
mac从你的电脑的网卡生产出来那一刻就被厂商赋予了唯一的标识,而ip地址是可用动态计算分配出来的,不固定的,不过在你分配到一个ip地址之后在你释放之前,也不会有第二个跟你一样的ip地址。
四、IPV4地址表示
那么IP地址一开始最早是以IPV4的形式存在,IPV4是由4个字节(32个bit)的二进制代码表示的
由于一大堆二进制数人们看不懂,于是IPV4又有一种表示方法:每个字节的二进制数用10进制表示,于是便有了人们常见的192.168.1.1这样ip地址
(不会二进制转换十进制的看下图自行理解)
五、IPV4地址分类
1、IP地址分类表
那么IP地址分为了5大类,因为不同范围的IP地址专门要用于特定的用处
那么这个分类具体是:
- A类是用于大型公司的网络分配,前8位是网络号,后24位是主机号
- B类是用于大型公司的网络分配,前16位是网络号,后16位是主机号
- C类是用于大型公司的网络分配,前24位是网络号,后8位是主机号
- D类是用于多点广播的网络分配,不会分配给一般用户
- E类是用于科研研究事业的网络分配,不会分配给一般用户
那么【网络号】就是一个具体的网络范围,抽象成生活中的例子就是比如你是哪一个小区的、你是哪个班的、你是哪个省哪个市的......
;
【主机号】就是具体你这个设备的地址,比如你在你家小区具体的门牌号、你在班级里的学号、你在广东省阳江市具体的住址位置......【网络号 + 主机号】才是一个最完整的IPV4地址
;
那么就能理解为什么像A类ip地址适用于大型公司了,因为主机号范围大,能容量更多的计算机设备,而小公司则网络号更精确范围更大,从而分配给主机设备的地址就最少;这样分类就会避免小公司如果用A类的ip地址的话,就那么几台设备就会浪费很多主机范围,大公司用C类的话也会不够自己公司的设备分配ip地址
;
另外注意:除了DE两大类不让分配地址给网络中的主机、路由器,还有当主机号全为0的情况时是【网络地址】,主机号全为1的情况是【广播地址】,也不让随便用
然后在具体来看:(这里涉及二进制和十进制转换,没基础的自己去学)
;
A类网络地址的第8位规定是0
- 那么【第1个字节】可以被分配的范围就是:00000000~01111111,也就是0~127种地址可以分配
- 【主机号】就可以分配:255 * 255 * 255 个了
- 整体ip范围(包含2个不可用地址)就是:1.0.0.0 ~ 127.255.255.255
B类网络地址的第8位规定是1,第7位规定是0
- 那么【第1个字节】可以被分配的范围就是:10000000~10111111,也就是128~191种地址可以分配
- 【主机号】就可以分配:255 * 255 个了
- 整体ip范围(包含2个不可用地址)就是:128.0.0.0 ~ 191.255.255.255
C类网络地址的第8位规定是1,第7位规定是1,第6位规定是0
- 那么【第1个字节】可以被分配的范围就是:11000000~11011111,也就是192~223种地址可以分配
- 【主机号】就可以分配:255 个了
- 整体ip范围(包含2个不可用地址)就是:192.0.0.0 ~ 223.255.255.255
D类网络地址的第8位规定是1,第7位规定是1,第6位规定是1,第5位规定是0
- 那么【第1个字节】可以被分配的范围就是:11100000~11101111,也就是223~239种地址可以分配
- 整体ip范围就是:223.0.0.0 ~ 239.255.255.255
E类网络地址的第8位规定是1,第7位规定是1,第6位规定是1,第5位规定是1
- 那么【第1个字节】可以被分配的范围就是:11110000~11111111,也就是240~255种地址可以分配
- 整体ip范围(包含2个不可用地址)就是:240.0.0.0 ~ 255.255.255.255
2、子网掩码
然后那么假设现在你分配到了一个固定了【网络位】的IPV4作为你公司的ip地址,现在你要给你公司里每一个主机或服务器这些设备分配各自的ip地址,你怎么保证在不影响【网络位】改变的情况下随机变化【主机位】来分给每一个设备ip地址???
这里再次强调一下ip地址就是首先给一个区域网络分配好一个固定的【网络号】,然后给区域网络内的每一个主机分配一个【主机号】。
通俗理解假设一个学号就是一个完整的ip地址,以我的学号22215120636为例子,那么222151206是我是22级计算机学院软件工程6班,这就是【网络号】;然后36就是我在这个班级的具体学号,我的室友是37、38...这就是【主机号】。
;
那么【网络号】相同的ip地址,我们称在同一【网段】,你可以理解同一网段就是在同一个班级里
那么【子网掩码】就是用来确定【网段】的,你可以理解它是一把锁,他会锁住这一网段的【网络号】,允许随意变化【主机号】来分配ip地址,从而让这些主机在统一【网段】内通信
子网掩码也是一个4个字节(32bit)的二进制码,转化成十进制的话,每个字节跟ip地址同样都是0~255范围。子网掩码每个字节对应ip地址每一个字节,255的话就是表示当前这个字节固定了满了,不能再变;0则是这个字节可以任意变换0~255任意一个数
换成ip的ABC三大类就能明白怎么回事了
只要子网掩码是255(二进制11111111)的部分,就固定了不能改变
后面如果是0(二进制00000000)的部分,就可以随意改变
注意!一定要注意,上面只是ABC三类ip地址最标准的子网掩码的形式规定,并不是只有符合这样才是ABC三类里的一种ip,子网掩码本来就是根据ABC三类ip来动态生成的
;
比如22位的子网掩码:11111111.11111111.11111100.00000000,也就是255.255.252.0,并能不代表这个ip他不属于ABC三类的其中一类,相反它只是对于B类ip的子网掩码生成,网络位是前2个字节不让变,第3个字节还是可以变的
3、计算有多少可用的ip地址
有了子网掩码和一个已知的网络ip(意思就是固定了【网络号】的网络地址),我们就可以知道这个网络地址可以分配多少个ip地址
假设一个网络地址是:192.168.1.1,子网掩码是:255.255.255.0
那么转换成二进制就是网络地址是:11000000.10101000.00000001.00000001,子网掩码是:11111111.11111111.11111111.00000000
可以看到子网掩码有24个1,也就称为是一个24位掩码
然后现在把网络地址和24位掩码组合就是:
那么也就是32位里有32 - 24 = 8位可以任意变,于是根据二进制算法可以得出共有 2^8=256 种可能,然后因为【主机号全是0的是网络地址】、【主机号是255的是广播地址】不能用,所以可用的ip地址是 256 - 0 - 2 = 254 个(也可以用加减法理解,最后一个字节都可以变的话:0~255就是256种可能(先把0也包括在内),然后网络地址和广播地址不能用:就是256 - 2 = 254)
例题:
还是那个ip网络地址,换成子网掩码是255.255.254.0的话,那么十进制就是11111111.11111111.11111110.00000000
所以子网掩码是23位掩码,结合ip地址就是:192.168.1.1/23
那么可变位是9位,一共就是 2^9 = 512 种可能,然后因为【0.0 (主机号全是0的是网络地址)】、【1.255 (主机号是255的是广播地址)】不能用,那么最终可用的ip是 512-2 = 510
4、子网划分
1)为什么要有子网划分
原因1:然后因为同一个公司里可能还要划分各个部分,各个部门里应该拥有自己部门的一个范围的ip地址划分;
原因2:另外,即使使用C类ip地址,有的公司依旧没有那么多的主机需要占用那么多ip的主机号范围,那样就会浪费一个地址(比如A公司只有3台电脑,结果使用C类ip并占有了192.168.1.0这个ip网段,就那么3太设备直接浪费2^8-3=253个空余的ip地址,ipv4的地址分配本来就有限,到时都申请完了会让别的大公司想申请一个ip地址都没有了......)
那么就诞生了子网划分,它的原理是在原有的【网络位】【主机位】划分基础上,往【主机位】再借n位,从而能划分更多子网,划分的n位里每一位都可以是1、也可以是0
2)具体划分案例
先看下面这个例子
那么现在捋一下要求,我们可以知道:
- 1、我们现在至少要划分出3个子网用于给3个部门
- 2、其中一个部门最多的主机是50台,那么我们划分的每一个子网分配ip的数量至少不能少于50个
那么根据二进制算法(其实也是排列组合的知识点):
;
假如我们向主机位借N位作为子网号,那么至少可能有2^N种子网可能(包括了主机号全0、主机号全1的两个非用地址)
;
假如我们的主机位是M位,那么借了N位作为子网号,那就还剩M-N位是主机号,可分配的ip也就是2^(M-N) - 2个(不包括了主机号全0、主机号全1的两个非用地址)
;
所以,而划分的子网数量应该是:2^N >= 3,也就是N=2,就能得到00、01、10、11,4个子网完全够3各部门使用了
每个子网可划分的ip主机地址应该:2^(8-N) - 2 >= 50,也能得出N=2,主机号是6位,每个子网都有62个ip地址可分配,也够每个部门所有设备都分配得到了
3)确定新的子网掩码
再确定了划分几位为子网号之后,这借的的子网位也将重新归入到子网掩码里,还是刚刚的案例,一个C类的ip的子网掩码本来是24位(前3个字节),但是现在确定借了2位为子网位,所以现在新的子网掩码是:24 + 2 = 16位,对应的二进制和十进制如下图:
4)确定网络地址、广播地址
前面我们说过,网络地址就是主机号全0,广播地址就是主机号全1,那么那只是简单的概念,现在我们加入子网划分之后再来看
我们应该对应划分的几个子网,然后每一个子网的子网位不动,剩下的主机号全是0才是网络地址
同理,对应划分的几个子网,每一个子网的子网位不动,剩下的主机号全是1才是广播地址
最终这个公司ip地址分配就是这样
例题:
通常考试会直接给一个原始ip网络地址,然后给一个子网掩码,来求网络地址、子网划分......
我们要记住,假设题目没有给出一开始申请ip地址块的时候的子网掩码的位数,那么题目里的子网掩码是已经向主机号借了子网号的,所以只需要根据他原来是ABC哪一类ip,然后看子网掩码是不是在这基础上多借了几位;
没有给出一开始申请时的子网掩码的长度是多少,那么我就先按照ABC三类对比,很明显是C类又往后借了1位
子网掩码二进制是11111111.11111111.111111111.10000000,很明显网络位最多的C类只占前3个字节的,那么这里肯定是用的C类ip,并向主机号又借了1位,所以是一个25位掩码
那么子网最多可以划分2^1=2个,分别是:
- 11111111.11111111.111111111.00000000 ~ 11111111.11111111.111111111.01111111,
也就是:210.33.5.0/25 ~ 210.33.5.127/25,网络地址是:210.33.5.0
- 11111111.11111111.111111111.10000000 ~ 11111111.11111111.111111111.11111111
也就是:210.33.5.128/25 ~ 210.33.5.255/25,网络地址是:210.33.5.128
这题跟上面一样,他没有给出一开始申请时的子网掩码的长度是多少,那么我就先按照ABC三类对比,很明显是C类又往后借了1位
题目明确给出了一开始申请ip地址块的时候就是22位的子网掩码,而且看ip地址是在128.0.0.0~191.0.0.0,所以这应该是在B类ip网络上的一个变形网段,我们只需要注意一点:如果后期要划分子网的话,我们只能在这个22位的基础上继续往后借位,而不是往前,这个子网掩码就是最初定好给这个公司的了
六、IPV6
1、NAT技术
但是前面说了,IPV4终究是不够分的,假设现在全世界所有人的所有设备都接上网络了,那么IPV4根本不可能每一个都分的过来的,于是人们引入了 [NAT地址转化技术]
在现在一个局域网内多个设备接上路由器,在他们接入广域网之前,这个路由器就是一个“关卡”,或者理解为“中间人”,专业说法叫【网关】,由他负责把大家的设备接入到广域网的ip(6.6.6.6)
然后此时发送方的数据包携带发送方的ip地址到网关处,经过路由器使用【NAT】技术把它映射成6.6.6.6这个地址,然后再给下一个服务器(比如8.8.8.8),然后再用【NAT】技术再变成8.8.8.8的地址
可是如果只是6.6.6.6和8.8.8.8这样的地址,接收方哪里看得懂这个数据是哪台电脑发过来的啊?
2、端口映射
所以人们有增加了【端口】这么个玩意,在NAT地址映射的时候,不仅ip地址转换成公网ip,端口也要跟着映射,这样不同的端口就代表了不同的设备,
3、公网ip和私有ip
因此上面从局域网接入到互联网的那个广域网ip就是公网ip,大家都能用;下面的接进去的每个设备的ip就是私有ip,不是人人都能用的
公网就类似人人皆知的地址,比如天安门、故宫、马尔代夫、布达拉宫......大家知道在哪,想去就去;但是私有ip就类似你家在你小区的15单元26栋918,世界上很多小区都有这么一个门牌号,如果你只填这个ip在快递上,根本没人知道要送去哪,因为没人知道你这个私有ip具体在,哪只有你的小区里才能用
那么如果你向网络运营商申请公网,那么你家的网也就不需要经过NAT映射,直接就能用这个公网ip上网了
4、ipv6诞生
那么前面这么多例子铺垫,可以知道哪怕用了NAT技术,ip地址还是越来越不够用;尤其是申请公网,公网是没有用NAT技术转换的,那么每申请一个就少一个ip地址能用,于是ipv4在2011年正式宣布枯竭
于是ipv6诞生,它是一个8字节的十六进制地址,中间用冒号“:”隔开,这样一来足够给地球上每一粒沙子都分配一个ip地址了
但是由于ipv4和ipv6的协议不一样,所以他两不能直接转换,只能通过中间设备再次映射
而且还有很多老设备都还在用ipv4,所以ipv6虽然越来越多人用,但是他暂时还不能取代ipv4!
七、再次根据ip、mac讲一下交换机原理
前面我只是简单说了交换机会根据ip地址和mac地址来精准找到发送方跟接收方,而不是像集线器那样广播式发信息了,但是有点片面
其实交换机在发信息前有三个模式,第一个是学习模式,第二个是泛洪模式,第三个是转发模式。
在第一个学习模式时候,它还是会像集线器一样把发送方信息的数据全都发一遍给别的设备,具体过程是:
假设在一个局域网里,发送方接入网络之后,已知自己的ip、自己的mac地址、接收方的ip地址,但是就是不知道接收方的mac地址。那就先设一个默认数值比如FF:FF:FF:FF:FF:FF,就是告诉交换机:“我不知道这个mac地址是啥”
然后交换机里会有一个mac地址表,数据包发过去后,他把接收方的mac地址以及端口记下来;接下来他检查到接收方mac是未知,于是变成泛洪模式,并发送一个ARP请求,这个请求就是把刚刚发送方的信息给大家都发一遍,相当于在路上捡到钱对所有喊一声“是谁的钱?”
每个设备会根据数据包里的ip地址检查是不是给我自己的,当是的时候就会马上回一个响应数据,里面就有自己自己的mac地址、发送方自己的mac地址
然后交换机收到响应,发现发送方的mac地址自己的表里已经记录过了,于是不用发给所有设备,直接返回给数据发送方
现在发送方知道了接收方的mac地址,两者正式连接上,然后就可以通过交换机直接一对一连接互传了,交换机也切换成【转发模式】
例题