第四层 网络层
1.网络层提供的服务:
虚电路服务(面向连接)和数据报服务(无连接)
虚电路服务:类似通话网服务,通信期间长期占用此链接(链路必须负责可靠性传输)
数据报服务:通信期间不需要建立完整的长期链接(链路不负责可靠性传输,目的端和源端负责,比如差错性检验的循环冗余校验)
2.虚电路服务相关介绍:
1.网络上的报文一般都比较短,使用数据报服务的话即迅速又经济,使用虚电路的话又慢又贵(因为短报文需要多次连通虚电路,连通时间又不长)
2.使用数据报时,每个分组必须携带完整的地址信息,而虚电路只需要编号标志
3.虚电路服务时,虚电路负责差错控制和流量控制,而使用数据报时,主机承担端到端的差错控制和流量控制
4.虚电路时,某个结点发生故障,后续分组可以另选路由,而使用虚电路时,某个结点发生故障,则需要重新建立另一条虚电路
虚电路服务代表:X25网
链路编号:虚电路号
X25规定经常通信的两端,该虚电路永久建立
特点:贵,兼容性不好
3.数据报服务相关介绍:
数据报服务代表协议:IP协议族
1.ARP地址解析协议(向下兼容)
2.RARP逆向地址解析协议(已废,向下兼容)
3.ICMP网际控制报文协议(向上提供服务)
4.IGMP网际组管理协议(向上提供服务)
虚拟的互联网需要解决的问题:
1. 不同的寻址方案
2. 不同的最大分组长度
3. 不同的网络接入机制(10M,100M,1G,带宽)
4. 不同超时控制
5. 不同的差错恢复方法
6. 不同的状态报告方法(收到确认信号)
7. 不同的路由选择技术(选择质量高的,还是速度快的,还是兼具的)
8. 不同的用户接入控制(WIFI接入,拨号接入)
9. 不同的服务(仍有部分虚电路服务在提供)
中间设备的分类:
1. 物理层使用的中间设备:转发器
2. 数据链路层使用的中间设备:网桥
3. 网络层使用的中间设备:路由器
4. 网络层以上使用的中间设备:网关(链接两个不兼容的系统,需要在高层进行协议的转换)
转发器、集线器、网桥、交换机、路由器和网关简介
4.IP地址的相关介绍
IP地址大小:32位,局域网和广域网IP可以重叠
IP地址的编址方式:
第一种:分类IP地址:网络号+主机号
A类:前8位为网络号(为A类的标志:开始第一位为:0)
B类:前16位为网络号(为B类的标志,前2位为:10)
C类:前24位为网络号为C类地址的标志,前3位为:110)
D类:D类地址的标志:前4位为:1110
E类:E类地址的标志:前5位为:11110(E类还没有用过)
ps:路由转发的时候先查找网络号,这样直接发到一个网络中,然后由网络中的路由器转发到对应的机器,这样路由的转发表会比较小
分类IP地址的具体分析:
A:(1/2)
网络号全0:表示我整个内网
网络号全1:广播网(回旋报文)
B,C类不具体分析
特殊的IP地址:
IP地址的一些重要特点:
1. 分等级的结构地址:好处有两点:1.IP管理机构只用管理网络号,主机号有该网络号单位自己分配,减轻了IP管理机构的压力,2。路由器只根据网络号来转发数据,不考虑主机号,这样就减轻了路由表的储存查找压力(先找到网络号对应的网络,然后又该网络号的单位查找对应的主机号然后发送)
2. 路由至少又两个IP地址(因为路由就是来链接不同的以太网的,所以至少有两个网络号,网络号的单位又给它各自分配了一个主机号,所以路由器至少两个IP地址)
3. 用转法器或者网桥链接起来的局域网具有相同的网络号,所以他们是同一个以太网
MAC地址是在某个以太网内部来找主机的,而IP地址中的网络号是找网络的!!
5.地址解析协议:
每一个主机都又一个APR,里面又所在以太网上的各主机和路由器的IP地址到硬件地址的映射表
APR是解决同一个以太网上的主机或路由器的IP地址和硬件地址的映射问题
比如A发送数据给B,就要知道B的IP地址和MAC地址,先在A的以太网上查找有没有B对应的IP地址和MAC地址对应的映射,没有的话,路由器会做响应,从而在其他以太网内查
每个路由管一部分IP地址的主机,所以找的是以太网内特定的路由器
6.IP数据报的格式:
首部和数据
首部中保存一些固定部分
我们主要了解固定部分
IP数据报首部分析:(20个字节,20*8位)
1. 版本(4位):IPV4,IPV6
2. 首部长度(4位):单位4字节,比如首部长度为3,表示首部有3*4个字节
3. 服务类型(8位):现在没有使用
4. 总长度(16位):头部加数据部分形成的数据报的总长度
5. 标识(16位):一个数据,分成好几个报文,然后一个报文继续分组(同一个报文在发送的时候被分成好几个分组,不然发送不了,太大了),同一个报文的不同分组标识的相同的,标识属于哪个报文(往上的,对应传输层)
6. 标志(3位,只有后两位有用):中间一位表示允不允许分MAC帧,最后一位标识我是不是最后一个MAC帧,标识该帧是不是结束帧
7. 片偏移:一个报文要分成好几个MAC帧发送。该帧属于第几帧
8. 生成时间:单位是跳,经过一个路由转发是一跳
9. 协议:向上兼容传输层的协议,该数据报是来自于传输层那个协议的报文
10. 首部检验和:校正首部的准确性(采用反码和的方式)
11. 源地址:来自哪里
12. 目的地址:去哪里
7.MAC帧部分及其介绍:
一个IP报文分成好几个MAC帧
一个数据报组成:首部+数据
一个数据报分成好几个MAC帧
MAC帧组成:首部+数据
所以多个首部,注意理解
ps:反码校验和算法:
8.路由和交换机的区别:
1. 路由用来链接不同的以太网,而交换机只负责一个特定网络中的工作
2. 路由用来转发分组,而交换机可链接主机(路由面向以太网,交换机面向主机)
3. 路由使用同一的IP协议,而交换机使用所在以太网的特定协议
9.第二种IP地址的编址方式:划分子网
原因:为了弥补分类地址的缺陷
分类地址的缺陷:
1. IP地址空间的利用率有时很低(小型的独占一个网络,利用率低,学校网利用率高(pc机多)
2. 给每个网络分配一个网络号使路由表性能变坏(虽然路由只储存网络号,不存储主机号,但是架不住网络号多啊)
3. 两级IP地址不够灵活(待思考)
划分子网的操作:两级IP地址变成3级IP地址
3级:网络号+子网号+主机号
2级:网络号+主机号
从2级主机号借用一段用做子网号
Ps:划分子网纯属一个网络内部的事情!!!
一个以太网内,把该以太网内部的主机分成一组一组,一组就是一个子网,所以划分子网是我这个以太网内部的事情
划分子网后网络发送数据的具体流程:
1. 根据IP数据报的目的网络号找到连接该网络的路由器
2. 路由收到该IP数据报
3. 路由先按照子网号找到对应的子网
4. 路由再按照子网内的主机号找到对应主机
特殊点:路由会按照子网号先找到对应的子网,找到对应子网之后再在子网内部按照主机号找到对应主机,没有子网号的时候,该网络的路由是直接甩锅,按照主机号找对应主机的工作是交给集线器和交换机的
子网划分示意图:
局域网是数据链路层概念
子网是网络层概念
子网由单位内部自己决定
子网掩码:帮助路由找出IP数据报中的子网号
先根据三级IP地址找到子网掩码,然后根据子网掩码找到目的子网,然后更加子网找到子网地址,最后找到的就是IP地址对应的主机
网络地址:划分成一个个子网的地址,通过三级IP地址和子网掩码做and操作得到
A类地址的子网掩码:255.0.0.0
B类地址的子网掩码:255.255.0.0
C类地址的子网掩码:255.255.255.0
因为划分了子网,所以路由记录的是网络号和子网号
第三种IP地址的编址方式:无分类编址(CIDR):构成超网
IP编址问题改进的演变:
第一次:划分子网,子网号不同,IP不同
第二次:无分类编址(IP构成部分长度不固定,灵活)
第三次:CIDR:使用各种长度的网络前缀来代替分类地址中的网络号和子网号,不同以前的是网络号和子网号的长度不是固定的
采用CIDR的IP地址构成:网络前缀+主机号
CIDR将网络前缀相同的连续IP地址构成CIDR地址块,叫做一个超网
比如:128.12.32.0/20表示地址块共有2的12次方个地址(20表示网络前缀占前面的20位,IP地址总长规定是32位,所以32-20=12,所以该地址块有2的12次方个IP地址)
路由聚合:一个CIDR地址块可以表示很多地址,这种地址的聚合通常称为路由聚合,它使得路由表一行可以表示很多个原来传统分类的地址路由
路由聚合页叫做构成超网
CIDR虽然不使用子网,但仍然使用掩码这个概念(前缀全1,主机号全0)
用转法器或网桥连接起来的若干个局域网仍为一个网络,因此这些局域网都具有相同的网络号
最长网络前缀匹配:在路由表中匹配的时候,可能有多个匹配结果,虽然都能到达目的地,但是网络前缀越长,主机数量越少,查起来就越方便
路由表的储存查找:使用二叉树,对路由表中的每一条ip地址转换为二进制表示,得到每一个ip地址的唯一前缀(路由表中的每一个唯一前缀都是不相同的)利用唯一前缀构造二叉树,查到二叉树的叶子结点就代表查找完成了(线索二叉树)
网际控制协议ICMP:为了提高IP数据报交付成功的机会
ICMP允许主机或者路由器报告差错情况,ICMP的报文作为IP层数据报的数据部分进行传输,ICMP属于IP协议族的一部分
ICMP的具体构成:
1.类型:什么类型的ICMP报文
2.代码:某种错误或者异常对应的代码
3.校验和:校验
4.ICMP的数据部分
注意ICMP报文作为IP报文分组的一部分在网络中传输
ICMP报文的种类:ICMP差错报告报文和ICMP询问报文
ICMP差错报文的5种:
1. 终点不可达
2. 源站抑制:源点不允许你向某终点发送数据
3. 时间超过
4. 参数问题:校验和不对
5. 改变路由(重定向):可 以走一条新的路径
出问题的数据报文中取出首部和随后的8个字节组成ICMP差错报文的首部和随后的8个字节,然后ICMP差错报文作为一个新的IP数据报的数据部分重新在网络中传输
一个是出错的报文,一个是报告为什么出错的报文
不发送ICMP差错报文的四种情况:
1. 对ICMP差错报告报文不再发送ICMP差错报告报文:ICMP差错报告报文就算出错了也不再发送该ICMP差错报告报文的ICMP差错报告报文
2. 对第一个分片的数据报片的所有后续分片都不发送ICMP差错报告报文:多给码片只发送一个ICMP差错报告报文
3. 对具有多播地址的数据报不发生ICMP差错报告报文
4. 对具有特殊地址的IP报文不发送ICMP差错报告报文
路由的选择策略问题:
静态路由选择策略:即非自适应性的路由选择,其特定是简单和开销小,但不能及时感知网络状态的变化
动态路由选择策略:即自适应路由选择,其特定是能较好的适应网络状态的变化,但较为复杂,其开销也比较大
分层次的路由选择策略:划分自治域
原因:因为英特网的规模非常大,如果不划分的话,每个路由器需要存储的路由表实在太多了,划分自治域,一个自治域其实就是一个小的互联网,很多个自治域就构成了我们整个的以太网
自治系统有权自主的选择本系统内选择何种路由选择协议
自治域有两种路由选择协议:
1. 内部网关协议IGP:自治系统内部间的通信(RIP协议和OSPF协议)
2. 外部网关协议EGP:自治系统和自治系统间的通信(BGP协议)
内部网关协议RIP协议:分布式的基于距离向量的路由选择协议
距离定义:路由跳数(直接连接距离为1)
一条路径最多有15个路由(限制了自治系统的大小)
RIP协议的三要素:
1. 仅和相邻的路由器交换信息
2. 交换的信息是当前路由器知道的全部信息(即自己的整个路由表)
3. 按固定时间间隔交换路由信息
路由表构成:目的网络+掩码+下一条路由+距离向量
RIP的距离向量算法:
y收到相邻路由器x的一个RIP报文
1. 先修改此RIP报文中的所有项目,下一跳都改成x,所有距离向量都加1
2. 若RIP中的目的网络不在y自己的路由表中,则将此RIP中的该网络这一行都加入y的路由表中
3. 若RIP中的目的网络在y的路由表中的话,如果下一跳给出的路由地址和y的该网络给出的下一跳路由地址是同样的话,则将收到的项目替换y中的项目,否则的话,如果x中该项目的距离小于y中该项目的距离,则进行距离向量的更新
4. 如果3分钟还没有收到向量路由器的路由表,则将该路由器记为不可达(距离16)
RIP协议的位置:使用运输层的UDP用户数据报进行传输,RIP位置是在应用层,但IP数据报的过程是在网络层完成的,具体看下图:
路由表的构成:路由标记+网络地址+掩码+下一跳路由器地址+距离
RIP报文=首部+路由部分
UDP用户数据报=UDP首部+RIP报文
IP报文=IP报文首部+UDP用户数据报
RIP路由选择协议的优点:
1. 实现简单,开销小
RIP路由选择协议的缺点:
1. 有可能跳数少的路径拥堵,跳数多的路径虽然条数多,但是不拥挤带宽高,速度反而快
2. 某个网络出现故障的话,需要很长的时间才能将信息传送到该自治系统的所有路由器(好消息传播得快,坏消息传播得慢!!!!)
3. 网络规模扩大,传送的路由表信息的开销也加大(不能算是很大的缺点吧)
内部网关协议OSPF
交换的不是整个路由表,而是相邻的链路的状态
链路状态就是说明本路由器和哪些路由器相邻,以及该链路的度量
只有当链路状态发生变化时,路由器才用洪泛法向所有路由器发送此消息
就是说链路状态变化时间,相邻路由器向所有路由器发送所有链路状态改变的消息
度量是根据自己的需求去确定的
由于各路由器之间频繁的交换链路状态信息,因此所有的路由器最终都能建立一共链路状态数据库
对自制系统继续进行划分,划分为区域,因为网络过大的话,链路状态数据库需要存储的信息太多了(存的是边),32位的区域标识符
内部网关协议OSPF的特点:
1. OSPF不用封装城UDP数据报,而是直接用IP数据报传送,可见OSPF的位置在网络层
2. OSPF的数据报很短(只有在链路状态发生变化的时候发送自己的路由信息,洪泛法)
3. 度量可以多样化,可以根据业务需求自己设置
4. OSPF路由器之间交换的分组有鉴别功能(每个链路的状态都有一个32位的序号,序号越大状态就越新)
5. 每隔一段数据刷新一次数据库中的链路状态
6. 当互联网规模大时OSPF协议比RIP距离向量协议号很多(因为一个路由器的链路状态只和相邻的路由器有关,而RIP记录了全自治系统路由器的链路信息,所以OSPF没有限制自治系统的大小)
7. 没有坏消息传播得慢的问题
内部网关协议OSPF的组成图:
版本:协议版本
类型:(5种类型,见下文)
分组长度:数据的长度(因为数据量小,所有不分片)
路由器标识符:记录链接在路由器我的哪个端口上
区域标识符:在自治系统的哪个区域
检验和:校验首部对错
鉴别类型:相当于加密操作,要鉴别的话有鉴别码(扩展知识)
鉴别:鉴别码
OSPF分组:OSPF分组首部+数据部分(之所以不叫报文叫分组是因为数据量小,一次可以全部发过去,不用分片)
OSPF分组封装在IP数据报的数据部分
IP数据报=IP数据报首部+IP数据报的数据部分
OSPF:可靠洪泛法
OSPF的5种分组类型:
1. 问候分组:确定我们之间的链路有没有问题
2. 数据库描述分组:和我相邻的路由器的链路的一些状态(路由表)
3. 链路状态请求分组:请求你的路由表
4. 链路状态更新分组:链路状态请求的返回分组(用洪泛法对全网更新链路状态)
5. 链路状态确认分组:成功接收与否的状态,可靠算法的保证
OSPF使用的可靠洪泛法:我收到这条链路状态更新分组之后,给发送方发一个确认分组(保证可靠),然后向与我相连的路由器发送收到的链路更新分组
指定路由:管理该区域的路由,外面区域的信息传进来的时候,传给指定路由,由指定路由去完成接下来的工作
OSPF内部网关协议支持的三种网络连接:
1. 两个路由器之间的点对点连接
2. 具有广播功能的局域网
3. 无广播功能的广域网(一个自治系统是一个广域网)
网络拓扑的表现形式:有向图形式,树形式
外部网关协议之BGP协议(BGP4版)
使用背景:因特网规模太大,在自治系统之间选择一条最佳的路径是不现实的,因为边界网关协议BGP只是力求寻找一条可以到达目的网络且比较好的路由,而不是要寻找一条最佳路由
一个自治系统内部有一个BGP发言人,辅助交自治系统和自治系统之间的路由信息
BGP交换路由信息的过程:先建立TCP连接,然后在此连接上交换BGP报文以建立BGP会话,利用BGP会话交换BGP发言人间的路由信息(因为TCP的可靠的)
一个BGP发言人只和自己相邻的BGP发言人交换路由信息
其实BGP外部网关协议类似RIP内部网关协议
主干网自治系统管理地区自治系统,地区自治系统管理本地自治系统(看图):
层次网络管理,主干网管理地区ISP,地区ISP管理本地ISP
(就是你到达你的目的地,可以经过X,X,X.....)
一个自治系统一般1个或者2个发言人
BGP协议要记录整个路径(不仅记录下一跳,还要记录下一跳的下一跳)
BGP协议的4种报文:
1. 打开报文:用来与相邻的另一发言人建立关系(类似OSPF的问候分组)
2. 更新报文:更新交互链路信息报文
3. 保活报文:证实和邻站的关系(断了吗)
4. 通知报文:保活报文的回复,告诉你我之间的状态
IP多播(目的地址有多个,不是多个单播):明显减少网络资源的消耗