第4章 网络层
文章目录
- 第4章 网络层
- 4.1 网络层的几个重要概念
- 4.1.1 网络层提供的两种服务
- 虚电路服务(Virtual Circuit Service)
- 数据报服务(Datagram Service)
- 4.1.2 网络层的两个层面
- 4.2 网际协议 IP - IPv4
- 4.2.1 虚拟互连网络
- 4.2.2 IP 地址
- 1、IP地址及其表示方法
- 2、分类的IP地址
- 3、定长子网划分和子网掩码
- 4、主机发送IP数据报的过程
- 5、路由器转发IP数据报的过程
- 6、无分类编址CIDR + 变长子网划分
- 7、IP地址特点
- 8、真题
- 4.2.3 IP地址与 MAC 地址
- 4.2.4 地址解析协议 ARP
- 4.2.5 IP 数据报的格式
- 4.2.6 动态主机配置协议 DHCP
- 4.3 IP 层转发分组的过程
- 4.3.1 基于终点的转发
- 4.3.2 最长前缀匹配
- 4.4 网际控制报文协议ICMP
- 4.4.1 ICMP 报文的种类
- 4.4.2 ICMP 的应用举例
- 4.5 IPv6
- 4.5.1 IPv6 的基本首部
- 4.5.2 IPv6 的地址
- 4.5.3 从IPv4向IPv6 过渡
- 4.5.4 ICMPv6
- 4.6 互联网的路由选择协议
- 4.6.1 有关路由选择协议的几个基本概念
- 4.6.2 内部网关协议 RIP
- 4.6.3 内部网关协议 OSPF
- 4.6.4 外部网关协议 BGP
- 4.6.5 路由器的构成
- 4.7 IP 多播
- 4.7.1 IP 多播的基本概念
- 4.7.2 在局域网上进行硬件多播
- 4.7.3 网际组管理协议IGMP 和多播路由选择协议
- 4.8 虚拟专用网 VPN 和网络地址转换 NAT
- 4.8.1 虚拟专用网VPN
- 4.8.2 网络地址转换 NAT
- 4.9 多协议标签交换 MPLS
- 4.9.1 MPLS 的工作原理
- 4.9.2 MPLS首部的位置与格式
- 4.9.3 新一代的 MPLS
- 4.10 软件定义网络 SDN 简介
4.1 网络层的几个重要概念
网络层的功能:
- 异构网络互联
- 异构:每个网络的拓扑结构不同、物理层&链路层的实现不同、主机类型也各不相同
- 重要的设备: 路由器(Router)
- 注:在TCP/IP文献中,路由器也称为网关(Gateway)
- 路由与转发
- 路由:
各个路由器之间相互配合
,规划IP数据报(分组)的最佳转发路径
注:各个路由器需要运行“路由协议”,最终生成各自的“路由表”
- 转发:
一台路由器
,根据自己的“转发表”
,将收到的IP数据报从合适的接口转发出去
注:转发表=精简版路由表。更精简的致据结构有助于快速检索
- 路由:
- 拥塞控制
- 原因: 网络上出现过量分组,超负荷,引起网络性能下降拥塞
- 现象: 网络上的分组数增加,但吞吐量反而降低
- 拥塞控制方法:
- 开环控制(静态的方法):在部署网络时,就提前设计好预防拥塞的方法。一旦网络系统开始运行,就不再修改
- 闭环控制(动态的方法):动态监视网络状态,及时发现哪里发生拥塞,并将拥塞信息传递给相关路由器(如:通过ICMP),相关路由器及时调整“路由表”
4.1.1 网络层提供的两种服务
虚电路服务(Virtual Circuit Service)
定义:
- 虚电路服务是一种面向连接的分组交换服务。
- 在数据传输之前,通信双方建立一条逻辑连接(虚电路),数据通过这条路径按序传输。
特点:
- 面向连接:
- 在进行数据传输前,需要先建立虚电路,类似于打电话的连接过程。
- 虚电路在通信结束后会被释放。
- 数据传输有序:
- 数据包按照发送顺序依次到达,不会出现乱序。
- 路径固定:
- 数据包沿着预先建立的路径传输,不会在中间节点重新选择路径。
- 可靠性高:
- 由于虚电路是预先建立的,网络可以为数据传输提供更高的可靠性保障。
- 开销较大:
- 建立和维护虚电路需要额外的资源和开销。
数据报服务(Datagram Service)
定义:
- 数据报服务是一种无连接的分组交换服务。
- 每个数据包(数据报)独立传输,网络根据当前的网络状况为每个数据包选择最佳路径。
特点:
- 无连接:
- 数据传输前不需要建立连接,类似于发邮件,直接发送数据包即可。
- 数据传输无序:
- 数据包独立传输,可能会经过不同的路径,因此到达目的地时可能存在乱序。
- 路径动态选择:
- 每个数据包根据当前网络状况动态选择路径,可能会走不同的路由。
- 灵活性高:
- 网络可以根据负载情况动态调整路径,避免拥塞。
- 可靠性较低:
- 由于没有预先建立的连接,网络对数据传输的可靠性保障较低。
- 开销较小:
- 不需要建立和维护连接,资源开销较低。
特性 | 虚电路服务(Virtual Circuit) | 数据报服务(Datagram) |
---|---|---|
思路 | 可靠通信应当由网络 来保证 | 可靠通信应当由用户主机 来保证 |
连接的建立 | 必须有 | 不需要 |
终点地址 | 仅在连接建立阶段使用,每个分组使用短的虚电路号 | 每个分组都有终点的完整地址,即IP地址 |
分组的转发 | 属于同一条虚电路的分组均按照同一路由 进行转发 | 每个分组独立查找转发表 进行转发 |
当节点出故障时 | 所有通过出故障的节点的虚电路均不能工作 | 出故障的节点可能会丢失分组 ,一些路由可能会发生变化 |
分组的顺序 | 总是按发送顺序 到达终点 | 到达终点的顺序不一定按发送的顺序 |
端到端的差错处理和流量控制 | 可以由网络 负责或用户主机 负责 | 由用户主机 负责 |
互联网采用的设计思路:网络层要设计得尽量简单,向其上层只提供简单灵活的、无连接的、尽最大努力交付的数据报服务。
4.1.2 网络层的两个层面
在路由器之间传送的信息有以下两大类:
- 第一类是
转发
源主机和目的主机之间所传送的数据
:
把源主机所发送的分组,像接力赛跑那样从一个路由器转发到下一个路由器,最后把分组传送到目的主机。- 第二类则是
传送路由信息
:
是根据路由选择协议所使用的路由算法,彼此不断地交换路由信息分组,目的是为了在路由器中创建路由表,并由此导出为转发分组而用的转发表。这一类信息的传送是为第一类数据的传送服务的。
传统互连网机制:
- 数据层面:每一个路由器根据本路由器生成的转发表,把收到的分组,从查找到的对应接口转发出去。采用 硬件 进行转发,转发一个分组的时间为 纳秒(10-9秒)数量级
- 控制层面:依靠许多路由器协同动作,根据路由选择协议所用的路由算法计算路由。采用 软件 ,一般是 秒的数量级 。
软件定义网络SDN(Software Defined Network)机制:
-
数据层面:根据本转发表,把收到的分组,从查找到的对应接口转发出去。
-
控制层面:有一个在逻辑上集中的远程控制器。
- 逻辑上集中的远程控制器在物理上可由不同地点的多个服务器组成。
- 远程控制器掌握各
主机和整个网络的状态
。 - 远程控制器能够为每一个分组
计算出最佳的路由
。 - 远程控制器为每一个路由器
生成其正确的转发表
。
一般大型的专用数据中心之间的广域网,若使用SDN 模式来建造,可以使网络运行的效率提高。
4.2 网际协议 IP - IPv4
网际协议IP(Internet Protocol) 是TCP/IP体系中两个最主要的协议之一,又称为 Kahn-Cerf协议。这里所讲的IP其实是IP的第4个版本,记为IPv4
。
与协议IP配套使用的还有三个协议:
-
地址解析协议 ARP
(Address Resolution Protocol)
【还有一个协议叫逆地址解析协议RARP(Reverse Address Resolution Protocol),是和协议ARP配合使用的,但现在已被淘汰,现在DHCP协议包含RARP功能】 -
网际控制报文协议ICMP
(Internet Control Message Protocol) -
网际组管理协议IGMP
(Internet Group Management Protocol)
4.2.1 虚拟互连网络
将网络互相连接起来的中间设备,有以下四种:
物理层
使用的中间设备叫作转发器(repeater)或集线器(hub)
。 —— 起到网络扩大作用数据链路层
使用的中间设备叫作网桥或桥接器(bridge)
,以及交换机(switch)
。 —— 起到网络扩大作用网络层
使用的中间设备叫作路由器(router)
"。 —— 起到网络互连+路由选择作用- 在
网络层以上
使用的中间设备叫作网关(gateway)
。
虚拟互连网络(internet): 很多异构网络通过路由器互连起来
IP网: 很多异构网络通过路由器互连起来,而且所有的网络都使用相同的协议IP
【IP 协议可以使这些性能各异的网络从用户看起来好像是一个统一的网络】
间接交付: 分组从源节点发送到目的节点,若中间必须经过一个或几个路由器(这表示源节点和目的节点不在同一个网络上)
直接交付: 分组从源节点发送到目的节点,若不需要经过路由器,(这表示源节点和目的节点在同一个网络上)
4.2.2 IP 地址
1、IP地址及其表示方法
IP地址: 指明了连接到某个网络上的一个主机(或路由器),不连网的主机就没有IP地址。【IP地址不但标志了这个主机(或路由器),而且还标志了此接口所连接的网络】。IP地址资源由ICANN(互联网名字和数字分配机构)进行分配(有偿租用)。
IP地址组成: 分配一个在全世界范围内是唯一的
32位的
标识符
- n位网络号:标志主机(或路由器)所连接到的网络。一个网络号在整个互联网范围内必须是唯一的。
- (32-n)位主机号:该主机(或该路由器)。一个主机号在所连接的网络(即前面的网络号所指明的网络)中必须是唯一的。
IP地址记为: IP地址 ::={<网络号>,<主机号>} 【"::="表示“定义为”】
点分十进制法:
2、分类的IP地址
分类的 IP 地址
最基本的编址方法,在1981年就通过了相应的标准协议。
子网的划分
对最基本的编址方法的改进,其标准[RFC 950】在1985 年通过。
构成超网
比较新的无分类编址方法。1993 年提出后很快就得到推广应用。
分类IP地址:
A类:- 大型网络
- 网络号1字节,主机号3字节。
- 网络号第一位必须是0,范围 :00000000~01111111 但是除第一位以外的七位全0和全1不能用,真实使用范围 00000001 ~ 01111110【1~126】。因此A类地址可指派的网络号是126个(即27-2)。
- 网络号为全0的IP地址有特殊的用途,它表示"本网络"
- 网络号为127(即 01111111)保留作为本地软件环回测试(loopback test)本主机的进程之间的通信之用。
- 主机号:全0和全1一般不指派。每一个A类网络中的最大主机数是224-2,即16777214。
- 全0的主机号表示该IP地址是“本主机”所连接到的单个网络地址
(例如,若主机的IP地址为 5.6.7.8,则该主机所在的网络的网络号是5,而该网络的网络地址就是5.0.0.0)。- 全1表示“所有的”,因此全1的主机号字段表示该网络上的所有主机。
B类: - 中型网络
- 网络号2个字节,主机号2字节。
- 网络号前2位必须是10。
- 网络号:可指派的网络数为214,即16384。【128.0~191.255】
- 主机号:每一个B类网络中的最大主机数是216-2,即65534。这里需要减2是因为要扣除全0和全1的主机号。
C类:- 小型网络
- 网络号3个字节,主机号1字节。
- 网络号前3位必须是110。
- 网络号:可指派的网络总数是221,即2097152。【192.0.0~223.255.255】
- 主机号:每一个C 类网络中的最大主机数是28-2,即254。
网络号 主机号 源地址使用 目的地址使用 含义 全0 X 可以 不可以 在本网络上主机号为X的主机
网络号 主机号 源地址使用 目的地址使用 含义 Y 全1 不可以 可以 对网络号为Y的网络上的所有主机进行广播 Y 全0 不可以 不可以 表示整个网络本身(只能用于路由表、转发表)
网络号 主机号 源地址使用 目的地址使用 含义 全1 全1 不可以 可以 只在本网络上进行广播(各路由器均不转发) 全0 全0 可以 不可以 在本网络上的本主机(会在DHCP协议中使用)
主要作用:一台主机刚接入网络,暂没分配IP地址时使用的
网络号 主机号 源地址使用 目的地址使用 含义 127 非全0或全1的任何数 可以 可以 用于本地软件环回测试,不会发送到网络上
3、定长子网划分和子网掩码
子网划分:
定义:
- 子网划分是将一个较大的 IP 网络划分为多个较小的子网(Subnet)的过程。
- 每个子网都是一个独立的网络,有自己的子网地址和广播地址。
- 注意:每个子网地址中,主机号不能分配为全0/全1 —— 全0表示子网本身,全1为子网广播地址
IP地址结构:
- 子网划分前,IP地址为两级结构=<网络号,主机号>
- 子网划分后,IP地址为三级结构=<网络号,子网号,主机号>
地址掩码 / 子网掩码:
地址掩码又称为子网掩码(常简称为掩码): 由一连串1和接着的一连串0组成,而1的个数就是网络前缀的长度。【32位】
地址掩码目的: 能够从IP地址迅速算出网络地址
网络前缀:
- 用子网掩码、IP地址"逐位与",算出<网络号,子网号>(可合称为“网络前缀”)
- 只有网络前缀相同的IP地址,才归属于同一个网络(或子网)
网络地址 = 把二进制的IP地址
和地址掩码
进行按位 AND 运算
【AND运算就是逻辑乘法运算,其规则是:1 AND 1 = 1,1 AND 0 = 0,0 AND 0 = 0。】
默认网关:
- 计算机或设备在本地网络(局域网,LAN)与外部网络(广域网,WAN)之间进行通信时使用的“出口”。
- 如果设备的默认网关未正确配置,设备将无法访问外部网络。
注意:
- 如果一个网络内部进行了子网划分,那么这个网络中的每台主机、每个路由器接口都需要配置IP地址、默认网关、子网掩码
- 如果一台路由器不支持子网划分技术,那么在它的转发表中,需要包含<目的网络号,转发接口>
- 如果一台路由器支持子网划分技术,那么在它的转发表中,需要包含<目的网络号,子网掩码,转发接口>
默认子网掩码:
如果一个传统网络(A/B/C类)内部没有进行子网划分,那么可以将对应此网络的转发表项设置为“默认子网掩码”
- A类默认 255.0.0.0
- B类默认 255.255.0.0
- C类默认 255.255.255.0
默认路由:
- 默认路由(默认转发表项)设置:<目的网络号全0,子网掩码全0>
- 在路由器转发表中,如果所有表项都不匹配,那么将从“默认路由”转发出去
4、主机发送IP数据报的过程
判断目的主机和本机是否属于同一个网络:
检查本机IP地址和目的IP地址的网络前缀是否相同
(需要与本机配置的子网掩码“逐位与”)
-
若网络前缀相同,说明目的主机和本机属于同一个网络;
-
若网络前缀不同,说明不属于同一网络
将IP数据报封装成MAC帧并发送到链路上:
- 如果目的主机与本机属于同一个网络,就通过ARP协议找到目的主机的MAC地址,再将IP数据报封装成帧,并将帧发送给目的主机
- 如果目的主机与本机不属于同一个网络,就通过ARP协议找到默认网关的MAC地址,再将IP数据报封装成帧,并将帧发送给默认网关
5、路由器转发IP数据报的过程
-
路由器的某个接口收到一个IP数据报
-
对IP数据报首部进行校验,校验成功后从中
找到目的IP地址
-
查“转发表”
- 转发表的表项包含<
目的网络号
,子网掩码
,转发接口
> - 检查
目的IP地址
与每个表项能否匹配(将目的IP地址、子网掩码“逐位与”
,匹配表项中的目的网络号
) - 注:至少“默认路由”表项一定是可以匹配成功的
采用 CIDR 技术后,由于“路由聚合一个IP地址在转发表中可能会匹配多个表项,此时应使用最长前缀匹配原则
- 转发表的表项包含<
-
转发
- 根据查转发表的结果,将IP数据报从匹配的接口转发出去
- 注:如果匹配的“转发接口”和该IP数据报的入口相同,就不用再把IP数据报转发回去
6、无分类编址CIDR + 变长子网划分
全称:无分类域间路由选择CIDR(Classless Inter-Domain Routing)
网络前缀:简称前缀 —— 可变长
CIDR记为: IP地址 ::={<网络前缀>,<主机号>} 【32位标识符】
斜线记法/CIDR记法: IP地址/网络前缀所占的位数
例如,CIDR表示的一个IP地址 128.14.35.7/20
- 二进制IP地址的前 20位是网络前缀(相当于原来的网络号),
- 剩下后面12位是主机号。
例如,/20地址块的地址掩码是:11111111 11111111 11110000 00000000(20个连续的1和接着的 12 个连续的0)。
这个子网掩码用 CIDR 记法表示就是 255.255.240.0/20。
地址块:
把网络前缀都相同的所有连续的IP地址组成一个“CIDR 地址块”,一个CIDR地址块包含的IP地址数目,取决于网络前缀的位数
例如,已知IP地址128.14.35.7/20是某CIDR地址块中的一个地址
128.14.35.7/20 = 10000000 00001110 0010 0011 00000111
这个地址所在的地址块中的最小地址:10000000 00001110 0010 0000 00000000 => 128.14.32.0
这个地址所在的地址块中的最大地址:10000000 00001110 0010 1111 11111111 => 128.14.47.255
这个地址所在的地址块的IP地址一共 212, 可指派的地址 212 - 2
表示方法:
- 该地址块的最小地址/网络前缀位数:128.14.32.0/20
- 二进制代码:10000000 00001110 0010* 【*代表了主机号字段的所有的0。】
- 不指明网络地址:/20
注意:
128.14.32.7
是IP地址,但未指明网络前缀长度,因此不知道网络地址是什么。128.14.32.7/20
也是IP地址,但同时指明了网络前缀为20位,由此可导出网络地址。128.14.32.0/20
是包含多个IP 地址的地址块或网络前缀,同时也是这个地址块中主机号为全0的地址。请注意,上面地址块中4段十进制数字最后的0有时可以省略,即简写为128.14.32/20。
常用的CIDR地址块:
网络前缀长度 | 点分十进制 | 包含地址数 包含全1和全0主机号 K = 210 = 1024 | 对应包含分类的网络数 |
---|---|---|---|
/13 | 255.248.0.0 | 512 K | 8个B类或2048个C类 |
/14 | 255.252.0.0 | 256 K | 4个B类或1024个C类 |
/15 | 255.254.0.0 | 128 K | 2个B类或512个C类 |
/16 | 255.255.0.0 | 64 K | 1个B类或256个C类 |
/17 | 255.255.128.0 | 32 K | 128个C类 |
/18 | 255.255.192.0 | 16 K | 64个C类 |
/19 | 255.255.224.0 | 8 K | 32个C类 |
/20 | 255.255.240.0 | 4 K | 16个C类 |
/21 | 255.255.248.0 | 2 K | 8个C类 |
/22 | 255.255.252.0 | 1 K | 4个C类 |
/23 | 255.255.254.0 | 512 | 2个C类 |
/24 | 255.255.255.0 | 156 | 1个C类 |
/25 | 255.255.255.128 | 128 | 1/2个C类 |
/26 | 255.255.255.192 | 64 | 1/4个C类 |
/27 | 255.255.255.224 | 32 | 1/8个C类 |
网络前缀长度 点分十进制 包含地址数
包含全1和全0主机号
K = 210 = 1024对应包含分类的网络数 /13 255.248.0.0 512 K 8个B类或2048个C类 推导:
/13 —— 网络前缀 13位,主机号19位
==> 11111111 11111 000 00000000 00000000
==> 255.248.0.0
==> 地址数 = 219 = 29K = 512K
==> B类 - 16位网络前缀 16-13=3,即 23=8 个B
C类 - 24位网络前缀 24-13=11,即 211=2048 个C
特殊地址块:
前缀n=32
,即32位IP地址都是前缀,没有主机号。这其实就是一个IP地址。这个特殊地址用于主机路由
;
主机路由 - 精准路由:专门用于将数据直接发送到特定的单一主机前缀n=31
,这个地址块中只有两个IP地址
,其主机号分别为0和1。这个地址块用于点对点链路
;前缀n=0
,同时IP地址也是全0,即0.0.0.0/0
。这用于默认路由
。
变长子网划分:
路由聚合(route aggregation) / 构成超网:
使得路由表中的一个项目可以表示很多个原来传统分类地址
的路由:
-
路由聚合
减少路由器之间的路由选择信息的交换
,提高了整个互联网的性能;【减少路由表的大小】 -
路由聚合
可能会引入额外的无效地址
;
7、IP地址特点
- 每一个IP地址都由网络前缀和主机号两部分组成。
IP地址管理机构
在分配IP地址时只分配网络前缀
(第一级),而剩下的主机号
(第二级)则由得到该网络前缀的单位自行分配
。路由器
根据目的主机所连接的网络前缀(即地址块)来转发分组
(而不考虑目的主机号),可以使转发表中的项目数大幅度减少,从而减少转发表所占的存储空间,缩短查找转发表的时间。
- 当一台主机同时连接到两个网络上时,该主机就必须同时具有两个相应的IP地址,其网络前缀必须是不同的这种主机称为
多归属主机(multihomed host)
。 - 由于一个路由器至少应当连接到两个网络,因此
一个路由器至少应当有两个不同的IP地址
。 - 一个网络(或子网)是指具有相同网络前缀的主机的集合,因此,用
转发器或交换机连接
起来的若干个局域网仍为一个网络
,因为这些局域网都具有同样的网络前缀
。具有不同网络前缀的局域网
必须使用路由器进行互连
。 - 在IP地址中,所有分配到网络前缀的网络都是平等的——是指互联网同等对待每一个地址。
8、真题
4.2.3 IP地址与 MAC 地址
从层次的角度看:
- MAC地址是数据链路层及以下使用的地址 - 与物理位置无关【MAC地址是48位】
- IP地址是网络层及以上各层使用的地址,是一种逻辑地址(称IP地址为逻辑地址是因为IP地址是用软件实现的) - 与物理位置相关【IP地址有32位】
为什么不用MAC地址直接通信?
- MAC地址用于直接相连的网络,找到局域网中的主机
- 互联网中很多局域网是异构的
- IP协议将这些异构的网络互连,IP地址可以定位到主机所在的网络
4.2.4 地址解析协议 ARP
ARP目的: 解决【同一个局域网上
通过一个机器(主机或路由器)的IP地址,找出其相应的MAC地址】的问题。
ARP表 / ARP 高速缓存(ARP cache): 每一台主机都设有一个 ARP 高速缓存,里面存有本局域网上的各主机和路由器的IP地址到 MAC地址的映射表
ARP报文格式:
4.2.5 IP 数据报的格式
固定部分:
版本
:4位,指协议IP的版本。通信双方使用的协议IP的版本必须一致。【IPv4 / IPv6】
首部长度
:4位,可表示的最大十进制数值是15。单位: 32位字长【4字节】。IP固定部分是20字节,那么首部长度最小值为5=0101【5个4字节】。—— 当IP分组的首部长度不是4字节的整数倍时,必须利用最后的填充字段加以填充。
区分服务
:8位,指明期望获得哪种类型的服务,一般情况下不使用。
总长度
:16位,首部长度 + 后面数据部分长度,单位:1字节。能表示数据报最大长度216 - 1 = 65535字节数据报的总长度(即首部加上数据部分)一定不能超过下面的数据链路层所规定的 MTU(最大传送单元)值【最常用的以太网就规定其MTU值是1500字节。若超过MTU值,就必须把过长的数据报进行分片处理。】
IP协议规定:在互联网中所有的主机和路由器必须能够接受长度不超过 576字节的数据报。【假定上层交下来的数据长度有512字节(合理的长度),加上最长的IP首部60字节,再加上4字节的富余量,就得到576字节。】
标识(identification)
:16位,用于正确重装分片后的各数据报片为原来的数据报。【相同的标识字段的值组装在一起】
标志(flag)
:3位,目前只有2位有意义。
- 标志字段
中间的一位
记为DF (Don't Fragment)
,DF = 1
时不能分片
。DF = 0
时才允许分片
。- 标志字段中的
最低位
记为MF(More Fragment)
。MF=1
即表示后面“还有分片”
的数据报。MF=0
表示这已是若干数据报片中的最后一个
。
片偏移
:13位,片偏移指出: 较长的分组在分片后,某片数据部分在原分组中数据部分的相对偏移位置。单位:8个字节。除最后一个数据报片外,其他每个分片的长度一定是8字节(64位)的整数倍。
生存时间TTL(Time To Live)
:8位,指明数据报在互联网中至多可经过多少个路由器,路由器在每次转发数据报之前就把 TTL 值减1;若 TTL值减小到零,就丢弃这个数据报,不再转发。
数据报能在互联网中经过的路由器的最大数值是255。
若把TTL的初始值设置为1,就表示这个数据报只能在本局域网中传送。
协议
:8位
协议名 ICMP IGMP IP① TCP EGP IGP UDP IPv6 ESP AH ICMP-IPv6 OSPF 协议字段值 1 2 4 6 8 9 17 41 50 51 58 89 ① 注:这里的IP表示特殊的IP数据报–IP数据报再封装到IP数据报中
首部校验和
:16位,只检验数据报的首部,不包括数据部分。
- 在发送方,先把IP数据报首部划分为许多16位字的序列,并把检验和字段置零。用反码算术运算把所有16位字相加后,将得到的和的反码写入检验和字段。
- 接收方,收到数据报后,把首部的所有16位字再使用反码算术运算相加一次。将得到的和取反码,即得出接收方检验和的计算结果。
- 若首部未发生任何变化,则此结果必为0,于是就保留这个数据报;
- 否则即认为出差错,并将此数据报丢弃。
源地址
:32位,发送IP 数据报的主机的 IP 地址。
目的地址
:32位,接收 IP 数据报的主机的IP 地址。可变部分:
IP数据报首部的可变部分就是一个选项字段。选项字段用来支持排错、测量以及安全等措施。
此字段的长度可变,从1字节到 40字节不等。实际上这些选项很少被使用。很多路由器都不考虑 IP 首部的选项字段。
4.2.6 动态主机配置协议 DHCP
基本概念:
- DHCP协议的作用: 给
刚接入网络
的主机动态分配
IP地址、配置默认网关、子网掩码 - DHCP使用
客户/服务器模型
(C/S):- DHCP
客户
:就是新接入网络
的主机
(希望获得IP地址等配置) - DHCP
服务器
:就是负责分配IP地址
的那台主机
,管理一系列IP地址池
注:在家庭网络中,通常由家庭路由器兼职“DHCP服务器”
在一个大型网络内可以有多台DHCP服务器
- DHCP
- DHCP是
应用层协议
,基于UDP
—— 客户UDP端口号=68、服务器UDP端口号=67
原理:
①客户→服务器:DHCP发现报文
携带信息:客户主机的MAC地址(还可以提出对IP地址租用期的要求)
网络层:源IP地址=0.0.0.0
,目的IP地址=255.255.255.255(广播IP数据报)
链路层:源MAC=客户的MAC地址,目的MAC=全1(广播帧)
②服务器→客户:DHCP提供报文
携带信息:给客户分配的 IP 地址
、租用期
、子网掩码
、默认网关
网络层:源IP=DHCP服务器的IP地址
,目的IP=255.255.255.255(广播IP数据报)
链路层:源MAC=服务器的MAC地址,目的MAC=客户的MAC地址(单播帧)
③客户→服务器:DHCP请求报文
携带信息:客户机确认要使用的IP地址
网络层:源IP=0.0.0.0,目的IP=255.255.255.255(广播IP数据报)
链路层:源MAC=客户的MAC地址,目的MAC=全1(广播帧)
④服务器→客户:DHCP确认报文
携带信息:与报文②类似
网络层:源IP=DHCP服务器的IP地址,目的IP=255.255.255.255(广播IP数据报)
链路层:源MAC=服务器的MAC地址,目的MAC=客户的MAC地址(单播帧)
4.3 IP 层转发分组的过程
4.3.1 基于终点的转发
基于终点的转发: 分组在互联网上传送和转发是基于分组首部中的目的地址的
路由表:
路由表没有给分组指明到某个网络的完整路径:
- 指出到某个网络应当先到某个路器(即下一跳路由器);
- 到达下一跳路由器后,继续查找其路由表,再下一步应当到哪一个路由器;
- 这样一步一步地查找下去,直到最后到达目的网络。
基于终点的转发过程:
通过路由表先查找目的网络(网络前缀)
- 如果在同一网络,就把分组在这个网络上直接交付目的主机。
- 如果不在同一网络,就间接交付,把分组发送给连接在本网络上的路由器,以后要做的事情都由这个路由器来处理。
4.3.2 最长前缀匹配
最长前缀匹配(longest prefix match): 在采用CIDR编址时,如果一个分组在转发表中可以找到多个匹配的前缀,那么就应当选择前缀最长的一个作为匹配的前缀。【网络前缀越长,其地址块就越小,因而路由就越具体(more specific)。】
(特定)主机路由: 网络前缀=32即/32——为特定的目的主机指明一个路由;采用特定主机路由可使网络管理人员能更方便地控制网络和测试网络。
路由器分组转发流程:
4.4 网际控制报文协议ICMP
网际控制报文协议ICMP (Internet Control Message Protocol):ICMP 使主机或路由器报告差错情况和提供有关常情况的报告;
4.4.1 ICMP 报文的种类
ICMP 报文有两种:
-
ICMP差错报告报文 - 4种类型
-
终点不可达 - 类型值:3
当路由器或主机不能交付数据报
时就向源点发送终点不可达报文
。 -
时间超过 - 类型值:11
当路由器
收到生存时间TTL为零的数据报
时,除丢弃
该数据报外,还要向源点发送时间超过报文
。
当终点
在预先规定的时间内不能收到一个数据报的全部数据报片
时就把已收到的数据报片都丢弃
,并向源点发送时间超过报文
。 -
参数问题 - 类型值:12
当路由器或目的主机收到的数据报的首部中有的字段的值不正确时
,就丢弃
该数据报,并向源点发送参数问题报文
。 -
改变路由(重定向 - Redirect) - 类型值:5
路由器把改变路由报文发送给主机,让主机知道下次应将数据报发送给另外的路由器(找到了更好的路由
)。改变路由:
在主机刚开始工作时,一般都在转发表中设置一个默认路由器的IP地址。不管数据报要发送到哪个目的地址,都一律先把数据报传送给这个默认路由器,而这个默认路由器知道到每一个目的网络的最佳路由(通过和其他路由器交换路由信息)。如果默认路由器发现主机发往某个目的地址的数据报的最佳路由应当经过网络上的另一个路由器R,就用改变路由报文把这情况告诉主机。于是,该主机就在其转发表中增加一个项目:到某某目的地址应经过路由器R(而不是默认路由器)。
ICMP差错报告报文的报错内容组成:
不应发送 ICMP 差错报告报文的几种情况:
- 对
ICMP 差错报告报文
不再发送 ICMP 差错报告报文。 - 对
第一个分片的数据报分片的所有后续数据报片
都不发送 ICMP 差错报告报文。 - 对具有
多播地址的数据报
都不发送ICMP差错报告报文。 - 对具有
特殊地址(如127.0.0.0或0.0.0.0)的数据报
不发送 ICMP 差错报告报文。
- 对
-
-
ICMP询问报文 - 2种类型
-
回送(Echo)请求或回送回答 - 类型值:8或0
ICMP 回送请求报文是由主机或路由器向一个特定的目的主机发出的询问。收到此报文的主机必须给源主机或路由器发送ICMP回送回答报文。这种询问报文用来
测试目的站是否可达以及了解其有关状态
。 -
时间戳(Timestamp)请求或时间戳回答 - 类型值:13或14
在ICMP 时间戳请求报文发出后,就能够收到对方响应的ICMP时间戳回答报文。利用在报文中记录的时间戳(如报文的发送时间和接收时间)发送方很容易计算出当前网络的往返时延
。
-
4.4.2 ICMP 的应用举例
一、分组网间探测PING(Packet InterNet Groper) :用来测试两台主机之间的连通性。
-
PING 使用了ICMP 回送请求与回送回答报文。
-
PING 是应用层直接使用网络层ICMP的一个例子。它没有通过运输层的TCP或UDP。
Windows 操作系统:“ping hostname”(这里的 hostmame是要测试连通性的主机名或它的IP地址),按回车键后就可看到结果。
- 如果 hostmame 正常工作而且响应这个ICMP回送请求报文(有的主机为了防止恶意攻击就不理睬外界发送过来的这种报文),那么它就发回ICMP回送回答报文。
- 由于往返的ICMP 报文上都有时间戳,因此很容易得出往返时间。最后显示出的是统计结果:发送到哪个机器(IP地址),发送的、收到的和丢失的分组数(但不给出分组丢失的原因),以及往返时间的最小值、最大值和平均值。
二、traceroute(这是 UNIX操作系统中的命令),用来跟踪一个分组从源点到终点的路径。在Windows操作系统中这个命令是 tracert。
工作原理:
- traceroute从源主机向目的主机发送一连串的IP 数据报,数据报中封装的是无法交付的UDP 用户数据报“。
- 第一个数据报P1的生存时间 TTL设置为1。当P1到达路径上的第一个路由器 R1时,路由器 R1先收下它,接着把 TTL 的值减 1。由于 TTL 等于零了,因此 R1就把P1丢弃,并向源主机发送一个ICMP 时间超过差错报告报文。
- 源主机接着发送第二个数据报 P2,并把 TTL 设置为2。P2先到达路由器R1,R1收下后把 TTL 减1,再转发给路由器 R2。R2收到 P2时 TTL 为 1,但减1后 TTL 变为零了。R2就丢弃P2,并向源主机发送一个ICMP时间超过差错报告报文。
- 这样一直继续下去。
- 当最后一个数据报刚刚到达目的主机时,数据报的TTL是1。主机不转发数据报,也不把 TTL 值减1。但因IP数据报中封装的是无法交付的运输层的UDP用户数据报,因此目的主机要向源主机发送ICMP终点不可达差错报告报文。
- 源主机达通过这些路由器和最后目的主机发来的ICMP报文得到了源主机想知道的路由信息 – 到达目的主机所经过的路由器的IP地址,以及到达其中的每一个路由器的往返时间。
4.5 IPv6
2017年7月发布了IPv6的正式标准。
4.5.1 IPv6 的基本首部
- IPv6把地址从IPv4的32位增大到4倍,即增大到128位
- IPv6首部改为8字节对齐(即首部长度必须是8字节的整数倍)。原来的 IPv4 首部是4字节对齐。
IPv6 数据报由两大部分组成,即
基本首部(base header)
和后面的有效载荷(payload)
。有效载荷也称为净负荷。有效载荷允许有零个或多个扩展首部(extension header)
,再后面是数据部分
。但请注意,所有的扩展首部并不属于IPv6数据报的基本首部。
- 基本首部:
版本(version)
,占4位。它指明了协议的版本,对IPv6该字段是6。通信量类(traffc class)
,占8位。这是为了区分不同的IPv6数据报的类别或优先级,和IPv4的区分服务字段的作用相似。流标号(fow label)
,占20位。IPv6的一个新的机制是支持资源预分配,并且允许路由器把每一个数据报与一个给定的资源分配相联系。
IPv6 提出流(fow)的抽象概念。所谓“流”就是互联网络上从特定源点到特定终点(单播或多播)的一系列数据报(如实时音频或视频传输),而在这个“流”所经过的路径上的路由器都保证指明的服务质量。
所有属于同一个流的数据报都具有同样的流标号。因此,流标号对实时音频/视频数据的传送特别有用。对于传统的电子邮件或非实时数据则没有用处,把它置为0即可。有效载荷长度(payload length)
,占16位。它指明IPv6 数据报除基本首部以外的字节数(所有扩展首部都算在有效载荷之内)。这个字段的最大值是64KB(65535字节)。下一个首部(next header)
,占8位。它相当于IPv4的协议字段或可选字段。
- 当IPv6数据报没有扩展首部时,下一个首部字段的作用和IPv4的协议字段一样,它的值指出了基本首部后面的数据应交付IP层上面的哪一个高层协议。
- 当出现扩展首部时,下一个首部字段的值就标识后面第一个扩展首部的类型。
跳数限制(hop limit)
,占8位。用来防止数据报在网络中无限期地存在。和IPv4的生存时间字段相似。源点在每个数据报发出时即设定某个跳数限制(最大为255跳)。每个路由器在转发数据报时,要先把跳数限制字段中的值减1。当跳数限制的值为零时,就要把这个数据报丢弃。源地址
,占128位。是数据报的发送端的IP地址。目的地址
,占128位。是数据报的接收端的IP地址。- 扩展首部 - 6种:
每一个扩展首部都由若干个字段组成,长度各不同。但所有扩展首部的第一个字段都是8位的“下一个首部”字段。此字段的值指出了在该扩展首部后面的扩展首部是哪个
- 逐跳选项
- 路由选择
- 分片
- 鉴别
- 封装安全有效载荷
- 目的站选项
4.5.2 IPv6 的地址
一个IPv6数据报的目的地址
可以是以下三种基本类型地址:
- 单播(unicast):传统的
点对点
通信。 - 多播(multicast):多播是一点对多点的通信,数据报发送到
一组计算机中的每一个
。IPv6没有采用广播的术语,而是将广播看作多播的一个特例。 - 任播(anycast):是IPv6增加的一种类型。任播的终点是
一组计算机,但数据报只交付其中的一个
,通常是按照路由算法得出的距离最近或最好的一个。
IPv6地址编写规范:—— 冒号十六进制法
-
用“:"分成8段,每个x是一个16进制数【xxxx:xxxx:xxxx:xxxx:xxxx:xxxx:xxxx:xxxx】
-
压缩方法:
- 每组地址 0开头可以省略;
- 2001:0DB8:0:0D30:0123:4567:89AB:0DEF => 2001:DB8:0:D30:123:4567:89AB:DEF
- 每组连续多个0可以用一个0表示;
- 连续多组 0信息可以用双冒号表示(零压缩)——双冒号只能用一次。
- 2001:0000:0000:0000:8:0000:0000:BE7A => 2001::8:0:0:BE7A(只能使用一次零压缩)
特殊:
0000:00000:00000:00000:00000:00000:00000:1 => :1(环回接口地址)
00000:00000:00000:00000:00000:00000:00000:00000 => ::或0:0:0:0:0:0:0:0 - 每组地址 0开头可以省略;
IPv6地址分配情况:
分配 | 前缀 | 占地址空间的百分比 |
---|---|---|
保留 | 0000 0000 | 1/256 |
未分配 | 0000 0001 | 1/256 |
为NSAP地址保留 | 0000 001 | 1/128 |
为IPX地址保留 | 0000 010 | 1/128 |
未分配 | 0000 011 | 1/128 |
未分配 | 0000 1 | 1/32 |
未分配 | 0001 | 1/16 |
地址类型 | 地址块前缀 | 前缀的CIDR记法 |
---|---|---|
未指明地址 只能作为源地址 类似于0.0.0.0 - 默认路由 | 00…0(128位) | 记为::/128 |
环回地址 类似于127.0.0.1 | 00…1(128位) | 记为::1/128 |
多播地址 | 11111111(8位) | 记为FF00::/8 |
本地链路单播地址 | 11111110 10(10位) | 记为FE80::/10 |
本地站点单播地址 | 11111110 11(10位) | 记为FEC0::/10 |
全球单播地址 | 其余所有二进制前缀 |
本地站点单播地址(cite-local unicast address)
:有些单位的内部网络使用TCP/IP协议,但并没有连接到互联网上。连接在这样的内部网络上的主机都可以使用这种本地站点地址进行通信,但不能和互联网上的其他主机通信。(私有地址)
本地链路单播地址(link-local unicast address)
:这种地址是在单一链路上使用的。当一个节点启用IPv6时就自动生成本地链路地址(请注意,这个节点现在并没有连接在某个网络上)。当需要把分组发往单一链路的设备而不希望该分组被转发到此链路范围以外的地方时,就可以使用这种特殊地址。
全球单播地址
:
4.5.3 从IPv4向IPv6 过渡
-
双栈协议(双地址)
:-
双栈配置:
-
PC机,两套IP地址
-
路由器,两套IP地址、两套路由选择(IPv4和IPv6)
-
-
选择采用哪一种地址:
- 域名系统DNS查询结果决定:
- 返回 IPv4,就用 IPv4 地址,返回IPv6 就用 IPv6 地址。
- nslookup DNS名 - 查询 IPv4
- nslookup -query=AAAA DNS名 - 查询 IPv6
-
-
隧道技术:
要使双协议栈的主机知道IPv4数据报里面封装的数据是一个IPv6数据报,就必须把**
IPv4首部的协议字段的值设置为41
**(41表示数据报的数据部分是IPv6数据报)。
4.5.4 ICMPv6
IPv6需要使用ICMP来反馈一些差错信息
, 新的版本称为ICMPv6。地址解析协议 ARP和网际组管理协议IGMP的功能都已被合并到 ICMPv6中:
- 差错报文
- 信息报文
- 邻站发现报文(Neighbor-Discovery)——ND 协议
- 组成员关系报文(Multicast Listener Delivery)——MLD 协议
4.6 互联网的路由选择协议
4.6.1 有关路由选择协议的几个基本概念
-
理想的路由算法
- 算法必须是
正确的和完整的
。这里,“正确”的含义是: 沿着各路由表所指引的路由,分组一定能够最终到达目的网络和目的主机。 - 算法在计算上应
简单
。路由选择的计算不应使网络通信量增加太多的额外开销。 - 算法应能适应通信量和网络拓扑的变化,要有
自适应性/“稳健性”(robustness)
。- 当网络中的通信量发生变化时,算法能自适应地改变路由以均衡各链路的负载。
- 当某个或某些节点、链路发生故障不能工作,或者修理好了再投入运行时,算法也能及时地改变路由。
- 算法应具有
稳定性
。在网络通信量和网络拓扑相对稳定的情况下,路由算法应收敛于一个可以接受的解,而不应使得出的路由不停地变化。- 静态路由选择策略——非自适应路由选择
- 动态路由选择策略——自适应路由选择
- 算法应是
公平的
。路由选择算法应对所有用户(除对少数优先级高的用户)都是平等的。 - 算法应是
最佳的
。所谓“最佳”只能是相对于某一种特定要求下得出的较为合理的选择而已
- 算法必须是
-
分层次的路由选择协议
-
自治系统(autonomous system) - AS
自治系统 AS是在单一技术管理下的许多网络、IP地址以及路由器,而这些路由器使用一种自治系统内部的路由选择协议和共同的度量。每一个AS 对其他 AS 表现出的是一个单一的和一致的路由选择策略。 -
分类:
-
内部网关协议IGP(Interior Gateway Protocol) / 内部路由器协议IRP
在一个
自治系统内部使用的路由选择协议
,而这与在互联网中的其他自治系统选用什么路由选择协议无关。- RIP协议
- OSPF协议
- IS-IS协议
-
外部网关协议 EGP(External Gateway Protocol) / 外部路由器协议ERP
若源主机和目的主机处在不同的自治系统中(这两个自治系统可能使用不同的内部网关协议),需要使用外部网关协议EGP处理在不同自治系统AS之间的路由选择
。- BGP的版本4 — BGP-4
-
-
自治系统之间的路由选择也叫作域间路由选择(interdomain routing),
在自治系统内部的路由选择叫作域内路由选(intradomain routing)。
-
4.6.2 内部网关协议 RIP
路由信息协议RIP (Routing Information Protocol)
: 是一种分布式
的基于距离向量
的路由选择协议,是互联网的标准协议,最大优点是简单。
-
工作原理
- 距离的定义:
- 从一个路由器到
直接连接
的网络的距离
定义为1
【有些路由器规定到直接连接的网络的距离也可定义为0。但这两种不同的定义对实现协议RIP 并无影响】 - 从一个路由器到
非直接连接
的网络的距离
定义为所经过的路由器数加1
- “距离”也称为“跳数”,因为每经过一个网络,跳数就加1
- RIP 认为好的路由就是它通过的网络数目少,即“距离短”"。
- RIP 允许一条路径最多只能包含 15个网络。因此
“距离”等于16
时即相当于不可达
。 - RIP 只适用于
小型
互联网。 - RIP不能在两个网络之间同时使用多条路由。
- RIP选择一条具有最少网络数的路由(即最短路由),哪怕还存在另一条高速(低时延)但网络数较多的路由。
- 从一个路由器到
- RIP特点:
- 和谁交换信息:仅和
相邻路由器
交换信息。不相邻的路由器不交换信息。 - 交换什么信息:路由器交换的信息是当前
本路由器
所知道的全部信息,即自己现在的路由表
。【路由表中最主要的信息就是:到某个网络的距离(即最短距离),以及应经过的下一跳路由表更新的原则是找出到每个目的网络的最短距离。—— RIP路由表项:目的网络,距离,下一跳。】 - 什么时候交换信息:按
固定的时间间隔
交换路由信息。当网络拓扑发生变化
时,路由器也及时向相邻路由器通告拓扑变化后的路由信息。 - 网络中的主机虽然也运行协议RIP,但只被动地接收路由器发来的路由信息。
- RIP 用
UDP数据报
传送 - RIP 协议的收敛(convergence)过程较快。“收敛”:自治系统中所有的结点都得到正确的路由选择信息的过程。
- 和谁交换信息:仅和
- 距离的定义:
-
距离向量算法
-
路由表更新【找出到每个目的网络的最短距离】的算法
-
距离向量算法的基础就是 Bellman-Ford 算法(或 Ford-Fulkerson 算法)。算法的要点:
- 设X是结点A到 B的最短路径上的一个结点;
- 若把路径 A→B 拆成两段路径 A→X和 X→B,则每一段路径A→X和 X→B 也都分别是结点A到X和结点X到B的最短路径。
-
若3分钟还没有收到相邻路由器的更新路由表,则把此相邻路由器记为不可达的路由器,即把距离置为16(距离为16 - 不可达)。
-
RIP版本2:
可以支持无分类域间路由选择CIDR。此外,还提供简单的鉴别过程支持多播。
-
-
好消息传播得快,坏消息传播得慢
当网络出现故障时,要经过比较长的时间才能将此信息传送到所有的路由器。
4.6.3 内部网关协议 OSPF
开放最短路径优先OSPF(Open Shortest Path First)
:
- "开放"表明 OSPF 协议不是受某一家厂商控制,而是公开发表的。
- “最短路径优先”是因为使用了Dijkstra提出的最短路径算法SPF。
- 采用
分布式
的链路状态协议(link state protocol)
OSPF特点:
- 和谁交换信息:使用
洪泛法
向本自治系统中所有路由器
发送信息。【洪泛法:路由器通过所有输出端口向所有相邻的路由器发送信息。而每一个相邻路由器又再将此信息发往其所有的相邻路由器(但不再发送给刚刚发来信息的那个路由器)。】 - 交换什么信息:发送的信息就是与本路由器
相邻的所有路由器
的链路状态
,但这只是路由器所知道的部分信息。“链路状态"就是说明本路由器都和哪些路由器相邻,以及该链路的“度量”(metric,费用、距离、时延、带宽等)。 - 什么时候交换信息:只有当
链路状态发生变化
时,路由器才用洪泛法向所有路由器发送此信息。 - OSPF 对于不同类型的业务可计算出不同的路由。
- OSPF不用UDP而是直接
用 IP数据报
传送。OSPF构成的数据报很短。可减少路由信息的通信量。 - 多路径间的
负载均衡(load balancing)
: 如果到同一个目的网络有多条相同代价的路径,那么可以将通信量分配给这几条路径。 - 所有在 OSPF 路由器之间交换的分组都具有鉴别的功能。
- 支持可变长度的子网划分和无分类编址 CIDR。
- 每一个链路状态都带上一个 32 位的序号,序号越大状态就越新。
链路状态数据库:(link-state database)
各路由器之间频繁地交换链路状态信息,所有的路由器最终都能建立一个链路状态数据库,实际上是全网的拓扑结构图
。在全网范围内是一致的(这称为链路状态数据库的同步)。
-
每一个路由器都知道全网共有多少个路由器,以及哪些路由器是相连的,其代价是多少,等等
-
每一个路由器使用链路状态数据库中的数据,构造出自己的路由表(例如,使用Dijkstra的最短路径路由算法)。
-
每隔一段时间,如30分钟,要刷新一次数据库中的链路状态。
区域:(area)
-
OSPF将一个自治系统再划分为若干个更小的范围
-
每一个区域
都有一个 32 位的区域标识符
(用点分十进制
表示) -
区域也不能太大,在
一个区域内
的路由器最好不超过 200个
-
将洪泛法交换链路状态信息的范围局限于每一个区域,减少了网络上的通信量
-
同一区域内的路由器
只知道本区域
的完整网络拓扑,不知道其他区域的网络拓扑 -
上层的区域叫作
主干区域
,其标识符规定为0.0.0.0
,主千区域的作用是用来连通其他区域的 -
区域边界路由器ABR(area border router)
:负责主干区域和其他区域相连接的路由器 -
主干路由器BBR(backbone router)
:在主干区域内的路由器 -
自治系统边界路由器ASBR
:在主干区域内有一个路由器专门和本自治系统外的其他自治系统交换路由信息 -
OSPF 的五种分组类型:
问候(Hello)分组
,用来发现和维持邻站的可达性。- OSPF规定,每两个相邻路由器每隔10秒钟要交换一次问候分组。确知哪些邻站是可达的。若有40秒钟没有收到某个相邻路由器发来的问候分组,则可认为该相邻路由器是不可达的,应立即修改链路状态数据库,并重新计算路由表。
数据库描述(Database Description)分组
,向邻站给出自己的链路状态数据库中的所有链路状态项目的摘要信息。链路状态请求(Link State Request)分组
,向对方请求发送某些链路状态项目的详细信息。链路状态更新(Link State Update)分组
,用洪泛法对全网更新链路状态。链路状态确认(Link State Acknowledgment)分组
,对链路更新分组的确认。
数据库描述分组
和相邻路由器交换本数据库中已有的链路状态摘要信息。摘要信息主要就是指出有哪些路由器的链路状态信息(以及其序号)已经写入了数据库。经过与相邻路由器交换数据库描述分组后,路由器就使用
链路状态请求分组 LSR
,向对方请求发送自己的链路状态数据库(LSDB)中缺少的某些链路状态项目的详细信息。通过一系列的这种分组交换,全网同步的链路数据库就建立了。邻居路由器收到 链路状态请求分组 LSR 后,会发送
链路状态更新分组 LSU
,提供所请求的详细链路状态信息。路由器收到 LSU 后,会更新自己的链路状态数据库(LSDB),确保与邻居保持同步。并要发送
链路状态确认分组
(收到重复的更新分组只需要发送一次确认)。
OSPF 报文格式:
指定的路由器(designated router):
代表该局域网上所有的链路向连接到该网络上的各路由器发送状态信息。【在局域网内,有一个专门的路由器(叫做指定路由器,DR),它会收集所有其他路由器(比如电脑、其他路由器)连接到这个局域网的链路信息,然后把收集到的这些信息广播给局域网上的所有路由器。】
4.6.4 外部网关协议 BGP
边界网关协议(Border Gateway Protocol,BGP)
: 采用了路径向量(path vector)
路由选择协议
BGP特点:
- 是
不同自治系统
的路由器之间
交换路由信息的协议 - BGP 寻找一条能够到达目的网络且比较好的路由(不能兜圈子),不是寻找一条最佳路由。
- BGP采用
TCP协议
,端口号
(目的)为179
边界路由器(或边界网关)
:一个AS至少要有一个边界路由器和相邻AS的边界路由器直接相连,交换路由信息- 和谁交换信息:和
邻居AS
的边界路由器
,交换信息 - 交换什么信息:交换的网络可达性的信息,即
到达某个网络所要经过的一系列 AS
(增量更新,只发送更新的路由) - 什么时候交换信息:
网络拓扑发生变化
时,更新有变化的部分
- 和谁交换信息:和
BGP路由:
-
iBGP和eBGP:
- eBGP —— e表示外部 external:不同AS之间交换路由信息 —— TCP 连接【半永久性连接(即双方交换完信息后仍然保持着连接状态)】
- iBGP —— i表示外部 internal: AS内部的路由器交互 —— TCP 连接 —— 在一个AS内部所有的iBGP 必须是全连通的。即使两个路由器之间没有物理连接,但它们之间仍然有iBGP连接。
- eBGP 和iBGP 并不是两个不同的协议。是在不同 AS 的两个对等端之间的 BGP 连接。在这两种不同连接上传送的BGP报文,都遵循同样的协议BGP,使用同样的报文格式和具有同样的属性类型,唯一的不同点就是在发送BGP路由通告时的规则有所不同。
-
几种协议关系:
-
BGP路由通告原则:
-
只
将最优路由发布
给对等体; -
只
发送更新的
BGP路由;【增量更新】 -
从
EBGP
邻居学到的路由,通告
给所有BGP邻居
(IBGP/EBGP)从外部网络学到了一条路由信息,不仅会告诉内部网络(在同一个 AS 里连接的邻居 - 是 IBGP 邻居),还会告诉外部网络的其他邻居(比如其他 AS 的邻居 - 是 EBGP 邻居)。
-
从
IBGP
邻居学到的路由,不通告
给其他IBGP邻居
(水平分割原则) - 为了防止路由信息在同一个 AS 里反复传递,导致环路。
从同一个 AS 内部的邻居(比如同一AS 里的其他路由器 - IBGP 邻居)学到了一条路由信息,不会再把这个信息转告给同一个 AS 里的其他邻居(其他IBGP 邻居)。 -
从
IBGP
邻居学到的路由,是否
通告给EBGP邻居
取决于BGP同步规则
。
从同一个 AS 内部的邻居( IBGP 邻居)学到了一条路由信息,我可以选择是否把这个信息告诉外部网络的邻居( EBGP 邻居)。但前提是这条路由信息必须已经在我的 IGP(比如 OSPF、EIGRP)中有了。如果这条路由信息不在 IGP 中,就不能告诉 EBGP 邻居,否则可能会导致路由问题。
-
-
路由格式:
- BGP 路由 = “前缀,BGP属性” = “前缀, AS-PATH, NEXT-HOP”
- 前缀:是通告的BGP路由终点(子网前缀)。
- BGP属性有好几种类型,最重要两个:
- AS-PATH(自治系统路径):是通告的BGP路由所经过的自治系统。BGP路由每经过一个AS,就将其自治系统号ASN加入到AS-PATH。
- NEXT-HOP(下一跳)是通告的 BGP 路由起点。
- BGP 路由 = “前缀,BGP属性” = “前缀, AS-PATH, NEXT-HOP”
三种不同的自治系统AS:
穿越AS(transit AS) + 末梢AS(stub AS) + 对等AS(peering AS)
BGP路由选择:
-
假如从一个AS到另外一个AS中的前缀X只有一条BGP路由,就不存在选择BGP 路由的问题,此时 BGP路由是唯一的。
-
如果到前缀X有两条或更多的BGP路由可供选择,那么就应当根据以下的原则,选择一条较好的 BGP路由【按以下顺序选】
本地偏好
LOCAL-PREF(LOCAL preference)值最高的路由要首先选择- BGP路由中的属性 —— 本地偏好 —— 记为LOCAL-PREF= 100(默认); 值越大,优先级越高。
- 只能在本AS内传递。
- 选择具有
AS 跳数最小
的路由; 【跳数最小,但不一定是最佳】 - 使用
热土豆路
由选择算法; 【通过内部网关协议(如协议OSPF或RIP)要让分组经过最少的转发次数离开本AS】 - 选择路由器
BGP 标识符的数值最小
的路由。
BGP报文格式:
-
OPEN(打开)报文
,与相邻的另一个BGP发言者建立关系,使通信初始化; -
UPDATE(更新)报文
,通告某一路由的信息,以及列出要撤销的多条路由;- 可以用该报文撤销曾经通知过的路由,也可以宣布增加新的路由:
- 每个更新报文,可以一次撤销多条路由;
- 每个更新报文,只能增加一条新路由。
- 可以用该报文撤销曾经通知过的路由,也可以宣布增加新的路由:
-
KEEPALIVE(保活)报文
,用来周期性地证实邻站的连通性 -
NOTIFICATION(通知)报文
,用来发送检测到的差错;以上四种报文在RFC4271中定义。
-
REFRESH(刷新)报文
;
在RFC2918中定义; 用于在改变路由策略后请求对等体重新发送路由信息。
4.6.5 路由器的构成
路由器:
-
连通不同的网络,
-
是多个输入端口和多个输出端口的专用计算机,
-
任务是转发分组(转发给下一跳路由器);
路由器的构成:
路由选择部分
-管理控制
层面 (软件
)- 核心构件:
路由选择处理机
【RIP、OSPF、BGP协议】 - 任务:根据所路由选择协议构造出路由表,并和相邻路由器交换路由信息,不断地更新和维护路由表。
- 核心表:
路由表
—— 许多路由器协同工作的结果
- 核心构件:
分组转发部分
-数据
层面 (硬件
)- 核心构件:
输入端口、输出端口、交换结构
- 输入端口、输出端口的端口是硬件接口
交换结构(switching fabric)
:又称为交换组织,其作用是根据转发表(forwarding table)对分组进行处理,可看成是“在路由器中的网络”- 通过
存储器
:当路由器的某个输入端口收到一个分组时,就用中断方式通知路由选择处理机。然后分组就从输入端口复制到存储器中。路由器处理机从分组首部提取目的地址,查找路由表,再将分组复制到合适的输出端口的缓存中。 - 通过
总线
:数据报从输入端口通过共享总线直接传送到合适的输出端口,而不需要路由选择处理机的干预。但是,由于总线是共享的,因此在同一时间只能有一个分组在总线上传送。当分组到达输入端口时若发现总线忙则被阻塞而不能通过交换结构,并在输入端口排队等待。 - 通过
互连网络(interconnection network)
:它有2N条总线,可以使N个输入端口和 N个输出端口相连接
- 通过
- 核心表:
转发表
- 从路由表中得到的 —— 仅仅涉及一个路由器
- 核心构件:
路由表和转发表的区别:
- “路由选择”(routing)
- 按照路由算法,得到的关于网络拓扑的变化情况,动态地改变所选择的路由(涉及多台路由器,软件实现)
- 路由表是根据路由选择算法得出的(包含到目的网络的下一跳);
- “转发”(forwarding)
- 路由器根据转发表将IP 数据报从合适的端口转发出去;
- 转发表是从路由表得出的(包含更多信息);
- 仅涉及一个路由器
4.7 IP 多播
4.7.1 IP 多播的基本概念
多播路由器(multicast router): 能够运行多播协议的路由器
多播组的标识符: IP地址中的D类地址。D类IP地址的前四位是 1110,因此D 类地址范围是 224.0.0.0 到 239.255.255.255。我们就用每一个 D类地址标志一个多播组。
多播地址只能用于目的地址,而不能用于源地址。对多播数据报不产生ICMP 差错报文。
IP多播可以分为两种:
-
只在本局域网上进行硬件多播,
-
在互联网的范围进行多播。
4.7.2 在局域网上进行硬件多播
在48位的多播MAC地址
中,前 25 位都固定不变,只有后 23 位可用作多播:
- MAC地址共48位:前24位是统一分配,后24位是厂商自行分配:范围是从 00-00-5E-00-00-00 到 00-00-5E-FF-FF-FF
- 组/多播MAC地址:是指第一个字节的最低位是1的MAC地址,且第25位固定不变为0:范围是从 01-00-5E-00-00-00 到 01-00-5E-7F-FF-FF
在32位的D类IP地址
中:
- D类IP地址可供分配的有 28 位
- 这 28位中只有后 23位才映射以太网多播地址中的后23 位,28位中的前5位不能用来构成以太网多播地址
4.7.3 网际组管理协议IGMP 和多播路由选择协议
网际组管理协议IGMP:
-
IGMP 协议
:最后一跳路由器和用户之间使用的协议 -
IGMP使用
IP数据报
传递其报文(即IGMP 报文加上 IP 首部构成 IP 数据报) -
主要任务
:多播路由器通过 IGMP 协议了解每个接口连接的网段上是否存在多播接收者:有,组播路由器将数据包转发到这个网段,否则不转发 -
在主机和多播路由器之间的
所有通信都使用IP多播
。只要有可能,携带IGMP报文的数据报都用硬件多播
来传送。 -
IGMP的工作可分为两个阶段:
- 第一阶段:当
某台主机加入新的多播组
时,该主机应向多播组的多播地址发送一个IGMP 报文,声明自己要成为该组的成员。本地的多播路由器收到IGMP 报文后,还要利用多播路由选择协议把这种组成员关系转发给互联网上的其他多播路由器 - 第二阶段: 组成员关系是动态的。本地多播路由器要
周期性地探询本地局域网上的主机
,以便知道这些主机是否还继续是组的成员。- 多播路由器需要
发送询问报文
- 多播路由器只需要知道网络上是否
至少还有一台主机是本组成员
即可 - 对询问报文每一个组只需有一台主机发送响应【同一个组内的每一台主机都要监听响应,只要有本组的其他主机先发送了响应,自己就可以不再发送响应了。】 - 多播路由器只需要对
所有的组发送一个请求信息的询问报文
而不需要对每一个组发送一个询问报文(虽然也允许)。默认的询问速率是每125秒发送一次。 - 当
同一个网络
上连接有几个多播路由器时,它们能够迅速和有效地选择其中的一个多播路由器来探询
主机的成员关系。 - 在IGMP的
询问报文
中有一个数值N,它指明一个最长响应时间
(默认值为10秒)。当收到询问时,主机在0到N之间随机选择发送响应所需经过的时延。因此,若一台主机同时参加了几个多播组,则主机对每一个多播组选择不同的随机数。对应于最小时延的响应最先发送。
- 多播路由器需要
- 第一阶段:当
多播路由选择协议:
多播路由器之间运行多播路由协议
,建立和维护多播路由
。
多播路由选择:建立从源到多个接收端的无环
数据传输路径: 构建多播转发树
。
多播转发树: 以源主机为根节点的多播转发树。
- 每一个多播路由器向树的叶节点方向转发收到的多播数据报
- 在多播转发树上的路由器不会收到重复的多播数据报(即多播数据报不应在互联网中兜圈子)。
- 对不同的多播组对应于不同的多播转发树。同一个多播组,对不同的源点也会有不同的多播转发树。
多播路由选择协议在转发多播数据报时使用了的三种方法:
-
洪泛与剪除
:适合于较小
的多播组,而所有的组成员接入的局域网也是相邻接的-
洪泛
:反向路径广播RPB(Reverse Path Broadcasting)
:每一个路由器在收到一个多播数据报时,先检查数据报是否是从源点经最短路径传送来的。只要从本路由器寻找到源点的最短路径上(反向路径:在计算最短路径时是把源点当作终点的)的第一个路由器是否就是刚才把多播数据报送来的路由器。- 若是,就向所有其他方向转发刚才收到的多播数据报(但进入的方向除外),
- 否则就丢弃而不转发。
- 如果存在几条同样长度的最短路径,只能选择一条最短路径 —— 看这几条最短路径中的相邻路由器谁的IP地址最小。
-
剪除
:如果在多播转发树上的某个路由器发现它的下游树枝(即叶节点方向)已没有该多播组的成员,就应把它和下游的树枝一起剪除。
-
嫁接(Grafting)
:
如果已经被剪枝的路径再次需要接收多播数据,上游路由器需要通过重新加入多播转发树。
-
-
隧道技术(tunneling)
:适用于多播组的位置在地理上很分散
的情况。
对多播数据报进行封装,加上普通数据报首部,使之成为向单一目的站发送的单播(unicast)数据报,然后通过“隧道”(tunnel)发送到路由器。通过路由器剥去其首部,使它又恢复成原来的多播数据报。 -
基于核心的发现技术
:多播组的大小在较大范围内变化时都适合
对每一个多播组G指定一个核心(core)路由器
多播路由选择协议种类:
-
多播路由选择协议(
域内使用
)-
DVMPR: 距离向量多播路由选择协议(最期MBONE中使用) : Distance Vector Multicast Routing Protocol
-
CBT: 基于核心的转发树(不用了): Core Based Tree
-
MOSPF: 开放最短通路优先多播扩展: Multicast extensions to OSPF
是单播路由选择协议OSPF的扩充,利用链路状态数据库中的信息构建多播转发树。 是一种 密集模式协议,适用于小型或中型密集网络环境。 -
PIM-SM
: 协议无关多播-稀疏方式: Protocol Independent Multicast-Sparse Mode 适用于组成员的分布非常分散的情况,与单播路由协议无关。 -
PIM-DM
: 协议无关多播-密集方式: Protocol independent Multicast-Dense Mode 适用于组成员的分布非常集中的情况,与单播路由协议无关。
-
-
多播路由选择协议(
域间使用
):-
MSDP、PIM-SSM:用于发现其他组播域的组播源;
-
M-BGP、BGP
: 域间传播组播路由信息。
-
特性 密集模式协议 稀疏模式协议 网络特性 网络中大多数节点需要接收多播数据。 网络中只有少数节点需要接收多播数据。 协议 DVMPR、PIM-DM PIM-SM、CBT 工作机制 采用泛洪(Flooding)和剪枝(Pruning)机制。维护多播转发树 采用加入(Join)和退出(Leave)机制。 适用场景 适合小型或中型密集网络。 适用于组成员分散、范围较广、大规模的网络。
4.8 虚拟专用网 VPN 和网络地址转换 NAT
4.8.1 虚拟专用网VPN
专用地址(private address): 只能用于一个机构的内部通信,不能用于和互联网上的主机通信,如果通过 网络地址转换(NAT, Network Address Translation) 技术就可以访问外部网络。
专用地址 - 私有IP地址/内网地址 的范围: 私有IP地址是可复用的,只要求局域网内唯一,不要求全球唯一
- 10.0.0.0 - 10.255.255.255( 10.0.0.0/8 ):
- 这是一个 A 类地址范围,支持最大 16,777,216 个 IP 地址。
- 适用于大型企业或组织。
- 172.16.0.0 - 172.31.255.255( 172.16.0.0/12 ):
- 这是一个 B 类地址范围,支持最大 1,048,576 个 IP 地址。
- 适用于中型企业或组织。
- 192.168.0.0 - 192.168.255.255( 192.168.0.0/16 网段 ):
- 这是一个 C 类地址范围,支持最大 65,536 个 IP 地址。
- 适用于小型企业、家庭网络或实验室环境。
虚拟专用网络(Virtual Private Network,VPN): 是一种在公用网络上建立专用网络的技术。它利用加密技术和隧道协议,在公共网络上构建一个安全、私密的通信通道。
特性 | 内联网 VPN(Intranet) | 外联网 VPN(Extranet) | 远程访问 VPN(Access) |
---|---|---|---|
用途 | 连接企业内部网络(如分支机构) | 连接企业与外部合作伙伴 | 允许远程用户访问企业内部资源 |
技术实现 | 站点到站点 VPN(IPsec、MPLS) | 站点到站点 VPN 或 SSL/TLS VPN | 远程访问 VPN(SSL/TLS、IPsec、OpenVPN) |
典型协议 | IPsec、MPLS | IPsec、SSL/TLS | SSL/TLS、IPsec、OpenVPN |
用户类型 | 内部网络(如不同分支机构) | 外部合作伙伴(如供应商、客户) | 远程用户(如员工、客户) |
4.8.2 网络地址转换 NAT
网络地址转换NAT(Network Address Translation,1994年) / 传统的NAT(traditional NAT):
- 专用网连接到互联网的路由器上安装NAT软件(
NAT路由器
) - NAT路由器
至少有一个
有效的外部全球IP地址(外网IP)
【 ISP提供,全球唯一】。 - 允许多个专用 IP 地址共享一个公有 IP 地址
- NAT表,记录地址转换关系 <内网IP <—> 外网IP>
- 使用本地地址的主机在和外界通信时,在NAT路由器上发生了
两次地址转换 - 内外网IP互相转换
:离开专用网时
: 替换源地址,将本地地址替换为全球IP地址进入专用网时
: 替换目的地址,将全球IP地址替换为本地地址
- 不使用端口号
网络地址与端口号转换NAPT(Network Address and Port Translation) / 端口地址转换PAT(Port Address Translation):
- 允许多个专用 IP 地址共享一个公有 IP 地址
- 通过·
运输层端口号
来区分 - NAT表,记录地址转换关系 <内网IP:端口号 <—> 外网IP:端口号>
- 一个IP数据报
- 从
内网
转发到外网
,会更改源IP地址
、源端口号
- 从
外网
转发到内网
,会更改目的IP地址
、目的端口号
- 从
静态NAT:
-
为内部某台服务器,指定一个固定转换的公有IP(一对一的)
在 NAT 设备(如路由器或防火墙)上,手动配置一个固定的公有 IP 地址和一个专用 IP 地址之间的映射关系。这种映射关系是一对一 的,且始终保持不变。
-
外面主机可以使用这个公有IP 访问服务器资源。
4.9 多协议标签交换 MPLS
多协议标签交换 MPLS(Multi Protocol Label Switching):
- 位于 数据链路层(Data Link Layer) 和 网络层(Network Layer) 之间的技术(2.5层)
- “多协议”表示:在 在多种网络层协议(如 IP、ATM)上运行。
- “标签”表示:使每个分组携带一个叫作标签的小整数(这叫作打上标签)
- MPLS需依赖IGP 协议(OSPF、RIP等)
- 利用面向连接技术【通信双方在传输数据之前,必须通过某种协议建立一条逻辑上的连接(会话)】
- 支持流量工程,均衡网络负载
- 有效地支持虚拟专用网 VPN。
4.9.1 MPLS 的工作原理
MPLS:
-
MPLS域(MPLS domain):
是指该域中有许多彼此相邻的路由器,并且所有的路由器都是支持 MPLS 技术的标签交换路由器LSR(Label Switching Router)
。LSR 同时具有标签交换和路由选择这两种功能,标签交换功能是为了快速转发,但在这之前LSR需要使用路由选择功能构造转发表。 -
在MPLS域的入口处,给每一个数据报打上固定长度“标签”,然后对打上标签的IP数据报
用硬件进行转发
,称为标签交换
-
“交换”在转发时不再上升到第三层查找转发表,而是根据标签
在第二层(链路层)
用硬件进行转发
; -
MPLS可
使用多种链路层协议
(PPP、以太网、ATM、帧中继)
转发等价类FEC:
-
路由器按照同样方式对待的IP数据报的集合。
“按照同样方式对待”
表示:从同样接口转发到同样的下一跳地址,并且具有同样服务类别和同样丢弃优先级等。 -
划分 FEC 的方法不受什么限制,这都由网络管理员来控制;
-
属于同样 FEC 的IP 数据报都指派同样的标签。FEC和标签是一一对应的关系。
流量工程 TE(Traffic Engineering)或通信量工程:网络管理员采用自定义的FEC【根据需求将特定的流量分组,并为其分配不同的路径】可以更好地均衡网络负载的做法
4.9.2 MPLS首部的位置与格式
首部位置:
在把IP数据报封装成以太网帧之前,先要插入一个MPLS首部。从层次的角度看,MPLS首部就处在第二层和第三层之间。在把加上MPLS首部的IP数据报封装成以太网帧时,以太网的类型字段在单播的情况下设置为884716(下标 16 表示这是十六进制的数字),而在多播的情况下为 884816。这样,接收方可以用帧的类型来判决这个帧是携带了 MPLS标签还是一个常规的IP 数据报。
格式: 4字节
- 标签值:占20位。
- 试验:占3位,目前保留用于试验。
- S:占1位,S(Stack)表示栈,在有“标签栈”时使用。
- 生存时间 TTL:占8位,用来防止 MPLS 分组在 MPLS域中兜圈子。
4.9.3 新一代的 MPLS
段路由选择协议(Segment Routing),简称为 SR:
- “段(segment)” 就是标签,也就是转发指令的一种标识符。
- SR的工作原理仍然是基于标签交换的,不过不需要使用标签分配协议LDP。
- SR由
源节点
为发送的报文指定路径
,并将路径
转换成有序的段列表
(Segment List),即MPLS标签栈
,它被封装在分组首部。网络中的其他节点就执行首部中的指令(即标签)进行转发。
SDN控制器:
整个网络设有控制器,也就是SDN控制器。
- 控制器收集并掌握全网的拓扑信息和链路状态信息,计算出分组应传送的整个路径。
- 控制器负责给分组分配SR 标签,这些标签指明了分组从源点到终点的路径。当分组到达某个网络节点时,节点就根据分组携带的标签转发到下一个节点。
SRv6: 直接利用IPv6 字段作为标签寻址。
SR-MPLS: 在 MPLS 基础上的 SR 。
4.10 软件定义网络 SDN 简介
SDN: 是一个体系结构,是一种设计、构建和管理网络的新方法或新概念,其要点就是把网络的控制层面和数据层面分离,而让控制层面利用软件来控制数据层面中的许多设备。
协议OpenFlow: 可以看成是在SDN体系结构中控制层面和数据层面之间的通信接口,它使得控制层面的控制器可以对数据层面中的物理设备或虚拟设备,进行直接访问和操纵。这种控制在逻辑上是集中式的,是基于流的控制
。
传统意义上的数据层面的任务就是根据转发表来转发分组:- 路由器 + 转发表
“匹配”,即查找转发表中的网络前缀,进行最长前缀匹配。
“动作”,即把分组从指明的接口转发出去。
在 SDN 的广义转发中:分组交换机 + 流表
“匹配”,能够对不同层次(链路层、网络层、运输层)的首部中的字段进行匹配,
“动作”,则不仅是转发分组,而且可以把具有同样目的地址的分组从不同的接口转发出去(为了负载均衡)。还可以重写IP首部(如同在NAT路由器中的地址转换),或者可以人为地阻挡或丢弃一些分组(如同在防火墙中一样)。
流表和分组:
每个OpenFlow交换机必须有一个或一个以上的流表。
每一个流表可以包括很多行,即多个流表项(flow entry)
,它包括三个字段,
首部字段值
: 又称为匹配字段计数器
: 可包括已经与该表项匹配的分组数量,以及从该表项上次更新到现在经历的时间。动作
: 这是一组动作,例如,当分组匹配某个流表项时把分组转发到指明的端口,或丢弃该分组,或把分组进行复制后再从多个端口转发出去,或重写分组的首部字段(第三和四层的首部字段)。
SDN体系结构特征:
- 基于流的转发
- 数据层面与控制层面分离(decouple)
- 网络控制功能:SDN 中的控制层面是用软件实现的。
SDN控制层面包含两个构件:- 一个是
SDN控制器
(也就是网络操作系统)——维护准确的网络状态信息 - 一个由若干个
网络控制应用程序
组成——对底层的许多网络设备进行监视、编程和控制
- 一个是
- 可编程的网络。通过在控制层面的一些网络控制应用程序,使整个网络成为可编程的。
参考:
教材:计算机网络(第8版) (谢希仁) (Z-Library).pdf
视频:
王道计算机考研 计算机网络
计算机网络 第8版 谢希仁