计网复习——网络层
1. 网络层提供的两种服务
-
网络层应该向传输层提供怎样的服务?
- 两种连接(面向连接 or 无连接)曾引起了长期的争论
- 争论的实质:网络的可靠传输应该由网络还是端系统来负责?
-
面向连接的服务,即虚电路
- 通信双方在开始数据传输前,先由网络建立连接,之后的数据均通过该连接进行,由网络保证数据传输的可靠性
- 虚电路只是一种逻辑连接,分组沿着这条逻辑连接按照存储转发方式传送,而不是真正建立了一条物理连接
-
无连接的服务,即数据报
- 网络在发送数据时不需要先建立连接,每一个分组在网络中独立传送
- 网络层不保证服务质量,分组可能出错、丢失、重复和失序,也不保证分组传送的时限
- TCP/IP采用数据报服务
-
虚电路与数据报的比较
对比的方面 虚电路服务 数据报服务 思路 可靠通信应当由网络来保证 可靠通信应当由用户主机来保证 连接的建立 必须有 不需要 终点地址 仅在连接建立阶段使用,每个分组使用短的虚电路号 每个分组都有终点的完整地址 分组的转发 属于同一条虚电路的分组均按照同一路由进行转发 每个分组独立选择路由进行转发 当结点出故障时 所有通过出故障的结点的虚电路均不能工作 出故障的结点可能会丢失分组,一些路由可能会发生变化 分组的顺序 总是按发送顺序到达终点 到达终点时不一定按发送顺序 端到端的差错处理和流量控制 可以由网络负责,也可以由用户主机负责 由用户主机负责
2. 网际协议IP
2.1 IP(Internet Protocol)简介
- 网际协议IP是TCP/IP体系中两个最主要的协议之一
- 与IP协议配套使用的还有四个协议:
- 地址解析协议ARP(Address Resolution Protocol)
- 逆地址解析协议RARP(Reverse Address Resolution Protocol)
- 网际控制报文协议ICMP(Internet Control Message Protocol)
- 网际组管理协议IGMP(Internet Group Management Protocol)
2.2 分类的IP地址
-
IP地址
- 分配给主机或路由器的标识符,目前使用的IPv4为32位IP地址
-
IP地址的编址方法经历了三个阶段
-
分类的IP地址
-
IP地址被分为A、B、C、D、E五类,每一类地址都包含网络号(net-id)和主机号(host-id)两个字段
I P 地 址 : : = { < 网 络 号 > , < 主 机 号 > } IP地址::=\{<网络号>,<主机号>\} IP地址::={<网络号>,<主机号>} -
不同类的IP地址区别主要是网络号、主机号的长度不同
-
A类地址的网络号字段只有7位可供使用(该字段的第一位已固定为0),但可指派的网络号是126个(即 2 7 − 2 2^7-2 27−2)。减2的原因是:第一,IP地址中的全0表示“这个”,网络号字段为全0的IP地址是个保留地址,意思是“本网络”;第二,网络号为127(即01111111)保留作为本地软件环回测试本主机的进程之间的通信之用。A类地址的主机号占3个字节,因此每一个A类网络中的主机号为 2 24 − 2 2^{24}-2 224−2。这里减2的原因是:全0的主机号字段表示该IP地址是“本主机”所连接到的单个网络地址,而全1表示“所有的(all)”,因此全1的主机号字段表示该网络上的所有主机。
B类地址的网络号字段有2个字节,但前面两位(1 0)已经固定了,只剩下14位可以进行分配。因为网络号字段后面的14位无论怎样取值也不可能出现使整个2字节的网络号字段成为全0或全1,所以这里不存在网络总数减2的问题。因此,B类地址可指派的网络数为 2 14 2^{14} 214,即16384。B类地址的每一个网络上的最大主机数是 2 16 − 2 2^{16}-2 216−2,即65534。这里需要减2是因为要扣除全0和全1的主机号。
C类地址有3个字节的网络号字段,最前面的3位是(1 1 0),还有21位可以进行分配。因此C类地址可指派的网络总数是 2 21 2^{21} 221,即2097152.每一个C类地址的最大主机号是 2 8 − 2 2^8-2 28−2。
所以IP地址的指派范围如下表所示。
网络类别 | 可指派的网络数 | 第一个可指派的网络号 | 最后一个可指派的网络号 | 每个网络中可指派的主机数 |
---|---|---|---|---|
A | 126( 2 7 − 2 2^7-2 27−2) | 1 | 126 | 16777214( 2 24 − 2 2^{24}-2 224−2) |
B | 16384( 2 14 2^{14} 214) | 128.0 | 191.255 | 65524( 2 16 − 2 2^{16}-2 216−2) |
C | 2097152( 2 21 2^{21} 221) | 192.0.0 | 223.255.255 | 254( 2 8 − 2 2^{8}-2 28−2) |
下表给出了一般不使用的特殊IP地址,这些地址只能在特定的情况下使用。
网络号 | 主机号 | 源地址使用 | 目的地址使用 | 代表的意思 |
---|---|---|---|---|
0 | 0 | 可以 | 不可 | 在本网络上的本主机 |
0 | host-id | 可以 | 不可 | 在本网络上的某台主机host-id |
全1 | 全1 | 不可 | 可以 | 只在本网络上进行广播(各路由器均不转发) |
net-id | 全1 | 不可 | 可以 | 对net-id上的所有主机进行广播 |
127 | 非全0或全1的任何数 | 可以 | 可以 | 用于本地软件环回测试 |
IP地址具有以下一些重要特点:
(1)IP地址是一种分等级的地址结构。IP地址管理机构在分配IP地址时只分配网络号(第一级),而剩下的主机号(第二级)则由得到该网络号的单位自行分配。路由器仅根据目的主机所连接的网络号来转发分组。
(2)实际上IP地址是标志一台主机(或路由器)和一条链路的接口。当一台主机同时连接到两个网络上时,该主机就必须同时具有两个相应的IP地址,其网络号必须是不同的。(路由器总是具有两个或两个以上的IP地址,即路由器的每一个接口都有一个不同网络号的IP地址)
(3)按照互联网的观点,一个网络是指具有相同网络号net-id的主机的集合,因此,用转发器或网桥连接起来的若干个局域网仍为一个网络,因为这些局域网都具有同样的网络号。具有不同网络号的局域网必须使用路由器进行互连。
(4)在IP地址中,所有分配到网络号的网络都是平等的。
2.3 IP地址与硬件地址
- IP地址
- 网络层及以上各层使用的地址,是一种逻辑地址
- 存放在IP包头部
- 物理地址
- 数据链路层及物理层使用的地址
- 存放在数据链路层的帧中
- 需要强调指出的几点:
- 在IP层抽象的互联网上只能看到IP数据报
- 虽然在IP数据报首部有源站IP地址,但路由器只根据目的站的IP地址的网络号进行选择
- 在局域网的链路层,只能看见MAC帧
- IP层抽线的互联网却屏蔽了下面这些很复杂的细节。只要我们在网络层上讨论问题,就能够使用统一的、抽象的IP地址研究主机和主机或路由器之间的通信
2.4 ARP与RARP协议
- IP地址与物理地址的相互转换问题
- 例:如下图主机 H 10 H_{10} H10向主机 H 1 H_{1} H1发送了IP包,路由器 R 1 R_{1} R1要想在局域网中将IP包发送给主机 H 1 H_{1} H1,需知道 H 1 H_{1} H1的物理地址
- ARP协议(Address Resolution Protocol)
- ARP协议的用途是为了从网络层使用的IP地址,解析出在数据链路层使用的硬件地址
- 主机设有一个ARP高速缓存(ARP cache),存有本地局域网上各主机和路由器的IP地址与硬件地址的映射表,并且这个映射表还经常动态更新(新增或超时删除)
- 当主机A欲向本局域网上的主机B发送IP包时
- 先在其ARP高速缓存中查看有无主机B的IP地址
- 如有,就可查出其对应的硬件地址,再将此硬件地址写入MAC帧,通过局域网发送
- 如无,则在网络中广播一个ARP请求
- 当主机B收到ARP请求后,向主机A返回一个ARP应答,告知自己的物理地址
- 注意:
- ARP解决同一局域网中的主机或路由器的IP地址和硬件地址的映射问题
- 如果目的主机不在本局域网内,IP包需经由路由器转发
- 此时在局域网内要完成的是路由器IP与物理地址的映射
2.5 IP数据报格式
- 一个IP包由头部和数据两部分
- 头部:20字节的固定字段+0到多个可选字段
- Version字段:4bit,IP协议的版本,目前的IP协议版本号为4(即IPv4)
- IHL:4bit,IP包头长度,最小5,最大15,单位为word(32bit)。因此IP包头最长60字节
- Type of service:1字节,服务类型,目前很多路由器忽略该字段
- Total Length:2字节,IP包总长度(含头部和数据),单位为字节。因此IP包的最大长度为65536字节
- Identification:2字节,标识,是一个计数器,用来产生IP包的标识
- 超过数据链路层MTU(Maximum Transmission Unit)的IP包要分片传输
- 分片的多个包具有相同的标示,便于接收端重组
- DF:1bit,Don’t Fragment,当DF=0时允许分片
- MF:1bit,More Fragment,MF=1表示后面还有“分片”;MF=0表示最后一个分片
- Fragment offset:13bit,片偏移,较长的包在分片后,某片在原分组中的相对位置,以8字节为单位
-
Time to live(TTL):1字节,生存时间,IP包在网络中可通过的路由器个数的最大值
- IP包每经过一个路由器俗称为“一跳(hop)”,经过的路由器个数俗称为“跳数(number of hops)”
- 实际实现中,IP包每经过一个路由器TTL减1,为0则丢弃,并向源主机发送一个告警包
- 最大值为255,由源主机设定初始值,Windows操作系统一般为128,UNIX操作系统一般为255,Linux一般为64
-
Protocol:8bit,协议字段,该包中数据部分的协议类型,即上层协议类型 → \rightarrow →该字段决定了该包将交由哪里
-
Header checksum:2字节,包头校验和(注意:只针对包头)
-
Source address:4字节,源IP地址
-
Destination address:4字节,目的IP地址
-
选项字段:以4字节为单位,最长40字节。实际网络中很少使用
-
校验和算法:在发送方,先把IP数据报首部划分为许多16位字的序列,并把检验和字段置零。用反码算数运算把所有16位字相加后,将得到的和的反码加入检验和字段。接收方收到数据报后,将首部的所有16位字再使用反码算术运算相加一次。将得到的和取反码,即得出接收方检验和的计算结果。若首部未发生任何变化,则此结果必为0,于是就保留这个数据报。否则即认为出差错,并将此数据报丢弃。
两个数进行二进制反码求和的运算很简单。它的规则是从低位到高位逐列进行计算。0和0相加是0,0和1相加时1,1和1相加是0但要产生一个进位1,加到下一列。若最高位相加后产生进位,则最后得到的结果要加1。
3. 划分子网和构造超网
3.1 划分子网
-
分类IP地址的缺点
- IP地址空间的利用率有时很低:A类地址的主机数超过1000万,B类地址也超过6万
- 给每一个物理网络分配一个网络号会使路由表变得太大因而使网络性能变坏
- 两级的IP地址不够灵活
-
1985年起,增加子网字段,形成三级IP地址
-
划分子网的基本思路
-
拥有多个物理网络的单位可按物理网络划分为若干个子网(subnet)。划分计网纯属一个单位内部的事情。本单位以外的网络看不见这个网络是由多少个子网组成,因为这个单位对外仍然表现为一个网络。
-
从主机号借用若干位作为子网号subnet-id,三级IP地址记为:
I P 地 址 : : = { < 网 络 号 > , < 子 网 号 > , < 主 机 号 > } IP地址::=\{<网络号>,<子网号>,<主机号>\} IP地址::={<网络号>,<子网号>,<主机号>} -
从其他网络发来的IP数据报,仍然根据IP数据报的目的网络号net-id,找到本网络的路由器,此路由器收到IP数据报后,再按目的网络号net-id和子网号subnet-id找到目的子网
-
-
子网掩码的提出
- 在划分子网后,路由器需要把数据转发给不同的子网,但是从IP数据报的首部无法看出源主机或目的主机所连接的网络是否进行了子网的划分,因为32位的IP地址本身以及数据报的首部都没有包含任何有关子网划分的信息。
- 解决信息:使用子网掩码(subnet mask)
-
对目的IP地址和子网掩码执行“按位与”操作,即得到子网地址
- 子网掩码
- Internet标准规定,所有网络都必须使用子网掩码
- 子网掩码是一个网络或一个子网的重要属性
- 路由器在和相邻路由器交换路由信息时,必须把自己所在网络(或子网)的子网掩码告诉相邻路由器
- 路由器的路由表中的每个表项除了包含目的网络地址外,还要有该网络的子网掩码
- 如一个路由器连接在两个子网上,就拥有两个网络地址和两个子网掩码
3.2 使用子网掩码的分组转发过程
-
路由器中路由表项包含三项基本信息
- 目的网络地址、子网掩码、下一跳地址
-
转发流程:
- 从收到数据报的首部提取目的IP地址D。
- 先判断是否为直接交付。对路由器直接相连的网络逐个进行检查:用各网络的子网掩码和D逐位相“与”(AND操作),看结果是否和相应的网络地址匹配。若匹配,则把分组直接交付(当然还需要把D转换成物理地址,把数据报封装成帧发送出去),转发任务结束。否则就是间接交付,执行(3)。
- 若路由器中有目的地址为D的特定主机路由,则将数据报传送给路由表中所指明的下一跳路由器;否则执行(4)。
- 对路由表中的每一行(目的网络地址,子网掩码,下一跳地址),用其中的子网掩码和D逐位相“与”(AND操作),其结果为N。若N与该行的目的网络地址匹配,则把数据报传送给该行指明的下一跳路由器;否则,执行(5)。
- 若路由表中有一个默认路由,则把数据报传送给路由表中所指明的默认路由器;否则执行(6)。
- 报告转发分组出错。
-
注意:路由表中仅包含局部路由信息,使用默认路由以确保任何分组的转发
-
核心操作:将目的IP地址与路由表中子网掩码“与”,并判断是否与目的网络匹配
3.3 无分类编码CIDR
-
CIDR(Classless Inter-Domain Routing)无分类域间路由
-
CIDR的主要特点
-
消除传统A类、B类和C类地址以及划分子网的概念
-
使用各种长度的“网络前缀”(network-prefix)来代替分类地址中的网络号与子网号
-
IP地址从三级编码(使用子网编码)又回到了无分类的两级编址
I P 地 址 : : = { < 网 络 前 缀 > , < 主 机 号 > } IP地址::=\{<网络前缀>,<主机号>\} IP地址::={<网络前缀>,<主机号>} -
CIDR还使用“斜线记法”,又称为CIDR记法
- IP地址后加一个斜线“/”,后跟网络前缀所占的位数
-
例:128.14.35.7/20表示该地址的高20位是网络前缀
-
-
网络前缀都相同的连续IP地址组成“CIDR地址块”
- 例:128.14.32.0/20表示的CIDR地址块共有 2 12 2^{12} 212个地址
- 地址块的起始地址:128.14.32.0
- 地址块的最大地址:128.14.47.255
-
路由聚合(route aggregation) ← \leftarrow ←CIDR的好处
- 一个CIDR地址块可以表示很多地址,这种地址的聚合称为路由聚合
- 路由聚合的好处:路由表中的一个项目可以表示很多个(例如上千个)原来传统分类地址的路由,可以减少路由表中表项个数,并减少路由器间交换的路由信息量
- 路由聚合也称为构成超网
- 称为超网是由于CIDR地址块大多包含多个C类地址
-
关于地址掩码
- CIDR不使用子网,但仍使用“地址掩码”这一名词
- 例:/20的地址掩码是:11111111 11111111 11110000 00000000
-
CIDR记法的其他形式
- 10.0.0.0/10可简写为10/10,即省略点分十进制中低位连续的0
- 网络前缀后跟星号 * 的表示方法
- 如:00001010 00*,星号 * 之前位网络前缀,星号 * 位任意主机号
这个ISP共拥有64个C类地址。如果不采用CIDR技术,则在与该ISP的路由器交换交换信息的每一个路由器的路由表中,就需要有64个项目。但采用
- 最长前缀匹配
- 使用CIDR时,路由表中的表项中的“目的网络地址”由固定长度变成了变长的“网络前缀”
- 在查找路由表时可能会得到不止一个匹配结果
- 最长前缀匹配原则
- 从匹配结果中选择具有最长网络前缀的路由
- 网络前缀越长,其地址块就越小,因为路由就越具体
- 最长前缀匹配又称为最长匹配或最佳匹配
可分配地址中全0或全1不可用,所以最大可分配地址个数是 2 3 − 2 2^3-2 23−2
4. 网络控制报文协议ICMP
4.1 ICMP简介
- 主要用于报告出错和测试等控制信息
- ICMP位于IP层,ICMP报文是封装在IP包中传输的
4.2 ICMP报文类型
-
ICMP报文有9种,可分为差错报告报文和询问报文两类
-
差错报告报文
- Destination unreachable:终点不可达,路由器或主机无法传输报文时向源主机发送此报文
- Source quench:源点抑制,路由器或主机由于拥塞丢弃报文时,向源主机发送此报文,使其放慢发送速度
- Time exceeded:超时,当报文的TTL字段为0时,路由器丢弃报文,并向源主机发送此报文
- Parameter problem:参数问题,路由器或主机收到的报文中的头部有非法字段时,丢弃数据包,并向源主机发送此报文
- Redirect:重定向,路由器向主机发送此报文告知路由改变,主机下次发送数据报给另外的路由器
-
询问报文
- Echo request / reply:回声探测,用于测试网络连通性
- Timestamp request / reply:请求时间,可用于时间同步
4.3 ICMP应用举例
- Ping
- 用于测试两个主机之间的连通性
- 采用ICMP echo request / reply报文
- 向目的主机发送ICMP echo request报文,对方收到后会回应ICMP echo reply,根据能否收到应答后判断两台主机之间是否连通
- Traceroute / Tracert
- 用于测试到另一台主机所经过的路由信息
- 采用ICMP超时报告报文
- 逐个发出UDP报文,其IP包头中的TTL字段分别设为1,2,3,…,直到到达目的主机
- 报文路由路径上的路由器会返回ICMP超时报文,从该报文即可得知路由器IP地址
5. 路由算法及协议
5.1 路由算法简介
- 在网络中,路由器依据路由信息(路由表)转发分组,路由信息是路由协议生成的,路由算法是路由协议的基础和核心,注意:
- 路由协议是用来生成路由信息(路由表),不是转发分组的
- 理想的路由算法应具备的特性
- 必须是正确的和完整的:按照得出的路由能够进行正确寻址
- 在计算上应简单:不增加应多开销
- 有自适应性:能根据通信量和网络拓扑的变化调整路由
- 应具有稳定性:通信量和拓扑稳定时,能快速收敛
- 应是公平的:对所有用户公平
- 应是最佳的:能找出最好的路由(时延最小、吞吐量最大)
- 不同情况下的路由需求可能各有侧重,且网络环境不断变化,因此不存在一种绝对的最佳路由算法
- 静态路由与动态路由
- 静态路由选择策略
- 非自适应路由选择
- 简单和开销较小,但不能及时适应网络状态的变化
- 适用于小规模且变化较少的网络,由人工设置路由
- 动态路由选择策略
- 自适应路由选择
- 能较好地适应网络状态的变化,但实现起来较为复杂,开销也比较大
- 适用于较大规模、频繁变化的网络,通过专门的算法和协议进行路由的计算
- 静态路由选择策略
- 两类典型的动态路由算法
- 距离向量路由算法
- 链路状态路由算法
- Internet采用分层次的路由,原因:
- Internet规模庞大,任何一台路由器都不可能获取和存储整个Internet的路由信息
- 接入Internet的众多网络(管理方)不希望外界了解自己网络的内部信息
- 自治系统(AS-Autonomous System)的概念
- 定义:在单一的技术管理下的一组路由器,而这些路由器使用一种AS内部的路由选择协议和共同的度量以确定分组在该AS内的路由,同时还使用一种AS之间的路由选择协议用以确定分组在AS之间的路由
- 一个AS可使用多种内部路由选择协议和度量,但对其他AS表现出的是单一的和一致的路由选择策略
- 在自治系统背景下,Internet路由协议可以分为两类:
- 内部网关协议IGP(Interior Gateway Protocol)
- 自治系统内部使用的路由选择协议
- 这类路由协议使用得最多,如RIP和OSPF协议
- 外部网关协议EGP(External Gateway Protocol)
- 若源站和目的站处在不同的自治系统中,当数据报传到一个自治系统的边界时,就需要使用一种协议将路由选择信息传递到另一个自治系统中,这样的协议就是外部网关协议EGP
- 应用最为广泛的外部网关协议:BGP-4
- 内部网关协议IGP(Interior Gateway Protocol)
- 自治系统之间的路由选择又称为域间路由选择
- 自治系统内部的路由选择又称为域内路由选择
5.2 距离向量路由与RIP协议
-
距离向量路由简介
- 属于动态路由算法
- 也称为Bellman-Ford路由算法和Ford-Fulkerson算法
-
距离向量路由的基本思想
- 每个路由器维护一张表,表中给出了到每个目的地的已知最佳距离和线路,并通过与相邻路由器交换距离信息来更新表
- 路由器周期性地向所有相邻路由器发送它的距离表,同时它也接收每个邻居节点发来的距离表
- 相邻路由器X发来的表中,X到路由器i的距离为Xi,本路由器到X的距离为m,则路由器经过X到i的距离为Xi+m。根据不同邻居发来的消息,计算Xi+m,并取最小值,更新本路由器的路由表。
-
收到相邻路由器发来RIP报文后的处理流程
-
对地址为X的相邻路由器发来的RIP报文,先修改此报文中的所有项目:把“下一跳”字段中的地址都改为X,并把所有的“距离”字段的值加1。对每一个项目都有三个关键数据,即:到目的网络N,距离d,下一跳路由器是X。
这样做是为了便于进行本路由表的更新。假设从位于地址X的相邻路由器发来的RIP报文的某一个项目是:“Net2, 3, Y”,意思是“我经过路由器Y到网络Net2的距离是3”,那么本路由器就可以推断出:“我经过X到网络Net2的距离应为3+1=4”。于是,本路由器就把收到的RIP报文的这一个项目修改为“Net2, 4, X”,作为下一步和路由表中原有项目进行比较时使用(只有比较后才能知道是否需要更新)。
-
对修改后的RIP报文中的每一个项目,进行以下步骤:
-
若原来的路由表中没有目的网络N,则把该项目添加到路由表中。
表明这是新的目的网络,应当加入到路由表中。例如,本路由表中没有到目的网络Net2的路由,那么在路由表中就要加入新的项目“Net2, 4, X”。
-
否则(即在路由表中有目的网络N,这时就再查看下一跳路由器地址)
-
若下一跳路由器地址为X,则把收到的项目替换原路由表中的项目
因为这是最新的消息,要以最新的消息为准。到目的网络的距离有可能增大或减小,但也可能没有改变。例如,不管原来路由表中的项目是“Net2, 3, X”还是"Net2, 5, X",都要更新为现在的“Net2, 4, X”。
-
否则(即这个项目是:到目的网络N,但下一跳路由器不是X)
-
若收到的项目中的距离d小于路由表中的距离,则进行更新
例如,若路由表中已有项目“Net2, 5, P”,就要更新为"Net2, 4, X"。因为到网络Net2的距离原来是5,现在减为4,更短了。
-
否则什么也不做。
若距离更大了,显然不应更新。若距离不变,更新后得不到好处,因此也不更新。
-
-
-
-
-
距离向量路由的无穷计算问题
- 算法的缺陷:对好消息反应迅速,对坏消息反应迟钝
-
RIP(Routing Information Protocol)协议
- 属于距离向量路由协议
- 特点:简单,适用于小规模网络中的路由
- RIP中的距离定义:路由器跳数(hop count)
- 优点:便于计算;缺点:?
- 最长距离15,即允许的最长路径中最多包含15个路由器
- 距离为16表示不可达
- 直接连接的距离为0
- RIP的三个要点
- 仅和相邻路由器交换信息
- 交换的信息是当前本路由器所知道的全部信息,即自己的路由表
- 按固定的时间间隔交换路由信息
- 优点
- 实现简单,开销较小
- 缺点
- 当网络出现故障时,要经过比较长的时间才能将此信息传送到所有的路由器(距离向量路由的固有缺点)(可见《计算机网络》第7版P158)
- 支持的网络规模有限,最大距离为15(16表示不可达)
- 路由器之间的交换的陆游信息是路由器中的完整路由表,随着网络规模的扩大,开销随之增加
- RIP报文格式
5.3 链路状态路由与OSPF协议
-
OSPF协议简介
-
属于链路状态路由协议
-
优点:
- 收敛速度快:当链路状态发生变化时,结点会议洪范方式告知所有网络中的其他所有结点
- 适用于较大规模的网络:仅在链路状态发生变化时发送洪泛信息,不会产生很大通信量
洪泛(flooding):结点收到分组时,向除输入链路外的所有其他链路发送出去
-
-
为了管理大规模的网络,OSPF将一个自治系统再划分为若干个区域
- 每一个区域都有一个32位的区域识别符(用点分十进制表示)
-
划分区域的好处:利用洪泛法交换链路状态信息的范围局限于一个区域而不是整个的自治系统,减少了整个网络上的通信量
-
一个区域内的路由器只知道本区域的完整网络拓扑,而不知道其他区域的网络拓扑
-
层次结果的区域划分,上层的区域称为主干区域(backbone area),主干区域的作用是用来连通其他在下层的区域
- 主干区域的标识符规定为0.0.0.0
- OSPF分组结构
-
OSPF的五种分组
- 类型1:Hello分组
- 类型2:Database Description分组
- 类型3:Link State Request分组
- 类型4:Link State Update分组,用洪泛法对全网更新链路状态
- 类型5:Link State Acknowledgment分组
-
链路状态路由的基本思想
-
每个路由器完成5步工作:
- 发现它的邻居结点,并学习其网络地址
- 测量到各邻居结点的延迟或开销
- 构造一个分组,其中包含所有它刚刚知道的信息
- 将这个分组发送给其他路由器
- 计算出到每一个其他路由器的最短路径
-
各路由器之间动态交换链路状态信息,每个路由器都建立一个链路状态数据库
- “链路状态”即本路由器都和哪些路由器相邻,以及该链路的“度量”
-
链路状态数据库实际上是全网的拓扑结构图,它在全网范围内是一致的(即链路状态数据库的同步)
-
各路由器根据网络拓扑使用Dijkstra算法计算从本路由器到其他结点的最佳路径,构成路由表
-
发现邻居结点,并学习它们的网络地址
- 路由器启动后,通过发送HELLO包发现邻居结点
- 两个或多个路由器连在一个LAN时,引入人工结点
-
5.4 外部网关路由协议BGP
-
BGP(Border Gateway Protocol)简介
- BGP是不用自治系统的路由器之间交换路由信息的协议
-
BGP使用环境的特殊性
- Internet的规模很大,AS之间的路由选择非常困难
- Internet主干网路由器中的网络前缀达到数万条
- 对于AS之间的路由选择,要寻找最佳路由是不现实的
- 不同AS对路径度量标准各不相同
- AS之间的路由选择需考虑多种策略
- 例1:AS1到AS2的数据报经过AS3在技术上最佳,但AS3可能不同意
- 例2:处于国家安全的考虑,可能不希望数据报流经某些国家
- Internet的规模很大,AS之间的路由选择非常困难
-
BGP难以找到最佳路由,只能寻找一条能够到达目的网络且比较好的路由(不能兜圈子)
-
BGP发言人(speaker)
- 每个AS要选择至少一个路由器作为“BGP speaker”
- 两个BGP发言人通过一个共享网络连接在一起
- BGP发言人一般是AS的边界路由器,但也可以不是
- BGP发言人与其他自治系统的BGP发言人交换路由信息
- 路由信息的交换通过TCP协议进行,两个发言人在TCP连接上交换BGP报文以建立BGP会话(session),利用BGP会话交换路由信息
- BGP发言人除了运行BGP协议外,还要运行AS的内部网关路由协议
-
信息交换与路由生成
-
BGP所交换的网络可达性的信息就是要到达某个网络所要经过的一些列AS
- 称为路径向量(path vector)
-
BGP发言人互相交换了网络可达性的消息后,就根据所采用的的策略从其中找出到达各AS的较好路由
-
-
示例
- AS2的BGP发言人通知主干网的BGP发言人:要到达网络N1,N2,N3,N4可经过AS2
- 主干网还可发出通知:“要到达网络N5,N6和N7可沿路径(AS1,AS3)”
-
BGP-4使用四种报文
- OPEN报文:用来与相邻的另一个 BGP发言人建立关系
- UPDATE报文:用来发送某一路由的信息,以及列出要撤销的多条路由
- KEEPALIVE报文:用来确认打开报文和周期性地证实邻站关系
- NOTIFICATION报文:用来发送检测到的差错
- BGP发言人通过OPEN报文与另一发言人建立会话,对方如同意则回应KEEPALIVE报文
- 双方周期性交换KEEPALIVE报文,以确认会话未中断
- 路由信息变化时,发送UPDATE报文
-
BGP协议特点
- 交换路由信息的结点数量级与自治系统个数相当,大大少于这些自治系统中的网络数
- 每个自治系统中BGP发言人(或边界路由器)的数目很少,使得自治系统间的路由选择不致过分复杂
- BGP支持CIDR,因此BGP路由表包括目的网络前缀、下一跳路由器,以及到达该目的网络要经过的各个自治系统序列
- 在BGP刚运行时,邻站交换完整的BGP路由表,以后只需要在发生变化时更新变动部分,有利于节省网络带宽和减少处理开销
5.5 路由器
-
路由器设计的关键之一是分组的高速转发
- 决定报文转发速率的因素有:
- 输入/输出端口的处理性能
- 交换机构的性能
- 线速(line speed 或 wire speed):分组的处理速率能够达到线路上分组的传输速率
- 衡量路由器性能的指标:pps(packet per second)
- 决定报文转发速率的因素有:
-
输入和输出端口的处理
- 注意,当排队的分组数量过多时,可能导致路由器内部缓冲区溢出丢包
- 交换结构
6. IP组播
-
组播(multicast)又称为多播,用于实现一点对多点的数据传输
-
对于一些网络应用,采用组播可大大减少网络流量
-
组播的典型应用示例:网络视频服务
-
使用D类IP地址作为组播地址
- 224.0.0.0——239.255.255.255
- 组播数据报:IP包头中的目的地址为D类地址,协议类型为2(IGMP协议)
-
组播地址即为特定组播组的标识符,主机通过加入组播组来接收组播数据
-
组播可分为两种
- 在局域网中的硬件组播
- 将MAC地址中的特定地址段作为组播地址,并与IP组播地址形成对应关系
- 在Internet中的组播
- 路由器需支持组播,即组播路由器
- 主机通过IGMP协议与组播路由器通信,加入/退出某个组播组
- 组播路由器之间通过组播路由协议实现组播数据报的传输
- 在局域网中的硬件组播
7. 网络地址转换NAT和虚拟专用网VPN
7.1 网络地址转换NAT
-
专用地址(保留地址)
- RFC1918定义了一系列专用地址
- 10.0.0.0~10.255.255.255(CIDR记法:10/8)
- 172.16.0.0~172.31.255.255(CIDR记法:172.16/12)
- 192.168.0.0~192.168.255.255(CIDR记法:192.168/16)
- 这些地址只能用于机构的内部
- Internet中的路由器不转发目的地址为专用地址的包
- RFC1918定义了一系列专用地址
-
企业/机构内部网络使用专用地址的优点
- 减少IP地址空间的占用
- 可提高安全性
-
当内部网络使用专用地址时,与Internet的通信需要通过NAT(Network Address Translation)
7.2 虚拟专用网VPN
- 多个企业/机构的内部网络之间互连的实现方法
- 租用专用线路,形成专用网,成本高昂
- 基于公用网络(如Internet),形成VPN
- VPN涉及的技术包括:隧道(tunnel)、加密、身份认证等
- 基于Internet建立VPN的两种情形
- 内部网络通过Internet互连
- 远程用户访问内部网(remote access VPN)
- 典型的VPN实现技术
- 基于IPSec:ESP隧道模式
- 工作在网络层,适用于多种应用
- 基于SSL:Web浏览器内置SSL支持
- 客户端无须安装或配置软件
- 基于IPSec:ESP隧道模式
以上部分内容引自课件和《计算机网络(第7版)》,如有侵权,请及时联系我删除!