事前提一嘴
室友考完研了,下一年就是我了,真不想和他们一起考,压力太大了,这里分享一点笔记吧
采用王道考研的书以及视频,去掉了一些书上的废话,加上了视频中的重点,最后总结出来的
如有侵权,即可删除
网络层
考纲内容
- 网络层的功能
异构网络互连;路由与转发;SDN基本概念;拥塞控制 - 路由算法
静态路由与动态路由;九零-向量路由算法;链路状态路由算法;层次路由 - IPv4
IPv4分组;IPv4地址与NAT;子网划分与子网掩码、CIDR、路由聚合、ARP、DHCP与ICMP - IPv6
IPv6的主要特点;IPv6地址 - 路由协议
自治系统;域内路由域域间路由;RIP路由协议;OSPF路由协议;BGP路由协议 - IP组播
组播的概念;IP组播地址 - 移动IP
移动IP的概念;移动IP通信过程 - 网络层设备
路由器的组成和功能;路由表与路由转发
本章是重中之重,出综合题的概率很大。其中IPv4以及路由的相关知识是核心
网络层的功能
网络层的主要任务是**把分组从源端传到目的端
,为分组交换网上的不同主机提供通信服务
网络层传输单位是数据报
**
功能:
1、路由选择于分组转发
2、异构网络互连
3、拥塞控制
异构网络互联
网络层所要完成的任务之一就是使异构网络实现互连
网络互连是指将两个以上的计算机网络,通过一定的办法,用一些中间设备(又称中继设备)相互连接起来,以构成更大的网络系统。根据所在的层次,中继系统分为以下4种:
物理层中继系统:转发器,集线器
数据链路层中继系统:网桥或交换机
网络层中继系统:路由器
网络层以上的中继系统:网关
使用**物理层或数据链路层
的中继系统时,只是把一个网络扩大了,而从网络曾的角度看,它仍然是同一个网络
,一般不称为网络互连
**
因此网络互连通常是指**用路由器进行网络互连和路由选择
**
虚拟互连网络也就是逻辑互连网络,即互连起来的各种物理网络的异构性本来是客观存在的,但是通过IP协议就可以使这些性能各异的网络在网络层上看起来好像是一个统一的网络
这种使用IP协议的虚拟互连网络可简称为IP网络
好处:当IP网上的主机进行通信时,就好像在一个单个网络上通信一样,而看不见互连的各网络的具体异构细节(如具体的编址方案、路由选择协议等)
路由与转发
路由器主要完整两个功能:
- 路由选择(确定哪一条路径)
按照复杂的分布式算法,根据从各组**相邻路由器
所得到的关于整个网络拓扑的变化情况,动态地改变所选择的路由
**
根据特定的路由选择协议构造出路由表,同时**经常或定期地和相邻路由器交换路由信息而不断地更新和维护路由表
** - 分组转发(当一个分组到达时所采取的动作)
路由器**根据转发表将用户的IP数据报从合适的端口转发出去
**
处理通过路由器的数据流,关键操作是**转发表查询、转发及相关的队列管理和任务调度等
**
路由表是根据路由选择算法得出的,而转发表是从路由表得出的
转发表的结构应当使查找过程最优化,路由表则需要对网络拓扑变化的计算最优化
SDN的基本概念
网络层的主要任务是转发和路由选择
可以将网络层抽象地划分为**数据平面(转发层面)和控制平面
**
- 数据平面:
实现了数据处理中各种具体处理转发过程
数据平面执行的主要功能是**根据转发表进行转发
**,这是路由器的本地动作 - 控制平面:用于控制和管理网路协议的运行,
实现了路由选择功能
,如OSPF协议、RIP协议、BGP协议。分为传统方法(每路由器法)与SDN法
传统方法:
路由选择算法运行再每台路由器中
,并且每台路由器中都包含转发和路由选择两种功能
实现方法:在一台路由器中的路由选择算法与其他路由器中的路由选择算法通信(通过交换路由选择报文),计算出路由表和转发表
数据平面和控制平面都在同一个路由器内
控制平面中的路由选择处理器:
路由选择处理器执行控制平面功能
。在传统的路由器中,它执行路由选择协议,维护路由选择表与关联链路状态信息,并为该路由计算转发表
SDN法:
SDN即**软件定义网络
,采用集中式的控制平面和分布式的数据平面
**,两个平面相互分离
控制平面从路由器物理上分离
。路由器仅实现转发,远程控制器
掌握各主机和整个网络的状态,为每个分组计算出最佳路由
,通过**Openflow协议
将转发表下发给路由器
因为计算转发并与路由器交互的控制器是用软件实现的,所以网络是软件定义的
**
路由器的工作很单纯,即**收到分组、查找转发表、转发分组
**
控制平面中的路由选择器:
在SDN通信中,路由选择处理器负责与远程控制器通信,目的是**接收远程控制器计算的转发表项
**
SDN的可编程性**使得网络具有很好的编程性
**
- 对上层应用的开发者,SDN提供的编程接口称为**
北向接口
**
提供了一系列丰富的API,可以在此基础上设计自己的应用,而**不必关心底层的硬件细节
** - SDN控制器和转发设备建立双向会话的接口称为**
南向接口
**
通过不同的南向接口协议,SDN控制器就**可兼容不同的硬件设备
**,同时可以在设备中实现上层应用的逻辑 - SDN控制器之间的通信接口称为东西向接口
用于增强整个控制平面的可靠性和可拓展性
具体控制平面包含两部分:
- SDN控制器:
维护准确的网络状态信息
(远程链路、路由器和主机的状态)
为运行在控制平面中的网络控制应用程序提供这些信息(逻辑集中,在多台服务器上实现)
控制器又分为三个层次:
1、对于网络控制应用程序的接口:
SDN控制器通过**北向接口
与网络控制应用程序交互
允许网络控制应用程序在状态管理层之间读写网络
2、网络范围状态管理层:
由SDN控制平面作出的最终控制决定,将要求控制器具有有关网络的主机、链路层最新状态信息
3、通信层
SDN控制器与受控网络设备之间的通信(OpenFlow协议
),包含南向接口
** - 网络控制应用程序(路由选择器):
根据SDN控制器提供的方法,这些应用程序通过这些方法能够监视、编程和控制下面的网络设备
优点:
1、全局集中式控制和分布式高速转发,既利于控制平面的全局优化,有利于高性能的网络转发
2、灵活可编程与性能的平衡,控制和转发功能分离后使得网络可以由专有的自动化工具以编程方式配置
3、降低成本,控制和数据平面分离后,尤其是在使用开放的接口协议后,就实现了网络设备的实在与功能软件的开发相分离,从而有效降低了成本
缺点:
1、安全风险,集中管理容易受攻击,如果崩溃,整个网络会收到影响
2、瓶颈问题,原本分布式的控制平面化后,随着网络规模扩大,控制器可能成为网络性能的瓶颈
假定要在SDN控制平面中实现一个新型路由选择协议,会在那个层次中实现该协议?
网络范围状态管理层
因为在这一层能获得有关网络的主机、链路、交换机和其他SDN控制设备的最新状态信息,可以根据这些信息的基础上实现新型路由选择协议,并通知给控制器落地执行
谁是从控制器跨越南向接口发送的这些报文的接收者?谁是跨越北向接口从控制器发送的这些报文的接收者?
1、受控网络设备(路由器)
2、网络控制应用程序
拥塞控制
在通信子网中,因出现过量的分组而引起网络性能性能下降的现象称为拥塞
判断网络是否进入拥塞的方法:观察网络的吞吐量与网络负载的关系
- 如果随着**
网络负载的增加
,网络的吞吐量明显小于正常的吞吐量
,那么网络可能已进入轻度拥塞
**状态 - 如果网络的**
吞吐量随着网络负载的增大而下降
,那么网络就可能已进入拥塞状态
** - 如果**
网络负载继续增大
,而网络的吞吐量下降到零
,那么网络就可能已进入死锁状态
**
拥塞控制主要解决的问题
如何获取网络中发生拥塞的信息,从而利用这些信息进行控制,以避免由于拥塞而出现分组的丢失,以及严重拥塞而产生网络死锁的现象
拥塞控制作用
确保子网能够承载所达到的流量
这是一个全局性的过程,涉及各方面的行为:主机、路由器及路由器内部的转发处理过程等
拥塞控制的方法
开环控制
(静态预防
)
在设计网络时先将有关发生拥塞的因素考虑周到,力求网络在工作时不产生拥塞
手段包括:确定何时可接收新流量、何时可丢弃分组及丢弃哪些分组、确定何种调度策略等
在做决定时不考虑当前网络的状态
闭环控制
(动态监测
)
事先不考虑有关发生拥塞的各种因素,采用监测网络系统去建是,及时检测哪里发生了拥塞,然后将拥塞信息传到合适的地方,一遍调整网络系统的运行,并解决出现的问题
流量控制和拥塞控制的区别
流量控制往往指在发送端和接收端之间的点对点通信量的控制
要做的是抑制发送端发送数据的速率,以便使接收端来得及接收
拥塞控制必须确保通信子网能够传送待传送的数据,是一个全局性的问题,涉及网络中所有的主机、路由器及导致网络传输能力下降的所有因素
路由算法
静态路由与动态路由
能否随网络的通信量或拓扑自适应地进行调整变化来划分,路由算法可分为两类:
静态路由算法
(非自适应路由算法)
管理员手工配置的路由信息
当网络的拓扑结构或链路的状态发生变化时,需要手工去修改路由表
优点:简便、开销较小,适用于简单的小型网络
缺点:路由更新慢,不适用于大型网络
动态路由算法
(自适应路由算法)
路由器彼此交换信息,按照一定的算法优化出路由表项
而这些路由信息会在一定时间间隔里不断更新,以适应不断变化的网络,随时获得最佳的寻路效果
优点:路由更新快、适用于大型网络,能及时响应链路费用或网络拓扑变化,有助于流量控制
缺点:算法复杂,会增加网络的负担
动态路由算法可分为两类:距离-向量路由算法、链路状态路由算法
距离-向量路由算法(RIP算法)
距离-向量路由算法中,所有结点都定期地将它们的整个路由选择表传送给所有与之直接相邻的节点
路由选择表包含:每条路径的目的地
(另一个结点)、路径的代价
(距离)
所有结点都必须参与就向量交换,以保证路由的有效性和一致性
即:所有结点都监听从其他结点传来的路由选择更新信息,并在下列情况下更新它们的路由选择表:
- 被通告一条新的路由,该路由在本结点的路由表中**
不存在
,此时本地系统加入这条新的路由
** - 发来的路由信息中有一条到达某个目的地的路由,该路由与当前使用的路由相比,
有较短的距离
。这种情况下,就用经过发送路由信息的结点的新路由**替换路由表中到达那个目的地的现有路由
**
实质:迭代计算一条路由中的站段数或延迟时间,从而得到到达一个目标的最短通路。要求每个结点在每次更新时都将它的全部路由表发送给所有相邻结点
缺点:更新报文的大小与通信子网的结点个数成正比
,在通信子网上传送的路由选择信息的数量很容易变得非常大
链路状态路由算法(OSPF算法)
要求每个参与该算法的结点都具有完全的网络拓扑信息
任务:
1、主动测试所有邻接结点的状态
2、定期地将链路状态传播给所有替他结点
在一个链路状态路由选择中,一个结点检查所有直接链路的状态,并**将所得的状态信息发送给网上的所有其他结点
**,而不是仅送给那些直接相连的结点。每个结点都用这种方式从网上所有其他的结点接收包含直接链路状态的路由选择信息
每当链路状态报文到达时,路由结点便使用这些状态信息去更新自己的网络拓扑和状态“视野图”,一旦链路状态发生变化,结点就对更新的网络图利用Dijkstra最短路径算法重新计算路由,从单一的源出发计算到达所有结点的最短路径
特征:
- 向本自治系统中所有路由器发送信息,而每个相邻路由器又将此信息发往其所有相邻路由器(但不再发给刚刚发来信息的那个路由器)
- 发送的信息是与路由器相邻的所有路由器的链路状态,但这只是路由器所知道的部分信息
- 只有当链路状态发生变化时,路由器才向所有路由器发送此信息
优点:
1、每个路由结点都使用同样的原始状态数据独立地计算路径,而不依赖中间结点的姐u但
2、链路状态报文不加改变地传播,更易于查找故障
3、由于链路状态报文仅运载来自单个结点关于直接链路的信息,其大小与网络中的路由结点数目无关,因此算法较距离-向量路由算法有更好的规模可伸展性
距离-向量路由算法与链路状态路由算法的比较
距离-向量路由算法中,每个结点仅与它的直接邻居交谈,它为它的邻居提供从自己到网络中所有其他结点的最低费用估计
链路状态路由算法中,给个结点通过广播的方式与所有其他结点交谈,但它仅高速它们直接相连的链路的费用
相较之下,前者可能遇到路由环路等问题
层次路由
当网络规模扩大时,路由器的路由表成比例的增大。则不仅会消耗更多的路由器缓冲区空间,而且需要用更多CPU时间来扫描路由表,用更多的带宽来交换路由状态信息。因此**路由选择必须按照层次的方式进行
**
自治系统AS
在单一的技术管理下的一组路由器,而这些路由器使用一种AS内部的路由选择协议和共同的度量以确定分组在该AS内的路由,同时还使用一种AS之间的路由协议以确定在AS之间的路由
一个AS内的所有网络都属于一个行政单位来管辖
一个自治系统的所有路由器在本自治系统内都必须联通
路由选择协议划分为两大类:
- 内部网关协议(IGP)
一个自治系统内部所使用的路由选择协议
也称为域内路由选择
协议有RIP、OSPF等 - 外部网关协议(EGP)
自治系统之间所使用的路由选择协议
也称为域间路由选择
用在不同自治系统的路由器之间交换路由信息,并负责为分组在不同自治系统之间选择最优的路径
协议有BGP
采用分层次划分区域的方法**会使交换信息的种类增多
,但能使每个区域内部交换路由信息的通信量大大减小
**
IP数据报
TCP/IP协议栈:
其中网络层可见主要协议有**ARP、IP、ICMP、IGMP
**
ARP协议为IP协议服务,而IP协议为ICMP、IGMP协议服务
IP数据报格式
一个IP分组由首部和数据部分组成
首部前一部分的长度固定,共20B,是所有IP分组必须具有的
首部固定部分的后面是一些可选字段,其长度可变,用来**提供错误检测及安全等机制
**
IP首部的部分重要字段含义如下:
- 版本。指IP协议的版本,目前广泛使用的版本号为4
- 首部长度。占4位,可以标识的最大十进制数是15。
以32位(4B)为单位
,最大值为60B(15x4B) - 区分服务。占8位,指示期望获得哪种类型的服务(如强调数据报的优先级)
- 总长度。占16位。指**
首部和数据之和的长度
**,单位为字节,因此数据报的最大长度为 216 - 1 = 65535B
- 标识。占16位。同一数据的分片使用同一标识。它是一个计数器,每产生一个数据报就加1,并赋值给标识字段。当一个**
数据报的长度超过网络的MTU时,必须分片
,此时每个数据报片段都复制一次标识号,以便能正确重装原来的数据报
** - 标志。占3位。只有两位有意义。标志字段的最低为为MF,
MF = 1表示后面还有分片,MF = 0表示最后一个分片
。标志字段中间的一位时DF,只有当DF = 0时才允许分片
- 片偏移。占13位。它**
指出较长的分组在分片后,某片在原分组中的相对位置
。片偏移以8个字节为偏移单位
**。除最后一个分片外,每个分片的长度一定时8B的整数倍
- 生存时间(TTL)。占8位。数据报在网络中可通过的路由器数的最大值,标识分组在网络中的寿命,以确保分组不会永远在网络中循环。路由器在转发分组前,TTL减1。若TTL被减为0,则该分组必须丢弃
- 协议。占8位。指出此分组携带的数据使用何种协议,即分组的数据部分应上交给哪个协议进行处理,如TCP、UDP等。值为6表示TCP,值为17表示UDP
- 首部校验和。占16位。
只校验分组的首部,而不校验数据部分
- 源地址宇段。占4B(32位),标识发送方的IP地址
- 目的地址字段。占4B(32位),标识接收方的IP地址
- 可选字段(可变)。占0~40B,用于支持排错、测量以及安全等措施
- 填充字段(可变)。全0,把首部补充成4B的整数倍
注:在IP数据报首部中有三个关于⻓度的标记,首部⻓度、总⻓度、片偏移
,基本单位分别为**4B、1B、8B
**
IP数据报分片
最大传送单元MTU:链路层数据帧可封装数据的上限
以太网的MTU是1500字节
当所传送的数据报长度超过某链路的MTU值时,就需要进行**分片
**操作
分片操作与数据报中的标识、标志与片偏移密切相关
注:片偏移是以8字节为单位
。片偏移的数值应当在实际数据位置的基础上除以8字节
例如:
一个⻓4000B的IP数据报(首部20B,数据部分3980B)到达一个路由器,要转发到一条MTU为1500B的链路上
这意味着原始数据报中的3980B数据必须被分配到3个独立的片中(每片也是一个IP数据报)
假定原始数据报的标识号为777,那么分成的3片如图所示。可以看出,由于偏移值的单位是8B,除最后一个片外,其他所有片中的有效数据载荷都是8的倍数
IPv4
IPv4分组
IPv4是现在普遍使用的IP协议。IP协议定义数据传送的基本单元:IP分组及其确切的数据格式
IP协议的规则:指明分组如何处理、错误怎么控制
IP协议还包含非可靠投递的思想,以及与此关联的分组路由选择的思想
IPv4地址与NAT
IPv4地址
连接到因特网上的每台主机(或路由器)都分配一个**32位(4B)
的全球唯一标识符,即IP地址
由网络号和主机号两部分组成,即IP地址:: = {<网络号>,<主机号>}
**
如:
网络号标志主机(或路由器)所连接到的网络
一个网络号在整个因特网范围内必须是唯一的。主机号标志该主机(或路由器)
一台主机号在它前面的网络号所指明的网络范围内必须是唯一的
由此可⻅,一个IP地址在整个因特网范围内是唯一的
分类的IP地址
特殊IP地址
私有IP地址(可重用地址)
路由器对目的地址是私有IP地址的数据报一律不进行转发
私有IP地址只用于LAN,不用于WAN连接
私有IP地址允许被LAN重复使用,有效地解决了IP地址不足的问题
私有IP地址**不能直接用于因特网
,必须通过网关利用NAT把私有IP地址转换为合法的全球IP地址
**后才能使用
常用的三种类别IP地址的使用范围⻅表
A类地址可用的网络数为 27 - 2,减2的原因:
1、网络号字段全为0的IP地址是保留地址,意思是“本网络”
2、网络号为127的IP地址是环回自检地址
IP地址的特点
- IP地址是一种**
分等级的地址结构
,每个IP地址都由网络号和主机号
两部分组成
分级的好处:
1、IP地址管理机构在分配IP地址时只分配网络号,而主机号则由得到该网络的单位自行分配,方便了IP地址的管理
**
2、路由器仅根据目的主机所连接的网络号来转发分组(而不考虑目标主机号),从而**减小了路由表所占的存储空间
** - IP地址是标志一台主机(或路由器)和一条链路的接口。当一台主机同时连接到两个网络时,该主机就必须同时具有两个相应的IP地址,每个IP地址的网络号必须与所在网络的网络号相同,且这两个IP地址的主机号是不同的
因此**IP网络上的一个路由器必然至少应具有两个IP地址(路由器每个端口必须至少分配一个IP地址)
** 用转发器或桥接器(网桥等)连接的若干LAN仍然是同一个网络(同一个广播域)
因此该LAN中所有主机的IP地址的**网络号必须相同,但主机号必须不同
**- 在IP地址中,所有分配到网络号的网络(无论是LAN还是WAN)都是平等的
- 在**
同一个局域网上的主机或路由器的IP地址中的网络号必须是一样的
**
网络地址转换(NAT)
网络地址转换(NAT):在**专用网
连接到因特网
的路由器上安装NAT软件,将专用网络地址转换为公用地址
,从而对外隐藏内部管理的IP地址
**
安装了NAT软件的路由器称为NAT路由器,使得**整个专用网只需要一个外部全球IP地址就可以与因特网连通
**
由于专用网本地IP地址是可重用的,所以NAT大大**节省了IP地址的消耗
**
同时,它隐藏了内部网络结构,从而**降低了内部网络受到攻击的⻛险
**
使用本地地址的主机和外界通信时,NAT路由器**使用NAT转换表进行本地IP地址和全球IP地址的转换
**
NAT转换表中存放着**{本地IP地址:端口}
到{全球IP地址:端口}
**的映射
通过这种映射方式,可让多个私有IP地址映射到一个全球IP地址
NAT路由器的工作原理:
- 假设用户主机**
10.0.0.1:3345
向Web服务器128.119.40.186:80
**发送请求 - NAT路由器收到IP分组后,为该IP分组生成一个新端口号5001,将IP分组的源地址更改为**
138.76.29.7
(即NAT路由器的全球IP地址),将源端口号更改为5001
**
NAT路由器在NAT转换表中增加一个表项 - Web服务器响应的IP分组的目的地址是NAT路由器的全球IP地址,目的端口号是5001
- 响应分组到达NAT路由器后,通过NAT转换表将IP分组的目的IP地址更改为**
10.0.0.1
,将目的端口号更改为3345
**
注:普通路由器在转发IP数据报时,不改变其源IP地址和目的IP地址;NAT路由器在转发IP数据报时,一定要更换其IP地址(转换源IP地址或目的IP地址)
普通路由器仅工作在网络层
,而**NAT路由器转发数据报时需要查看和转换传输层的端口号
**
子网划分与子网掩码、CIDR
分类的IP地址的弱点:
- IP地址空间的利用率有时很低
- 两级IP地址不够灵活
子网划分
子网划分:在IP地址中增加了一个**子网号
**字段,使两级IP地址变成了三级IP地址
子网划分基本思路:
- 子网划分纯属一个单位内部的事情。单位**
对外仍然表现为一个网络号
** - 从主机号借用若干比特作为子网号,当然主机号也就相应减少了相同的比特
三级IP地址的结构如下:IP地址 = {<网络号>,<子网号>,<主机号>}
- 凡是从其他网络发送给本单位某台主机的IP数据报,仍然是根据IP数据报的目的网络号
先找到连接到本单位网络上的路由器
然后该路由器在收到IP数据报后,按目的网络号和子网号找到目的子网
最后把IP数据报直接交付给目的主机
注:
1、划分子网只是把IP地址的主机号这部分进行再划分,而不改变IP地址原来的网络号。因此,从一个IP地址本身或IP数据报的首部,无法判断源主机或目的主机所连接的网络是否进行了子网划分
2、对分类的IPv4地址进行子网划分时,子网号不能为全 1 或全 0 。但随着CIDR的广泛使用,现在全 1 和全 0 的子网号也可使用,但一定要谨慎使用,要弄清你的路由器所用的路由选择软件是否支特全 0 或全 1 的子网号
3、论是分类的IPv4地址还是CIDR,其子网中的主机号为全 0 或全 1 的地址都不能被指派。子网中主机号全 0 的地址为子网的网络号,主机号全 1 的地址为子网的广播地址
子网掩码
为了告诉主机或路由器对一个A类、B类、C类网络进行了子网划分,使用子网掩码来表达原网络中主机号的借位
子网掩码是一个与IP地址相对应的、⻓32bit的二进制串,它由一串1和跟随的一串0组成
1对应于IP地址中的网络号及子网号
0对应于主机号
计算机只需将IP地址和其对应的子网掩码逐位**与
**(逻辑AND运算),就可得出相应子网的网络地址
所有的网络都必须使用子网掩码
,如果一个网络未划分子网,那么就采用默认子网掩码
A、B、C类地址的默认子网掩码分别为255.0.0.0、255.255.0.0、255.255.255.0
在使用子网掩码的情况下:
- 一台主机在设置IP地址信息的同时,必须设置子网掩码
- 同属于一个子网的所有主机及路由器的相应端口,必须设置相同的子网掩码
- 路由器的路由表中,所包含信息的主要内容有**
目的网络地址、子网掩码、下一眺地址
**
无分类编址CIDR
无分类域间路由选择CIDR:
1、消除了传统的A、B、C类地址以及划分子网的概念
2、融合子网地址与子网掩码,方便子网划分
大幅度提高IP地址空间的利用率,减小路由器的路由表大小,提高路由转发能力
CIDR的记法:IP = {<网络前缀>,<主机号>}
CIDR还使用**斜线记法(或称CIDR记法)
,即IP地址/网络前缀所占比特数
**
其中,网络前缀所占比特数对应于网络号的部分,等效于子网掩码中连续1的部分
如,对于**128.14.32.5/20
这个地址,它的掩码是20个连续的1和后续12个连续的0
**(共32位)
CIDR地址块
:网络前缀都相同的连续IP地址组成
CIDR地址块中的**地址数一定是2的整数次幂
,实际可指派的地址数通常为 2N - 2 ,N表示主机号的位数
**,主机号全0代表网络号,主机号全1为广播地址
构成超网
构成超网(路由聚合)
:将多个子网聚合成一个较大的子网
使得路由表中的一个项目**可以标识多个原来传统分类地址的路由
**
有利于**减少路由器之间的信息的交换,从而提高网络性能
**
方法:将网络前缀缩短(所有网络地址取交集)
最⻓前缀匹配(最佳匹配)
使用CIDR时,路由表中的每个项目由“网络前缀”和“下一 跳地址”组成,在查找路由表时可能会得到不止一个匹配结果(跟网络掩码按位相与
)
此时,应当**从匹配结果中选择具有最⻓网络前缀的路由
**
网络前缀越⻓
,其**地址块就越小
,因而路由就越具体
**
CIDR查找路由表的方法:为了更加有效地查找最⻓前缀匹配,通常将无分类编址的路由表存放在一种层次式数据结构中,然后自上而下地按层次进行查找。这里最常用的数据结构就是二叉线索
网络层转发分组的过程
分组转发都是**基于目的主机所在网络
**的,这是因为互联网上的网络数远小于主机数,可以极大地压缩转发表的大小
在转发表中,每条路由必须有下面两条信息:(目的网络,下一跳地址)
转发表中还可以增加两种特殊的路由:
- 主机路由:对特定目的主机的IP 地址专⻔指明一个路由,以方便网络管理员控制和测试网络
若特定主机的IP地址是a.b.c.d,则转发表中对应项的目的网络是a.b.c.d/32
/32表示的子网掩码没有意义,但这个特殊的前缀可以用在转发表中 - 默认路由:特殊前缀0.0.0.0/0表示默认路由,全0掩码和任何目的地址进行按位与运算,结果必然为全0,即必然和转发表中的0.0.0.0/0相匹配
只要目的网络是其他网络(不在转发表中),就一律选择默认路由
路由器执行的分组转发算法如下
- 从收到的IP分组的首部提取目的主机的IP地址D(即目的地址)
- 若查找到特定主机路由(目的地址为D),就按照这条路由的下一眺转发分组
否则从转发表中的下一条(即按前缀⻓度的顺序)开始检查,执行步骤3 - 将这一行的子网掩码与目的地址D进行按位与运算
若运算结果与本行的前缀匹配,则查找结束,按照“ 下一跳”指出的进行处理(或者直接交付本网络上的目的主机,或通过指定接口发送到下一跳路由器)
否则,若转发表还有下一行,则对下一行进行检查, 重新执行步骤3。否则,执行步骤4 - 若转发表中有一个默认路由,则把分组传送给默认路由
否则,报告转发分组出错
注:
得到下一跳路由器的IP地址后,并不是直接将该地址填入待发送的数据报,而是将该IP地址转换成MAC地址(通过ARP),将此MAC地址放到MAC帧首部中,然后根据这个MAC地址找到下一跳路由器
在不同网络中传送时,MAC帧中的源地址和目的地址要发生变化, 但是网桥在转发帧时,不改变帧的源地址,请注意区分
ARP、DHCP与ICMP
IP地址与硬件地址
IP地址是网络层使用的地址,它是分层次等级的
硬件地址是数据链路层使用的地址(MAC地址),它是平面式的
在网络层及网络层之上使用IP地址,IP地址放在IP数据报的首部,而MAC地址放在MAC帧的首部
通过数据封装,把IP数据报分组封装为MAC帧后,数据链路层看不⻅数据报分组中的IP地址
由于路由器的隔离,IP网络中无法通过广播MAC地址来完成跨网络的寻址,因此在网络层只使用IP地址来完成寻址
寻址时,每个路由器依据其路由表(依靠路由协议生成)选择到目标网络(即主机号全为0的网络地址)需要转发到的下一跳(路由器的物理端口号或下一网络地址)
而IP分组通过多次路由转发到达目标网络后,改为在目标LAN中通过数据链路层的MAC地址以广播方式寻址
这样可以提高路由选择的效率
- 在IP层抽象的互联网上只能看到IP数据报
- 虽然在IP数据报首部中有源IP地址,但路由器只根据目的IP地址进行转发
- 在局域网的链路层,只能看⻅MAC帧
IP数据报被封装在MAC帧中,通过路由器转发IP分组时,IP分组在每个网络中都被路由器解封装和重新封装,其MAC帧首部中的源地址和目的地址会不断改变。这也决定了无法使用MAC地址跨网络通信 - 尽管互连在一起的网络的硬件地址体系各不相同,但IP层抽象的互联网却屏蔽了下层这些复杂的细节
注:路由器由于互连多个网络,因此它不仅有多个IP地址,也有多个硬件地址
地址解析协议(ARP)
无论网络层使用什么协议,在实际网络的链路上传送数据帧时,最终必须使用硬件地址
地址解析协议(ARP)完成IP地址到MAC地址的映射
ARP表:每台主机都设有一个**ARP高速缓存
,用来存放本局域网上各主机和路由器的IP地址到MAC地址的映射表
**
ARP工作在网络层,其**工作原理
**如下
- 主机A欲向本局域网上的某台主机B发送IP数据报时
- 先在其ARP高速缓存中查看有无主机B的IP地址
- 如果有,就可查出其对应的硬件地址, 再将此硬件地址写入MAC帧,然后通过局域网将该MAC帧发往此硬件地址
- 如果没有,那么就通过使用目的MAC地址为**
FF-FF-FF-FF-FF-FF
**的帧来封装并广播ARP请求分组(广播发送),使同一个局域网里的所有主机都收到此ARP请求 - 主机B收到该ARP请求后,向主机A发出ARP响应分组(
单播发送
),分组中包含主机B的IP与MAC地址的映射关系 - 主机A收到ARP响应分组后就将此映射写入ARP缓存,然后按查询到的硬件地址发送MAC帧
检查ARP高速缓存,有对应表项则写入MAC帧,没有则用目的MAC地址为FF-FF-FF-FF-FF-FF的帧封装并广播ARP请求分组,同一局域网中所有主机都能够收到该请求
目的主机收到请求后就会向源主机单播一个ARP响应分组,源主机收到后将此映射写入ARP缓存
ARP
由于“看到 了”IP地址
,所以它**工作在网络层
,而NAT路由器
由于“看到了”端口
,所以它工作在传输层
**
注:ARP**用于解决同一个局域网上的主机或路由器的IP地址和硬件地址的映射问题
**
使用ARP的4中典型情况:
- 发送方是主机(如H1),要把IP数据报发送到本网络上的另一台主机(如H2)
这时**H1在网1用ARP找到目的主机H2的硬件地址
** - 发送方是主机(如H1),要把IP数据报发送到另一个网络上的一台主机(如H3)
这时**H1用ARP找到与网1连接的路由器R1的硬件地址,剩下的工作由R1来完成
** - 发送方是路由器(如R1),要把IP数据报转发到与R1连接的网络(网2)上的一台主机(如H3)
这时**R1在网2用ARP找到目的主机H3的硬件地址
** - 发送方是路由器(如R1),要把IP数据报转发到网3上的一台主机(如H4)
这时**R1在网2用ARP找到与网2连接的路由器R2的硬件地址,剩下的工作由R2来完成
**
从IP地址到硬件地址的解析是**自动进行
**的,主机的用户并不知道这种地址解析过程
只要主机或路由器和本网络上的另一个已知IP地址的主机或路由器进行通信,ARP就会自动地将这个IP地址解析为数据链路层所需要的硬件地址
动态主机配置协议(DHCP)
动态主机配置协议(DHCP)常用于**给主机动态地分配IP地址
**
提供了**即插即用
的联网机制,主机可以从服务器动态获取IP地址、子网掩码、默认网关、DNS服务器名称与IP地址,允许地址重用
,支持移动用户加入网络
,支持在用地址续租
**
DHCP是应用层协议,它是基于UDP的,通过客户/服务器模式工作的
,DHCP客户端与DHCP服务器**通过广播方式进行交互
**
工作原理:
使用客户/服务器模式
需要IP地址的主机在启动时就向DHCP服务器广播发送发现报文,这时该主机就成为DHCP客户
本地网络上所有主机都能收到此广播报文,但只有DHCP服务器才回答此广播报文
DHCP服务器先在其数据库中查找该计算机的配置信息
若找到,则返回找到的信息
若找不到,则从服务器的IP地址池中取一个地址分配给该计算机
DHCP服务器的回答报文称为提供报文
DHCP服务器和DHCP客户端的交换过程
- DHCP客户机广播**
DHCP发现
**消息,试图找到网络中的DHCP服务器,以便从DHCP服务器获得一个IP地址
源地址为0.0.0.0,目的地址为255.255.255.255 - DHCP服务器收到“DHCP发现”消息后,广播**
DHCP提供
**消息,其中包括提供给DHCP客户机的IP地址
源地址为DHCP服务器地址,目的地址为255.255.255.255 - DHCP客户机收到“DHCP提供”消息,如果接受该IP地址,那么就广播**
DHCP请求
**消息向DHCP服务器请求提供IP地址
源地址为0.0.0.0,目的地址为255.255.255.255 - DHCP服务器广播**
DHCP确认
**消息,将IP地址分配给DHCP客户机
源地址为DHCP服务器地址,目的地址为255.255.255.255
DHCP允许网络上配置多台DHCP服务器,当DHCP客户机发出“DHCP发现”消息时,有可能收到多个应答消息,DHCP客户机只会挑选其中的一个,通常挑选最先到达的
DHCP服务器分配给DHCP客户的IP地址是临时的,因此DHCP客户只能在一段有限的时间内使用这个分配到的IP地址。DHCP称这段时间为租用期
租用期的数值应由DHCP服务器自己决定,DHCP客户也可在自己发送的报文中提出对租用期的要求
采用UDP而不采用TCP的原因:TCP需要建立连接,如果连对方的IP地址都不知道,那么更不可能通过双方的套接字建立连接
网际控制报文协议(ICMP)
为了**提高IP数据报交付成功的机会
,在网络层使用了网际控制报文协议(ICMP)来让主机或路由器报告差错和异常情况
ICMP报文作为IP层数据报的数据,加上数据报的首部
,组成IP数据报
**发送出去
ICMP是网络层协议
ICMP报文的种类有两种,即**ICMP差错报告报文和ICMP询问报文
**
ICMP差错报告报文用于目标主机或到目标主机路径上的路由器向源主机报告差错和异常情况
共有以下5种常用的类型:
- 终点不可达。当路由器或主机**
不能交付
**数据报时,就向源点发送终点不可达报文 - 源点抑制。当路由器或主机由于**
拥塞而丢弃数据报
**时,就向源点发送源点抑制报文,使源点知道应当把数据报的发送速率放慢 - 时间超过。
当路由器**收到生存时间(TTL)为零的数据报
时,除丢弃该数据报
外,还要向源点发送时间超过报文
**
当终点在预先规定的时间内**不能收到一个数据报的全部数据报片
时,就把已收到的数据报片都丢弃
,并向源点发送时间超过报文
** - 参数问题。当路由器或目的主机收到的数据报的**
首部中有的字段的值不正确
**时,就丢弃该数据报,并向源点发送参数问题报文 - 改变路由(重定向)。路由器把改变路由报文发送给主机,让主机知道下次应将数据报发送给另外的路由器(
可通过更好的路由
)
**不应发送ICMP差错报告报文
**的几种情况如下:
1、对ICMP差错报告报文不再发送ICMP差错报告报文
2、对第一个分片的数据报片的所有后续数据报片都不发送ICMP差错报告报文
3、对具有组播地址的数据报都不发送ICMIP差错报告报文
4、对具有特殊地址(如127.0.0.0或0.0.0.0)的数据报不发送ICMP差错报告报文
ICMP询问报文有4种类型:
1、回送请求和回答报文
主机或路由向特定目的主机发出的询问,收到此报文的主机必须给源主机或路由器发送ICMP回送报文
测试目的站是否可达以及了解其相关状态
2、时间戳请求和回答报文
请某个主机或路由器回答当前日期和时间
用来进行时钟同步和测量时间
3、地址掩码请求和回答报文
4、路由器询问和通告报文
最常用的是前两类
ICMP的两个常⻅应用是分组网间探测**PING
(用来测试两台主机之间的连通性
)和Traceroute
(UNIX中的名字,在Windows中是Tracert
,可以用来跟踪分组经过的路由
)
其中PING使用了ICMP回送请求和回答报文
,Traceroute(Tracert)使用了ICMP时间超过报文
**
注:PING工作在应用层
,它直接使用网络层的ICMP,而未使用传输层的TCP或UDP;Traceroute/Tracert工作在网络层
IPv6
解决耗尽问题的措施:
1、采用无类别编制CIDR,使IP地址的分配更加合理
2、采用网络地址转换(NAT)方法以节省全球IP地址
3、采用具有更大地址空间的新版本的IPv6
只有**采用IPv6才能从根本上解决IP地址的耗尽问题
**
IPv6的**主要特点
**:
- 更大的地址空间。IPv6将地址从IPv4的32位增大到**
128位
。IPv6的字节数(16B)
**是IPv4字节数(4B)的平方 - 扩展的地址层次结构
- 灵活的首部格式
- 改进的选项
- 允许协议继续扩充
- 支持**
即插即用(即自动配置)
** - 支持资源的预分配
- IPv6**
只有在包的源结点才能分片
,是端到端
的,传输路径的路由不能分片,所以从一般意义上说,IPv6不允许分片
** - IPv6**
首部长度必须时8B的整数倍
**,而IPv4首部是4B的整数倍 - 增大了安全性。身份验证和保密功能是IPv6的关键特征
IPv6和IPv4的区别
- IPv6将地址从32位(4B)扩大到了**
128位(16B)
**,更大的地址空间 - IPv6将IPv4的**
校验和字段彻底移除
**,以减少每跳的处理时间 - IPv6将IPv4的可选字段移出首部,变成了**
扩展首部
**,成为灵活的首部格式,路由器通常不对扩展首部进行检查,大大提高了路由器的处理效率 - IPv6支持**
即插即用(即自动处理)
**,不需要DHCP协议 - IPv6首部长度必须是**
8的整数倍
**,IPv4是4B的整数倍 - IPv6**
只能在主机处分片
**,IPv4可以在路由器和主机处分片 - ICMPv6:附加报文类型“分组过大”
- IPv6支持资源的预分配,支持实时影像等要求,保证一定的带宽和时延的应用
- IPv6取消了协议字段,改成下一个首部字段
- IPv6取消了总长度字段,改用有效载荷长度字段
- IPv6取消了服务类型字段
虽然IPv6与IPv4不兼容,但总体而言它与所有其他的因特网协议兼容,包括TCP、UDP、 ICMP、IGMP、OSPF、BGP和DNS,只是在少数地方做了必要的修改 (大部分是为了处理⻓的地址)
此外**IPv6支持QoS
**
QoS(服务质量):指一个网络能够利用各种基础技术,为指定的网络通信提供更好的服务能力,是网络的一种安全机制,是用来解决网络延迟和阻塞等问题的一种技术
IPv6数据报格式
IPv6的首部长度是固定的为40B
版本:指明了版本,总是6
优先级:区分数据报的类别和优先级
流标签:流是互联网络上从特定源点到特定终点的一系列数据报。属于同一流的数据报都具有同样的流标签
有效载荷长度:扩展首部和数据部分的大小
下一个首部:标识下一个扩展首部或上层协议首部
跳数限制:相当于IPv4的TTL
IPv6相当好地满足了预定的目标,主要体现在:
- 首先也是最重要的,IPv6有比IPv4长得多的地址
IPv6的地址用16个字节表示
,地址空间是IPv4的 2128-32= 296 倍,从⻓远来看,这些地址是绝对够用的 - 简化了IP分组头,它**
包含8个域
(IPv4是12个域)。这一改变使得路由器能够更快地处理分组,从而可以改善吞吐率
** - 更好地支持选项。这一改变对新的分组首部很重要,因为一些**
从前必要的段现在变成了可选段
。此外,表示选项的方式的改变还能加快分组的处理速度
**
IPv6地址
IPv6数据报的目的地址可以是以下三种基本类型地址之一:
- 单播。单播就是**
传统的点对点通信
** - 多播。多播是**
一点对多点的通信
**,分组被交付到一组计算机的每台计算机 - 任播。这是IPv6增加的一种类型。任播的**
目的站是一组计算机
,但数据报在交付时只交付其中的一台计算机
**,通常是距离最近的一台计算机
IPv4地址使用点分十进制表示法
IPv6地址使用冒号十六进制记法:把地址中的每4位用一个十六进制数表示,并用冒号分隔每16位
如4BF5:AA12:0216:FEBC:BA5F:039A:BE9A:2170
当16位域的开头有一些0时,可以采用一种缩写表示法,但在域中必须至少有一个数字
例如,可以把4BF5:0000:0000:0000:BA5F:039A:000A:2176缩 写为4BF5:0:0:0:BA5F:39A:A:2176
当有相继的0值域时,还可以进一步缩写。这些域可以用**双冒号缩写
。在一个地址中仅能出现一次
**
这样一来,前述地址可被书写成4BF5:BA5F:39A:A:2176
IPv6扩展了IPv4地址的分级概念,它使用以下3 个等级:
- 第一级(顶级):指明全球都知道的公共拓扑
- 第二级(场点级):指明单个场点
- 第三级:指明单个网络接口
IPv6地址采用**多级体系
主要是为了使路由器能够更快地查找路由
**
从IPv4向IPv6过渡只能采用逐步演进的办法,同时还必须使新安装的IPv6系统能够向后兼容
IPv6系统必须能够接收和转发IPv4分组,并且能够为IPv4分组选择路由
从IPv4向IPv6过渡可以采用双协议栈和隧道技术两种策略:
- 双协议栈是指在一台设备上**
同时装有IPv4和IPv6协议栈
**,那么这台设备既能和IPv4网络通信,又能和IPv6网络通信
如果这台设备是一个路由器,那么在路由器的不同接口上分别配置了IPv4地址和IPv6地址,并很可能分别连接了IPv4网络和IPv6网络
如果这台设备是一台计算机,那么它将同时拥有IPv4地址和IPv6地址,并具备同时处理这两个协议地址的功能 - 隧道技术的要点是在IPv6数据报要进入IPv4网络时,
把整个IPv6数据报封装到IPv4数据报的数据部分
,使得IPv6数据报就好像在IPv4网络的隧道中传输
路由协议
自治系统(AS)
指**单一技术管理下的一组路由器
**,这些路由器使用一种AS内部的路由选择协议和共同的度量来确定分组在该AS内的路由,同时还使用一种AS之间的路由选择协议来确定分组在AS之间的路由
一个自治系统内的所有网络都由一个行政单位,(如一家公司、一所大学、一个政府部⻔等)管辖,一个自治系统的所有路由器在本自治系统内都必须是连通的
域内路由与域间路由
域内路由选择:自治系统**内部的路由选择
**
域间路由选择:自治系统**之间的路由选择
**
因特网有两大类路由选择协议
- 内部网关协议(IGP)
内部网关协议即**在一个自治系统内部使用的路由选择协议
**,它与互联网中其他自治系统选用什么路由选择协议无关。目前这类路由选择协议使用得最多,如RIP和OSPF。 - 外部网关协议(EGP)
若**源站和目的站处在不同的自治系统中
,当数据报传到一个自治系统的边界时
(两个自治系统可能使用不同的IGP),就需要使用一种协议将路由选择信息传递到另一个自治系统中
**。这样的协议就是外部网关协议(EGP)。目前使用最多的外部网关协议是BGP-4
每个自治系统自己决定在本自治系统内部运行哪个内部路由选择协议,但每个自治系统都有一个或多个路由器
除运行本系统的内部路由选择协议外,还要运行自治系统间的路由选择协议
路由信息协议(RIP)
RIP是一种分布式的**基于距离向量
的路由选择协议,其最大优点就是简单
RIP协议要求网络中每一个路由器都维护从它自己到其他每一个目的网络的唯一最佳距离记录
**(即一组距离)
RIP规定:
- 网络中的每个路由器都要维护从它自身到其他每个目的网络的距离记录(因此这是一组距离,称为距离向量)
- 距离也称跳数,规定从一个路由器到直接连接网络的距离(跳数)为1。而**
每经过一个路由器,距离(跳数)加1
** - RIP认为好的路由就是它通过的路由器的数目少,即**
优先选择跳数少的路径
** - RIP允许**
一条路径最多只能包含15个路由器(即量多允许15跳)
。因此距离等于16时,它表示网络不可达
。可见RIP只适用于小型互联网
**
距离向量路由可能会出现环路的情况,规定路径上的最高跳数的目的是**为了防止数据报不断循环在环路上,减少网络拥塞的可能性
** - RIP默认在任意两个使用RIP的路由器之间每30秒广播一次RIP路由更新信息,以便自动建立并维护路由表(动态维护)
- 在RIP中不支持子网掩码的RIP广播,所以**
RIP中每个网络的子网掩码必须相同
**
RIP的特点
仅和相邻路由器交换信息
路由器交换的信息
是当前路由器所知道的全部信息,即自己的路由表
- 按固定的时间间隔交换路由信息,如每隔30秒
RIP**通过距离向量算法来完成路由表的更新
**
最初,每个路由器只知道与自己直接相连的网络
通过每30秒的RIP广播,相邻两个路由器相互将自己的路由表发给对方
于是经过第一次RIP广播,每个路由器就知道了与自己相邻的路由器的路由表(即知道了距离自己跳数为1的网络的路由)
同理,经过第二次RIP广播,每个路由器就知道了距离自己跳数为2的网络的路由...
因此,经过若干RIP广播后,所有路由器都最终知道了整个IP网络的路由表,称为RIP最终是收敛的
通过RIP收敛后,每个路由器到每个目标网络的路由都是距离最短的(即跳数最少,最短路由)
距离向量算法
每个路由表项目都有三个关键数据:<目的网络N,距离d,下一眺路由器地址X>
对于每个相邻路由器发送过来的RIP报文,执行如下步骤:
- 对地址为X的相邻路由器发来的RIP报文,先修改此报文中的所有项目:
把 “下一跳” 字段中的地址都改为X,并把所有 “距离” 字段的值加1
- 对修改后的RIP报文中的每个项目,执行如下步骤:
1、当原来的路由表中**没有目的网络N
时,把该项目添加到路由表中
**
2、当原来的路由表中**有目的网络N
,且下一跳路由器的地址是X
时,用收到的项目替换原路由表中的项目
**
3、当原来的路由表中**有目的网络N
,且下一跳路由器的地址不是X
时:如果收到的项目中的距离d小于路由表中的距离
,那么就用收到的项目替换原路由表中的项目
;否则什么也不做
** - 如果180秒(RIP默认
超时
时间为180秒)还没有收到相邻路由器的更新路由表
,那么**把此相邻路由器记为不可达路由器
,即把距离设置为16
** - 返回
RIP优点:实现简单、开销小、收敛过程较快
RIP缺点:
- RIP限制了网络的规模,它能使用的最大距离为15(16表示不可达)
- 路由器之间交换的是路由器中的完整路由表,因此**
网络规模越大,开销也越大
** 网络出现故障时,会出现慢收敛现象
(即需要较长时间才能将此信息传送到所有路由器),俗称“坏消息传得慢”,使更新过程的收敛时间长
RIP是**应用层协议
,它使用UDP传送数据
(端口520)
RIP选择的路径不一定是时间最短的,但一定是具有最少路由器的路径
**。因为它是根据最少跳数进行路径选择的
开放最短路径优先协议(OSPF)
OSPF协议的基本特点
开放最短路径优先(OSPF)协议是使用分布式**链路状态路由算法
**的典型代表,也是内部网关协议(IGP)的一种
OSPF与RIP相比有以下4点主要区别:
- OSPF**
向本自治系统中的所有路由器发送信息
,这里使用的方法是洪泛法
**
而RIP仅向自己相邻的几个路由器发送信息 - 发送的信息是**
与本路由器相邻的所有路由器的链路状态
**,但这只是路由器所知道的部分信息
**链路状态
**说明本路由器和哪些路由器相邻及该链路的“度量”(或代价)
而在RIP中,发送的信息是本路由器所知道的全部信息,即整个路由表 只有当链路状态发生变化时,路由器才用洪泛法向所有路由器发送此信息,并且更新过程收敛快
,不会出现RIP“坏消息传得慢”的问题
而在RIP中,不管网络拓扑是否发生变化,路由器之间都会定期交换路由表的信息- OSPF是**
网络层协议
,它不使用UDP或TCP,而直接用IP数据报传送
**(其IP数据报首部的协议字段为89)
而RIP是应用层协议,它在传输层使用UDP
除以上区别外,OSPF还有以下特点:
1、OSPF对不同的链路可根据IP分组的不同服务类型(TOS)而设置成不同的代价。因此,OSPF对于不同类型的业务可计算出不同的路由,十分灵活
2、如果到同一个目的网络有多条相同代价的路径,那么可以将通信量分配给这几条路径。这称为多路径间的负载干衡
3、所有在OSPF路由器之间交换的分组都具有鉴别功能,因而保证了仅在可信赖的路由器之间交换链路状态信息
4、支持可变长度的子网划分和无分类编址CIDR
5、每个链路状态都带上一个32位的序号,序号越大,状态就越新
链路状态路由算法
OSPF共有以下五种分组类型:
- HELLO问候分组,用来**
发现
和维持
**邻站的可达性 - DD数据库描述分组,向邻站给出自己的链路状态数据库中的所有链路状态项目的摘要信息
- LSR链路状态请求分组,向对方请求发送某些链路状态项目的详细信息
- LSU链路状态更新分组,用洪泛法对全网更新链路状态
- LSAck链路状态确认分组,对链路更新分组的确认
通常每隔10秒,每两个相邻路由器要交换一次问候分组,以便知道哪些站可达
在路由器刚开始工作时,OSPF让**每个路由器使用数据库描述分组和相邻路由器交换本数据库中已有的链路状态摘要信息
**
链路状态路由算法工作流程:
- 每个路由器发现它的邻居结点,发送**
HELLO问候分组
**,并了解邻居结点的网络地址 - 设置到它的每个邻居的**
成本度量(metric)
** - 构造**
DD数据库描述分组
**,向邻站给出自己的链路状态数据库中的所有链路状态项目的摘要信息 - 如果DD分组中的摘要自己都有,则邻站不做处理;如果有没有的或者是更新的,则发送**
LSR链路状态请求分组
**
请求自己没有的和自己要更新的信息
- 收到邻站的LSR分组后,发送**
LSU链路状态更新分组
**进行更新 - 更新完毕后,邻站返回一个**
LSAck链路状态确认分组
**进行确认
只要一个路由器的链路状态发生变化
- 洪泛发送**
LSU链路状态更新分组
**进行更新 - 更新完毕后,其他站返回一个**
LSAck链路确认分组
**进行确认
为了确保链路状态数据库与全网的状态保持一致,OSPF还规定每隔一段时间(如30分钟)就刷新一次数据库中的链路状态
OSPF的基本工作原理
由于各路由器之间频繁地交换链路状态信息,因此所有路由器最终都能建立一个链路状态数据库
这个数据库实际上就是**全网的拓扑结构图
,它在全网范围内是一致的(称为链路状态数据库的同步)
然后,每个路由器根据这个全网拓扑结构图,使用Dijkstra最短路径算法计算从自己到各目的网络的最优路径
,以此构造自己的路由表
此后,当链路状态发生变化时,每个路由器重新计算到各目的网络的最优路径,构造新的路由表
**
注:虽然使用Dijkstra算法能计算出完整的最优路径,但路由表中不会存储完整路径,而只存储 “下一跳” (只有到了下一跳路由器,才能知道再下一跳应当怎样走)
为使OSPF能够用于规模很大的网络,OSPF将一个自治系统再划分为若干更小的范围,称为**区域
**
划分区域的好处是,将利用洪泛法交换链路状态信息的范围局限于每个区域
而非整个自治系统,减少了整个网络上的通信量
在一个区域内部的路由器只知道本区域的完整网络拓扑,而不知道其他区域的网络拓扑情况
这些区域也有层次之分。处在上层的域称为**主干区域
,负责连通其他下层的区域,并且还连接其他自治域
**
由于**一个路由器的链路状态只涉及与相邻路由器的连通状态
**,因而与整个互联网的规模并无直接关系
因此,当互联网规模很大时,OSPF要比RIP好得多,而且OSPF协议没有“坏消息传播得慢”的问题
注:用UDP传送是指将该信息作为UDP报文的数据部分;用IP数据报传送是指将该信息作为IP数据报的数据部分。RIP报文是作为UDP数据报的数据部分
边界网关协议(BGP)
边界网关协议(BGP):不同自治系统的路由器之间交换路由信息
的协议,是一种外部网关协议
边界网关协议常用于互联网的网关之间
内部网关协议主要设法使数据报在一个AS中尽可能有效地从源站传送到目的站
在一个AS内部不需要考虑其他方面的策略。然而BGP使用的环境却不同,主要原因如下:
1、因特网的规模太大,使得自治系统之间路由选择非常困难
2、对于自治系统之间的路由选择,要寻找最佳路由是很不现实的
3、自治系统之间的路由选择必须考虑有关策略
边界网关协议(BGP)只能力求寻找一条能够到达目的网络且比较好的路由
(不能兜圈子),而并非寻找一条最佳路由
BGP采用的是**路径-向量路由选择协议
,它与距离向量协议和链路状态协议有很大的区别
BGP是应用层协议
,它是基于TCP
**的,BGP报文是TCP报文的数据部分
BGP的工作原理
每个自治系统的管理员要选择至少一个路由器(可以有多个)作为该自治系统的“BGP发言人”
BGP发言人与其他自治系统中的BGP发言人要交换路由信息,就要先建立TCP连接
然后在此连接上交换BGP报文以建立BGP会话,再利用BGP会话交换路由信息
当所有BGP发言人都相互交换网络可达性的信息后,各BGP发言人就可找出到达各个自治系统的较好路由
每个BGP发言人除必须运行BGP外,还必须运行该AS所用的内部网关协议,如OSPF或RIP
BGP所交换的**网络可达性信息
就是要到达某个网络所要经过的一系列AS
**
BGP的特点
- BGP交换路由信息的结点数量级是自治系统的数量级,比这些自治系统中的网络数少很多
- 每个自治系统中BGP发言人(或边界路由器)的数目是很少的。这样就使得自治系统之间的路由选择不致过分复杂。
- BGP**
支持CIDR
,因此BGP的路由表也就应当包括目的网络前缀
、下一眺路由器
,以及到达该目的网络所要经过的各个自治系统序列
** - 在BGP刚运行时,BGP的邻站交换整个BGP路由表,但以后只需**
在发生变化时更新有变化的部分
**。这样做对节省网络带宽和减少路由器的处理开销都有好处
BGP-4共使用4种报文:
- 打开(OPEN)报文。用来与相邻的另一个BGP发言人建立关系
- 更新(UPDATE)报文。用来发送某一路由的信息,以及列出要撤销的多条路由
- 保活(KEEPALIVE)报文。用来确认打开报文并周期性地证实邻站关系
- 通知(NOTIFICATION)报文。用来发送检测到的差错
RIP、OSPF、BGP的比较
IP组播
IP数据报的三种传输方式:
- 单播。单播用于发送数据包到单个目的地,且每发送一份单播报文都使用一个单播IP地址作为目的地址。是一种**
点对点
**传输方式 - 广播。广播是指发送数据包到同一广播域或子网内的所有设备的一种数据传输方式,是一种**
点对多点
**传输方式 - 组播。当网络中的某些用户需要特定数据时,组播数据发送者仅发送一次数据,借助组播路由器协议为组播数据包建立组播分发树,被传递的数据到达距离用户端尽可能近的结点后才开始复制和分发,时一种**
点对多点
**的传输方式
单播与组播的比较
组播的概念
组播机制是**让源计算机一次发送的单个分组
可以抵达用一个组地址标识的若干目标主机
**,并被它们正确接收
组播一定**仅应用于UDP
**,它对将报文同时送往多个接收者的应用来说非常重要
而TCP是一个面向连接的协议,它意味着分别运行于两台主机(由IP地址来确定)内的两个进程(由端口号来确定)之间存在一条连接,因此会一对一地发送
使用组播的原因
让源主机把单个分组发送给一个组播地址,该组播地址标识一组地址
网络(如因特网)把这个分组的副本投递给该组中的每台主机
主机可以选择加入或离开一个组,因此一台主机可以同时属于多个组
因特网中的IP组播也使用组播组的概念,每个组都有一个特别分配的地址,要给该组发送的计算机将使用这个地址作为分组的目标地址
在IPv4中,这些地址在**D类地址空间中分配
**,而IPv6也有一部分地址空间保留给组播组
主机使用一个称为**IGMP(因特网组管理协议)
**的协议加入组播组
它们使用该协议通知本地网络上的路由器关于要接收发送给某个组播组的分组的愿望
通过扩展路由器的路由选择和转发功能,可以在许多路由器互连的支持硬件组播的网络上面实现因特网组播
需要注意的是,主机组播时仅发送一份数据,只有数据在传送路径出现分岔时才将分组复制后继续转发
因此,对发送者而言,数据只发送一次就可发送到所有接收者
,大大减轻了网络的负载和发送者的负担
组播需要路由器的支持才能实现,能够运行组播协议的路由器称为组播路由器
IP组播地址
IP组播**使用D类地址格式
**
D类地址的前四位是**1110
**
因此D类地址范围是**224.0.0.0 ~ 239.255.255.255
**
每个D类IP地址标志一个组播组
组播数据报和一般的IP数据报的区别是:前者**使用D类IP地址作为目的地址
,源地址总是为单播地址
,并且首部中的协议字段值是2
,表明使用IGMP
**
需要注意的是:
- 组播数据报也是**
尽最大努力交付,不提供可靠交付
,应用于UDP
** 组播地址只能用于目的地址
,而不能用于源地址- 对组播数据报**
不产生ICMP差错报文
。因此,若在PING命令后面键入组播地址,将永远不会收到响应
** - 并非所有的D类地址都可作为组播地址
IP组播可以分为两种:一种只在本局域网上进行硬件组播;另一种则在因特网的范围内进行组播
在因特网上进行组播的最后阶段,还是要把组播数据报在局域网上用硬件组播交付给组播组的所有成员
由于组播IP地址与以太网硬件地址的映射关系不是唯一的,因此**收到组播数据报的主机,还要在IP层利用软件进行过滤,把不是本主机要接收的数据报丢弃
**
硬件组播
同单播地址一样,组播IP地址也需要相应的组播MAC地址在本地网络中实际传送帧
组播MAC地址以十六禁止值**01-00-5E
**打头,余下的6个十六进制位时根据IP组播地址的最后23位转换得到的
IP地址于硬件组播地址成一个映射关系(简单来说就是前面固定后面按照十六进制转换)
TCP/IP协议使用的以太网多播地址的范围是:01-00-5E-00-00-00 ~ 01-00-5E-7F-FF-FF
收到多播数据报的主机,还要再IP层利用软件及逆行过滤,把不是本主机要接收的数据报丢弃
IGMP与组播路由选择协议
IGMP协议
要**使路由器知道组播组成员的信息
**,需要利用因特网组管理协议(IGMP)
连接到局域网上的组播路由器还必须和因特网上的其他组播路由器协同工作,以便把组播数据报用最小代价传送给所有组成员这就需要使用组播路由选择协议
IGMP让连接到本地局域网上的组播路由器知道本局域网上**是否有主机参加或退出了某个组播组
**
IGMP应视为**网际协议IP(网际层)的一个组成部分
**,其工作可分为两个阶段:
- 第一阶段:
当某台主机加入新的组播组时,该主机应向组播组的组播地址发送一个IGMP报文,声明自己要成为该组的成员
本地的组播路由器收到IIGMP报文后,将组成员关系转发给因特网上的其他组播路由器 - 第二阶段:
因为组成员关系是动态的,本地组播路由器要周期性地探询本地局域网上的主机,以便知道这些主机是否仍继续是组的成员
只要对某个组有一台主机响应,那么组播路由器就认为这个组是活跃的
但一个组在经过几次的探询后仍然没有一台主机响应时,则不再将该组的成员关系转发给其他的组播路由器
组播路由选择协议
组播路由选择实际上就是要**找出以源主机为根结点的组播转发树
,其中每个分组在每条链路上只传送一次
(即在组播转发树上的路由器不会收到重复的组播数据报
**)
不同的多播组对应于不同的多播转发树
同一个多播组,对不同的源点也会有不同的多播转发树
在许多由路由器互连的支持硬件多点传送的网络上实现因特网组播时,主要有三种路由算法:
- 第一种是**
基于链路状态的路由选择
** - 第二种是**
基于距离-向量的路由选择
** - 第三种**
可以建立在任何路由器协议之上
,因此称为协议无关的组播(PIM)
**
移动IP
移动IP的概念
移动IP技术是指移动站以**固定的网络IP地址
实现跨越不同网段的漫游功能
**,并保证基于网络IP的网络权限在漫游过程中不发生任何改变。移动IP的目标是把分组自动地投递给移动站
一个移动站是把其连接点从一个网络或子网改变到另一个网络或子网的主机
移动IP定义了三种功能实体:移动节点、本地代理(也称归属代理)和外地代理
- 移动结点。具有永久IP地址的移动站
- 本地代理(归属代理)。一个移动站点的永久“居所”称为归属网络,在归属网络中代表移动结点执行移动管理功能的实体
- 外地代理。在外部网络中帮助移动结点完成移动管理功能的实体
值得注意的是,某用户将笔记本关机后从家里带到办公室重新上网,在办公室能很方便地通过DHCP自动获取新的IP地址。虽然笔记本移动了,更换了地点及所接入的网络,但这并不是移动IP。但如果我们需要在移动中进行TCP传输,在移动站漫游时,应一直保持这个TCP连接,否则移动站的TCP连接就会断断续续的
可⻅,若要使移动站在移动中的TCP连接不中断,就必须使笔记本的IP地址在移动中保持不变。这就是移动IP要研究的问题
移动IP通信过程
永久地址(主地址):在移动IP中,每个移动站都拥有的一个**原始地址
**
转交地址(辅地址):可以是外部代理的地址或动态配置的一个地址
归属网络:移动站原始连接的网络,永久地址和归属网络的关联是不变的
归属代理:通常是连接到归属网络上的路由器,然而它**实现的代理功能是在应用层完成
**的
被访网络:当移动站移动到另一地点,所接入的外地网络
外地代理:被访网络中使用的代理,它通常是连接在被访网络上的路由器
外地代理有两个重要功能:
1、要为移动站创建一个临时地址,称为转交地址。转交地址的网络号
显然和被访网络一致
2、及时把移动站的转交地址告诉其归属代理
移动IP技术的基本通信流程
- 移动站在归属网络时,按传统的TCP/IP方式进行通信
- 移动站漫游到外地网络时,向外地代理进行登记,以获得一个临时的转交地址。外地代理要向移动站的归属代理登记移动站的转交地址
- 归属代理知道移动站的转交地址后,会构建一条通向转交地址的隧道,将截获的发送给移动站的IP分组进行再封装,并通过隧道发送给被访网络的外地代理
- 外地代理把收到的封装的数据报进行拆封,恢复成原始的IP分组,然后发送给移动站,这样移动站在被访网络就能收到这些发送给它的IP分组
- 移动站在被访网络对外发送数据报时,仍然使用自己的永久地址作为数据报的源地址,此时显然无须通过A的归属代理来转发,而是直接通过被访网络的外部代理
- 移动站移动到另一外地网络时,在新外地代理登记后,然后新外地代理将移动站的新转交地址告诉其归属代理。无论如何移动,
移动站收到的数据报都是由归属代理转发的
- 移动站回到归属网络时,移动站向归属代理注销转交地址
请注意两点:转交地址是供移动站、归属代理及外地代理使用的,各种应用程序都不会使用。外地代理要向连接在被访网络上的移动站发送数据报时,直接使用移动站的MAC地址
网络层设备
冲突域和广播域
**域
**表示冲突或广播在其中发生并传播的区域,细分为冲突域和广播域
- 冲突域:指连接到同 一物理介质上的所有结点的集合,这些结点之间存在介质争用的现象
在OSI参考模型中,冲突域被视为第1层概念
,像集线器、中继器等简单无脑复制转发信号的第1层设备所连接的结点都属于同一个冲突域,也就是说它们不能划分冲突域。而第2层(网桥、交换机)、第3层(路由器)设备都可以划分冲突域 - 广播域:指接收同样广播消息的结点集合
在该集合中的任何一个结点发送一个广播帧,其他能收到这个帧的结点都被认为是该广播域的一部分
在OSI参考模型中,广播域被视为第2层概念
,像第1层(集线器等)、第2层(交换机等)设备所连接的结点都属于同一个广播域。而路由器,作为第3层设备,则可以划分广播域,即可以连接不同的广播域
通常所说的**局域网(LAN)特指使用路由器分割的网络,也就是广播域
**
路由器的组成和功能
路由器:一种具有多个输入/输出端口的专用计算机
任务:连接不同的网络
(连接异构网络)并**完成路由转发
**
在多个逻辑网络(即多个广播域)互连时必须使用路由器
当源主机要向目标主机发送数据报时,路由器先检查源主机与目标主机是否连接在同一个网络上
如果源主机和目标主机**在同一个网络
上,那么直接交付
而无须通过路由器
**
如果源主机和目标主机**不在同一个网络
上,那么路由器按照转发表(路由表)指出的路由将数据报转发给下一个路由器
,这称间接交付
**
即:在同一个网络中传递数据无须路由器的参与,而跨网络通信必须通过路由器进行转发
路由器隔离了广播域
从结构上看,路由器由**路由选择
和分组转发
两部分构成
从模型的⻆度看,路由器是网络层设备,它实现了网络模型的下三层
**,即物理层、数据链路层和网络层
注:如果一个存储转发设备实现了某个层次的功能,那么它就可以互连两个在该层次上使用不同协议的网段(网络)
如网桥实现了物理层和数据链路层,那么网桥可以互连两个物理层和数据链路层不同的网段
但中继器实现了物理层后,却不能互连物理层不同的网段,因为中继器不是存储转发设备,是直通式设备
路由选择
也称控制部分,其核心构件是**路由选择处理机
**
路由选择处理机的任务是**根据所选定的路由选择协议构造出路由表
,同时经常或定期地和相邻路由器交换路由信息而不断更新和维护路由表
**
分组转发
由三部分组成:交换结构
、一组**输入端口
和一组输出端口
**
输入端口在从物理层接收到的比特流中提取出数据链路层帧,进而从帧中提取出网络层数据报,输出端口则执行恰好相反的操作
交换结构是路由器的关键部件,它**根据转发表
对分组进行处理,将某个输入端口进入的分组从一个合适的输出端口转发出去
**
有三种常用的交换方法:通过**存储器
进行交换、通过总线
进行交换和通过互联网络
**进行交换
交换结构本身就是一个网络
输入端口对线路上收到的分组的处理
:
出入端口中的查找和转发功能在路由器的交换功能中是最重要的
输出端口将交换结构传送来的分组发送到线路
若路由器处理分组的速率赶不上分组进入队列的速率,则队列的存储空间最终必定减少到0,这就使后面再进入队列的分组由于没有存储空间而只能被丢弃
路由器中的输入或输出队列产生移除使造成分组丢失的重要原因
路由器主要完成的功能
-
分组转发
处理通过路由器的数据流
关键操作是转发表查询、转发及相关的队列管理和任务调度等 -
路由计算
通过和其他路由器进行基于路由协议的交互,完成路由表的计算
三层设备的区别
路由器可以互连两个不同网络层协议的网段
网桥可以互连两个物理层和链路层不同的网段
集线器不能互连两个物理层不同的网段
只有路由器才能隔离广播域,只有集线器不能隔离冲突域
另外网桥与高层协议无关,而路由器是面向协议的
路由器依据网络地址进行操作,并进行路径选择、分段、帧格式转换、对数据报的生存时间和流量进行控制等
路由表与路由转发
路由表是根据路由选择算法得出的,主要用途是路由选择
标准的路由表有4个项目:目的网络IP地址、子网掩码、下一跳IP地址、接口
其结构需**对网络拓扑变化的计算最优化
**
存在默认路由,其**目的IP地址和子网掩码都为0.0.0.0
**
转发表是从路由表得出的,其表项和路由表项有直接的对应关系
转发表的格式和路由表的格式不同,其结构应**使查找过程最优化
**
转发表中含有一个分组**将要发往的目的地址
,以及分组的下一跳
**(即下一步接收者的目的地址,实际为MAC地址)
为了减少转发表的重复项目,可以使用一个默认路由代替所有具有相同“下一跳”的项目,并将默认路由设置得比其他项目的优先级低
路由表总是用软件来实现的
转发表可以用软件来实现,甚至也可以用特的硬件来实现
转发和路由选择的区别
转发是路由器根据转发表把收到的IP数据报从合适的端口转发出去,它仅涉及一个路由器
路由选择则涉及很多路由器,路由表是许多路由器协同工作的结果。这些路由器按照复杂的路由算法,根据从各相邻路由器得到的关于网络拓扑的变化情况,动态地改变所选择的路由,并由此构造出整个路由表
疑难点
“尽最大努力交付”有哪些含义?
1、不保证源主机发送的IP数据报一定无差错地交付到目的主机
2、不保证源主机发送的IP数据报都在某一规定的时间内交付到目的主机
3、不保证源主机发送的IP数据报一定按发送时的顺序交付到目的主机
4、不保证源主机发送的IP数据报不会重复交付给目的主机
5、不故意丢弃IP数据报。丢弃IP数据报的情况是:路由器检测出首部校验和有错误;或由于网络中通信量过大,路由器或目的主机中的缓存已无空闲空间
IP数据报的首部中有一个“首部校验和”。当它检验出IP数据报的首部出现了差错时,就丢弃该数据报
因此,凡交付给目的主机的IP数据报都是IP首部没有差错的或没有检测出差错的
也就是说,在传输过程中,出现差错的IP数据报都被丢弃了
现在因特网上绝大多数的通信量都属于“尽最大努力交付”
如果数据必须可靠地交付给目的地,那么使用IP的高层软件必须负责解决这一问题
在一个互联网中,能否用一个很大的交换机(switch)来代替互联网中很多的路由器?
不行,交换机和路由器的功能是不相同的
交换机可在单个网络中与若干计算机相连,并且可以将一台计算机发送过来的帧转发给另一台计算机
从这一点上看,交换机具有集线器的转发帧的功能,但交换机比集线器的功能强很多
在同一时间,集线器只允许一台计算机发送数据
路由器连接两个或多个同构的或异构的网络,在网络之间转发分组(即IP数据报)
因此,如果许多相同类型的网络互连时,那么用一个很大的交换机(如果能够找其他计算机进行通信,交换机允许找得到)代替原来的一些路由器是可行的
但若这些互连的网络是异构的网络,那么就必须使用路由器来进行互连
IP有分片的功能,但广域网中的分组则不必分片,这是为什么?
IP数据报可能要经过许多个网络,而源结点事先并不知道数据报后面要经过的这些网络所能通过的分组的最大⻓度是多少
等到IP数据报转发到某个网络时,中间结点可能才发现数据报太⻓了,因此在这时就必须进行分片
但广域网能够通过的分组的最大⻓度是该广域网中所有结点都事先知道的,源结点不可能发送网络不支持的过⻓分组
因此广域网没有必要将已经发送出的分组再进行分片
数据链路层广播和IP广播有何区别?
数据链路层广播是用数据链路层协议(第二层)在一个以太网上实现的对该局域网上的所有主机进行广播MAC帧
IP广播则是用IP通过因特网实现的对一个网络(即目的网络)上的所有主机进行广播IP数据报
假定在一个局域网中计算机A发送ARP请求分组,希望找出计算机B的硬件地址。这时局域网上的所有计算机都能收到这个广播发送的ARP请求分组。试问这时由哪个计算机使用ARP响应分组将计算机B的硬件地址告诉计算机A?
这要区分两种情况
第一,如果计算机B和计算机A连接在同一个局域网上,那么就是计算机B发送ARP响应分组
第二,如果计算机B和计算机A不连接在同一个局域网上,那么就必须由一个连接计算机A所在局域网的路由器来转发ARP请求分组。这时,该路由器向计算机A发送ARP回答分组,给出自己的硬件地址
路由器实现了物理层、数据链路层、网络层,这句话的含义是什么?
网络中的两个通信结点利用协议栈进行通信的过程
发送方一层一层地把数据“包装”,接收方一层一层地把“包装”拆开,最后上交给用户
路由器实现了物理层,数据链路层和网络层的含义是指路由器有能力对这三层协议的控制信息进行识别、分析以及转换,直观的理解是路由器有能力对数据“包装”这三层协议或者“拆开”这三层协议
自然,路由器就有能力互连这三层协议不同的两个网络