文章目录
- 前言
- 一、网络层的功能
- 1.1、网络层功能概述(三种功能介绍)
- 1.2、SDN基本概念
- 1.2.1、理解转发与路由选择
- 1.2.1.1、转发
- 1.2.1.2、路由选择
- 1.2.2、数据平面(转发)
- 1.2.3、控制平面(路由计算与选择)
- 实现方式一:传统方法
- 实现方法二: SDN方法
- 认识SDN方法(控制平面)
- 传统方法中与SDN方法中的路由选择处理器
- SDN控制平面的三个层次
- SDN控制平面展开的三个层次
- 练习题(2道)
- 总结
- 二、路由算法
- 2.1、认识路由表
- 2.2、路由算法的分类
- 静态路由算法(非自适应路由算法)
- 动态路由算法(自适应路由算法)
- 2.3、分层次的路由选择协议
- 2.3.1、采用分层次的路由选择协议原因
- 2.3.2、路由选择协议分为IGP与EGP(包含图示)
- 三、IPV4
- 3.1、IP数据报
- 3.1.1、TCP/IP协议栈
- 3.1.2、IP数据报格式(具体字段介绍)
- 3.1.3、IP数据报分片
- 3.1.3.1、认识最大传输单元MTU
- 3.1.3.2、IP数据报首部中的分片字段(标识、标志、片偏移)
- 3.1.3.3、IP数据报分片例题
- 3.1.3.4、IP数据报格式的单位小结
- 3.2、IPV4地址
- 3.2.1、认识IP地址
- 3.2.2、互联网中的IP地址(识别多少个网段)
- 3.2.3、分类的IP地址
- 3.2.4、特殊的IP地址与私有地址
- 特殊的IP地址
- 私有IP地址
- 3.2.5、网络地址转换NAT技术(包含原理、案例)
- 3.2.6、子网划分和子网掩码
- 3.2.6.1、分类IP地址的弱点
- 3.2.6.2、子网划分
- 3.2.6.3、子网掩码
- 3.2.6.4、子网掩码习题
- 习题1:计算网络地址
- 习题2:计算广播分组(考研真题)
- 3.2.6.5、使用子网时分组的转发(包含转发流程)
- 3.2.7、无分类编址CIDR
- 3.2.7.1、认识CIDR编址形式
- 3.2.7.2、无分类编址CIDR的特点
- 3.2.7.3、无分类编址CIDR小例题
- 3.2.7.4、CIDR重要的两个应用:构成超网、最长前缀匹配
- 应用一:构成超网
- 认识构成超网
- 构成超网计算题
- 应用二:最长前缀匹配
- 认识最长前缀匹配
- 最长前缀匹配练习题
- 3.3、网络层协议
- 3.3.1、ARP协议
- 3.3.1.1、认识ARP协议与使用过程(包含4中情况)
- 3.3.1.2、发送数据的过程(典型情况1,考虑到本机有ARP记录和没有的两种情况)
- 3.3.1.3、发送数据的过程(典型情况2)
- 3.3.1.4、小结
- 3.3.2、DHCP协议(应用层协议,仅仅只是给网络层通信提供基础)
- 3.3.2.1、主机如何获取到IP地址呢?(静态、动态配置)
- 3.3.2.2、认识DHCP以及客户端服务器之间的交换过程
- 3.3.3、ICMP协议
- 3.3.3.1、处于TCP/IP协议站的位置
- 3.3.3.2、网际控制报文协议ICMP提供的功能和报文结构
- 3.3.3.3、两种ICMP报文类型
- 类型一:ICMP差错报文
- 5种ICMP差错报文
- ICMP差错报告报文数据字段
- 不应该发送ICMP差错报文的情况(四种情况)
- 类型二:ICMP询问报文
- 四种ICMP询问报文
- ICMP实际应用(PING、Traceroute)
- 四、IPv6
- 4.1、IPv6的诞生原因以及优点
- 4.2、IPv6数据报格式(首部、有效载荷)
- 4.3、IPv6与IPV4的对比(11点)
- 4.4、IPv6地址表示形式
- 4.5、IPv6的基本地址类型(单播、多播、任播)
- 4.6、IPv6向IPv4过渡的两种策略(双栈协议、隧道技术)
- 脑图时刻
- 五、路由选择协议
- 5.1、认识路由选择协议
- 5.2、RIP协议(应用层协议)
- 5.2.1、认识RIP协议
- 5.2.2、RIP协议和谁交换?路由器之间路由表多久交换一次?路由器之间交换什么?
- 5.3、RIP协议交换过程
- 5.3.1、距离向量算法(实现过程)
- 距离向量练习题1
- 距离向量练习题2
- 5.3.2、RIP协议的报文格式
- 5.3.3、RIP好消息传得快,坏消息传的慢(正常情况、错误情况案例)
- 脑图时刻
- 5.4、OSPF协议(网路层协议)
- 5.4.1、认识开放最短路径优先OSPF协议及特点
- 5.4.2、链路状态路由算法
- 五个重要类型分组
- 路由器链路状态发生变化场景
- 5.4.3、OSPF区域(四个)
- 5.4.4、OSPF分组情况
- 5.4.5、OSPF其他特点
- 5.5、边界网关协议BGP(应用层协议)
- 5.5.1、BGP三个关注问题
- 5.5.2、BGP协议交换信息的过程(以及发言人之间交换路径向量)
- 5.5.3、BGP协议报文格式
- 5.5.4、BGP的协议特点
- 5.5.5、BGP-4的四种报文:
- 5.5.6、三种路由协议的比较
- 六、IP组播
- 6.1、认识三种传输方式
- 6.2、多播在视频服务器的应用
- 6.3、IP组播地址
- 6.3.1、认识IP组播地址
- 6.3.2、两类IP组播(因特网范围、硬件)
- 两类组播介绍
- 硬件组播详解
- 6.4、IGMP协议与组播路由选择协议
- 6.4.1、认识IGMP协议
- 6.4.2、IGMP所处协议栈位置
- 6.4.3、IGMP工作的两个阶段
- 6.4.4、组播路由选择协议
- 6.4.5、组播路由协议常使用的三种算法
- 脑图时刻
- 七、移动IP
- 7.1、认识漫游
- 7.2、移动IP的相关概念(专属名词)
- 7.3、移动IP的通信过程
- 生动例子
- 实际网络应用景例子(转交地址的获取两种方式,三种场景)
- 八、网络层设备
- 8.1、路由器
- 8.1.1、认识路由器
- 8.1.2、输入端口与输出端口的详细信息
- 输入端口对收到分组的处理
- 输出端口对收到分组的处理
- 8.2、三层设备的区别
- 8.3、路由表与路由转发
前言
两台主机可以通过网络层(路由器)来进行数据的通信以及资源共享。
网络层对比之前的数据链路层、物理层强大的地方:通过使用网络层的一些协议、设备、路由器以及网络层的算法,可以对发送的数据做一系列的规定,其中规定包含的发送目标主机,规划路由选择最合适的路由器完成转发。
路由与转发的区别:
转发
:发生在网络层的设备路由器内部的,转发的内容是网络层的传输数据单元IP分组。(微观)路由选择
:发生在路由器外部或者路由器之间的。(宏观)
**转发发生在哪里?**路由器内部。
**如何实现路由,具体从哪个路由器的端口转发出去?**借助路由表。
**转发表如何得来?**根据路由选择,使用一系列的路由算法规定好一条比较好的路由方式。
- 转发表是将转发、路由选择完美结合在一起。
需要了解每一个要转发的分组:详细的结构、形式、字段以及如果分组过长,怎么进行分片。
网络层编址:对每一个网络节点、网络上的设备,都可以分配一个IP地址,这个IP地址有多种编址方式。
**实际IP地址利用率非常低,如何提高灵活性?**产生子网划分这样的技术,引入子网掩码概念。
由于IPV4分配的数量有限,此时会扩充地址空间,即学习IPv6。
移动IP技术,等等知识点。
一、网络层的功能
1.1、网络层功能概述(三种功能介绍)
网络层主要任务:将分组从源端传到目的端,为分组交换网上的不同主机提供通信服务。
网络层传输单位:数据报。
功能层的功能如下所示:
功能一:路由选择与分组转发
通过使用路由算法来确定一条最佳路由,接着将这个分组按照路由的顺序发送出去,也就是选择一个最佳路径。
功能二:异构网络互联
无论是手机、连着网线电脑、4G、Wifi、校园网,通过不同的网络可以实现彼此之间的通信,这就是异构的网络。
通过路由器这个异构网络可以相互连接在一起,形成一个巨大的网络。
功能三:拥塞控制
若是所有的结点都来不及接收分组,而要丢弃大量分组的话,网络就要处于拥塞状态,因此要采取一定措施,缓解这种拥塞。
拥塞与流量控制区别:
拥塞控制
:是一个全局性的概念,是因为整个网络当中负载过重,也就是说每一个节点都在非常忙碌的工作,所以导致分组的转发速度非常慢,进而导致大部分的分组都被丢弃,这种情况就是产生了拥塞。流量控制
:发送方的发送速率太快,此时接收方要告诉发送方慢点发。
解决拥塞控制的两种方法:
- 开环控制:静态的控制方式,在网络开始工作之前就把所有能够产生拥塞的因素,全部考虑到,然后进行一个预先的控制。
- 闭环控制:动态的控制方式,预先不去考虑这些,而是让网络运行起来的时候,自行的去进行调整来实现拥塞的控制。
1.2、SDN基本概念
2022新增考点(主要选择题)
1.2.1、理解转发与路由选择
路由器功能:转发&路由选择
1.2.1.1、转发
转发
:达到路由器输入链路之一的数据报如何转发到该路由器的输出链路之一。
过程:是在路由器内进行一个选路找端口的过程。
数据平面
:对于数据处理过程中的各种具体处理转发过程。
- 也就是指我们的一个分组如何从一个端口转发出去,到另外一个端口当中,此时这个转发过程称为数据平面最主要的一个功能。
实现解决方式:时间短,通常硬件解决。
1.2.1.2、路由选择
路由选择
:控制数据报沿着源主机到目的主机的端到端路径中路由器之间的路由方式。
过程:有很多路由器的时候,选择一条最合适的路由,也就是挑选一整条路径的过程。
控制平面
:控制平面用于控制和管理网络协议的运行,比如OSPF协议、RIP协议、BGP协议。
- 主要都是在路由选择过程中所使用到的协议,可以理解为路由选择的这个过程的一些功能。
实现解决方式:时间长,通常使用软件解决。
注意:对于数据平面、控制平面都是逻辑上的词,数据平面是相对于转发的,控制平面是相对于路由选择的。
1.2.2、数据平面(转发)
数据平面执行的主要功能:根据转发表进行转发,这是路由器的本地动作。
转发表
:就是基于路由表所生成的一个转发表路由表。
包含两列:第一列是输出首部(分组当中首部里面的一个字段);第二列输出对应的分组应该走哪个输出端口。
主要任务:根据这个转发表来进行转发。
- 类似于搬运工,仅仅只是去做这个一个基于转发表的转发过程。
1.2.3、控制平面(路由计算与选择)
两种实现方法:传统方法(又叫做每路由器法)
、SDN方法
。
实现方式一:传统方法
传统方法
:路由选择算法运行在每台路由器中,并且在每台路由器中都包含转发和路由选择两个功能。
- 十分全能,既可以执行转发,又可以计算路由表和转发表。
具体方法:在一台路由器中的路由选择算法与其他路由器中的路由选择算法通信(通过交换路由选择报文),计算出路由表和转发表。
- 路由器与路由器之间能够进行通信,将各自学习到的成果进行通信,接下来就可以计算出接下来的路由表是什么样子。
- 控制平面、数据平面都是在一个路由器内进行的。
- 数据平面:进行搬运工的角色,完成路由转发工作。
- 控制平面:主要是计算转发表或者执行这个路由选择的算法来完成路由选择的一个功能。
说明:之所以叫做是每路由器算法,是因为每路由器法运行在每台路由器当中。
实现方法二: SDN方法
认识SDN方法(控制平面)
SDN(Software-Defined Networking)
:控制平面从路由器物理上分离。路由器仅实现转发,远程控制器计算和分发转发表以供每台路由器所使用。
- 通过软件来定义的这样一种网络。
与传统方法区别在哪里:其中数据平面功能(转发路由表)是一样的,对于路由器上的控制平面上的计算路由算法从物理上剥离。
- 简单来说:原本每台路由器都需要实现一个计算路由表以及路由选择转发功能,此时就不需要了,每台路由器做的工作仅仅只是转发路由。
远程控制器
:针对于每台路由器都需要实现路由选择功能,专门设计了专门用来进行路由选择的硬件,通过这台远程控制器计算并分发转发表来供每台路由器所使用。
- **在哪里?**远程控制器可能在具有高可靠性的远程数据中心,并可能由ISP或某些第三方管理。
具体方法:路由器通过交换包含转发表和其他路由选择信息的报文与远程控制器通信。
- 远程控制器计算这个转发表以及实现与路由器交互:都是通过使用软件来实现的。
- 网络是由"软件"来定义的,可编程。
好处:可以自己控制与计算转发表,并且可以进行一些流量的划分与控制分配。将"大脑"(路由计算及选择)分离开始十分高级和灵活的管理。
应用:目前由许多大厂都在使用SDN方法来进行实现这种软件方式计算路由表并且来控制路由器进行路由转发。
传统方法中与SDN方法中的路由选择处理器
概括:对于路由计算与选择在传统方法中是在路由器内部实现的,而在SDN方法中,会将路由计算与选择功能移出到一个远程控制器中,通过这个远程控制器来与各个路由器交互来将路由表进行更新到路由器中。
传统方法
中通过使用路由器内部的路由选择处理器来完成实现路由计算与选择的。SDN方法
中每台路由器依旧有这个路由选择处理器,只不过将路由计算与选择功能移除了,也就是说SDN方法中的路由器里的路由选择处理器只能够根据路由表选择以及与远程控制器来进行通信。
下面是路由器中的路由选择处理器:在不同的方法当中该处理器的实现功能并不完全相同
传统方法:路由选择处理器执行控制平面功能。在传统的路由器中,它执行路由选择协议,维护路由选择表与关联链路状态信息,并为该路由器计算转发表。
SDN方法:在SDN路由器中,路由选择处理器用于负责与远程控制器通信,目的是接收远程控制器计算的转发表项。
SDN控制平面的三个层次
- 北向API(往上)、南向API(往下)可以叫做北向接口、南向接口,通过这个接口可以访问上面的服务或者下面的服务。
- 南向API可以实现SDN控制器和网络设备之间数据的一个交换。
SDN控制器
:维护准确的网络状态信息(远程链路、交换机和主机的状态);为运行在控制平面中的网络控制应用程序提供这些信息。(逻辑集中,在多台服务器上实现)
网络控制应用程序
:根据SDN控制器(网络操作系统)传来的信息进行计算接下来这个路由选择应该是选择一个什么样的路径。最终的计算会交由网络控制应用程序来完成。
SDN控制平面展开的三个层次
分为三层如下:
对于网络控制应用程序的接口(含北向API)
:SDN控制器通过北向接口与网络控制应用程序交互。该API允许网络控制应用程序在状态管理层之间读写网络状态。
网络范围状态管理层(含SDN控制器)
:由SDN控制平面作出的最终控制决定,将要求控制器具有有关网络的主机、链路等最新状态信息。
通信层(含南向API)
:SDN控制器与受控网络设备之间的通信(OpenFlow)协议,包含"南向接口"。
练习题(2道)
题目1:
解析:在网络范围状态管理层。
网络范围状态管理层:在这一层能够获得有关网络的主机、链路、交换机和其他SDN控制设备的最新状态信息,可以根据这些信息的基础上实现新型路由转发协议,并通知给控制器落地执行。
- 原本我自己还以为是网络控制程序应用程序接口,实际它主要是进行负责从状态管理层计算的路由数据来传递给交换设备的。
题目2:
解析:前者是受控网络设备(路由器);后者是网络控制应用程序。
总结
二、路由算法
2.1、认识路由表
路由表/转发表如下图所示:
最佳路由:"最佳"只能是相对某一种特定要求下得出的较为合理的选择而已。
- 一般来说最佳指的是:跳数最短,或者说是链路的费用以及链路的代价最短。
实际过程:路由器在使用一些路由协议的时候,会使用路由算法来算出最佳路由,接着将这个最佳路由的结果填入到路由表中的表项当中,是一个标准的转发表。
2.2、路由算法的分类
静态路由算法(非自适应路由算法)
路由算法分为:静态路由算法、动态路由算法。
静态路由算法(非自适应路由算法)
:管理员手工配置路由信息。
举例:手动去配置某个主机要发送A网络需要从哪个端口转发。
好处:简便、可靠,在负荷稳定、拓扑变化不大的网络中运行效果很好,广泛用于高度安全性的军事网络和较小的商业网络。
- 拓扑变化不大:指的是在网络当中,路由器或者主机也就是所有的设备,并不会发生太大的变化,并不会有很多主机突然撤出网络,或者有很多主机加入网络,因为一旦退出或者加入我们都需要去手动的修改路由表。
缺点:路由更新慢,不适用于大型网络。
动态路由算法(自适应路由算法)
动态路由算法(自适应路由算法)
:路由器之间彼此交换信息,按照路由算法优化出路由表项。
好处:路由更新快,适用于大型网络,及时相应链路费用或者网络拓扑变化。
- 链路费用指的是路径代价或者说路由器的跳数。
缺陷:算法复杂,增加网络负担。
- 主要就是路由算法的设计过程比较复杂。
动态路由算法还可以进行细分:全局性、分散性。
①全局性:链路状态路由算法OSPF协议
。
- 所有路由器掌握完整的网络拓扑和链路费用信息(每个路由器都可以宏观掌控网络拓扑情况)。
②分散性:距离向量路由算法RIP协议
。
- 路由器只掌握物理相连的邻居及链路费用(并不清楚整个网络的拓扑情况)。
实际应用:网络是比较大的,通常使用的都是这个动态路由算法。
2.3、分层次的路由选择协议
2.3.1、采用分层次的路由选择协议原因
采用分层次路由选择协议的主要原因:
1、因特网规模很大。
2、许多单位不想让外界知道自己的路由选择协议,但还想连入因特网。
根据这些原因就出现了自治系统AS
:
描述:由于整个因特网规模太大,将整个因特网分成很多小的团体,这个小的团体,称之为自治系统的一个单位。在这个自治系统内,它所使用的协议外部是完全不知道的,此时我们就可以尽量减少每一个路由器表项的个数,同时还可以使一个自治系统内的这些路由器它们所使用的协议对于外界来看是透明的,也就是外界并不清楚内部自治系统使用的协议。
自治系统AS
:在单一的技术管理下的一组路由器,这些路由器使用的是AS内部的路由选择协议和共同的度量以确定分组在该AS内的路由,同时还使用一种AS之间的路由协议以确定在AS之间的路由。
一个AS内的所有网络都属于一个行政单位来管辖,一个自治系统的所有路由器在本自治系统内都必须连通。
2.3.2、路由选择协议分为IGP与EGP(包含图示)
路由选择协议分为IGP与EGP:
内部网关协议IGP
(指的就是内部路由器之间进行转发的协议):一个AS内使用的RIP
、OSPF
协议。
外部网关协议EGP
(指的是外部路由器之间转发的协议):AS之间使用的BGP
协议。
如下图所示:可以看到在自治系统内部使用的是RIP、OSPF协议,在自治系统外部两个路由器直接转发的协议则是BGP-4
三、IPV4
3.1、IP数据报
3.1.1、TCP/IP协议栈
TCP/IP协议栈:
在网路层中,ARP协议在最下面,此时就需要为IP协议服务,此时这个IP协议也要为ICMP、IGMP协议进行服务。
3.1.2、IP数据报格式(具体字段介绍)
IP数据报分为两个部分:首部
、数据部分
。
- IP数据报与分组可以当成是一样的东西,IP数据报若是过大,就需要对其进行分片,分片下来的小单位也就是网络层的传输单元。
发送数据的时候肯定是首部开始,首部的这个数据是先进行发送,之后进行逐个比特发送。
对于IP数据报的首部分为固定部分、可变部分。
- 对于固定部分每个IP数据报都需要有这个固定大小的数据,对于可变部分是可有可无的,大部分是没有这个部分的。
具体的首部有哪些字段:
版本
:占了4位,指的是IPV4/IPv6。
首部长度
:占了4位,用来表示具体这个首部的大小,并且针对这个表示的大小单位是4B。
- 由于是4位,那么理论正常表示范围为0000-1111,我们举个例子若是为首部长度表示为1111,那么就表示这个首部是15x4B = 60B。固定部分长度是20B,此时可变长度就是40B,在可变部分这里有一个
填充字段
,若是不满足4B的倍数时,这里填充字段
就进行用于填充至4的倍数。 - 注意:由于首部长度中固定部分是20B,那么此时首部长度4位应该表示为0101开始,其范围就是0101-1111。
区分服务
:占了8位,用于指示期望获得哪种类型的服务。
- 主要是用来强调数据包的优先级,在区分服务这里进行一个规定,实际应用使用很少,一般在使用区分服务的时候才会使用这个字段。
总长度
:占了16位,首部+数据,单位是1B。
- 总长度字段占用16位,即16个比特,可以表示的范围是0到65535,由于单位表示1B,那么最大就是65535字节。
- 实际应用中并不会达到这个上限,因为长度过大就需要对其进行分片,用来满足数据链路层的一个MTU最大数据传输单元的要求。
对于标识、标志、片偏移在学习分片部分章节理解。
生存时间(TTL)
:占8位,IP分组的保质期。经过一个路由器-1,变成0后则丢弃。
- 丢弃的主要目的是为了防止无法交付的数据报无限制的在网络中兜圈。
协议
:占8位,表示数据部分的协议(对应运输层传下来的报文段)。
- 与之前的版本要有所区分。
- 需要记住的是TCP与UDP,巧记方法:对于TCP十分可靠,那么就是十分6,此时就使用6这个字段。对于UDP是不可靠连接的,此时就很容易遗弃掉,也就是17。
首部检验和
:占16位,只检验首部,而不检验数据部分。
- 首部检验指的是检验首部的这样一个字段。
- **为什么用和?**在检验首部使用的一个方法就是用二进制的求和。
- **使用这个首部检验和的目的?**主 要是因为在数据传输过程中,数据棒没经过一个路由器都需要重新计算下首部检验和,因为一些字段,如生存时间标志,还有偏移这些字段可能会发生变化,此时就需要通过检验和来检验在发生变化之后数据报有没有出错,若是出错就把这个数据报丢弃掉,若是没错就可以继续传输。
源地址、目的地址
:32位表示。
可选字段(长度可变)
:占0-40B,用来支持排错、测量以及安全等措施。
填充
:全0,把首部补成4B的整数倍。与之前的首部长度以4B为单位相呼应。
3.1.3、IP数据报分片
3.1.3.1、认识最大传输单元MTU
最大传输单元MTU
:链路层上每一个帧都有一个封装数据的上限,这个上限大小就是MTU。对于特殊以太网来说,以太网的MTU是1500字节。
若是所传输的数据报长度超过某链路的MTU时怎么解决?
- 可以采用分片,也就是将数据报来进行分组,主要要根据数据报是否支持分片来决定能否去完成分片。
- 若是不分片,那么IP分组无法向下传递,此时就会返回一个ICMP的差错报文。
3.1.3.2、IP数据报首部中的分片字段(标识、标志、片偏移)
对于分片方法要结合IP数据报中的标识、标志、片偏移来确定。
标识
:占16位,用于来表示与原来数据报保持一致的同一标识。
- 例如原先的标识为62323,那么此时进行分片,那么分片的数据标识依旧是62323,主要目的是为了之后多个同一组的分片发送到了接收端时能够进行组合成完成的数据报。
标志
:占3位,其中第1位用来最高位保留不用,只有后2位才有用,此时三个位举例为x _ _。
- 中间位(x后面的这一位):
DF(Don't Fragment)
,表示是否进行分片。DF = 1
:禁止分片。DF = 0
:允许分片。
- 最低位(x后面的第2位):
MF(More Fragment)
,表示后面是否有分片。实际只有在DF = 0的时候这个第三位才有效。MF = 1
:表示当前这个分片后还有分片。MF = 0
:代表当前这块分片已经是最后一片了,之后没有分片。
片偏移
:占16位,较长分组分片后,当前这片分片在数据报分组中的相对位置,8B为单位。
- 那么可以得知除了最后一个分片,每个分片的长度一定都是8字节的整数倍。也有可能最后一个分片也是或者不是。
3.1.3.3、IP数据报分片例题
描述:我们有一个数据报首部、数据部分如下图,需要分片为长度不超过1420的数据报片
解析:
可以看到首部是固定20B的,可变长度在这里并没有我们也就忽略,由于数据报片是3800B,对于是否能够分片实际要看首部中DF=0,这里我们就直接默认可以分片。
分片最大长度为1420B,首部20B,那么数据部分就是1400B。
- 这里分片的数据部分长度为1400B原因:对于数据部分进行分片的都需要加上首部20B。
此时可以将3800拆分为三块数据部分分别是:1400、1400、1000。
接着我们就来计算每个分片的偏移量,如何计算和定位呢?
- 数据部分的偏移量是针对于原来报文的数据部分来进行对应的,从0开始。
- 那么第一片的数据部分就是:0-1399;第二片的数据部分就是:1400-2799;第三片就是2800-3799。
我们的每一偏移量就根据当前数据部分的起始位置来确定,又由于偏移量是8B单位,所以我们需要将起始位置除以8B:
- 示例:第二片初始位置是1400B,那么1400B / 8B = 175,同样第三片也是如此 2800B/8B = 370B。
最终我们分出来的三片实际的首部对于分片的字段值如下:
3.1.3.4、IP数据报格式的单位小结
总长度
单位是1B。
片偏移
单位是8B。
首部长度
单位是4B。
巧记:一种 八片 首饰。
3.2、IPV4地址
3.2.1、认识IP地址
IP地址
:给每一个主机的接口以及路由器的接口赋予一个标识符为全球唯一化标识符。全世界唯一的32位/4字节的标识符,标识路由器主机的接口。
IP地址组合:由网络号、主机号组成。
- 网络号用于确定在哪个区域;主机号用语确定在这个区域中的哪一个主机。
写法:采用点分十进制写法方式,如下:
3.2.2、互联网中的IP地址(识别多少个网段)
如下图通过不同层的物理设备来对网路进行了一个划分,总共有6个网络:
首先第一个网络:LAN1,可以看到是通过使用一个路由器来进行划分开的,此时左边的两台电脑都在一个网段上,对于这个LAN1的网段则是222.1.3.0:
接着是第二个网络:LAN2,同样也是通过使用路由器来划分开的,其网段为222.1.1.0,如下图所示:
第三个网络:LAN3,同样也是通过一个路由器来进行划分出来的,注意在这个网络里使用到了网桥,对于网桥是数据链路层的物理设备,仅仅只能够隔离冲突域,不能够隔离广播域,所以对于网桥的左右两边都是属于一个网段当中的,网段是222.1.2.0,如下图所示:
第4-6个网络则是中间的三个区域,通过路由器来进行划分开来的,是一种特殊的网络,称为无编号网络,或者说是无名网络。
- 之所以叫网络,是因为这个网络中有IP地址,但是这样的一个网络是由一段连线来构成的,其中并没有电脑主机。
3.2.3、分类的IP地址
分为A、B、C、D、E类。
划分多个类的原因:各种网络的差异比较大,不分网络可能会有很多的主机,但是有些网络上的主机比较少,那么将这个IP地址分为多个类那么就能够更好的满足不同用户的一个要求。
网络类别、最大可用网络数、最大主机数如下:
**A类中的最大可用网络数为什么-2?**一个要删减掉全0的情况,还有一个就是环回地址127。
3.2.4、特殊的IP地址与私有地址
特殊的IP地址
特殊的IP地址:实际当中不能使用或者说比较特殊的
网络号全0
的表示在本网范围的主机。【源地址可以,不能够作为目标地址】
全1、全1
:可以对本网络进行一个广播。【源地址不可以,目标地址可以】
- 本网广播地址:指的是对当前自己这个网络进行广播。
- 路由器不转发:由于路由器是隔离广播域的,当发送的一个广播分组会经过路由器但是不会被转发出去。
特定值,全0
:用来表示一个网络。【源地址、目的地址都不行】
特定值,全1
:可以针对指定网络上的所有主机进行广播。【源地址不可以,目的地址可以】
127、任何数
:用于本地软件还回测试,若是主机发送一个数据报,其目的地址写的是127.0.0.1,那么这个数据报是永远不会进入到网络当中的,永远不会离开主机。【源地址可以,目标地址可以】
- 主要用途:用来软件测试网络层的功能有没有问题,通过发送数据包的方式看看能不能发送并且能够正常接收,同样还可以测试自己的设备,自己的栈点是否可以正常的发送与接收数据。
私有IP地址
私有IP地址:
这个主要是用于内部网络使用,路由器是不认、无效的。外界无法对这类地址进行访问,那么这类地址如何访问外界的网络呢?
- 这就涉及到了NAT技术。
3.2.5、网络地址转换NAT技术(包含原理、案例)
网络地址转换NAT(Network Address Translation)
:在专用网络连接到因特网的路由器上安装NAT软件,安装了NAT软件的路由器叫做NAT路由器,至少有一个有效的外部全球IP地址。
原理:所有使用本地地址的这个主机在和外界通信的时候,都需要经历一个NAT路由器的一个地址转换,这就就可以实现和外部主机进行通信。
- 本质:同样也是需要一个公网IP,在NAT路由器中维护了一个NAT转换路由表,实际在192网段中的主机IP地址和主机号为192.68.0.3:30000端口,此时映射为 172.38.1.5:40001这样的一条记录,当我发送的数据报经过NAT路由器的时候来进行地址转换为公网的IP地址,那么就能够实现上网,目标服务器也能够成功响应给用户。
下面是一个内部专用网络与外部网的一个案例:
**如何内部网络和外部的213.18.24来进行通信呢?**直接使用我们主机封装的一个IP数据报,其中包含了192的地址和端口发送到目标主机,那么此时目标服务器是不能够知道具体是响应回哪里的。
此时我们就需要使用NAT转换,首先在NAT路由器上安装NAT软件,并且路由器至少有一个有效的外部全球IP地址。
那么重新来发送一个数据报,此时我们主机192.168.0.3发送一个数据包给213.18.2.4服务器,此时构建出一个数据报其中IP地址以及端口号为192.168.0.3:30000,此时在经过NAT路由器时,生成一个对应这个192.168.0.3:30000映射的公网IP地址和端口号,将新的这个公网IP地址和端口转换到数据报之后发送出去,那么此时两个公网,那么来回都能够找到对方的主机,当服务器响应数据时,同样会经过NAT路由器来完成一个地址的转换!
3.2.6、子网划分和子网掩码
3.2.6.1、分类IP地址的弱点
1、IP地址空间的利用率有时很低。
- 例如申请一个B类IP地址,此时主机数并没有很多,仅仅只是觉得未来会壮大,此时就造成了一个资源浪费,让IP地址空间的资源过早的被使用完毕。
2、两级IP地址不够灵活。
- 例如:有一个单位,可能需要再一个新的地点马上开通一个新的网络,但是在申请一个新的IP地址之前呢,要跟这个ISP也就是因特网服务提供商来申请一系列的IP地址,但是操作不够灵活,是否有一种方法能够灵活地增加一单位的网络,而不用事先再去找ISP去申请一些新的网络号。
3.2.6.2、子网划分
在原本的二级IP地址中主机号来进行拆分为子网号+主机号
:
说明:某单位划分子网后,对外仍然表现为一个网络,即本单位外的网络看不见本单位内子网的划分。
注意点如下:
1、进行子网划分时,主机号至少要留多少位?
- 主机号至少要留两位,若是只留下一位,那么主机号要么就是0,要么就是1,完全不能够分配作为一台主机。
2、进行子网划分,子网号能否全0、全1?
- 要看情况,最开始的情况是不行的,随着CIDR技术的广泛应用,全0、全1也都开始被允许。
3、主机号不能够全0全1。
3.2.6.3、子网掩码
子网掩码的目的:通过相与来提取出对应的IP地址也就是网络号。
思路实现:对于IP地址究竟往哪个子网上发,通过使用子网掩码与IP地址进行相与来得到网段!
下面有确定网段以及对于网段进行划分使用子网掩码例子:
首先我们看下两级IP地址提取的过程,若是我们的IP地址为145.13.3.10,此时使用255.255.0.0来与这个IP地址进行相与,此时就能够提取出这个IP地址的网络号也就是124.13.0.0:
同样若是我们想要对单位主机进行一个划分,那么就需要使用到子网号来进行划分,同样对于这个子网号也有子网掩码用于确定在某个网段当中,若是要对于145.13.0.0中划分一个主机数量为254的子网,那么我们可以采用255.255.255.0来作为三级IP地址的子网掩码,此时通过二次划分,那么我们中145.13.0.0的一个子网段就是145.13.3.0:
3.2.6.4、子网掩码习题
习题1:计算网络地址
题目:
解析:两个子网掩码都是141.14.64.0。
计算过程就是拿IP地址来与子网掩码进行相&即可求得相应IP地址的网络地址,分别对下面的第IP地址的与子网掩码的第三位进行计算:
题目发现的小结论点:
1、发现不同的子网掩码得到的网段是一样的:同样的IP地址与不同的子网掩码相&,是可能得到相同的IP地址。
2、虽然说网段一样,但是不同的掩码达到的效果并不一样。如每个子网当中可以使用的最大主机数、划分的子网个数都是不同的。
习题2:计算广播分组(考研真题)
题目:
解析:为D
注意了题目说让你发送广播分组,这里就有一个小坑,有一些子网第三部分并不是255,会多出来几位,当使用广播时,这个多出来的几位也是需要设置为全1的。
我们首先来用IP地址180.80.77.55与子网掩码255.255.252.0来进行相与,此时得到的网段几位180.80.76.0。
当我们进行发出广播信号的时候,主机号要全部为1,那么对于这个多出来的2位也要设置为1,此时广播地址为:180.80.79.255
。
3.2.6.5、使用子网时分组的转发(包含转发流程)
若是使用了子网掩码,那么就需要再路由表中多增加一个字段也就是目的网络子网掩码
。
此时路由表中包含的内容如下:
1、目的网络地址
。
2、目的网络子网掩码
。
3、下一条地址
。
接下来我们了解一下使用子网时分组的转发过程:
1、数据报来到路由器时,首先会提取目的地的IP地址。
2、通过对IP地址与路由表中的IP地址来进行比对是否有相对应的,若是有直接根据"下一跳"指出的进行处理;若是不匹配此时我们进入下一步。
3、比较判断是否有特定主机路由:指的是在路由表中有专门特定的一行与目的地址是一样的。若是IP地址与路由表中的特定主机路由IP地址一样,那么直接就按照路由表路由规则进行转发。
4、将IP地址与路由表中的子网掩码相&,来判断是否有与子网段相匹配的,若是有根据"下一条"指出的进行处理;若是不匹配继续下一步。
5、若是转发表中有默认路由,若是有则将该分组传送给默认路由,进入到新路由后同样进行上面的步骤;若是没有路由,那么报告转发分组出错。
6、经过不断地默认路由转发,依旧找不到对应的网段或者主机地址,此时TTL为0时,报文则会被丢弃掉。
- 默认路由为:0.0.0.0/0。
- 是否直接交付过程(个人感觉与其中的4在视频里说重复了):直接使用目的IP地址与子网掩码进行相与,若是相同就直接转发到对应的子网当中。
- 直接交付与间接交付区别:直接交付通过与子网掩码或者比较的方式来定位在当前路由器的某个网段;而间接交付则是需要跳转到下一个路由器来进行转发。
3.2.7、无分类编址CIDR
3.2.7.1、认识CIDR编址形式
CIDR
是目前比较普遍实用的编址形式。
产生原因:B类地址很快被分配完毕,路由表中的项目急剧增长。
原本二级IP地址的优化方式:由于二级IP地址使用不灵活,对于地址利用率比较低,此时就有了子网掩码划分子网的技术。
CIDR编址:在子网这个概念启发下,将整个网络号和子网号都合并到了一起,称之为网络前缀,再次回到了二级IP地址形式
。
这里看似与一开始的二级IP地址一样,但是在这里主机号是可变长的,可以很灵活的调整网络号的长度,自然也就很灵活的调整网络号的长度。
3.2.7.2、无分类编址CIDR的特点
特点一:消除了传统A类、B类、C类地址以及划分子网的概念。
CIDR记法:IP地址后加上"/",然后写上网络前缀(可以任意长度)的位数。
- 例如:128.14.32.0/20。此时就划分好了,前20位就是子网掩码,可以直接计算出相应的网段。
特点2:融合子网地址与子网掩码,方便子网划分。
CIDR将网络前缀都相同的连续的IP地址组成一个"CIDR地址块"。
例如:128.14.35.7/20,是某CIDR地址块中的一个地址。其表示网络前缀为20。
下面是这个网络的二进制、最小主机地址以及最大主机地址
:
地址块
:128.14.35.7/20。也称为"/20地址块"
。
地址掩码(子网掩码)
:11111111 111111111 111110000 00000000。
- 实际就是前20个为1,后12个为0。
3.2.7.3、无分类编址CIDR小例题
题目:给出CIDR地址块 192.199.170.82/27的网络号主机号、地址块的最小/最大地址、地址块是多少、所在的地址块子网掩码是多少。
解析:
(1)网络号主机号:网络号27位,主机号5位。
(2)地址块的最小地址、最大地址
11100000
01010010
进行相&,得到01000000。
最小地址: 192.199.170.64。
- 最后8位为:01000000。
最大地址: 192.199.170.95。
- 最后8位为:01011111。
(3)地址块是多少: 192.199.170.82/27
(4)所在的地址块子网掩码:11111111 11111111 11111111 11100000。
- 27个1,5个0。
3.2.7.4、CIDR重要的两个应用:构成超网、最长前缀匹配
应用一:构成超网
认识构成超网
构成超网(路由聚合)
:将多个子网聚合成一个较大的子网。
方法:将网络前缀缩短(所有网络地址取交集)。
案例描述:在实际应用当中采用CIDR可能会出现路由网段掩码记录,那么我们可以来进行将多个网络对应接口来取交集构成单个网络前缀,如下在R2路由器中有两个网络。
对于网络1、网络2的IP地址如下:
网络1:206.1.00000000.00000000
网络2:206.1.10000000.00000000
我们取前缀相同的为止,上面的情况则是16位:
此时就能够将两个网络构成超网:206.1.0.0
。
效果如下图所示:
结论:划分子网是少—>多,构成超网是多—>少。
构成超网计算题
题目:
解析:选择C
首先来列举出所有的IP地址,找到最长的前缀,将这个最长前缀作为掩码,完成聚合合并:
应用二:最长前缀匹配
认识最长前缀匹配
最长前缀匹配
:使用CIDR时,查找路由表可能会得到多个匹配结果(根网络掩码按位相与),应当选择具有最长网络前缀的路由。
- 简单说:就是根据掩码匹配到多个时,根据相对应网段的掩码最长来选择。
示例:路由器有三个网段,此时我们的目的地址为206.71.130这个ip地址,此时如何去根据最长前缀匹配?
解析:选择计算机系。
根据目的IP地址与多个网段的子网掩码进行&来求得网段IP地址与相对应给出的是否相同,匹配所有相等的网段出来,若是有多个,那么就选择掩码最长的。
两个条件:①IP地址与掩码&匹配成功。②匹配成功多个,根据掩码也就是前缀越长,地址块越小先满足。
最长前缀匹配练习题
题目:
- 其中0.0.0.0/0表示的是默认路由,当我们不能匹配其他的路由时,我们会进行路由器转发,也就是走这个默认路由的下一条路由器重新寻找。
解析:同样是拿每道题的掩码与目标IP地址进行相与,最终求得匹配的IP地址,哪个前缀(掩码)最长就选择哪个
3.3、网络层协议
3.3.1、ARP协议
3.3.1.1、认识ARP协议与使用过程(包含4中情况)
使用ARP协议的原因:由于在实际网络的链路上传送数据帧时,最终必须使用MAC地址,对于网络层只能够使用IP地址完成寻址。
- 在局域网中,只能够看得懂MAC地址,所以需要MAC地址。
- 若是传输过程中没有找到MAC地址,就需要通过ARP来找到MAC地址。
ARP表
:每个主机和路由器都有一个ARP高速缓存,用来存放IP地址与MAC地址的映射。
ARP协议使用过程:
1、检查本机ARP高速缓存,若是有对应表项则写入到MAC帧中,若是没有则将目的MAC地址设置为FF-FF-FF-FF-FF-FF的帧封装来进行广播发起ARP请求分组。
2、此时当前的局域网中的所有主机都能够收到该请求。目的主机收到请求后(对应主机ARP表中有该IP地址表项)首先会将源主机的MAC地址记录到自己的ARP高速缓存表,接着就会向源主机单播一个ARP响应分组。
3、源主机收到后会将此映射写入 到ARP缓存(10-20min更新一次),同时会写入到MAC帧中。
ARP协议4种典型情况:
1、主机A发给本网络上的主机B:用ARP找到主机B的硬件地址。
2、主机A发给另一网络上的主机B:用ARP找到本网络上的一个路由器(网关)的硬件地址。
3、路由器发给本网络的主机A:用ARP找到主机A的硬件地址。
4、路由器发给另一个网络的主机B:用ARP找到本网络的一个路由器的硬件地址即可。
3.3.1.2、发送数据的过程(典型情况1,考虑到本机有ARP记录和没有的两种情况)
首先可以看到我们有一条线路,其中上面有集线器、交换机、路由器以及主机,我们的目标是从主机1中发送给主机3一个PDF:
在应用层是一个PDF文档,由于传输的文档数据过大,进入到传输层的时候就需要进行报文分段。
接着我们就拿其中的一个分段来进行示例演示:
在网络层当中,我们给对应的分段添加上源地址、目的地址。
- 实际往往这个目的地址都是通过一个应用层的协议DNS来获取到的。
接着进入到数据链路层,此时需要添加源地址的MAC地址以及目标主机的MAC地址,此时我们仅仅只有源主机的MAC地址,**对于目标的MAC地址我们怎么获取?**若是没有这个目的MAC地址我们最终是无法再局域网中传输MAC帧来完成数据的传输的。
情况1:若是1号机也就是本机的ARP表中是否有对应IP的地址映射,由于刚好有,此时我们就直接获取到目标地址的MAC地址,接着写入到MAC帧中。
- 有的原因是之前肯定有访问过该IP地址,已经通过ARP请求获取到了所以能够存储在本地的ARP表中。
情况2:若是当前的1号机的ARP表并没有该IP地址的MAC地址,此时会进行广播ARP请求分组。
此时这个广播ARP请求分组会从交换机的各个端口转发出去,此时刚好主机3就是在同一个网段当中,主机3首先会将发来的请求分组中的源地址以及源MAC地址存入到自己的ARP表中,接着就响应一个单播ARP相应分组,其中就是IP3以及它的MAC地址。
此时主机1收到了响应回来的ARP响应分组,将其中的主机3MAC地址以及IP地址存入到自己的ARP表中,接着就写入到MAC帧中,最终在物理层将数据形成比特流或者信号的形式在链路上传输出去。
3.3.1.3、发送数据的过程(典型情况2)
需求:当前的目标是从主机1发送PDF到主机5当中:
这里直接快进到数据链路层,此时需要在MAC帧中填入目标主机5的MAC地址,由于当前主机1中的ARP表并没有对应IP地址的MAC地址:
此时就会发送一个广播ARP请求分组,由于并不知道目标的MAC地址是什么,此时将目的MAC地址设置为FF-FF-FF-FF-FF-FF的帧封装来进行广播发起ARP请求分组:
由于当前局域网的主机中并没有主机5,此时只路由路由器才会相应这个请求,此时进行单播返回一个ARP的响应分组,这里的MAC地址是路由器的MAC地址:
此时将传入过来的路由器的MAC地址填入到MAC帧发了出去到网关IP6位置,接着进行物理层、数据链路层、网络层的解封装,由于到了新的网络了,此时就需要更换MAC地址,此时当前源地址MAC变为了MAC7,目标MAC地址变为了MAC8。
- 目前是一个点对点的通信,会采用PPP协议,那么此时目的MAC地址中应该填全1,而由于当前主机1—>主机5是端到端的,此时就填路由器的MAC地址。
到了下一阶段,此时源MAC地址就变为了MAC9,目标MAC地址为MAC5,这个MAC5同样也是通过在MAC9网段左边路由器的时候发起一个ARP请求,此时在当前网段中有主机5,此时就会返回过来的ARP响应分组,获取到了主机5的MAC地址:
此时目标的MAC5地址也有了,那么就可以在局域网中通过MAC5的地址来发送给主机5了。
3.3.1.4、小结
ARP协议实际上是处于链路层和网络层中间的协议,其结合了IP地址与MAC地址,所以ARP协议在网络层中是这样画的:
3.3.2、DHCP协议(应用层协议,仅仅只是给网络层通信提供基础)
3.3.2.1、主机如何获取到IP地址呢?(静态、动态配置)
**在网络层中学习DHCP原因?**是因为它为网络层的通信提供了一个基础。
主机获取IP地址主要包含两种方式:静态配置、动态分配。
静态配置
:提前固定好IP地址配置。动态配置
:通过借助DHCP服务器来完成自动分配的过程。
3.3.2.2、认识DHCP以及客户端服务器之间的交换过程
DHCP
:动态主机配置协议DHCP是应用层协议,使用客户/服务器方式,客户端与服务器通过广播方式进行交互,基于UDP传输。
DHCP提供功能:提供即插即用联网的机制,主机可以从服务器动态获取IP地址、子网掩码、默认网关、DNS服务器名称与IP地址,允许地址重用,支持移动用户加入网络,支持在用地址续租。
地址重用
:当一台主机进入到这个局域网当中,DHCP服务器就给它分配一个IP地址,等主机离开的时候,此时又有新的主机来询问获取IP地址,此时就可以将刚刚主机分配的IP地址给它。地址续租
:具有时间性质的,称为租用期
。
DHCP服务器和DHCP客户端的交换过程如下:
1、**主机广播"DUCP发现"**报文:寻找网络中的DHCP服务器。
- 通俗:客户机问"有没有DHCP服务器呀"。
2、DHCP服务器收到"DUCP发现"消息后,向网络中广播"DHCP提供"报文:包括提供DHCP客户机的IP地址和相关配置信息。
- 通俗:服务器说"有,有,有",我现在给你分配和发给你。
3、主机收到"DHCP提供"消息,如果接收到DHCP服务器提供的广播参数,那么进行**"广播DHCP请求"报文**:主机向服务器请求提供IP地址。
- 通俗:客户机问我现在用你给我的IP地址了啊。
- **为什么彼此之间已经知晓IP地址了,还需要主机广播一个DHCP的请求报文呢?**原因是采用这种广播的请求报文,可以告知其他的DHCP服务器,现在可以收回刚才分配到的地址了,我已经有了。
4、**DHCP服务器广播"DHCP确认"**报文:将IP地址分配给DHCP客户机。
- 通俗:服务器说用吧。
重点:
1、客户机与DHCP服务器之间都是通过广播形式。原因是刚开始客户端机并没有IP地址。
2、DHCP协议使用的是客户/服务器方式,在交互的时候发送的都是广播报文,并且是一个动态分配IP地址的过程,是基于UDP而不是TCP的。
3.3.3、ICMP协议
3.3.3.1、处于TCP/IP协议站的位置
TCP/IP协议栈:
中间部分的ICMP以及IGMP协议处于网络层和传输层的协议,ICMP协议是起了一个桥梁的作用,作用就是为了更加有效的转发IP数据报和提高交付成功的机会。
3.3.3.2、网际控制报文协议ICMP提供的功能和报文结构
ICMP协议支持主机或路由器的功能:
1、差错(或异常)报告。
- 差错报告:对于一些分组出错被丢弃的情况来给源主机发送一个ICMP差错报文。
2、网络探询。
对于上述两个实现功能最终都会发送特定ICMP报文
。
ICMP报文的结构:
类型
:指的是ICMP报文实际发送的属于哪一类的差错报告。代码
:为了进一步区分某种类型的当中的不同情况。检验和
:用来检验ICMP报文。- 对于IP数据报当中首部的检验和,是只检查首部的检验和而不检验数据报部分的数据部分,因此仅仅只是靠IP数据报中的首部无法保证数据部分一定是没错的。
3.3.3.3、两种ICMP报文类型
ICMP报文两种类型:ICMP差错报文、ICMP询问报文。
类型一:ICMP差错报文
5种ICMP差错报文
ICMP差错报文(5种):
1、终点不可达:当路由器或主机不能交付数据报时就向源点发送终点不可达报文。【无法交付】
2、源点抑制:当路由器或主机由于拥塞而丢弃数据报时,就向源点发送抑制报文,使源点知道应当把数据报的发送速率放慢。【拥塞丢数据】
- 对于源点抑制现在是取消基本不会使用。
3、时间超过:当路由器收到生存时间TTL=0的数据报时,除了丢弃数据报外,还要向源点发送时间超过报文;当终点在预先规定的时间内不能够收到一个数据报的全部数据报片时,就把已收到的数据报片都丢弃,并向源点发送时间超过报文。【TTL = 0】
- 总结:①到达路由器时TTL=0。②终点在规定时间中并不能够收到一个数据报的完整全部报文。
4、参数问题:当路由器或者目的主机收到的数据报首部中有的字段的值不正确时,就该丢弃该数据报,并向源点发送参数问题报文。【首部字段有问题】
5、改变路由(重定向):路由器把改变路由报文发送给主机,让主机知道下次应将数据报发送给另外的路由器。【可通过更好的路由】
ICMP差错报告报文数据字段
所有的ICMP差错报告报文数据字段都是一样的。
ICMP组成:
- 将IP数据报中的【①IP数据报首部以及后8个字节】取出来作为ICMP报文的数据字段,接着加上【②ICMP的前8个字节】。
- 最终加上【③IP数据报的首部】即可构成一个完整的数据报。
ICMP差错报告报文是IP数据报,也就是网络层传输层传输单元的数据部分。
不应该发送ICMP差错报文的情况(四种情况)
1、对ICMP差错报告报文不再发送ICMP差错报告报文。
- 对于ICMP报文发送出错的情况不会再单独发送一个ICMP报文。
2、对第一个分片的数据报片的所有后续数据报片都不发送ICMP差错报告报文。
3、对具有组播地址的数据报都不发送ICMP差错报告报文。
- 组播是一点到多点,要和广播区分开,广播是一点到所有结点,对于组播是有选择性的,不用发给所有结点,不分结点多个结点就可以了。
4、对具有特殊地址(如127.0.0.0或0.0.0.0)的数据报不发送ICMP差错报告报文。
类型二:ICMP询问报文
四种ICMP询问报文
1、回送请求和回答报文:主机或路由器向特定目的主机发出询问,收到此报文的主机必须给源主机或路由器发送ICMP回送回答报文。
- 两个报文搭配使用的。
- 主要目的:测试目的站是否可达以及了解其相关状态。
- 实际应用:PING。
2、时间戳请求和回答报文:请某个主机或路由器回答当前的日期和时间,用来进行时钟同步和测量时间。
3、掩码地址请求和回答报文。
4、路由器询问和通告报文。
对于3、4目前不再使用了。
ICMP实际应用(PING、Traceroute)
PING
:测试两个主机之间的连通性,使用了ICMP回送请求和回答报文。
Traceroute
:跟踪一个分组从源点到终点的路径,使用了ICMP时间超过差错报告报文。
- 工作流程:发送一连串的数据报,第一个发送的数据报TTL时间为1,第二个发送数据报TTL为2,接着依次增加,这种方式主要是利用了当TTL = 0的时候,路由器会将它丢弃,接着返回一个差错时间超过的差错报告报文,此时就可以通过差错报告报文测算出分组从原点到路径之间的距离。
两种应用的报文类型不同:PING是询问报文,Traceroute是差错报告报文。
四、IPv6
4.1、IPv6的诞生原因以及优点
随时如今互联网连通,人人都能够上互联网,此时出现了IPV4地址不够用的情况。
解决32位IPV4地址划分的三个策略:
- 策略1:CIDR无类别编址,让IP地址的分配更加合理。
- 策略2:NAT,实现私有地址到公网地址转换,来节省IP地址
- 策略3:使用IPv6协议,大大增加IP地址的数量。
说明:前两个策略仅仅只是优化IP地址的分配,合理利用,对于最后一个策略才是真正意义上的扩充IP地址的数量。
使用IPv6同样包含如下的几个优点:
1、改进首部格式,让路由器处理效率更高。
- 原先IPV4中的首部格式除了固定部分,还有一定的可变部分,对于固定部分的20B字段太多,需要进行改善,来加快路由器的一个处理效率。
2、快速处理/转发数据报。
3、支持QoS(服务质量):提供多种服务。
- QoS(Quality of Service,服务质量)指定一个网络能够利用各种基础技术,为指定的网络通信提供更好的服务能力,是网络的一种安全机制。用来解决网络延迟和阻塞等问题的一种技术。
4.2、IPv6数据报格式(首部、有效载荷)
IPv6数据报格式:
基本首部
:固定40B。- **IPV4中的可变部分呢?**实际就是将原本IPV4中的可变部分移动到了有效载荷当中。若是需要有一些新的要求,数据报增加某些功能,此时就可以放在扩展首部当中来实现。
有效载荷的字段格式如下:
版本
:4位,指明协议版本,总是6。
优先级
:8位,区分数据报的类别和优先级。
流标签
:"流"是互联网上从特定源点到特定终点的一系列数据报。所有属于同一个流的数据报都具有同样的流标签。
- 对于IPV4中的标识位,IPV4中的标识位,是对于这个数据包进行分片之后每一个数据包它的所有分片都具有同一个标识位,在这里的流标签则是指的是这一个流当中的每一个数据报,都具有相同的流标签。
有效载荷长度
:指的是IPv6中有效载荷的大小(扩展首部+数据)。
下一个首部
:用来标识下一个扩展首部或上层协议首部。
- 假如说我们此时有一个数据报,这个数据报除了基本首部44字节之外,还有三个扩展首部,对于每一个首部中都会有这样的一个下一个首部指向,在基本首部中的下一个首部指向扩展首部1的,接着扩展首部1中的下一个首部指向的是扩展首部2,接着扩展首部2的下一个首部指向的是扩展首部3,最后扩展首部3中的下一个首部指向的则是数据部分。
跳数限制
:与IPV4中的TTL一样,指的是生命周期,当TTL=0时,路由器会将这个数据报丢弃,接着返回一个ICMP差错报告报文。
源地址、目的地址
:128位,在IPV4中只有32位,扩展了十分多的IP地址。
4.3、IPv6与IPV4的对比(11点)
IPv6与IPV4的对比:
1、IPv6将地址从32位(4B)扩大到了128位(16B),更大的地址空间。
2、IPv6将IPv4的校验和字段彻底移除,减少每跳的处理时间。
- 若是没有检验和字段,路由器检查时间就会变少。
3、IPv6将IPv4的可选字段移出首部,变成了扩展首部,称为灵活的首部格式,路由器通常不对扩展首部进行检查,大大提高了路由器的处理效率。
4、IPv6支持即插即用(即自动配置),不需要DHCP协议。
- 即插即用指的是:自动分配一个IP地址,无需像IPV4一样需要使用DHCP协议来分配一个IP地址。
5、IPv6首部长度必须是8B的整数倍,IPv4首部是4B的整数倍。
6、IPv6只能在主机处分片,IPv4则可以在路由器和主机处分片。
- IPv6只能够在主机处分片,那若是在传输的链路层时MTU最大传输单元规定很小,但是当前的IPv6数据包很大,需要进行分片怎么办?此时就需要在路由器这里将它丢弃掉,返回一个差错报告报文。
- 注意这里这里的差错报告报文是ICMPv6协议。
7、ICMPv6:针对于上面链路层若是要求MTU大小范围<当前传输IVP6数据包大小,会附加报文类型"分组过大"。
8、IPv6支持资源的预分配,支持实时视像要求,保证一定的带宽和时延的应用。
9、IPv6取消了协议字段,改成下一个首部字段。
- 原本IPV4中协议字段指的是分组所携带的数据使用的是哪一个协议,分组所携带的数据使用的是哪个传输层协议,但是在IPv6中被取消掉了,改成了下一个首部字段。
10、IPv6取消了总长度字段,改用有效载荷长度字段。
- 为什么IPV4中有首部和总长度呢?原因是IPV4中首部中包含有固定+可变字段。
- 对于IPv6中对于首部是固定的40B,那么就只需要表示有效载荷字段即可。
11、IPv6取消了服务类型字段。
- 实际就是对应IPV4中的 区分服务字段。
4.4、IPv6地址表示形式
一般形式(冒号十六进制记法):8小组,一组有4个十六进制(1个十六进制4位)
压缩形式:若是4个都是0那么直接使用一个0表示,若是像这种连续0,我们可以忽略如000A写成A就行
特殊的一种压缩形式(零压缩):一连串连续的0可以被一对冒号取代。
- 注意:此时是
::
(两个冒号),爽冒号表示法在一个地址中仅可出现一次。
4.5、IPv6的基本地址类型(单播、多播、任播)
IPv6基本地址类型:单播、多播、任播
单播
:一对一通信,可做原地址+目的地址。
多播
:一对多通信,可做目的地址。
- 一台主机若是要跟这个多播组内的所有主机进行通信的话,就需要使用的是多播地址,需要将多播地址放入IPv6数据报的目的地址当中,就可以发给这个多播组当中的所有主机了。
- **对于IPv6并没有使用IPv4的广播地址原因?**因为多播地址可以包括广播地址的,对于IPv4是发给这个局域网当中所有的节点,此时对于IPv6多播就可以进行取代广播,IPv6可以这个广播想象成一组组播当中的所有主机,给这些主机全部发送数据包就可以了。(简而言之:我们若是想要实现广播效果,可以将所有的主机地址添加到这一个目的地址当中去)
- 注意:只能作为目的地址,不能够作为源地址。
任播地址
:一对多种的一个通信,可作目的地址。
- 任播地址是IPv6的独有地址,
- 解释:是指一对多当中的一个通信,实质上还是一对一通信,但是表现形式就好像是一个跟多个主机通信。只能够作为目的地址。
- 当IP数据包当中所封装的目的地址是一个任播地址,那么就会给这个任播组内的一台主机发送这个数据包,这一台主机是离发送方最近的一台。
4.6、IPv6向IPv4过渡的两种策略(双栈协议、隧道技术)
策略1:双栈协议
描述:双协议栈技术就是指一台设备上同时启动IPv4协议栈和IPv6协议栈,此时设备那么既能和IPv4,也能够和IPv6网络通信。
- 若是这台设备是一个路由器,那么这台路由器的不同接口上分别配置了IPv4地址和IPv6地址网络。
- 若是这台设备是一个计算机,那么将同时拥有IPv4地址和IPv6地址,并具备同时处理这两个协议地址的功能,同时可以以IPv4或者IPv6的身份去发送数据包。。
策略2:隧道技术
描述:通过使用互联网络的基础设施在网络之间传递数据的方式。
效果:使用隧道传递的数据(或负载)可以是不同协议的数据帧或包,隧道协议将其他协议的数据帧或包重新封装然后通过隧道发送。
若是在传输链路过程,我要传送的是IPv6数据包,而链路中部分仅仅只有IPv4路由器怎么办?
- 解决方案:此时就使用隧道技术,将IPv6的数据包疯转到一个以IPv4为首部的数据报来进行传输,接着若是传输到IPv6那么进行解封继续使用IPv6传输。
脑图时刻
五、路由选择协议
5.1、认识路由选择协议
AS
:自治系统。
路由选择分为两种:内部网关协议IGP、外部网关协议EGP。
- 内部网关协议IGP:指的是一个AS内使用的,具体的协议有
RIP
、OSPF
。- RIP使用的是距离向量(适用于比较小的网络),OSPF使用的是链路状态(适用于比较大的网络)。
- 外部网关协议EGP:指的是AS之间使用的,具体的协议有
BGP
。
5.2、RIP协议(应用层协议)
5.2.1、认识RIP协议
RIP
:是一种分布式的基于距离向量的路由选择协议,是因特网的协议标准,最大优点是简单。
RIP协议要求网络中的每一个路由器都维护从它自己到其他每一个目的网络的唯一最佳距离,也就是经过路由器跳数最短(路由器包含一组距离)。
距离:通常为"跳数",即从源端口到目的端口所经过的路由器个数,经过一个路由器跳数+1。特别的,从一路由器到直接连接的网络距离为1。RIP允许一条路由最多只能包含15个路由器,因此距离为16表示网络不可达。
下面是一组路由器以及多个连接的网络:可以看到与R2路由器直接连接的就是Net2,此时路由表中就包含有一条记录到达Net2网络是直连距离就是1,若是到达的目的网络为Net1,中间相连了一个路由器,那么距离就是2。
- 直接交付:指的是这个路由器和目的网络是直接相连的,直接相连的就可以直接交付了。
- 间接交付:交付给下一条路由器。
举例:RIP允许一条路由最多只包含15个路由器,距离为16表示网络不可达,若是超过16也是按照16算。
- RIP只适用于小互联网。
提出疑问:路由表如何构成?和哪些路由器交换信息?在什么时候交换信息?交换什么信息?
- 路由表如何构成解答:通过路由器与临近路由器之间交换。
5.2.2、RIP协议和谁交换?路由器之间路由表多久交换一次?路由器之间交换什么?
问题1:RIP协议和谁交换?
答:仅和相邻路由器进行交换信息。
问题2:路由器之间路由表多久交换一次?
答:每30秒交换一次路由信息,接着路由器根据新信息更新路由表 。若超过180s没收到邻居路由器的通告,则判定邻居路由器没有了,并更新自己路由表中该邻居的距离。
问题3:路由器之间交换什么?
答:路由器之间交换的信息是自己的路由表。
5.3、RIP协议交换过程
RIP协议交换过程:
- 路由器刚刚开始工作时,路由表中仅仅只有自己直接相连接的网络距离(距离为1),接着每一个路由器也只和数目非常有限的相邻路由器交换并更新路由信息。
- 当经过若干次更新后,所有路由器最红都会知道到达当前的自治系统AS中任何一个网络的最短距离和下一条路由器的地址。即"收敛"。
收敛的过程示例如下,在下图中有多个相邻的路由器,每个路由器有自己的一个数:
接着隔了30s后,路由器与路由器之间开始进行更新路由信息,例如1号路由器将自己的路由表中记录发给了2号路由器,与此同时3号路由器也将路由表发给了2号路由器,此时2号路由器中就包含了两个临近路由器的路由信息:
此时2号路由器将自己的路由表又发给3号路由器,此时3号路由器中也就有了1号路由器的路由记录:
随着一段时间路由器相互之间更新,很快整个自治系统重每个路由器都包含整个自治系统的网络的路由最佳记录。
此时再次提出疑问:对于路由表之间如何进行更新?每一个表项理由最短距离怎么计算?
- 这些问题在最短距离算法中会有解释。
5.3.1、距离向量算法(实现过程)
最短距离如何得到或者说更新的?每一个表项中最短距离以及下一条怎么填入?
对于路由器之间交换信息的实际就是RIP报文。
距离向量算法实现过程:
1、修改相邻路由器发来的RIP报文中所有表项。
即:对地址为X的相邻路由器发来的RIP报文,修改此报文中的所有项目,把"下一跳"字段中的地址改为X,并把所有"距离"字段+1。
2、对修改后的RIP报文中的每一个项目进行下面步骤(同样针对上图X路由器更新表项到R1路由器):
(1)R1路由表中**若是没有Net3,则把该表项直接填入R1路由表(**距离+1,更新下一条的路由器为发送路由表项方)。
(2)R1路由表中若是有Net3,则查看下一条路由器地址:
- 若是下一跳是X,那么直接用收到的项目表项替换源路由表中的项目。(更新发过来的一定是最新的最近距离)
- 若是下一条不是X,原来距离比从X走的距离远则跟更新,否则不作处理。
3、若180s还没收到相邻临近路由器X的更新路由表,则把X记录为不可达的路由器,此时将该对应距离设置为16。
4、返回(就是循环一下,之后继续隔30s进行更新,直到全部达到收敛为止)
距离向量练习题1
题目:
解析:R4将自己的路由表发送给了R6,此时我们首先对传来的路由表中表项里的下一条路由器修改为R4,接着距离都+1,此时R4传来的路由表更新为如下:
此时我们尝试将这个修改过后的路由表来进行合并到R6的路由表中:
①由于R6中没有目的网络Net1的情况,所以会直接增加一条记录到路由表中。
②由于目的网络以及下一条路由器相同,此时拿最新传来的距离5覆盖掉原先路由表中距离为4的。
③传来目的网络一致,下一条路由器不相同,并且新传来的路由表表项记录距离为2,距离更短,此时就直接替换原来的路径。
距离向量练习题2
题目:
解析:我们按照下面方式来进行列举每个路由器到达指定路由器的最短距离+延迟时间,接着从找到每组不同路由器到达指定同一个路由器的最短路径即可确定答案。
注意点:对于其中C路由器出发通过B、D、E路由器到达自己本身我们应该设置其距离为0。
5.3.2、RIP协议的报文格式
其中首部+路由部分塞入到了UPD用户数据报当中,接着加上UDP首部称为UDP数据报,
所属层:RIP是应用层协议,使用UDP传送数据。
注意点:一个RIP报文最多可以包括25个路由,如超过(如有50个多个路由,就需要拆成两个发送),必须再用一个RIP报文传输。
5.3.3、RIP好消息传得快,坏消息传的慢(正常情况、错误情况案例)
RIP特点:当网络出现故障时,要经过比较长的时间(例如数分钟)才能将此消息传送到所有的路由器,“慢收敛”。
正常情况如下:
故障情况:
若是此时R1路由器临近的网1出现了故障,那么此时R1路由器中对于到达网1的距离会被设置为16:
此时由于路由器之间交换数据的规则可能需要30秒之后才能更新给R2,对于R2当前路由表中记录的是通过通过2跳到达网1的路由器记录更新还在,此时R2正好在这30秒内将这条能够到达网1的路由发送给了网2:
- 注意:此时R2并不知道R1出了故障。
此时R1对于到达网1就同样也就更新距离为3(将错就错):
R1收到R2的更新报文之后,误以为可经过R2到达网1,于是更新自己的路由表,说"R1路由器可经过R2到达网1,距离为3",接着30秒到了之后将此更新信息发给R2:
R2收到以后也进行更新自己的路由表为"1,4,R1",表明"我到网1距离是4,下一跳经过R1"。
接着循环往复,不断更新到最后如下最终到达网1的距离都是16表示不可达为止:
核心:对于某个网络出现故障,因为部分路由器没有及时更新已经认为是可到达的,此时就会出现来回交换的问题,导致最终距离都增大到了16。
最终效果:若是一个路由器发现了更短的路由就会出传的很快,若是坏消息传的慢(不可达情况,脏更新传递)。
脑图时刻
5.4、OSPF协议(网路层协议)
5.4.1、认识开放最短路径优先OSPF协议及特点
开放最短路径优先OSPF协议(OSPF)
:"开放"标明OSPF协议不是受某一家厂商控制,而是公开发表的;"最短路径优先"使用了Dijkstra提出的最短路径算法SPF。
OSPF最主要的特征就是使用分布式的链路状态协议。
OSPF的特点:
①和谁交换?
使用泛洪法向自治系统中所有路由器发送消息,即路由器通过输出端口向所有相邻的路由器发送消息,而每一个相邻路由器又再次将信息发往其所有的相邻路由器。(广播形式)
最终整个区域内所有路由器都得到了这个信息的一个副本。
②交换什么?
发送的信息就与本路由器相邻的所有路由器的链路状态(本路由器和哪些路由器相邻,以及该链路的度量/代价—费用、距离、时延、带宽等)。
表面上是在给相邻的路由器发送消息,实际全网内的路由器都可以收到,并且这里定义衡量的标准并不仅仅只是跳数,包含费用、距离、时延、带宽。
③多久交换?
只有当链路状态发生变化时,路由器才向所有路由器泛洪发送此信息。
- RIP协议每30秒就需要交换一次。
最终,所有的路由器都能够建立一个链路状态数据库,即全网拓扑图。
5.4.2、链路状态路由算法
五个重要类型分组
五个重要类型的分组:
1、每个路由器发现它的邻居节点**【HELLO问候分组】,并了解邻居节点的网络地址**。
- 两个相邻的路由器每隔10s就会发送一个问候分组,就能知道周围有哪些路由器,从而确定周围的哪些临站是可达的。
2、设置它的每个邻居的成本度量(metric)。
3、构造**【DD数据库描述分组】,向邻站给出自己的链路状态数据库当中的所有链路状态项目的摘要信息**。
- 链路状态数据库就是一个全网的拓扑结构图,如果知道了这样一个拓扑结构图,那么这个路由器就会知道全网移动有多少个路由器以及哪些路由器是相连的,代价各自是多少。将自己所知道的信息作为摘要信息放到一个dd数据库的描述分组当中,发个邻站。
4、如果DD分组中的摘要自己都有,则邻站不做处理;如果没有的或者是更新的,则发送【LSR链路状态请求分组】请求自己没有的和比自己更新的信息。
5、收到临近的LSR分组后,发送【LSU链路状态更新分组】进行更新。
6、更新完毕后,邻站返回一个【LSAck链路状态确认分组】进行确认。
路由器链路状态发生变化场景
场景:只要有一个路由器的链路状态发生变化。
1、那么此时会进行泛洪发送【LSU链路状态更新分组】进行更新。
2、更新完毕后,其他站返回一个【LSAck链路状态确认分组】进行确认。
- 到此每一个路由器都会有一个完整的链路状态数据库(完整的全网拓扑结构图)。
3、使用Dijkstra根据自己的链路状态数据库构造到其他节点之间的最短路径。
5.4.3、OSPF区域(四个)
若是自治系统依旧很大,此时可以对自治系统再次进行划分范围为区域。
主要分为两个区域:主干区域、普通区域。
主干区域的标识符为:0.0.0.0,其作用就是用来连通其他在它下面的区域。
四种类别的路由器:
- 第一个路由器:主干当中的路由器叫做
主干路由器
,如主干区域当中的R6、R5,以及图中的R3、R7、R4(对于这三个同时还是有一个称号叫做区域边界路由器
)。 - 第二种路由器:
区域边界路由器
:主要处于两个区域之间交界的位置。 - 第三种路由器:
自治系统边界路由器
,指的是主干路由器当中有一个路由器它是要连到其他的自治系统AS当中。 - 第四种路由器:
区域内部路由器
,在划分的下层路由器当中。
特点:通过分层次划分区域,使得交换信息的种类增多了,使得OSPF协议更加复杂。
好处:使每一个区域内部交换路由信息的通信量大大的减少,因而,OSPF协议就能够使用于规模比较大的自适系统。
5.4.4、OSPF分组情况
以考纲为标准当做是网络层协议、
OSPF分组如下图所示:直接用IP数据报来进行传送
5.4.5、OSPF其他特点
1、每隔30min,要刷新一次数据库中的链路状态。
2、由于一个路由器的链路状态只涉及到与相邻路由器的连通状态,因而与整个互联网的规模并无直接关系。当互联网规模很大的时候,OSPF协议要比距离向量协议RIP好得多。
3、OSPF不存在坏消息传的慢的问题,它的收敛速度很快。
收敛速度的区别:
- RIP协议:与相邻路由器的路由表交换后,首先需要和自己的路由表进行一个对照之后才能够确定一个最短路径。
- OSPF:省去对照哪一步,而是会把手来的所有更新,放入到自己的链路状态数据库当中,接着根据整个链路数据库通过Dijkstra算法来计算出最短路径。【收敛速度最快】
5.5、边界网关协议BGP(应用层协议)
5.5.1、BGP三个关注问题
1、和谁交换?
与其他AS的邻站BGP发言人交换信息。
2、交换什么?
交换的网络可达性的信息,即要到达某个网络所要经过的一系列AS自治系统。
3、多久交换?
与OSPF一致,都是在发生变化时更新有变化的部分。
5.5.2、BGP协议交换信息的过程(以及发言人之间交换路径向量)
工作原理过程:
1、每个自治系统管理员选择至少一个路由器作为该自治系统的"BGP发言人"。
2、一个BGP发言人与其他自治系统中的BGP发言人要交换路由信息,先建立TCP连接。
3、再利用BGP会话交换路由信息。
4、所有BGP发言人都相互交换网络可达性的信息后,各BGP发言人就可以找到到达各个自治系统的较好路由。
BGP发言人交换路径向量:
①自治系统AS2的BGP发言人通知主干网AS1的BGP发言人:要到达网络N1、N2、N3和N4可经过AS2。
②对于主干网AS1也可向地区ISP发出通知:“要到达N5、N6和N7可沿路径(AS1,AS3)”
5.5.3、BGP协议报文格式
过程:一个BGP发言人与其他自治系统中的BGP发言人要交换路由信息,就要先建立TCP连接,即通过TCP传送,然后再此连接上交换BGP报文来建立BGP会话(session),利用BGP会话交换路由信息。
构成组合:BGP协议同样包含报文通用首部+报文主体部分,放入到BGP报文当中,接着加上TCP首部(构成TCP协议),接着我们进入到网络层再包裹添加上IP首部。
说明:BGP是应用层协议,借助TCP传送。
5.5.4、BGP的协议特点
BGP的协议特点:
1、BGP支持CIDR:此时BGP的路由表就包括目的网络前缀、下一条路由器以及到达该目的网络所要经过的各个自治系统序列。
2、BGP在刚刚运行阶段是通过邻站交换整个BGP路由表,但在之后只有在需要发生变化时更新有变化的部分。
- 好处:对于节省网络带宽和减少路由器的处理开销都有好处。
5.5.5、BGP-4的四种报文:
1、OPEN(打开)报文
:用来与相邻区域的另一个BGP发言人建立关系,并认证发送方。
- 由于应用层采用的是TCP连接,所以需要一个连接的建立,能够进行认证发送方。
2、UPDATE(更新)报文
:通告新路径或撤销原路径。
- 一旦有新的路径,或者有这个路径的更新、撤销原来的路径,就需要使用这个update更新报文。
3、KEEPALIVE(保活)报文
:在无UPDATE时,周期性证实邻站的连通性,也作为OPEN的确认。
- 两个相邻的bgp发言人建立连接一段时间后。若是不给彼此之间发送报文若是想要知道对方还是否在线,此时可以使用这个保活报文来用作open报文的确认,是否依旧连接。
4、NOTIFICATION(通知)报文
:报告先前报文的差错,也被用于关闭连接。
- 若是报文有问题可以发送一个通知文本,或者用于关闭TCP连接。
5.5.6、三种路由协议的比较
RIP
:是一种分布式的基于距离向量的内部网关路由选择协议,通过广播UDP报文来交换路由信息。
- 距离向量指的是:跳数。在路由表中包含的就是到达某个网络走的最短路径,下一条路由器在哪里。
OSPF
:是一种内部网关协议,要交换的信息量比较大,应该使报文的长度尽量短,所以不适用传输协议(如UDP或TCP),而是直接采用IP数据报。
- 其中所发送的是本路由器相邻的所有路由器的链路状态。链路状态指的是本路由器和哪些路由器相邻以及它们之间的度量,这个度量并不仅仅是跳数,还有带宽以及其他费用。
BGP
:是一种外部网关协议,在不同的自治系统之间交换路由信息,由于网络环境复杂,需要保证可靠传输,所以采用TCP。
- 基于路径向量算法,每一个路由表当中所包含的信息是某一个网络到达某一个网络如何走的一个自治系统序列。
三个协议比较汇总图如下:
- 交换结点部分:RIP是和本节点相邻的路由器交换信息与BGP相同;OSPF形式上将自己的路由当中的列入状态发送给了邻站,实际这个邻站依旧会把这个路由状态拷贝一个副本转发给它相邻的路由器,看上去就是在进行广播路由器的链路状态。
六、IP组播
学习视频:
- 深入浅出计算机网络 - 4.7.3 在局域网上进行硬件多播
- 01-IP组播基础
6.1、认识三种传输方式
方式一:单播
:单播用于发送数据到单个目的地,且每发送一份单播报文都是用到一个单播IP地址作为目的地址,是一种点对点的传输方式。
方式二:广播
:广播是指发送数据包到同一广播域或子网内的所有设备一种数据传输方式,是一种点对多点传输方式。
- 发送端还是单一的单播IP地址,目的地址则是一个全1的广播地址,会发给局域网当中的所有主机,即使有交换机也会从交换机的端口中转发出去。
问题:单播若是想要给很多个人发送数据包就需要建立很多个单播连接非常占用带宽;广播是直接给局域网中全部主机发送,有时候并不是所有主机要,仅仅只是一部分。
解决方案:产生了比较好的传输方式 多播。
方式三:组播(多播)
:当网络中的某些用户需要特定数据的时候,组播数据发送者仅仅发送一次数据,借助组播路由协议为组播数据包建立组播分发树,被传递的数据到达距离用户端尽可能近的节点后才开始复制和分发,是一种点对多点的方式。
好处:仅仅只会给组播组内的有需求的主机发,并不会在一开始原点就进行复制,而是经过很多路由器,直到马上到了这个局域网时,经过下一个路由器就到局域网了,此时才会在下一个路由器的时候进行一个复制,此时才会分发给这个网络当中的组播组当中的主机。
通俗易懂:例如表白,仅仅只会给有需求的表白,而不是像广播一样一股脑的无脑表白。
6.2、多播在视频服务器的应用
采用单播方式:需要构建90个数据报来发送给90个主机
问题:传输资源占用的带宽比较多,在发送者和每一个接受者之间需要单独的数据信道。
组播方式:组播提高了数据传输效率,减少了主干网出现拥塞的可能性,组播组中的主机可以是在同一个物理网络,也可以来自不同的物理网络(如果有组播路由器的支持)
- 组播路由器:指的是组播协议的路由器。
好处:大大节省了带宽,可以看到最后在进入到最后一个路由器的时候会进行多播给一组中的不同主机。
疑问:在发送的时候如何找到主机?或者说怎么知道这些人是不是在一个组播组?
6.3、IP组播地址
6.3.1、认识IP组播地址
在因特网当中,通信的时候每一个主机都需要有一个全球唯一的IP地址,如果某个主机想要接收某个特定多播组的分组,那么怎样才能够使多播数据报传送到这个主机?
IP组播地址让源设备能够将分组发送给一组设备。属于多播组的设备将被分配一个组播组IP地址(一群共同需求主机的相同标识)。
组播地址范围为:224.0.0.0 — 239.255.255.255(D类地址),一个D类地址表示一个组播组。
- 每一个IP组播地址,只能够作为数据报或者说分组的目的地址,但是不能够作为源地址。
举例:
- 例如很多人看一个主播,那么主播通过组播的方式发给这些主机,此时这些主机都能够看到。
- 反过来若是很多个主播来发送给一台主机,那么此时是不行的,因为在同一时间只能够看一个频道。
组播地址的特点:
1、组播数据报也是"尽最大努力交付",不提供可靠交付,应用于UDP。
2、对组播数据报不会产生ICMP差错报文。
3、并非所有D类地址都可以作为组播地址。
- 部分D类地址有些是不能够随便用的,因为有些地址已经被指派为永久组地址了。
对应组播地址的分类如下,有一部分是被已经永久分配出去了:
6.3.2、两类IP组播(因特网范围、硬件)
两类组播介绍
下图中可以看到将图分为了两个部分,一部分叫做因特网范围内组播,另一种叫做硬件组播。
- 前者只能够在因特网的范围内,也就是没有进入到局域网内的这个范围来进行组播。
- 后者是局域网范围中的组播。
硬件组播详解
在局域网范围中,对于一个主播的数据报,应该怎么给到这些主机。
同单播地址一样,组播IP地址需要相应的组播MAC地址在本地网络中实际传送帧
- 注意:我们的组播地址实际上并不是单单指的是一个主机,所以实际不仅仅需要指明组播IP地址,还需要指明相对应的MAC地址。
组播MAC地址以十六进制值01-00-5E打头,余下的6个十六进制位是根据IP组播组地址的最后23位转换得到的。
- 对于这个十六进制值01-00-5E是因特网号码指派管理局IANA,将自己从IEEE注册管理机构申请到的以太网MAC地址块中从01-00-5E-00-00-00到01-00-5E-FF-FF-FF的多播MAC地址,用于映射IPv4的多播地址。(也就是D类地址)
下图就是对于组播MAC地址余下的6个十六进制相对应映射的IP组播地址:
- D类IP地址:前五位是D类固定的1110,对于中间的5类随意,末尾的23位要对应映射复制给MAC地址。
- 48位以太网地址:01-00-5E固定表示的是多播,其中第8位为1表示的是1。
这样子映射实际是有一些问题的,主要是因为D类IP地址中间的五位不固定,那么由于末尾的23位是直接映射到MAC地址的,那么就可能会有25个IP地址会出现最终映射MAC地址相同的情况,举例如下:
如何解决这种情况呢?
- 下面给出了解决方案,对于映射有多个的情况时,我们就需要再IP层利用软件来进行过滤(对比IP地址),把不是本主机要接收的数据报丢弃。
6.4、IGMP协议与组播路由选择协议
6.4.1、认识IGMP协议
IGMP存在意义:在路由器内部的,所规定的使用的一个协议,对于IGMP协议的存在就是要让这一个连接在局域网上的组播路由器,也就是在这个路由器知道,所连接的局域网是不是还有其他主机加入当前组或者退出组。
组播路由选择协议
:就是在多个路由器之间进行一个路径选择的问题。
网际组管理协议IGMP
:
下图可以看到其中R1、R2、R3、R4全部加入了组播组,实际他们自己本身也是拥有一个全球唯一的IP地址:
- 对于一个主机,若是有多个进程,那么多个进程可能都是组播组的成员,那么一个进程实际就可以有一个组播的IP地址。
路由器可以通过IGMP协议可以判断,若是我收到一个组播组是否要将其发给局域网当中的主机呢?
- 如上图,例如中间网络要发送给组播组一个数据包,此时就需要走r1、r2、r3,并不会发给r4,因为这个r4中所连的局域网当中并没有组播组中的成员。
- 如何避免发给没有主机加入的局域网呢?
- 通过IGMP协议,通过有这样的一个协议可以知道是否要分发给局域网,但是这个IGMP协议并不是知道很详细,不知道这个局域网当中的组播成员个数,只能够让路由器知道是不是有主机或者进程参加了或者说是退出了这个组播组。
6.4.2、IGMP所处协议栈位置
IGMP所处的协议栈位置:其和ICMP都是属于这个网络层协议的上层,都会使用IP数据报来传递报文。
6.4.3、IGMP工作的两个阶段
阶段一:
某主机要加入组播组时,该主机向组播组的组播地址发送一个IGMP报文,声明自己要成为该组的成员。
本地组播路由器收到IGMP报文后,要利用组播路由选择协议把这组成员关系发给因特网上的其他组播路由器。
阶段二:
本地组播路由器周期性会探询本地局域网上的主机,来知道这些主机是否在线(也就是还是组播组的成员)。
只要有一个主机对某个组相应,那么组播路由器就会认为这个组是活跃的,当经过多次探询后没有一个主机相应,那么组播路由器就认为本网络上的没有此组播组的主机,那么也就不会把这组的成员关系发给其他的组播路由器。
- 若是某个组当中已经有一台主机已响应了,那么此时其他的主机就不需要发送一个响应,其目的为:可以抑制一些不必要的通信量。。
注意:组播路由器知道的成员关系只是所连接的局域网中有无组播组的成员,无需知道该组有多少个。
6.4.4、组播路由选择协议
组播过程中,一个组播组中的成员是可以动态变化的,可以突然加入或者突然离开。
组播路由选择协议目的:找到以源主机为根节点的组播转发树。
构造树可以避免在路由器之间兜圈子。对于不同的多播组对应于不同的多播转发树;同一个多播组,对于不同的源点就会有不同的多播转发树。
6.4.5、组播路由协议常使用的三种算法
组播路由协议常使用的三种算法:
①基于链路状态的路由选择。
②基于距离-向量的路由选择。
③协议无关的组播(稀疏/密集)
- 协议无关:指的是在建立转发树的时候,是使用单播数据报和远程路由器来联系,但是并不要求使用相同的一个单播路由选择协议。
- 稀疏和密集:指的是一个组播组中的主机,若是比较分散就是稀疏,若是比较近那么就是密集。
脑图时刻
七、移动IP
7.1、认识漫游
漫游
:对于漫游的过程是需要移动IP的技术,其目的是当我这个手机不管移动到哪里都可以保证原来的IP地址不变,别人依旧能够跟我这个IP地址设备进行通信,因此,我们就会在手机上的原有永久地址基础上,再引入一个转交地址,那么就需要对这两个地址进行管理,此时就需要额外再收取一些费用。
7.2、移动IP的相关概念(专属名词)
移动IP技术是移动节点(计算机/服务器等)以固定的网络IP地址,来实现跨越不同网段的漫游功能,并保证了基于网络IP的网络权限在漫游过程中不发生任何改变。
效果:设备移动,IP不动。
移动节点
:具有永久IP地址的移动设备。
归属代理(本地代理)
:一个**移动结点的永久"居所"**称为归属网络,在归属网络中代表移动节点执行移动管理功能的实体叫做归属代理。
- 归属代理可以理解为一个管家,管理的就是我们的移动节点,移动节点在没有发生移动的时候,最开始在哪个地方就是归属网络,在这个地方管理它并执行一些功能的那么就叫做本地代理归属。实际一个移动节点归属网络当中的一个路由器其实也可以作为一个归属代理。
永久地址(归属地址/主地址)
:移动站点在归属网络中的原始地址。
- 若是移动节点进入到了外地,那么就会进入到一个外部网络,在这个网络当中的一个管家,就是外部代理也可以是这个外部网络中的一个路由器,主要发挥的作用就是帮助移动节点进行正常的通信。
外部代理(外地代理)
:在外部网络中帮助移动节点完成移动管理功能的实体称为外部代理。
转交地址(辅地址)
:可以是外部代理的地址或动态配置的一个地址。
7.3、移动IP的通信过程
生动例子
移动节点爷爷的永久地址一开始就在归属代理中,葫芦娃们想要找爷爷直接可以到归属代理村子中找:
当爷爷被抓走时,那么此时实际爷爷并不在村子里了,葫芦娃首先会去村子里找,此时村长说已经被抓走了此时去就让葫芦娃通过去访问外部代理盘丝洞才能够去传送信息给爷爷:
实际网络应用景例子(转交地址的获取两种方式,三种场景)
一开始主机是在归属代理的归属网络当中,若是想要给这台主机发送数据,那么就需要发送给这个归属网络即可:
此时主机移动到了外部网络当中,就能够获得转交地址:
对于转交地址的获取有两种方式:
- 方式一:被动获得。
- 过程:外部代理会在这样的一个外部网络内广播一个ICMP的报文,那么这个报文里面就会包含这个转交地址,当主机收到之后那么就知道所在的网络外部代理是谁以及外部代理的转交地址是什么。
- 方式二:主动获得。
- 过程:需要主机主动的发送一个广播报文来获得外部代理的一个转交地址。
下面有几种场景:
场景一:主机A刚刚进入外部网络
1、获得外部代理的转交地址(外部代理广播报文,这是被动获取方式)。
2、接着移动节点有了转交地址之后会通过外部代理发送注册报文给到归属代理(其中包含了自己主机的永久地址以及转交地址)。
3、归属代理接收请求,并将移动节点的永久地址和转交地址绑定(以后若是到达归属代理的数据报且要发往移动节点的数据会被封装以隧道方式转发给转交地址),并返回一个注册响应报文。
4、外部代理会接受注册响应,并转发给移动节点。
之后则进行正常通信,此时就可以保证主机A的永久地址不变。
场景二:A移动到了下一个网络之后
1、在新外部代理登记注册一个转交地址。
2、依旧是借助新外部代理给本地代理发送新的转交地址(覆盖旧的)。
3、之后就是进行通信。
场景三:A回到了归属网络
1、主机A向本地代理注销转交地址。
2、按原始方式通信。
八、网络层设备
8.1、路由器
8.1.1、认识路由器
路由器
:是一种具有多个输入端口和多个输出端口的专用计算机,其任务就是转发分组。
路由选择:根据所选定的路由选择协议来构造出路由表,同时经常或定期地和相邻路由器交换路由信息而不断地更新和维护路由表。
- 路由选择协议算法根据RIP协议、OSPF协议等来构造出路由表
交换结构:根据转发表(路由表得来)对分组进行转发。
- 根据路由表的几列属性以及结合主机的网卡特性就可以确定下来一个转发表,这个转发表可以告诉我这一个分组从哪个输出端口输出。
- 注意:①若是收到RIP/OSPF分组等,则将分组送往路由选择处理机。②若是收到数据分组,那么查找转发表并输出。
- 转发VS路由选择:
- 转发:指的是从一个端口输入端口转发到另一个输出端口。
- 路由选择:选择一个合适的路径将一个信息从源站发送到目的主机。
8.1.2、输入端口与输出端口的详细信息
输入端口对收到分组的处理
输入端口对线路上收到分组的处理:
1、首先到物理层进行比特的接收
2、接着进入到数据链路层进行处理,按照链路层的协议来接收这个传送分组的帧,接着将帧头、帧尾去掉交给网络层。
3、进入到网络层①若是收到RIP/OSPF分组等,则将分组送往路由选择处理机。②若是收到数据分组,那么查找转发表并输出。
- 若是目前有很多数据分组到了这个网络层处理这一个模块,就需要进行排队,如第一个分组横在查表,此时第二个数据到来了,第三个到来了会进行等待,那么就会产生一定的时延。
说明:输入端口中的查找和转发功能在路由器的交换功能当中时最重要的。
输出端口对收到分组的处理
输出端口的处理:
网络层阶段:在网络层中会有一个缓冲区,若是第一个分组到达后进行处理,此时第二个、第三个分组同样到达,那么此时会将分组暂存到缓冲区当中,此时这些分组就会产生一定的等待时延。
- 可能会出现的情况:若是路由器分组的速率赶不上分组进入队列的速率,那么队列的存储空间最终必定会减少到0,这就会使得后面再进入到队列的分组由于没有存储空间而只能够被丢弃。
- 造成分组丢失的重要原因: 路由器中的输入或输出队列产生溢出。
对于后续数据链路就是增加帧头、帧尾,物理层就是最终通过比特流形式发送出去。
8.2、三层设备的区别
路由器
:可以互联两个不同网络层协议的网段。
网桥
:可以互联两个物理层和链路层不同的网段。
集线器
:不能互联两个物理层不同的网段。
注意:并不是任何层次的设备都能够互联它所在的层次以及以下层次不同协议的网段,错误,集线器就不能够互联两个物理层不同的网段。
对于能否隔离冲突域与广播域的对比如下图:
8.3、路由表与路由转发
路由表
:根据路由选择算法得出。
- 主要用途:路由选择,总是使用软件来实现。
默认路由
:指的是局域网当中一个具体路由器,子网掩码全0即可。- 路由表主要是选择下一条要走哪个路由器或者下一跳IP地址是什么。
转发表
:由路由表得来,可以使用软件实现,也可以使用特殊的硬件来实现。转发表必须包含完成转发功能所必须必须得信息,在转发表中的每一行必须包含从要到达的目的网络到输出端口和某些MAC地址信息的映射。
- 还需要结合主机的一些具体信息来确定输出的端口
整理者:长路 时间:2023.8.3-6