Chapter4 网络层
Chapter4 网络层
LINUX?
本章重点
1、IP数据报的格式和分片
2、IP地址的表示和分类分配、子网掩码、地址有效性、广播地址
3、子网划分
4、CIDR路由聚合
5、ARP协议和ICMP协议
6、路由表、路由器的工作原理
7、RIP协议和OSPF协议
8、网络层的综合设计和应用
网络层的功能
网络层的主要任务是将分组从源主机经过多个网络和多段链路传输到目的主机。
- 只提供
简单灵活的
,无连接的
,尽最大努力交付
的数据报服务 - 可能
出错
,丢失
,重复
,失序或超时
,可靠通信由更高层的传输层
来完成 - 网络造价
大幅降低
,运行方式灵活
,能够适用多种应用
丢弃 IP 数据报的情况是:
路由器检测出首部检验和有错误
因为网络中通信量过大,路由器或目的主机中的缓存已无空闲空间。
异构网络互联
异构网络是数据链路层和物理层至少有一个不同
- 网络互联:两个以上的计算机网络,通过一定的方法,用一些中间设备(又称中继设备),互相连接起来,以构成更大的网络系统。
- 中继系统分类:
物理层
:转发器,集线器。数据链路层
:网桥或交换机。网络层
:路由器网络层以上
:网关
网络互联通常指用
路由器
进行网络互联和路由选择。路由器是一台专用计算机,用于在互联网中进行路由选择。
TCP/IP
体系在网络层采用标准化协议,使异构
的网络通过路由器可以使用相同
的IP协议,使之互联后可被视为一个虚拟IP网络
。虚拟互联网络
:也称为逻辑互联网络
,指物理网络的异构性通过IP协议
使之在网络层看起来像一个统一的网络,这种虚拟互联网络简称为IP网络
。- 优点:互联网上主机通信,就如同在一个网络上通信,看不到互联网各个网络具体异构细节。
路由与转发
路由:计算机网络中用于确定数据包从源设备到目标设备的路径选择过程。
路由选择:根据路由选择协议构造并维护路由表;
同时经常或定期地与相邻路由器交换信息,获取网络拓扑。
网络拓扑:网络中各个设备(如计算机、路由器、交换器、服务器等)如何连接和组织的结构。有星型、总线型、环形等。
动态更新维护路由表,以决定分组到达目的地结点的最优路径。
分组转发:路由器根据转发表将分组从合适的端口转发出去。
路由表根据路由选择算法得出;转发表通过路由表得出。
路由表要最优化网络拓扑变化的计算,转发表的结构需要使查找过程最优化。
讨论路由选择的原理时,两者常合称为路由表
拥塞控制
拥塞:在通信子网中,因出现过量分组而引起网络性能下降的现象称为
判断拥塞
:观察网络吞吐量
与网络负载
。如果负载增加,网络吞吐量明显小于正常吞吐量,则进入轻度拥塞;网络吞吐量随负载增加而下降,则网络可能已经进入拥塞状态;如果吞吐量降为0,则网络可能已经进入死锁状态拥塞控制
的作用是确保子网能承载所能达到的流量,这是一个全局性的过程,设计各方面的行为;单一地增加资源并不能解决拥塞。拥塞控制两种方法:
开环控制
:在设计网络时事先将有关发生拥塞地因素考虑周到,力求网络在工作时不产生拥塞;这是一种静态
的预防方法,一旦整个系统启动并运行,中途就不再需要修改。闭环控制
:事先不考虑有关发生拥塞的各种因素,采用检测网络系统去监视,及时检测哪里出现了拥塞,然后将拥塞信息传到合适的地方,以便调整网络系统的运行,并解决出现的问题。闭环控制是基于反馈环路的概念,是一种动态
的方法。
R1-R2不可能拥塞
R2-R4有可能(H5-H8全部通信H1)
网际协议IP及配套协议
网际协议IP Internet Protocol
- 数据单元是数据报
- 是 TCP/IP 体系中两个最主要 的协议之一
- 负责把数据报交付给主机,不负责数据交付的可靠性
地址解析协议ARP Address Resolution Protocol
- 由IP获得MAC地址
反向地址解析协议RARP Reverse Address Resolution Protocol
- 由MAC地址获得IP
- 来源端不知道自己的IP地址时使用
网际控制报文协议ICMP Internet Control Message Protocol
- 用以向源主机报告IP数据报在交付时出现的一些错误
- ICMP消息包含在IP数据报之内,所以能找到回源主机的路径
网际组管理协议IGMP Internet Group Management Protocol
- 提供带有
多播组
标识的路由,使整个网络都支持多播 - TCP/IP支持下面三种类型的数据发送:
- 广播:把目标地址设为FFFFFFFFFFFF而发送到网上所有主机
- 多播:数据被交付到网上的一组主机,每台主机必须注册多播地址,才能接收指定多播地址的数据
- 单播:数据只被交付到一个指定地址的主机
- IGMP消息位于IP数据报中
网路层提供的两种服务
虚电路
- 电信网的设计思路
- 当两台计算机进行通信时,应当先建立网络层的连接,即先建立一条逻辑上的虚电路(VC);
- 连接一旦建立,就固定了虚电路对应的物理路径。
- 整个通信过程分为三个阶段:虚电路建立、数据传输与虚电路释放。
- 面向连接(逻辑上的连接)
- 分组的首部只在连接建立时使用完整的目的地址,之后每个分组的首部只要携带这条虚电路的编号即可。
- 当某个结点或某条链路故障时,所有相关的虚电路都会被影响
提供的是一种可靠的服务
适合实时性要求高的长时间通信,不适合故障率很高
多站点同时使用一条物理链路也可以,因为有虚电路编号
有永久性虚电路 也有临时的交换型
只是逻辑上连接 所以没带宽
数据报
- 因特网采用的设计思路。
- 发送分组前不需要建立连接。
- 网络尽最大努力交付,传输不保证可靠性,分组可能出错或丢失;
- 网络为每个分组独立地选择路由,转发的路径可能不同,因此分组不一定按序到达目的结点。
- 如果需要主机间的通信是可靠的,那么由主机的传输层来负责。
- 分组正在某一连路上传送时,并不占用网络其他部分的资源。
- 好处:价格低廉,运行方式灵活。
对比的方面 | 虚电路服务 | 数据报服务 |
---|---|---|
思路 | 可靠通信应当由网络来保证 | 可靠通信应当由用户主机来保证 |
连接的建立 | 必须有 | 不需要 |
终点地址 | 仅在连接建立阶段使用,每个分组使用短的虚电路号 | 每个分组都有终点的完整地址 |
分组的转发 | 属于同一条虚电路的分组均按照同一路由进行转发 | 每个分组独立选择路由进行转发 |
当结点出故障时 | 所有通过出故障的结点的虚电路均不能工作 | 出故障的结点可能会丢失分组,一些路由可能会发生变化 |
分组的顺序 | 总是按发送顺序到达终点 | 到达终点时不一定按发送顺序 |
端到端的差错处理和流量控制 | 可以由网络负责,也可以由用户主机负责 | 由用户主机负责 |
IPv4
IPv4
:IP协议版本4
定义了IP分组及其确切的数据格式,以及一整套规则,指明分组如何处理、错误怎样控制等。
IP分组:数据传送的基本单元
IP数据报的格式
一个IP分组(IP数据报)由首部和数据部分组成。
首部的前一部分的长度固定,共20B;后面是一些长度可变的可选字段。
版本Version:IP的版本,IPv4中该字段值为4
首部长度IHL:单位为4B,最大可表示60B首部。
==最小5,最大15,即20~60B==
常用首部长度:20B,此时本字段值为5,首部不使用任何可选字段。
IP首部常以0x45开头。
Type of service:1字节,服务类型,目前很多路由器忽略该字段
总长度Total Length:单位为1B,指首部和数据之和的长度。
- 16位,因此数据报最大长度为 $2^{16}$−1=65535B
标识Identification:同一数据报的分片使用同一标识。
标志:DF MF ,只有两位有意义。
- 中间位DF=1,禁止分片
- ==中间位DF=0,允许分片(分片后的数据报中DF同样为0)==
- ==最低位MF=1,后面“还有分片”==
- 最低位MF=0,说明这是最后一片或者没有分片。
片偏移Fragment offset:==单位为8B==
- 指出较长分组分片后,某片在原分组中的相对位置。
生存时间Time to live TTL:每个路由器在转发数据报前对TTL–1,变成0则丢弃,并向源主机发送一个告警包
协议:数据部分的协议
- ICMP=1
- IGMP=2
- TCP=6
- UDP=17
- OSPF=89
首部检验和Header checksum:只检验首部,不检验数据部分
二进制反码求和的运算规则如下:
①从低 位到高位逐列进行计算,1和1相加是0并产生进位 1
②若最 高位相加后产生进位,则最后得到的结果要在最低位加1,该过程也称回卷
校验和算法:对IP包头,每16位求反,循环相加(进位加在末尾),和再求反
TTL每次经过路由器转发都会被减1,所以校验和也要跟着变。所以每次都要更新校验和
错误不发送ICMP差错报文
源地址、目的地址:在整个传输过程中都不会变化。
选项字段:0~40B,用来支持排错、测量以及安全等措施。
片偏移、首部长度、总长度的单位分别为8B、4B、1B
4B*5=20B
100*8B+80-1=879B
IP数据报分片
最大传送单元MTU:链路层数据帧可以封装数据的上限,==以太网的MTU是1500字节==
所以过长的数据报需要分片。
片偏移以8B为单位
- ==所以除了最后一个分片==,其他每个分片的数据部分长度都是8B的整数倍。
每个分片都需要加上一个首部,注意分片的DF=0,MF需要判断是不是最后一片。
IP分组可以被路径中的路由器分片(不同网络的MTU可能不同)
但是只能由目的主机进行重组
==MTU包含20B的头部==
与分片有关的IP数据报字段:标识、标志、片偏移
DF=1 分组长度超过MTU,==丢弃发送ICMP 终点不可达==
IPv4地址
IP地址
- 给互联网上每台主机(或路由器)的每个接口分配的
- 一台主机可以有2个及以上IP地址,这两个IP地址需要属于不同的网络
- 一个在全球范围内唯一的32位标识符
- 编址方式
- 分类的IP地址(早期)
- 划分子网
- 构成超网
- 分类的IP地址
- 任何一类IP地址都由网络号和主机号两部分组成。
- 其中网络号标识主机(或路由器)连接到的网络,一个网络号在整个互联网范围内唯一
- 主机号标识该主机(或路由器),一个主机号在指明的网络范围内是唯一的
特殊IP地址的用途
主机号全0表示本网络本身;
主机号全1表示本网络的广播地址;
127.x.x.x保留为环回自检地址,此地址表示任意主机本身。
32位全为0,即0.0.0.0表示本网络上的本主机
32位全为1,即255.255.255.255表示整个TCP/IP网络的广播地址,又称受限广播地址。
- 三类IP地址使用范围
类别 | 最大可用网络数目 | 第一个网络号 | 最后一个网络号 | 每个网络最大主机数 |
---|---|---|---|---|
A | 2^7−2 | 1 | 126 | 2^24−2 |
B | 2^14 | 128.0 | 191.255 | 2^16−2 |
C | 2^21 | 192.0.0 | 223.255.255 | 2^8−2 |
==默认子网掩码(没有划分子网时):==
A/B/C类分别为255.0.0.0 255.255.0.0 255.255.255.0
A类少了网络号为0和127,主机数少了主机号全为0和全为1
IP地址特点
- IP包含网络号和主机号,因此IP地址是一种分等级的地址结构。其优点有
- IP地址管理机构分配IP只分配网络号,主机号则由网络的单位自行分配,方便IP管理。
- 路由器仅仅根据目的主机所连接的网络号来转发分组,减少路由表所占存储空间。
- IP地址是标识一台主机/路由器和一条链路的接口。因此IP网络上的一个路由器必然至少拥有两个IP地址。
- 用转发器/网桥等
- IP包含网络号和主机号,因此IP地址是一种分等级的地址结构。其优点有
划分子网和构造超网
将一个网络划分为多个子网,IP地址中添加子网号字段,使两级IP地址变为三级IP地址。
目的:
- 减小广播域的大小
- 提高IP地址利用率
(但主机数量会减小)
子网划分对外部网络是透明的,对内部网络是可见的。
划分子网的方法是从网络的主机号中借用若干位作为子网号。
==至少需要保留2位仍为主机号==
三级IP地址的结构:<网络号>,<子网号>,<主机号>。
子网掩码
子网掩码
:32位,一串1后面跟着一串0。1对应网络号和子网号,0对应主机号。- 计算机只需要将IP地址和子网掩码按位与运算,即可获得子网的网络地址。
- 一台主机设置IP地址信息的同时,必须设置子网掩码。
- 同属于一个子网的所有主机和路由器的相应端口,必须设置相应的子网掩码
- 路由器的路由表中,包含信息的主要内容有目的网络地址,子网掩码,下一跳地址。
==默认子网掩码(没有划分子网时):==
A/B/C类分别为255.0.0.0 255.255.0.0 255.255.255.0
分组转发
默认网关
默认网关是连接本机或子网的路由器接口的IP地址。
当主机发送数据时,根据所发送的数据的目的IP地址,通过子网掩码来判定目的主机是否在子网中;
- 如果在,则直接发送;
- 如果不在,则将数据发送到默认网关,再由网关(路由器)将其转发到其他网络
无分类域间路由 CIDR
(Classless Inter-Domain Routing)无分类域间路由
CIDR的地址的结构:
IP 地址 := <网络前缀>,<主机号>
使用斜线记法,例:128.14.35.7/20 表示该地址的高20位是网络前缀
路由聚合(route aggregation)/构成超网(supernetting):
- 一个 CIDR 地址块可以表示很多地址,这种地址的聚合称为路由聚合
- ==减少路由表中表项个数,并减少路由器间交换的路由信息量==
- 路由表中的一个项目可以表示很多个路由
- 称为超网是由于CIDR地址块大多包含多个C类地址
最长前缀匹配:
- 使用CIDR时,路由表中每个项目由网络前缀和下一跳地址组成
- 从匹配结果中选择具有最长网络前缀的路由
解释:
题目 …11(26) 地址范围:
172.16.166.192 ~ 172.16.166.255
A: …110(27) 重叠
B: …10(26) 不重叠 地址范围:
172.16.166.128 ~ 172.16.166.191
合并之后是 ….1(25) 地址范围:
172.16.166.128 ~ 172.16.166.255
,恰好等于两者之和(其实可以理解成少了第26位 正好是题目的1和B的0都包含)
C:00(26) 不重叠
合并之后是 ….(24)
(其实可以理解成少了第25、26位 题目是11,C是00 额外引入了01 10)
D同理不行
哈夫曼树
CIDR地址块的子网划分技巧,可以利用类似于“从根到叶构造二叉哈夫曼树”的技巧
- 原始CIDR地址块作为根节点(假设可以自由分配的主机号占 h bit)
- 每个分支节点必须同时拥有左右孩子,左0,右1
- 每个叶子节点对应一个子网,根据根节点到达叶子结点的路径;来分析子网对应的IP地址块范围
- 整棵树的高度不能超过 h-1(因为即使最小的子网也至少要保留 2 bit主机号)
地址解析协议ARP
IP地址是网络层及网络层之上使用的地址,是分层式的。
硬件地址(MAC)地址是数据链路层使用的,是平面式的。
路由器不仅有多个IP地址,还有多个硬件地址
ARP功能
无论网络层使用什么协议,在实际网络的链路上传输数据帧时,最终必须使用硬件地址。
ARP完成IP地址到MAC地址的映射。
每台主机都设有一个ARP高速缓存,用来存放本局域网上各主机和路由器的IP地址到MAC地址的映射表,称为ARP表。
工作原理
ARP 请求报文的目的IP地址是目的主机的IP地址,目的MAC 地址是广播 MAC 地址
ARP 响应报文的目的IP地址是发起ARP 请求的主机的IP地址,目的MAC地址是发起ARP 请求的主机的MAC地址
A想向B发送IP数据报:(同一局域网)
在ARP高速缓存中查看有无B的IP地址
若有,则可以查出对应的硬件地址,并写入MAC帧。
若没有,通过使用==【目的MAC地址为FF-FF-FF-FF-FF-FF】==的帧来封装并广播ARP请求分组(广播发送),
同一个局域网内所有的主机都收到此ARP请求
主机B收到ARP请求后,向A发出ARP响应分组(单播发送),分组中包含B的IP和MAC地址的映射关系
A收到后,将此映射写入ARP缓存,然后回到步骤2。
广播的ARP请求分组中,并不包含待发送的数据报。
ARP用于解决同一局域网上的主机或路由器的IP和MAC的映射问题
如果目的主机和源主机不在同一个局域网上,则需要通过ARP找到本局域网上的某个路由器的硬件地址,再把分组发送给这个路由器,让路由器把分组转发给下一个网络
ARP广播只在子网中传播,如果相互通信的主机不在同一个子网内,就不能直接通过ARP广播获得目的站的硬件地址。
硬件地址只具有本地意义,所以每当路由器将IP数据报发送到一个具体的网络中时,都需要重新封装源硬件地址和目的硬件地址。
MAC地址是点到点传输用的,端到端传输中包含很多点到点,所以每次都需要更新MAC地址。
网际控制报文协议ICMP
Internet Control Message Protocol
作用:有效地转发IP数据报和提高交付成功的机会,在网络层使用了ICMP,让主机或路由器报告差错和异常情况。
ICMP报文被封装在IP数据报中发送,但ICMP不是高层协议,而是网络层的协议
ICMP报文类型
9种,包括ICMP差错报告报文和ICMP询问报文
==差错报告报文==
- Destination unreachable:终点不可达,路由器或主机无法传输报文时向源主机发送此报文
- Time exceeded:超时,路由器收到TTL字段为0的报文时,向源主机发送此报文
- Parameter problem:参数问题,路由器或主机收到的报文中头部有非法字段时,丢弃数据包,并向源主机发送此报文
- Source quench:源点抑制,路由器或主机由于拥塞丢弃报文时,向源主机发送此报文,使其放慢发送速度
- Redirect:重定向,路由器向主机发送此报文告知路由改变,主机下次发送数据报给另外的路由器
询问报文
- Echo request / reply:回声探测,用于测试网络连通性
- Timestamp request / reply:请求时间,可用于时间同步
不应发送ICMP差错报文的情况
对ICMP报文不发送ICMP报文
报错的不报错
对第一个分片的数据报文的后续数据报文不发送ICMP
分片只报第一个
对具有多播地址的数据报不发送
对具有特殊地址(如127.0.0.0或0.0.0.0)的数据报不发送
应用
PING:
用来测试两个主机之间的连通性
使用ICMP回送请求和回答报文
ping在应用层
直接使用ICMP,跳过了传输层的UDP和TCP
Traceroute:
用来测试到另一台主机所经过的路由信息
使用ICMP时间超过报文
逐个发出UDP报文,其IP包头中的TTL字段分别设为1, 2, 3, …,直到到达目的主机
报文路由路径上的路由器会返回ICMP超时报文,从该报文即可得知路由器IP地址
Traceroute工作在网络层
路由算法与路由协议
路由器依据路由信息(路由表)转发分组
路由信息是路由协议生成的,路由算法是路由协议的基础和核心
路由算法的目的:
找到一条从源路由器到目的路由器的最佳路径。
静态路由算法:
- 网络管理员手动配置每一条路由
- 非自适应路由选择
- 简单和开销较小
- 不及时
动态路由算法:
- 根据网络流量负载和拓扑结构的变化来动态调整自身的路由表
- 自适应路由选择
- 复杂和开销较大
- 包括: 距离向量路由算法 、链路状态路由算法
==自治系统(AS—Autonomous System)的概念==
- 在单一的技术管理下的一组路由器,而这些路由器使用一种 AS 内部的路由选择协议和共同的度量以确定分组在该 AS 内的路由
- 同时还使 用一种AS 之间的路由选择协议用以确定分组在AS之间的路由
- 1个 AS可使用多种内部路由选择协议和度量,但对其他 AS 表现出的是单一的和一致的路由选择策略
Internet路由协议
- 内部网关协议 IGP Interior Gateway Protocol
- 外部网关协议 EGP External Gateway Protocol
- 自治系统之间的路由选择又称为域间路由选择(interdomain routing)
- 自治系统内部的路由选择又称为域内路由选择(intradomain routing)
路由收敛:
当路由环境发生变化后,各路由器调整自己的路由表以适应网络拓扑结构的变化,最终达到稳定状态(路由表与网络拓扑状态保持一致)
收敛越快,路由器就能越快适应网络拓扑结构的变化
RIP协议和距离向量路由
RIP协议 Routing Information Protocol
距离向量路由 distance vector routing
距离向量路由算法
基础是图的Bellman-Ford算法,对每个节点计算单源最短路径。
初始化时每个结点向其邻居发送距离向量,在接受到该更新报文后,每个节点重新计算自己的距离向量。距离向量发生更新的结点再次向邻居发送更新的距离向量。
显然,更新报文的大小与网络中的结点数量成正比。
最常见的距离–向量路由算法是RIP算法,采用“跳数”作为距离的衡量。
路由信息协议RIP
一种分布式的基于距离向量的路由选择协议。
==RIP是应用层协议,使用UDP传送数据==
规定:
每个路由器都需要维护从它自身到其他各个目的网络的距离记录(距离向量)
RIP使用跳数来衡量到达目的网络的距离。
从路由器到直接连接的网络的距离定义为1;而每经过一个路由器,距离+1
跳数越少,RIP认为路由更好。
RIP一条路径中最多包含15个路由器,所以距离=16时表示网络不可达。
避免循环。
每个路由表项都有三个关键字段:
<目的网络N,距离d,下一跳路由器地址X>
特点:
- 仅和直接相邻的路由器交换信息
- 交换的信息是本路由器所知道的全部信息,即自己的路由表。
- 按照固定的时间间隔(30s)交换路由信息。
- 刚开始工作时,只知道自己到直接相连的几个网络的距离为1。
- 选择的路径不一定是时间最短的,但是一定具有最少的路由跳数。
RIP报文格式:
算法:
RIP报文:包含路由表中的所有信息。
收到相邻路由器(其地址为 X)的一个 RIP 报文:
(1) 先修改此 RIP 报文中的所有项目:把“下一跳”字段中的地址都改为 X,并把所有的 “距离”字段的值加 1。每个项目有三个关键数据:目的网络N、距离d、下一跳路由器X。
(2) 对修改后的 RIP 报文中的每一个项目,重复以下步骤:
若路由表中没有目的网络N,则把该项目加到路由表中。
否则
若下一跳字段给出的路由器地址是X,则用收到的项目替换原有项目
否则
若收到项目中的距离d小于路由表中的距离,则进行更新
否则,什么也不做。
(3) 若 3 分钟还没有收到相邻路由器的更新路由表,则把此相邻路由器记为不可达路由器, 即将距离置为16(距离为16表示不可达)
(4) 返回
优点:
- 实现简单、开销小、收敛过程较快
- 发现更短路由的更新消息传播很快
缺点:
- RIP限制了网络的规模,能使用的最大距离为15
- 路由器之间交换完整的路由表,网络规模越大,开销也就越大
- 网络出现故障时,路由器之间需要反复多次传递消息才能完成收敛。
==好消息传播得快,坏消息传播得慢==
1.R3检测到一个不可达网络,说明该网络是和R3相连的(在RIP协议中,检测到网络不可达是由相邻结点检测到的),假设记为R4,也就是说这整个网络由R1、R2、R3、R4组成;
2.题中说到开始的时候“均已收敛”,即在R3检测到R4不可达之前,网络中各个网络已经互相知道了到彼此的距离,通过网络结构可知R1的距离向量为(0,1,1,2),R2的距离向量为(1,0,1,2),R3的距离向量为(1,1,0,1)
3.现在R3检测到R4不可达,即R3的距离向量变为(1,1,0,16),并且现在只向R2通报了自己新的距离向量
4.R2收到R3传过来的距离向量时,对于R2→R4的路径长度,它会比较R2→R3→R4(距离17)和R2→R1→R3→R4(距离为3,此处R1→R3→R4的距离是2,因为R1还不知道R3到R4的代价变为16了(坏消息传得慢)),R2比较17和3选择较小的3,因此选B
how to 交换信息:
OSPF协议和链路状态路由
链路状态路由:link-state routing
OSPF协议:Open Shortest Path First
链路状态路由算法
每个路由器完成5步工作:
① 发现它的邻居结点,并学习其网络地址
② 测量到各邻居结点的延迟或开销
③ 构造一个分组,其中包含所有它刚刚知道的信息
④ 将这个分组发送给其他所有路由器
⑤ 计算出到每一个其他路由器的最短路径
链路状态指本路由器和哪些路由器相邻,以及相应链路的“度量” (metric)
==链路状态数据库实际上是全网的拓扑结构图==,它在全网范围内是一致的(即链路状态数据库的同步)
于是每个节点都可以用Dijkstra算法计算出到其他节点的最短路径。
典型:OSPF算法
开放最短路径优先OSPF
使用分布式链路状态路由算法的典型代表
==OSPF是网络层协议==,不使用UDP或TCP,而是直接使用IP数据报传送。
与RIP的区别:
OSPF使用洪泛法向本自治系统内所有路由器发送信息
洪泛(flooding): 结点收到分组时,向除输入链路外的所有其他链路发送出去
RIP则只向与自己相邻的几个路由器发送信息
OSPF发送的信息是与本路由器相邻的所有路由器的链路状态(是路由器知道的信息的一部分)
RIP发送的是本路由器的整个路由表
OSPF中,当链路状态发生变化时,路由器才用洪泛法发送信息,且更新过程收敛很快
不会出现“坏消息传递得慢”的情况。
RIP中,不管网络拓扑是否发生变化,路由器之间都要定期交换路由表信息。
一个路由器的链路状态只涉及与相邻路由器的连通状态,与整个网络的规模并没有直接关系
特点:
- OPSF允许对每条路由
设置不同的代价
,对不同类型的业务可以计算出不同的路由 - 如果到同一个目的网络有多条相同代价的路径,则可以将通信量分配给这几条路径
- OSPF分组具有
鉴别功能
,从而保证仅在可信赖的路由器之间
交换链路状态信息。 - OSPF支持可变长度的子网划分和无分类编址CIDR
- 每个链路状态都带上一个32位的序号,序号越大表示状态越新。
- 所有的路由器都能建立一个链路状态数据库,即全网拓扑图
优点:
- 收敛速度快:链路状态变化会泛洪给网络
- 适用于较大规模的网络:仅在链路状态发生变化时发送洪泛信息
区域划分:
- OSPF将一个自治系统再划分为若干更小的范围,称为
区域
- 区域划分好处:将利用洪泛法交换链路信息的范围局限在每个区域,减少了整个网络上的通信量
- 在一个区域内部的路由器只知道本区域的完整网络拓扑,不知道其他区域的情况
- 划分区域使交换信息的种类增多,==同时也让OSPF协议更加复杂==
- 在上层的区域叫做主干区域,用来连通其他在下层的区域。
- 主干路由器可以兼做区域边界路由器
OSPF报文:
OSPF报文类型:
Hello、Database Description、Link State Request、Link State Update、Link State Acknowledgment
BGP和路径向量路由
Border Gateway Protocol
一种外部网关路由协议,源主机和目标主机属于不同的自治系统
路径向量:要到达某个网络所要经过的一系列 AS,BGP所交换的网络可达性的信息
BGP发言人:配置BGP时,每个AS的管理员要选择至少一个路由器,作为该AS的发言人。一般是BGP边界路由器。
- 交换网络可达性的信息。
- 发生变化时更新有变化的部分。
==BGP是应用层协议,借助TCP传送==
特点:
- 交换信息的结点数量级是AS个数的数量级,比AS中的网络数少很多
- 每个自治系统中BGP发言人(或边界路由器)的数目很少
- 自治系统间的路由选择不致过分复杂
- BGP支持CIDR
- BGP路由表包括目的网络前缀、下一跳路由器,以及到达该目的网络要经过的各个自治系统序列
- BGP刚运行时,BGP的临站交换整个BGP路由表,但以后只在发生变化时更新有变化的部分。
四种报文:
- OPEN报文:用来与相邻的另一个BGP发言人建立关系
- UPDATE报文:用来发送某一路由的信息,以及列出要撤消的多条路由
- KEEPALIVE报文:用来确认打开报文和周期性地证实邻站关系
- NOTIFICATION报文:用来发送检测到的差错
距离向量路由协议通过周期性地向邻居发送整个路由表来更新路由信息,使用Bellman-Ford算法,收敛较慢且易产生环路;链路状态路由协议通过洪泛链路状态信息构建全网拓扑,使用Dijkstra算法,收敛快且触发更新,适用于大型网络。
\1. 工作方式:距离向量协议(如RIP)每个节点仅与邻居交换路由表,仅知晓到达目标的距离和方向;链路状态协议(如OSPF)每个节点收集全网链路状态,独立计算路径。 \2. 更新机制:距离向量定期发送完整路由表,存在冗余;链路状态仅在拓扑变化时发送增量更新,效率更高。 \3. 收敛速度:距离向量因逐跳传递导致收敛慢;链路状态通过全局信息快速收敛。 \4. 算法与环路:距离向量依赖Bellman-Ford,需抑制定时器防环路;链路状态基于Dijkstra避免环路。 \5. 资源占用:距离向量内存需求低但带宽消耗大;链路状态内存和计算要求高但带宽占用少。 \6. 适用场景:距离向量适合小型网络;链路状态扩展性强,适用于复杂大型网络。
RIP 处于 UDP 的上层,RIP 所接收的路由信息都封装在 UDP 的数据报中
OSPF 的位置位于网络层,因为要交换的信息量较大,所以应使报文的长度尽量短,因此采用IP
BGP要在不同的自治系统之间交换路由信息,因为网络环境复杂,需要保证可靠的传输,所以选择 TCP
内部网关协议主要设法使数据报在一个自治系统中尽可能有效地从源站传送到目的站,在一个自治系统内部并不需要考虑其他方面的策略
然而 BGP 使用的环境却不同
- 互联网规模太大,使得自治系统之间的路由选择非常困难
- 对于自治系统之间的路由选择,要寻找最佳路由是不现实的
- 自治系统之间的路由选择必须考虑有关策略
- BGP只能力求寻找一条能够到达目的网络目较好的路由,而并非寻找一条最佳路由
- BGP 不需要像 RIP 那样周期性地和邻站交换路由信息
网络层设备
冲突域和广播域
冲突域:指连接到同一物理介质上的所有节点的集合,这些节点之间存在介质争用的现象
介质争用是指在使用共享介质的网络(以太网)中,多个设备同时尝试使用通信信道时发生的情况。当两个或更多个设备同时发送数据时,它们会竞争使用同一个信道,这会导致信道被多个设备同时占用,从而影响数据的正常传输。
集线器、中继器等不能划分冲突域;
网桥、交换机、路由器设备可以划分冲突域
广播域:指接收同样广播消息的结点集合
集线器、中继器、网桥、交换机不能划分广播域
路由器可以划分广播域,也可以连接不同的广播域。
通常说的局域网(LAN)特指使用路由器分割的网络,也就是广播域
路由器
- 路由器是一种具有多个输入/输出端口的专用计算机,其任务是连接不同的网络(异构网络),并完成分组转发。
- 在多个逻辑网络互连时必须使用路由器。
工作过程
当源主机向目标主机发送数据报时,路由器先检查源主机与目标主机是否连接在同一个网络上。
- 若是,则直接交付而无需通过路由器
- 若否,则路由器按照转发表(由路由表得出)指出的路由,将分组转发给下一个路由器。这叫
间接交付
。 - 从结构上看,路由器由路由选择和分组转发两部分构成
- 从模型上看,路由器是网络层设备,实现了网络模型的下三层,即物理层、数据链路层、网络层。
分组转发:路由器根据转发表把收到的IP数据报从何时的端口转发出去,只涉及一个路由器
转发靠查找转发表,而不是路由表
路由选择:涉及很多路由器,路由表是许多路由器协同工作的结果。
- 路由选择部分也称控制部分,核心构建是路由选择处理机,任务是根据选定的路由协议
构造并维护路由表
- 分组转发由三部分组成:
交换结构
、一组输入端口
、一组输出端口
。- 交换结构:根据转发表对分组进行处理,将某个输入端口进入的分组从一个合适的端口转发出去。
- 输入端口:从数据链路层中提取出帧,剥去帧的首部和尾部后,分组被送入网络层的处理模块。
- 输出端口:执行和输入端口相反的操作
- 端口都设有一个
缓冲队列
,用来暂存分组,还可以用来进行差错检测 - 当排队的分组数量过多时,可 能导致路由器内部缓冲区溢出丢包
路由表和转发表
路由表
是根据路由选择算法得出的。- 标准的路由表具有4个项目:
目的网络IP地址
、子网掩码
、下一跳IP地址
、接口
- 路由表包含到互联网的默认路由,默认路由的目的地址和子网掩码都是0.0.0.0
转发表
是由路由表得出的,其结构应该使查找过程最优化。- 转发表中含有一个分组将要发往的目的地址,以及分组的下一跳。
- 可以用一个默认路由代替所有具有相同下一跳的项目,并把默认路由设置得比其他项目优先级低。
路由器设计的关键之一是分组的高速转发
决定报文转发速率的因素有:
- 输入/输出端口的处理性能
- 交换机构的性能
线速:输入端口的处理速率不低于线路传输分组的速度,确保数据无延迟处理
衡量路由器性能的指标:pps(packet per second)
SDN基本概念
- 网络层可以抽象地划分为:
- 控制平面(control plane)
- 生成路由表和转发表
- 路由选择
- 数据平面(data plane)
- 进行分组的快速转发
- 分组转发
- 控制平面(control plane)
- 软件定义网路(SDN) :
- 控制平面和数据平面分离
- 采用集中式的控制层面和分布式的数据层面
- 控制层面:逻辑上的远程控制器
- 掌握各个主机和整个网络的状态,为每个分组计算出最佳路由,通过
Openflow
协议将转发表下发给路由器
- 掌握各个主机和整个网络的状态,为每个分组计算出最佳路由,通过
- 数据层面: 路由器(SDN称为交换机)
- 路由器只需要
收到分组
,查找转发表
,转发分组
- 路由器只需要
- SDN优点:
- 适用于路由策略变化频繁的网络
- 云数据中心网络
- 全局集中式控制和分布式高速转发
- 灵活可编程与性能的平衡
- 网络可以由专有的自动化工具以编程方式配置
- 降低成本
- 使用开放的接口协议后,就实现了网络设备的制造与功能软件的开发相分离
- 适用于路由策略变化频繁的网络
- SDN问题:
- 安全风险
- 集中管理容易受攻击,如果崩溃整个网络会受到影响
- 瓶颈问题
- 控制层面集中化后,网络规模扩大,控制器影响网络性能
- 安全风险
IP组播
- 实现一点对多点的数据传输
- 典型应用:网络视频服务(e.g. 视频会议、直播)
源地址:源主机IP地址
目的地址:IP多播地址,即D类地址
223.0.0.0~239.255.255.255
每个D类IP地址标示一个多播组
使用IGMP协议
尽最大努力交付,不提供可靠交付
多播地址只能用于目的地址,不能用于源地址
对多播数据报不产生ICMP差错报文
组播可分为两种:
- 在局域网中的硬件组播
- 将MAC地址中的特定地址段(01-00-5E-00-00-00 到 01-00-5E-7F-FF-FF)作为组播地址
- 要把 IP 多播地址映射成多播 MAC 地址
- D类IP地址可供分配的有28位,即这28位中的前5位无法映 射到以太网多播地址
- 32个多播地址映射成一个MAC地址
- 在Internet中的组播
- 路由器需支持组播,即组播路由器
- 主机通过IGMP协议与组播路由器通信,加入/退出某个组播组
- 组播路由器之间通过组播路由协议实现组播数据报的传输
网际组管理协议IGMP
路由器要获取多播组的成员信息,需要利用IGMP。
被封装在IP数据报中传输。
IGMP 是让连接到本地局域网上的多播路由器,知道本局域网上是否有主机参加或退出了某个多播组
IGMP 并不是在互联网范围内对所有多播组成员进行管理的协议
IGMP 不知道IP多播组包含的成员数,也不知道这些成员分布在哪些网络上。
工作分为两个阶段:
当某台主机加入新的多播组时,该主机应向多播组的多播地址发送一个IGMP报文,声明自己要成为该组的成员
组成员关系是动态的。
本地多播路由器周期性地探寻本地局域网上的主机,以便知道这些主机是否仍继续是组的成员。
只要对某个组有一台主机相应,多播路由器就认为这个组是活跃的。
多播路由选择实际上就是要找出以源主机为根节点的多播转发树
不同的多播组对应于不同的多播转发树
同一个多播组,对不同的源点也会有不同的多播转发树
网络地址转换NAT
Network Address Translation
指的是通过专用网络地址转换为公用地址,从而对外隐藏内部管理的IP地址。
它使得整个专用网只需要一个全球IP地址就可以与互联网连通
私有IP地址:
- 私有IP地址只用于LAN,不用于WAN连接
- 私有IP地址称为可重用地址
- 允许私有IP地址被LAN重复使用
- 采用私有IP地址的互联网称为专用互联网/本地互联网
- NAT路由器使用NAT表将本地IP地址和全球IP地址进行转换,由此可以将多个私有IP地址映射到一个全球IP地址。
互联网的路由器对目的地址是私有地址的IP数据报一律不进行转发
- 10.0.0.0/8,即 10.0.0.0~10.255.255.255,相当于1个A类网络。
- 172.16.0.0/12,即 172.16.0.0~172.31.255.255,相当于 16 个连续的 B类网络。
- 192.168.0.0/16,即 192.168.0.0~192.168.255.255,相当于 256 个连续的C类网络。
- 普通路由器在转发IP分组的时候,其源IP地址和目的IP地址都不会改变;
- NAT路由器在转发IP分组时,一定要更换其IP地址;
- 普通路由器仅工作在网络层,不改变IP数据报的IP地址字段。
- NAT路由器转发数据报时需要查看和转换传输层的端口号
- NAT路由器内部使用TCP/UDP端口号实现外网数据包向内网地址的转换
例题:
虚拟专用网VPN
Virtual Private Network
多个企业/机构的内网之间互连的实现方法
- 租用专用线路,形成专用网,成本高昂
- 基于公用网络(如Internet),形成VPN
VPN涉及的技术
- 隧道(tunnel)
- 加密
- 身份认证
基于Internet建立VPN的两种情形:
内部网络通过Internet互连
- 可以采用IPSec的ESP隧道模式
- (工作在网络层、无安全机制)
远程用户访问内部网(remote access VPN)
- 拨号虚拟专用网(VPDN—-Virtual Private Dialup Network)
- 基于SSL的VPN技术
- 客户端无须安装或配置软件
隧道:
整个数据报加密
然后整个加IP包头(R1 to R2)
题目
互联网的路由器对目的地址是私有地址的IP 数据报一律不进行转发
10.0.0.0/8,即 10.0.0.0~10.255.255.255,相当于1个A类网络。 172.16.0.0/12,即 172.16.0.0~172.31.255.255,相当于 16 个连续的 B类网络。 192.168.0.0/16,即 192.168.0.0~192.168.255.255,相当于 256 个连续的C类网络。
路由器端口要占用一个ip地址