6、IP数据报的首部格式【IPv4】
IP数据报分为
首部和数据两部分。首部的前一部分是固定长度,共20字节,是所有IP数据包必须具有的(源地址、目的地址、总长度等重要字段都在固定首部中),一些长度可变的可选字段放在固定首部的后面
1、IP数据包首部的固定部分中的各字段(只讲解重点)
- 【首部长度】:固定20字节,若是首部长度不足4字节的整数倍,必须利用最后的填充字段加以填充
- 【总长度】:当一个IP数据包封装成链路层的帧时,此数据报的长度一定不能超过下面的数据链路层所规定的的MTU(最大传送单元)值
- 【生存时间(==TTL==)】:防止无法交付的数据报无限制地在互联网中兜圈子
- 【首部检验和】:只检验数据报的首部,但不包括数据部分
- 【源地址】:占32位。发送IP地址数据报的主机的IP地址
- 【目的地址】:占32位。接收IP地址数据报的主机的IP地址
2、IP数据包首部的可变部分
- 【可选字段】:长度可变,从1字节到40字节不等
- 【填充】:当不够4字节的整数被时进行填充
增加首部分可变部分是为了增加IP数据报的功能,但也增加了每一个路由器处理数据报的开销。新的IP版本IPv6把把IP数据报的首部长度做成固定的了
三、IP 层转发分组的过程
1、基于终点的转发
一句话:查找转发表的过程就是==逐行寻找前缀匹配的过程==
- 在这过程中需要将目的主机的IP与转发表中的各网络掩码进行按位与,观察前缀是否匹配,若是则表示该目的主机在此网络中
2、最长前缀匹配
- 在采用CIDR编码时,如果一个分组在转发表中可以找到多个匹配的前缀,那么就应当选择==前缀最长==的一个作为匹配的前缀
然后记住两个特殊路由
- 主机路由:网络前缀为32位【255.255.255.255】【11111111 11111111 11111111 11111111】
- 默认路由:网络前缀为0位【0.0.0.0】【00000000 00000000 00000000 00000000】
四、网际控制报文协议 ICMP
- 这一块有两个知识点,首先是两种ICMP报文的——>
差错报告报文和询问报文
还有一个是ICMP的重要应用:【分组网间探测PING】
- 用来==测试两个主机之间的连通性==
- 使用了ICMP回送请求与回送回答报文
- 是应用层使用网络层ICMP的例子,没有通过运输层的TCP或UDP
五、IPv6
1、前言
对于IP,它是互联网的核心协议,可以随着互联网的飞速发展,越来越多的人连上了网络,所以需要分配的IP地址就越来越多,则对于之前使用的IPv4地址已经全部耗尽,现在已经全面部署IPv6
解决IP地址耗尽的根本措施:采用具有更大地址空间的新版本IP,即IPv6
2、IPv6的基本首部
首先来看看随着IPv6的引进所带来的变化
- 更大的地址空间。从IPv4的32位扩大的128位,也就是2^128^,【可以为世界上每一粒沙子做个编号】
- 扩展的地址层次结构
- 灵活的首部格式
- 改进的选项
- 允许协议继续扩充
- 支持即插即用
- 支持资源的预分配
IPv4 VS IPv6(
记重点)
- IPv6取消了首部长度字段,因为它的首部长度是固定的【40字节】
- IPv6将地址从
32为(4B)扩大到128位(16B),更大的地址空间 - 把TTL字段改为跳数限制字段,但作用是一样的
- 取消了检验和字段,==加快了路由器处理数据报的速度==
- 取消了选项字段,而用扩展首部来实现选项功能
- 还是书上这张图比较好理解一些
接下去谈一些重点的字段
- 有效载荷长度【扩展首部+数据部分】
- 下一个首部【相当于IPv4的协议字段或可选字段】,可以看上面的图,这个字段的值就指向下一个首部的首地址
- 跳数限制:用来防止数据报在网络中无限制地存在。当路由器要转发数据报的时候,先把跳数字段中的值减1,==当跳数限制的值为0时,就要把这个数据报丢弃==
3、IPv6的地址
- 首先就是IPv6的三种基本类型地址:单播、多播和任播
- IPv6采用【==冒号十六进制计法==】。例:255.255.255.255 ===》 FFFF.FFFF(两个8位合并,4位变两位)
- ==零压缩==:一连串连续零可以为一对冒号所取代【例:0:0:0 : 0:0 等价于 ::】
- 在任一地址中,零压缩【双冒号表示法】仅可出现一次
- 在使用零压缩时,CIDR的斜线表示法任然可用
4、IPv4向IPv6过渡的过程
IPv4向IPv6过渡只能采用【逐步演进】的办法,同时还必须使新安装的IPv6系统能够向后兼容,因此我们需要采取两种IPv6过渡策略:双协议栈和隧道技术
(1)双协议栈
- 对于双协议栈,它使用【域名系统DNS】来查询。若协议栈主机在和IPv6通信时采用IPv6地址;在和IPv4通信时采用IPv4地址
- 但是双协议栈需要付出的代价太大,要安装上两套协议,因此在过渡时期最好采用下面的【==隧道技术==】
(2)隧道技术
- 这种技术的原理就相当于将
IPv6封装在IPv4的内部,作为其数据部分。从路由器B经过路由器C和D传送到E,在传输前要将IPv4协议字段的值设置为41,表示它的数据部分是IPv6的数据报。在当IPv4要离开IPv4网络时,就将它的数据部分交给这头的IPv6协议栈,就完成了传送工作
六、互联网的路由选择协议
1、有关路由选择协议的几个基本概念
- 首先有张重要的图,有关【网络层】的两个层次分步,分别是控制层面和数据层面。弄清楚这张图可以有助于你理解网络层的一些架构
本图在初步讲网络层概念时有提及
- 路由算法的概念不做叙述,来说说路由算法的分类和选择问题
- 【静态路由选择策略】
- 非自适应路由选择;
- 不能及时适应网络状态的变化;
简单,开销较小;
- 【动态路由选择策略】
- 自适应路由选择;
- 能较好地适应网络状态的变化;
实现较为复杂,开销较大;
分层次的路由选择协议
- 自制系统(AS)就是在单一的技术管理下的一组路由。一个自治系统对其他自治系统表现出的是一个单一的和一致的路由选择策略
接下去看看互联网中的路由选择协议分类,==这些很重要==,后面的模块都会展开说明
- 内部网关协议IGP ——
域内路由选择 - RIP协议【小型简单网络】⭐
- OSPF协议【大型复杂网络】
- 外部网关协议EGP ——
域间路由选择 - BGP- 4协议
- 接下去就详细来说说这三个协议,以下是它们的框架分类图
2、内部网关协议 RIP
(1)协议RIP的工作原理
RIP是==分布式==的基于距离向量的路由选择协议,其最大优点就是简单,只适用于小型互联网
RIP的距离定义
- 从以路由器到直接相连的网络的距离定义为1;从一主机到非直连的网络的距离定义为所经过的路由器数加1
问:为何RIP只适用于小型互联网?
- 答:RIP认为好的路由就是它==通过的网络数目少==,即“距离短”。所以RIP允许一条路径最多只能包含15个网络,从而“距离”为16的时候就表示不可到达
一定要弄清的RIP三个要点✔
- 和哪些路由器交换信息?
- 答:仅和相邻路由器交换信息
- 交换什么信息?
- 答:交换的信息是当前本路由器所知道的全部信息,即自己现在的【路由表】
- 什么时候交换信息?
- 答:按固定的时间间隔交换信息【每隔30秒】。当网络拓扑发生变化时,路由器也及时向相邻路由器通告拓扑变化后的路由信息
注:路由器在刚刚开始工作时,它的路由表是空的。然后路由器就得出到直接相连的几个网络的距离(这些距离定义为1)。接着,每一个路由器也只和数目非常有限的相邻路由器交换并更新路由信息。 👉经过若干次的更新后,所有的路由器最终都会到达本自治系统中任何一个网络的最短距离和下一跳路由器的地址【即所有路由器的路由表均更新完毕后,便可以知道到达它"最短"路由器的距离和地址】
- 路由表更新的法则:找出到每个目的网络的最短距离
(2)距离向量算法【⭐⭐⭐】
- 接下去来到本节的重点,也是==考试必考的一个知识点==,也就是通过【距离向量算法】去求解路由表的信息
算法三步走
- 对相邻路由器发来的地址为X的RIP报文,将此报文中所有项目的【下一跳地址】均改为X
- 将修改完后的路由表信息与当前路由器进行一个计算更新,规则如下
若是原路由表中【没有】目的网络Net,就将其【添加】到路由表中若是两个目的网络的下一跳路由器是【一样】的,则更新路由表为【新修改】的路由信息若是两个目的网络的下一跳路由器是【不同】的,则比较距离,【谁距离短选谁】- 若是3分钟(180s)还没有收到相邻路由器的更新路由表,就将此路由器记为不可达的路由器,即把距离置为16【RIP允许一条路径最多只能包含15条个网络,距离16表示不可达】
- 以上这个【距离向量算法】的基础就是Bellman - Ford算法(或Ford - Fulkerson算法)
如果不懂,可以看看这个视频👇讲的还不错
[video(video-6ToEB1Qx-1674786852651)(type-bilibili)(url-player.bilibili.com/player.html…)]
3、内部网关协议 OSPF
(1)OSPF基本特点
📚采用洪泛法(flooding),向本自治系统中所有路由器发送信息。
- 通过所有输出端口向相邻路由器发送信息,然后相邻路由器再向它的所有相邻路由器发送。但是不会向刚刚发来信息的那个路由器发送信息【形成了一个
一传多,多传多的场面】
- RIP协议仅仅是向自己相邻的几个路由器发送信息仅仅是向自己相邻的几个路由器发送信息
📚 发送的信息是与本路由器相邻的所有路由器的链路状态
- 【链路状态】:说明本路由器都和哪些路由器相邻,以及该链路的度量 (metric)
- RIP协议发送的信息是[到所有网络的距离和下一跳的路由器]
📚当链路状态发生变化或每隔一段时间(如30分钟),路由器才用洪泛法向所有路由器发送此信息
- RIP协议若是
3分钟(180s)没有收到相邻路由器的更新,便会把相邻路由器记为不可达
- OSPF采用层次结构的区域划分,位于上层中间的叫做【主干区域】,标识符规定为【0.0.0.0】。在主干区域中的路由器称为
主干路由器 - 而且对于每一个边界区域来说都有着【区域边界路由器】主干路由器相连,这些路由器恰好也是主干路由器
👉OSPF的其他特点(了解即可)👈
- 对于不同类型的业务可计算出不同的路由
- 可实现多路径间的负载均衡
- 所有在 OSPF 路由器之间交换的分组都具有鉴别的功能
- 支持可变长度的子网划分和无分类编址 CIDR
- 32 位的序号,序号越大状态就越新。全部序号空间在 600 年内不会产生重复号
(2)OSPF与RIP协议的对比
🍒首先我们来说说RIP协议的==缺陷==
- 以跳数评估的路由并非最优路径
- 最大跳数15导致网络规模小
- 更新发送全部RIP路由表浪费网络资源
- 收敛速度慢
然后再对它们进行一个对比🤺
- 对于RIP协议协议来说,它只知道到所有网络的距离以及下一跳路由器,但是不知道全网的拓扑结构,只适用于小型网络
距离矢量路由协议- 基于跳数选择最优路径
- 每隔
30s向邻居广播自己的整个RIP路由表
- 对于OSPF协议来说,它可以知道全自治系统的所有网络和路由器。因为其更新收敛快的优点,使得【链路状态数据库】能较快地更新,使各个路由器能及时更新其路由表。因此OSPF可以使用于规模很大的网络
链路状态路由协议- 基于连续开销选择最优路径
- 触发更新或每隔
30分钟向邻接路由器发送链路状态信息的摘要,增量更新机制
(3)OSPF协议工作过程
- 发现邻居,确定邻站可达
- 通过组播hello包
- 所有邻居都可能跟自己交换链路状态信息
- 建立邻接关系
- 只有建立邻接关系的邻居路由器才会交换链路状态信息
- 不是跟所有邻居都建立邻接关系
- 相邻路由器每隔 10 秒钟要交换一次问候分组
- 同步数据库,传递链路状态信息
- 每台设备都有一个LSDB(链路状态数据库)
- 触发更新(若网络发生变化,则不需要等到30分钟后,就可以立刻向邻居发送信息)或每隔30分钟更新一次
- 只要链路状态发生变化,路由器就使用链路状态更新分组,采用可靠的洪泛法向全网更新链路状态
(4)OSPF协议视频讲解
本视频来源于b站UP主——> 豆豆家姐姐 | 讲解的比较详细,因此做个分享
[video(video-XgSkTsbi-1673938031600)(type-bilibili)(url-player.bilibili.com/player.html… 路由技术基础)]
4、外部网关协议 BGP
本协议考试不会太多涉及,但是比较重要,因此做些讲解
- 对于我们前面所学的RIP协议和OSPF协议都是内部网关协议,都只能在一个自治系统AS内部工作
- 因此,若是它们没有BGP这种粘合剂,那这些自治系统便是一个个没有联系的孤岛:mountain:BGP就相当于是一个链接器一般,也可以把它想想成为两个岛屿之间的跨海大桥,是==很重要的一个东西==
(1)协议BGP的主要特点
👉力求选择出一条能够到达目的网络且比较好的路由(不能兜圈子),而并非要计算出一条最佳路由
BGP在使用的时候要考虑一些问题:↓
- 互联网规模太大,使得自治系统AS之间的路由选择非常困难
- 自治系统AS之间的路由选择必须考虑有关策略












