计网复习笔记【附思维导图】——【4】网络层
计网 网络层
网络层位于运输层和链路层之间。
数据平面和控制平面
网络层分为控制平面和数据平面。
数据平面:转发
数据平面:转发,即每台路由器的功能,决定到达路由器输入链路之一的数据报如何转发到该路由器的输出链路之一。
数据平面介绍内容包括下面几节:
4.1 网络层概述
4.2 虚电路和数据报网络
4.3 路由器工作原理
4.4 网际协议
控制平面:路由
控制平面:路由选择,主要作用是协调每台路由器的转发动作。当分组从发送方流向接收方时,网络层必须决定这些分组所采用的路由或路径。
控制平面介绍内容包括下面几节:
4.5 路由选择算法
4.6 因特网中的选路
4.7 广播和多播选路
4.1 网络层概述
网络层工作在网络边缘的每一台主机和服务器,以及中间的每一个路由器。
网络层
- 功能:提供主机到主机的通信功能,即将分组从一台主机发送到另一台主机。
- 发送方:将报文段封装成数据报,向相邻路由器发送。
- 接收方:接收来自路由器的数据报,解封装取出报文段交给运输层。
- 网络层数据单元为数据报,数据报头部包括IP地址。
网络层两大功能
- 数据平面:转发
- 分组从一条入链路到一台路由器,路由器决定哪条出链路的传送过程。
- 路由器根据转发表将分组从输入链路移动到适当的输出链路,通常由硬件实现,属于路由器本地动作。
- 类比:开车经过单个立交桥选择合适出口。
- 控制平面:路由
- 一个网络中的所有路由器经路由选择算法共同交互,决定分组从源到目的节点所采取的路径。
- 分组从源到目的端所采用的路径,通常由软件实现,属于端到端路径的网络范围内的一个过程。
- 类比:开车,出发点到目的地所有路径中选择一条,但是每条路径都由一系列立交桥连接的路段组成。
网络服务模型
- 定义:网络的发送端系统与接收端系统之间分组的端到端传输特性。
- 网络层提供的特定服务
- 数据报服务
- 1.确保交付:该服务确保分组将最终到达其目的地。
- 2.具有时延上限的确保交付:确保分组在特定的主机到主机时延上界内交付。
- 数据报流服务
- 1.有序分组交付:确保分组按被发送的顺序到达目的地。
- 2.确保最小带宽
- 3.确保最大时延抖动
- 4.安全性服务
- 数据报服务
- 因特网的网络层提供了尽力而为服务(尽量传,但是丢了不管)
- 分组间的时间间隔是得不到保证的,分组接收的顺序也不能保证,传送的分组也不能保证不会丢失。
4.2 虚电路和数据报网络
网络层提供的服务包括面向连接的虚电路网络和无连接的数据报网络,因特网采用的是数据报网络。
虚电路网络和数据报网络的由来
- 虚电路的概念来源于电话领域,它采用了真正的电路,使用VC 号转发分组。
- "dumb"端系统
- 因特网作为一种数据报网络,是由互连计算机的需求发展而来的,使用IP 地址转发分组。
- "smart"端系统
面向连接的服务
- 传输层:面向连接服务是在位于网络边缘的端系统中实现的。传输层的连接服务是面向应用程序的。
- 网络层:连接服务除了在端系统中实现外,也在位于网络核心的路由器中实现。网络层连接服务面向主机,从连接开始,主机到主机,包括中间路由器。
无连接服务
- 数据报网络特征:网络层主机之间的无连接服务。
网络体系结构
- 1.因特网
- 无连接的数据报网络
- 尽力而为服务
- 2.ATM
- 面向连接的虚电路网络
- 超越因特网的多重服务模型
- 概念:可以在同一网络中为不同的连接提供不同类别的服务。
- 实例:ATM服务模型
- 1.恒定比特率(CBR)ATM网络服务
- 2.可用比特率(ABR)ATM网络服务
- 3.帧中继:面向连接的虚电路网络。
网络层服务
面向连接:虚电路(VC)网络
- 包括ATM、帧中继网络体系结构,提供可预见服务。
- 特征:沿两个端系统之间路径上的路由器都要参与虚电路的建立,且每台路由器都完全知道经过它的所有虚电路。
- 虚电路组成
- 1.源和目的主机之间的路径(即一系列链路和路由器)。
- 2.VC 号,沿着该路径的每段链路一个VC号。
- 3.沿着该路径的每台路由器中的转发表表项,每个VC路由都维护连接状态信息。
- VC 号的转换:转发表。
- 每个数据报携带VC号(不是目的主机地址)
- 一个分组沿着其路由在每条链路上不能保持相同的VC 号
- 逐链路代替该号码减少了分组首部中VC 字段的长度。
- 通过允许沿着该虚电路路径每条链路有一个不同的VC 号,大大简化了虚电路的建立。
虚电路网络 3 个明显不同的阶段
- 1.虚电路建立
- 1)虚电路的所有分组要通过的一系列链路与路由器;
- 2)网络层为沿着该路径的每条链路确定一个VC 号;
- 3)网络层在沿着路径的每台路由器的转发表中增加一表项;
- 4)网络层还可以预留虚电路路径上的资源(如带宽)。
- 2.数据传送:一旦创建了虚电路,分组就可以开始沿该虚电路流动了。
- 3.虚电路拆除
- 当发送方(或接收方)通知网络层它想终止该虚电路时,就启动这个过程。
- 通知另一端结束通话,删除前向转发表的表项。
信令报文与信令协议
- 信令报文:端系统向网络发送指示虚电路启动与终止的报文,以及路由器之间传递的用于建立虚电路(即修改路由器表中的连接状态)的报文。
- 信令协议:用来交换这些报文的协议。
无连接:数据报网络
- 转发表使用最长前缀匹配,转发表不断变化,转发路径也会变化。
- 过程
- 分组从源向目的地传输通过一系列路由器。路由器中的每个都使用该分组的目的地址来转发该分组;
- 路由器有一个将目的地址映射到链路接口的转发表,当分组到达路由器时,该路由器使用该分组的目的地址在该转发表中查找适当的输出链路接口。然后,路由器有意识地将该分组向该输出链路接口转发;
- 每当一个端系统要发送分组时,它就为该分组加上目的地端系统的地址,然后将该分组推进网络中;
- 由于转发表使用地址块索引输出链路,因此一个目的地址可能匹配多项。当有多个匹配时,该路由器使用最长前缀匹配规则。即在该表中寻找最长的匹配项,并向与最长前缀匹配的链路接口转发该分组。
虚电路网络VS数据报网络
对比的方面 | 虚电路服务 | 数据报服务 |
---|---|---|
思路 | 可靠通信应该由网络来保证 | 可靠通信应该由用户主机来保证 |
连接建立 | 必须建立连接 | 不需要建立连接 |
终点地址 | 仅在连接建立阶段使用,每个分组使用短的虚电路号 | 每个分组都有终点的完整地址 |
分组的转发 | 属于同一条虚电路的分组均按照同一路由进行转发 | 每个分组独立选择路由进行转发 |
当结点出现故障时 | 所有通过出故障的结点的虚电路均不能工作 | 出故障的结点可能会丢失分组,一些路由可能会发生变化 |
分组的顺序 | 总是按发送顺序到达终点 | 到达终点时不一定按发送顺序 |
端到端的差错处理和流量控制 | 可以由网络负责,也可以由用户主机负责 | 由用户主机负责 |
4.3 路由器工作原理
- 路由器体系结构
通用路由器体系结构包括输入端口、交换结构、输出端口、选路处理器。下面详细介绍这四个部分。
路由器 4 个组成部分
路由器:输入端口
- 路由器输入端口功能
- 1.将一条输入的物理链路端接到路由器的物理层。
- 2.实现与位于入链路另一端接口交互的数据链路层功能。
- 3.完成转发表查找与转发功能,以便转发到路由器交换结构部分的分组能出现在适当的输出端口。
- 4.控制分组从输入端口转发到选路处理器。
- 排队:输入端口排队主要原因是交换结构不能及时转发数据报。
- 分组丢失
- 如果在输入端口因为交换结构速率慢而引起队列长度的加大,最终将路由器的缓存空间耗尽,就会出现“分组丢失”。
- 解决方法:如果交换结构速率大于线路速率的 n 倍(n 是输入端口的数量)就可以消除分组丢失的问题。
路由器:交换结构
- 功能
- 将路由器的输入端口连接到它的输出端口。
- 交换结构完全包含在路由器中。
- 三种交换结构
1.经内存交换
- 交换在CPU(选路处理器)的直接控制下完成的。
- 交换过程
- 分组到达输入端口,该端口通过中断处理器发出信号,将分组从输入端口拷贝到处理器内存中。
- 路由选择器从分组首部取出目的地址,在转发表中找出适当的输出端口,将该分组拷贝到输出端口缓存中。
- 交换速度:交换速度受到内存带宽的限制:每个分组跨越两次总线。
- 吞吐量:若内存带宽为每秒可写进或读出最多B个分组,则转发吞吐量必然小于B/2。
- 系统总线共享:不能同时转发两个分组,即使它们有不同的目的端口。
- 改进:目的地址的查找和将分组存储(交换)进适当的存储位置是由输入线路卡上的处理器来执行的。
2. 经总线交换
- 输入端口经一共享总线将分组直接传送到输出端口,不需要选路处理器的干预。
- 路由器的交换带宽受总线速率的限制
- 共享总线:一次只能有一个分组通过总线传送。
- 排队:某个分组到达一个输入端口时,如果发现总线正忙于传送另一个分组,则会被阻塞,在输入端口排队。
- 速度:交换带宽受总线速率的限制。
3. 纵横式互联网络交换
- 克服单一、共享式总线带宽限制的一种方法是,使用一个更复杂的互联网络。
- 纵横式交换机:2n条总线
- 交换过程
- 到达输入端口的分组沿水平总线穿行,直到与所希望的输出端口的垂直总线交叉点:
- 若该条垂直总线空闲,则分组被传送到输出端口。
- 否则将被阻塞,必须在输入端口排队。
- 到达输入端口的分组沿水平总线穿行,直到与所希望的输出端口的垂直总线交叉点:
- 优点:可以同时转发多个分组,因为输出端口不同。
- 改进:将分组分割成固定长度的单元,通过N个交换结构并行发送。
路由器:输出端口
- 功能
- 1.存储经过交换结构转发给它的分组,并将这些分组传输到输出链路。
- 2.当一条链路是双向(承载两个方向的流量)链路时,与链路相连的输出端口通常与输入端口在同一线路卡上成对出。
- 缓存:排队和丢包。
路由器:选路处理器
- 执行选路协议,维护选路信息与转发表,并执行路由器中的网络管理功能。
分组调度
-
考虑如何选择下一个要发送到链路上的分组。
-
1.先进先出FIFO
-
2.丢弃策略:当队列满的时候又来了一个分组。
- 1)队尾丢弃:丢弃到达的分组
- 2)优先权:根据分组的优先权进行丢弃
- 3)随机:随机丢弃分组
-
3.轮询
- 分组被分为多个类别,每个类别一个队列。
- 轮询每个队列,若该队列没有分组则检查下一个队列。
- 保持工作排队规则:当有分组排队等待传输时,不允许线路保持空闲。
-
4.加权平均排队WFQ
- 每个类别在每个周期中获得加权的服务数量:每个类别分配一个权重(和分组到达数量成正比)。
4.4 网际协议:转发与编址
概述
-
子网的概念
- 同一个子网内的主机可以直接通信,不同子网的主机通信需要通过路由器转发。
-
概念对比
- 子网:是一个大网络的一部分,一个子网内不包含路由器,它的边界由路由器和主机端口决定。
- 前缀:是一个CDIR化地址的网络部分,地址写成a.b.c.d/x的形式,一个前缀覆盖一个或多个(2^(32-x))子网。
- BGP路由:当一个路由器通过BGP会话通告一个前缀时,它随着前缀包括一些BGP属性。用BGP的术语来说,带有属性的前缀被称为一个BGP路由。
-
两个版本的IP协议:IPv4,IPv6
-
因特网的网络层有三个主要的部分
- IP 部分
- 选路部分
- 决定数据报从源到目的地所流经的路径。
- 选路协议计算在网络中用于转发分组的转发表。
- ICMP:报告数据报中的差错和对某些网络层信息请求进行响应。
IPv4数据报格式
-
大多数IP 数据报不包含可选项,所以一般的IP 数据报都有20 字节的首部。
-
若该数据报承载一个TCP报文段,则每个数据报共承载40字节首部(20字节IP首部加上20字节TCP首部)以及应用层报文。
-
IPV4数据报格式:
-
1.版本号4bits
- 这4 比特规定了数据报的IP 协议版本。
- 通过查看版本号,路由器可确定如何解释数据报的剩余部分。
-
2.首部长度4bits
- 用这4 比特来确定IP 数据报中的数据部分实际从哪里开始。
-
3.服务类型8bits
- 区分不同类型的数据报。
- 例如,实时数据报与非实时数据报之间的区分。
-
4.数据报长度16bits
- IP 数据报的总长度(首部加上数据),以字节计。
- 16 比特,数据报长度一般都是1500 字节(以太网帧可承载不超过1500 字节的数据)。
-
5.标识ID16bits、标志Frag4bits、片偏移Offset12bits
- 与IP 分片有关
-
6.寿命TTL8bits
- 每当数据报经过一台路由器时,寿命(Time-To-Live, TTL)字段的值减1。若TTL 字段减为0,则该数据报必须丢弃。
-
7.协议8bits
- 字段值指明了IP 数据报的数据部分应交给哪个传输层协议。
- 值为6 表明数据部分要交给TCP,而值为17 表明数据要交给UDP。
- 数据报中的协议号所起的作用类似于传输层报文段中端口号字段所起的作用。
-
8.首部校验和16bits
- 帮助路由器检测收到的IP 数据报中的比特错误。
- 在IP 层只对IP 首部进行了检验,而TCP 校验和是对整个报文段进行的。
-
9.源 IP 地址32bits
-
10.目的IP地址32bits
-
11.选项32bits
- 选项字段允许IP 首部被扩展。
-
12.数据(有效载荷)
IPv4数据报分片和重组
- 一个链路层帧能承载的最大数据量叫做最大传输单元MTU。
- 分片
- 对过大的IP数据报进行分片。
- 一个具有长度较大的数据报流经具有较小MTU 的链路时需要分片。
- 分片重组
- 根据IP首部中的标识、标志和片偏移用来进行重组。
- 在目的端系统中重组。
- 分片开销
- 使路由器和端系统更为复杂。
- 分片可能引发致命的DoS 攻击,例如Jolt 攻击。
IPv4编址
- IPV4编址三个阶段
- 1.分类的IP地址
- 2.子网的划分
- 3.构成超网(无类别域间路由选择CIDR)
接口
- 接口定义
- 主机与物理链路之间的边界。
- 路由器与它的任意一条链路之间的边界。
- 接口数目
- 主机一般含有1-2个接口,路由器有多个接口。
- IP地址与接口相关联,一台主机拥有多个接口。
- 因为路由器的任务是在不同的网络间转发数据报,所以一台路由器有多个接口,每个接口有一条链路。
- 接口功能:从链路上接收数据并将数据报从其他链路转发出去。
- 一个IP 地址在技术上是与一个接口相关联的。
- 每个IP 地址长度为32 比特(等于4 字节)。
- IP地址(32比特)与接口相关联,用于唯一标识一个接口。
- IP地址一般采用点分十进制记法。
- 在因特网中,每台主机和路由器上的每个接口都必须有一个全球唯一的IP 地址。
- 一个接口的IP 地址由其连接的子网来决定。
- 一个子网的IP 定义并不局限于连接多台主机到一台路由器接口的以太网段。路由器端口之间的点对点链路也可以构成子网。
早期IP编址:分类IP编址
-
分类IP编址结构
- IP地址两级结构:{ <网络号>, <主机号>}
- 网络号:一幢楼的具体地址
- 主机号:楼里面的具体房间
- IP地址两级结构:{ <网络号>, <主机号>}
-
分类IP编址方法
- 划分成5个固定类别,每一类地址网络号(net-id)和主机号(host-id)字段长度固定。
- 1.A 类地址的网络号字段 net-id 为 1 字节,host-id为3字节
- 2.B 类地址的网络号字段 net-id 为 2字节,host-id为2字节
- 3.C 类地址的网络号字段 net-id 为 3 字节,host-id为1字节
- 划分成5个固定类别,每一类地址网络号(net-id)和主机号(host-id)字段长度固定。
-
早期IP编址分类
-
特殊的IP地址
网络号 | 主机号 | 源地址使用 | 目的地址使用 | 代表的含义 |
---|---|---|---|---|
0 | 0 | 可以 | 不可 | 在本网络上的本主机(DHCP协议) |
net-id | 全0 | 不可 | 不可 | 代表本网络 |
全1 | 全1 | 不可 | 可以 | 只在本网络上进行广播,各路由器均不转发 |
net-id | 全1 | 不可 | 可以 | 对net-id上的所有主机进行广播 |
127 | 非全0或全1的任何数 | 可以 | 可以 | 用于本地软件环回测试 |
- IP地址的指派范围
网络类别 | 地址范围 | 最大可指派的网络数目 | 第一个可指派的网络号 | 最后一个可指派的网络号 | 每个网络中最大主机数目 |
---|---|---|---|---|---|
A | 0.0.0.0-127.255.255.255 | 126(27-1) | 1 | 126 | 16,777,214(224-2) |
B | 128.0.0.0-191.255.255.255 | 16,383(214-1) | 128.1 | 191.255 | 65,534(216-1) |
C | 192.0.0.0-223.255.255 | 2,097,151(221-1) | 192.0.1 | 223.255.255 | 254(28-1) |
- 分类IP 编址好处
- 1.IP 地址管理机构在分配 IP 地址时只分配网络号,而剩下的主机号则由得到该网络号的单位自行分配,这样就方便IP 地址的管理。
- 2.具有相同网络号的主机集合构成了一个网络。路由器仅根据目的主机所连接的网络号来转发分组(而不考虑目的主机号),这样就可以使路由表中的项目数大幅度减少,从而减小了路由表所占的存储空间。
- 分类IP 编址问题:
- 1.因为地址块长度固定,大部分可用的地址都被浪费了。
- 2.两级地址不够灵活。
改进IP编址方法:子网划分
- 子网
- 拥有相同网络前缀的设备组成了一个子网。
- 同一个子网内的设备物理上直接相连(通过交换机或者点对点链路),而不需要通过路由器连接。
- 子网划分
- 为了确定子网,分开主机和路由器的每个接口,从而产生几个隔离的网络,其中每一个网络都是一个子网。
- 结构:IP地址={<网络号>,<子网号>,<主机号>}
- 特征
- 子网划分,将主机号的一部分作为子网号。
- 子网掩码
- 1.用子网掩码标识子网:类似IP地址,但Net-id和子网号用1表示,Host-id用0表示。
- 2.掩码地址 “逻辑与” IP地址=对应子网的实际网络地址。
- 优点:子网划分节省了IP地址,并增加了一定的灵活性。
- 缺点:在聚合时仍然不够灵活,比如一个单位分配到一段地址是好几个 C 类,那么就需要好几条路由。
目前的IP编址方法:无类别域间路由选择CIDR
-
CIDR结构:IP地址 = {<网络前缀,主机部分>}
- 网络前缀的长度可变
-
斜线标记法
- /+网络前缀的位数(即子网掩码中1的个数)
- 如:128.14.35.7/20
- 网络前缀相同的连续IP地址组成一个CIDR地址块,可以用主机号全为0的地址来指明一个地址块:如128.14.32.0/20
-
无类别域间选路CIDR地址分配策略
- 子网寻址a.b.c.d/x
- x 指示了在地址的第一部分中的比特数,地址的高位x 比特构成了IP 地址的网络部分。被称为该地址的前缀(网络前缀)。
- 一个地址的剩余32-x 比特可认为是用于区分单位(子网)内部主机的,这个子网所有设备具有相同的网络前缀。
- 子网寻址a.b.c.d/x
-
广播地址255.255.255.255
- 当一台主机发出一个目的地址为255.255.255.255 的数据报时,该报文会被交付给同一个子网中的所有主机。
-
用CIDR构建超网:例如一个地址块可以包含多个C类网络。
获取主机地址:动态主机配置协议DHCP
-
DHCP 协议
- 一个客户机/服务器协议,C/S架构。
- 即插即用,零配置。
- 功能:DHCP 使主机可以自动获取IP 地址。DHCP 还允许一台主机获取其他信息(域名服务器、网关、网络掩码、TTL持续时间等)。
- 获取一块地址
- 网络管理员首先与ISP 联系,ISP 会从他拥有的地址块中取出一些地址给客户。
- 一个单位一旦获得了一块地址,它就可为该单位内的主机与路由器接口分配独立的IP地址。ICANN 负责全球范围内的IP 地址分配。
- IP地址分配
- 1.路由器接口地址通常是由系统管理员手工配置的IP。
- 2.对于主机,常使用动态主机配协议DHCP来完成IP 地址的分配。
- 1)主机在加入网络后从网络服务器动态获取其IP地址。
- 2)主机获得其他信息:子网掩码、默认网关、本地DNS服务器。
- 3)即插即用:零配置。
-
DHCP工作原理:4个步骤
- 1.DHCP 服务器发现
- DHCP客户机在UDP 分组中向端口67 发送DHCP 发现消息。使用广播目的地址255.255.255.255并且使用“本主机”源地址0.0.0.0
- DHCP客户机将该IP数据报传递给链路层,链路层将该帧广播到所有与该子网连接的子网。
- 2.DHCP 服务器提供
- DHCP 服务器收到一个DHCP 发现消息时,用一个DHCP 提供消息对客户机做出响应,仍然使用IP 广播地址255.255.255.255。
- 3.DHCP 请求
- 新到达的客户机从一个或多个服务器中选择一个,并用一个DHCP 请求消息对选中的服务器进行响应,回显配置参数。
- 4.DHCP 确认
- 服务器用这个消息对DHCP 请求消息进行响应,确认所要求的参数。
- 一旦客户机收到DHCP ACK 后,交互便完成了,该客户机就能够在租用期内使用DHCP分配给它的IP 地址。
- 1.DHCP 服务器发现
-
在命令行窗口Commond输入:IPconfig,查看主机DHCP配置。
网络地址转换NAT技术
-
专用网络
- 内网IP地址:在IP 地址的A-B-C 三种主要类型里各保留了三个区域作为私有地址。10.0.0.0/8,172.16.0.0/12,192.168.1.0/16。
- 私有地址永远不会被当作公有地址来分配。
- 路由器位于内网与外网之间。
- 外部网络中的路由器也无法处理以私有地址为目的地的数据报。
-
NAT功能
- 用于专用地址与外部全球地址进行通信。
- 完成内网IP与外网IP地址间的转换。
-
NAT实现原理
- 1.对于每个外出的数据报
- 把源IP地址修改为NAT的IP地址
- 把源端口号修改为一个新的端口号,新端口号通常大于5000。
- 外部服务器以这个路由器再与它交互。
- 2.将修改记录到NAT转换表
- NAT 路由器使用了一张NAT 转换表,并且在表项中包含了端口号和IP 地址,将私有地址转换为公有地址,这个过程中利用端口号作为转换的索引。
- 记录外网IP地址对应的内网源IP地址。
- 记录新的端口号对应的旧的端口号。
- 如NAT转换表项{<138.76.29.7,5001>,<10.0.0.1,3345>}
对应{<外网IP,新端口号>,<内网IP,源端口号>}。
- 3.对于每个进来的数据报
- 查表,把源IP地址修改回原来的IP地址。
- 查表,把新端口号替换为旧的端口号。
- 1.对于每个外出的数据报
-
NAT协议优点
- ISP只需要一个地址。
- 可以更换ISP而不更换内部设备的IP地址。
- 可以在机构内部更改IP地址。
- NAT 使能路由器对外界隐藏了家庭网络的细节。
-
NAT总结
- 只需要一个外网IP地址,通过NAT网络地址转换,得到内网地址,查表转发到相应内网。
-
NAT的穿越问题解决方案
- 1.手工配置端口映射
- 2.即插即用UPnP 协议:允许主机发现并配置邻近NAT 的协议。大部分家用路由都支持UPnP 协议。
- 3.中继
ICMP:互联网控制报文协议
- ICMP协议作用
- ICMP 用于主机和路由器彼此交互网络层信息。
- ICMP 最典型的用途是差错报告,包括报告不可达主机,网络,端口,协议。
- ICMP还可用于回显请求/回答(ping),ping主要的功能是用来检测网络的连通情况和分析网络速度。
- ICMP可用于源抑制报文,执行拥塞控制。
- ICMP报文格式
- ICMP 报文包含引起该ICMP 报文首次生成的IP数据报的首部和前8 字节内容。
- ICMP 报文的前 4 个字节是统一的格式,共有三个字段:即类型、代码和检验和,接着的 4 个字节的内容与 ICMP 的类型有关。
- ICMP响应与错误信息
类型 type | 代码 code | 含义 |
---|---|---|
0 | 0 | echo回答(ping) |
3 | 0 | 目的网络不可达 |
3 | 1 | 目的主机不可达 |
3 | 2 | 目的协议不可达 |
3 | 3 | 目的端口不可达 |
3 | 6 | 目的网络未知 |
3 | 7 | 目的主机未知 |
4 | 0 | 源抑制 |
8 | 0 | echo请求(ping) |
9 | 0 | 路由通告 |
10 | 0 | 路由发现 |
11 | 0 | TTL过期 |
12 | 0 | IP首部错误 |
-
ICMP报文位置
- ICMP报文承载在IP数据报。
- ICMP 通常被认为是IP 的一部分,但从体系结构上讲它是位于IP 之上,因为ICMP 报文是承载在IP 分组中的;ICMP不是高层协议。
-
Traceroute跟踪路由
- 用途:用来跟踪一个分组从源点到终点的路径。
- 实现原理
- 1.利用 ICMP报文中的IP 数据报中的 TTL 字段和 ICMP TTL过期差错报告报文实现对从源点到终点的路径的跟踪。
- 2.源点向终点发送一系列的UDP报文段:TTL=1,TTL=2……,且具有不可达的端口号;当第n个数据报到底第n台路由器时,由于TTL值为0,路由器会丢弃这个数据报并发送一个ICMP TTL过期差错报告报文给源点,这个报文包含了路由器的名字和IP地址,当源点收到后可计算RTT。
- 3.源点何时停止发送探测分组:收到终点返回的“目的端口不可达Type=3,Code=3”的ICMP差错报告。
IPv6
-
IPV6产生动机
- 1.32 比特的IP 地址空间即将用尽。
- 2.简化首部,不分片,进一步加快处理/转发速度。
- 3.使用流标签,促进QoS。
-
IPV6数据报格式
- 1.版本号4bits
- 这4 比特字段用于标识IP 版本号。
- IPv6 将该字段值设为6。
- 2.流量类型8bits
- 3.流标签20bits:该20 比特字段用于标识一个数据报的流。
- 4.有效载荷长度8bits:给出了IPv6 数据报中跟在定长的40 字节数据报首部后面的字节数量。
- 5.下一个首部8bits
- 标识该数据报中的内容(数据字段)需要交付给哪个协议。
- 该字段使用与IPv4 首部中协议字段相同的值。
- 6.跳限制8bits:转发数据报的每台路由器将对该字段内容减1。如果跳限制计数到达0,则该数据报将被丢弃。
- 7.源IP地址128bits
- 8.目的IP地址128bits
- 9.数据
- IPv6相比于IPV4废弃的字段
- 分片相关字段:IPv6 不允许在中间路由器上进行分片与重新组装。
- 首部校验和
- 选项字段
- 1.版本号4bits
-
IPV6与IPCV4的区别
- 1.扩大地址容量:128比特
- IPv6 将IP 地址长度从32 比特增加到128 比特。
- 任播地址:使用这种地址,理论上一个数据报能交付给一组主机中的任意一个。
- 2.简化首部:固定40字节,IPV4首部为20字节。
- 3.取消分片。
- 4.取消首部校验和字段。
- 5.流标签来保证QoS:但确切含义还未完全确定。
- 1.扩大地址容量:128比特
-
从IPv4 向IPv6 迁移
- 1.双栈技术,即让IPv4 节点也具有完整的IPv6 实现。
- 2.另一种双栈方法,叫做隧道。
- 假定两个节点要使用IPv6 数据报进行交互,但它们是经由中间IPv4 路由器而互连的。那么将两台路由器之间IPv4 路由器的集合称为一个隧道。IPv6 数据通过这个隧道时封装在IPv4 数据报中传输。
- IPv4路由器之间进行数据传输时,将IPv6数据报作为有效载荷封装到IPv4数据报中。
4.5 路由选择算法
路由选择算法目的
- 从发送方到接收方的过程中确定一条通过路由器网络的好的路径:低成本、速度快、拥塞最少……
路由算法分类
-
【1】集中式 or 分布式
- 集中式
- 基于完整的、全局性的网络信息(拓扑、开销)
- 如何获得全局信息:每个节点向网络中所有节点广播链路状态分组(由链路状态广播算法实现)。
- 链路状态(LS) 算法是集中式路由算法。
- 分布式
- 节点仅知道与其直接相连链路的开销,通过与相邻节点交换信息,以迭代的、分布式的方式进行计算。
- 距离矢量(DV)算法属于分布式路由算法。
- 集中式
-
【2】动态 or 静态
- 动态
- 动态算法会随着网络流量负载或拓扑变化而改变路由选择路径(周期性运行或响应网络变化)。
- 周期性更新
- 问题:路由震荡
- 静态: 路由变化缓慢。
- 动态
-
【3】负载敏感 or 负载迟钝
- 链路开销是否明确反映当前拥塞水平(目前主流的路由算法都属于负载迟钝)。
全局选路算法-链路状态(LS) 算法-Dijkstra算法
- 链路状态算法中代表性为Dijkstra算法。
- 特征:计算从源节点到网络中所有其他节点的最低开销路径,经过k次迭代后,可知道到k个目的节点的最低开销(贪心)。
- 定义变量
- D(v):到算法的本次迭代,从源节点到目的节点v的最低开销路径的开销,D(v) = min( D(v), D(w) + c(w,v) )。
- p(v): 从源节点到v 沿着当前最低费用路径的前一节点。
- N’:节点子集;如果从源节点到v 的最低开销路径已找到,那么v 在N’中。
- Dijkstra算法复杂度:每次迭代需要检查所有没有在N中的结点,n(n+1)/2次比较:O(n^2),改进的算法可达到O(nlogn)。
- Dijkstra算法存在的问题:当链路开销等于链路负载时,可能会造成路由震荡,即流量一会儿走左边路由,一会儿走右边路由,无法确定流量方向。
分布式选路算法-距离矢量(DV)算法
-
DV算法特征
- 1.分布式:节点从一个或多个直接相连的邻居处接收信息进行计算,然后将计算结果分发给邻居。
- 2.迭代:持续到邻居之间无更多的信息要交换为止。
- 3.异步:不要求所有节点相互之间步伐一致地操作。
- 4.动态规划
- dx(y) = minv {c(x,v) + dv(y) }
- dx(y):=从x到y的最小开销路径的开销
- min取自x的所有相邻节点v
-
DV算法目的:每个节点通过相邻的邻居节点,了解到从v节点到z节点的最小开销;而不是经过所有节点的最小开销。
-
DV算法基本思想
- 1.节点x维护一个距离向量Dx= [Dx(y) : y є N ],表示x到N中任意节点y的开销估计向量;每个节点不时地向邻居发送它的距离矢量拷贝。
- 2.其到任意邻居v的开销为c(x,v)。
- 3.当x发现它 的直接相连的链路开销发生变化,或从某个邻居接收到一个距离向量的更新时,就会利用Bellman-Ford 方程更新自己的距离向量。
- 4.如果Dx变化,则向邻居发送更新后的距离向量。
-
DV算法示例
- 求解:
显然,dw(z)=3,dv(z)=5,dx(z)=3,则 du(z)=min{c(u,w)+dw(z),c(u,v)+dv(z),c(u,x)+dx(z)}=min{5+3,2+5,1+3}=4
路径为:u,x,y,z
- 求解:
-
DV算法链路开销变化
- 节点检测到本地链路费用发生了变化。
- 更新路由信息,重新计算DV。
- 如果DV发生变化,则向邻居节点通知最新DV。
-
DV算法特征
- 好消息传得快。
- 坏消息传的慢。
- 无穷计数问题,y与z出现路由选择环路,比如:
- 解决方案:毒性逆转
- 如果z通过y路由到达x,则z告诉y它到x的距离是无穷大。
- 上述例子中,因为Dz(x)为无穷大,y更新其DV时Dy(x)的值变为60,并将其发送给z;
- z收到后会更新Dz(x)为50,因为此时它不再通过y到达x,则它会告知y新的Dz(x)为50, y会相应地将Dy(x)更新为51,然后会告知z其Dy(x)为无穷大。
链路状态算法LS与距离矢量算法DV比较
- 1.解决思路
- LS算法,每个节点与所有其他节点交换信息,但它仅告诉它们与它直接相连链路的开销。
- DV算法,每个节点仅与它的直接相连邻居交换消息,但它为邻居提供了从自己到网络中(它所知道的)所有其他节点的最低开销估计。
- 2.消息复杂度
- LS算法,发送O(nE)条消息。
- DV算法,在每次迭代时,在两个直接相连邻居之间交换报文,算法收敛所需的时间依赖于许多因素。 当链路开销改变时,DV 算法仅当在会导致该节点的最低开销路径发生改变时,才传播已改变的链路开销。
- 3.收敛速度
- LS算法,发送O(nE)条消息。
- DV 算法,收敛较慢,且在收敛时会遇到选路环路。DV算法还会遭受到计数到无穷的问题。
- 4.健壮性
- LS算法,如果一台路由器发生故障,路由器广播不正确的链路开销,但每台路由器仅计算自己的转发表。
- DV算法下, 每次迭代时,其中一个节点的路径计算结果会传递给它的邻居,然后在下次迭代时再间接地传递给邻居的邻居。在这种情况下,DV 算法中一个不正确的计算结果会扩散到整个网络。
4.6 因特网中的选路
选路协议的任务是确定数据报在源与目的地之间采用的路径。
自治系统(AS)内部选路协议
自治系统(AS)内部选路协议也叫做内部网关协议IGP,包括了选路信息协议RIP和开放最短路径优先协议OSPF。
1.选路信息协议RIP
- 自治系统(AS)
- 每个AS由一组通常在相同管理控制下的路由器组成,在相同的AS内的路由器都全部运行同样的选路算法,且拥有彼此间的信息。
- 在一个自治系统内运行的选路算法叫做自治系统内部选路协议。
- 在一个AS内的一台或多台路由器另外负责向本AS之外的目的地转发分组,这些路由器被称为网关路由器。
- 选路信息协议RIP原理
- DV算法
- 跳数
- RIP包含在UDP报文里
2.开放最短路径优先协议OSPF(Open Shortest Path First)
OSPF是域内路由协议,OSPF通告包含在OSPF报文中,直接承载在IP数据报中 (不是TCP或UDP);OSPF协议直接承载在IP协议上。
-
OSMP功能:作为AS内部路由选择协议。
-
OSMP工作原理
- 1.采用LS算法,Dijkstra 最小费用路径算法。
- 2.路由器周期性的向AS内所有路由器广播选路信息,OSPF协议信息直接封装在IP数据报中广播,协议字段的值为89。
- 3.每当一条链路状态发生变化(开销变化或连接/中断状态变化)时,路由器就会广播链路状态信息。即使链路状态未发生变化,它也要周期性(至少每隔30分钟一次)地广播链路状态。
-
OSPF优点
- 1.安全:OSPF 路由器之间的交换(如链路状态更新)都是经过鉴别的,可以防止恶意数据的注入。
- 2.允许多条相同开销的路径:当到达某目的地的多条路径具有相同的开销时,OSPF 允许使用多条路径。
- 3.对单播选路与多播选路的综合支持。
- 4.支特在单个AS中的层次结构:AS能够层次化地配置多个区域,实现分层的OSPF。
-
AS域内路由协议确定了AS内部目的地的转发。
自治系统(AS)间选路协议:BGP
自治系统(AS)间选路协议BGP属于域间路由协议。
-
BGP功能
- 1.eBGP:从邻居AS 处获得子网的可达性信息(BGP允许每个子网向因特网的其余部分通告它的存在)。
- 2.iBGP:向该AS 内部的所有路由器传播这些可达性信息。
- 3.基于可达性信息和AS策略,决定到达该子网的最佳路由。
- 4.BGP允许每个子网向因特网的其余部分通告它的存在。
- 5.“粘合剂”:将因特网中数以千计的ISP粘合起来。
-
边界网关协议BGP=eBGP外+iBGP内
-
BGP基础
- 1.BGP会话:两个路由器(BGP对等方)使用179端口的半永久TCP连接来交换选路信息。
- 2.网关路由器使用eBGP会话(external BGP session,外部BGP会话)了解到可达的前缀后,会使用iBGP(internal BGP session,内部BGP会话)会话来向该AS中的其他路由器发布这些前缀(可以聚合这些前缀);这里的前缀是用CIDR地址表示的前缀。
- 3.BGP是一种距离向量协议:通告到不同目的网络前缀的路径。
-
路径属性和BGP路由
-
一个自治系统有全局唯一的自治系统号ASN。
-
AS域间路由和域内路由协议确定了AS外部目的地的转发。
-
BGP路由=前缀+BGP属性(如AS-PATH和NEXT-HOP),带有属性的前缀被称为一条路由。
-
路径属性
- 1.AS-PATH
- 包含了前缀的通告已经通知过的那些AS的自治系统号。
- 路由器使用AS-PATH属性用来检测和防止循环通告。
- 路由器使用AS-PATH属性对相同的前缀在多条路径中进行选择。
- 2.NEXT-HOP
- NEXT-HOP是一条给定前缀的通告路径(AS-PATH)上的起始的一个路由器的IP接口。
- 路由器在配置转发表时使用NEXT-HOP属性。
- 1.AS-PATH
-
BGP是基于策略的路由
- 网关路由器将基于策略接受或拒绝某个路由通告。
- 策略还决定了是否将某个路径通告给邻居AS。
-
-
BGP路由选择
- 转发表的构建
- 转发表条目**<前缀,端口>**
- 1.路由了解到前缀。
- 2.路由确定该前缀的输出端口。
- BGP路由选择算法:路由器可能会获得到目的AS的多条路由,如何确定最好的路由。
- 顺序调用消除规则
- 1.本地偏好:由AS的网络管理员设定一种策略。
- 2.最短AS-PATH。
- 3.最靠近的NEXT-HOP路由器的路由:热土豆路由选择。
- 热土豆路由选择:用最低开销将分组送出其AS(2d选择2a到达X),而不考虑域间的开销。
- 4.BGP标识符。
- 转发表的构建
-
BGP路由选择策略
- 定义:任何穿越某ISP 主干网的流量必须是源或目的地(或两者)位于该ISP的一个客户网络中,否则这些流量将会免费搭乘该ISP的网络。
- 例子
- X是双向的:与两个网络相连。
- X不希望B通过X路由到C。
- B知道通过A可以到达W,但B不希望C通过B连接到W;B仅希望为其客户X进行路由。
区分域内与域间路由的原因
- 域内路由
- AS域内路由协议确定了AS内部目的地的转发。
- 着眼于性能。
- 域间路由
- AS域间路由和域内路由协议确定了AS外部目的地的转发。
- 策略更重要:管理员希望控制网络流动路径,以及哪些流量经过网络。
- 层次路由减少路由表条目数量,减少路由更新流量。
- 对外部隐藏AS内部网络细节。
4.7 广播和多播选路
广播
- 在广播选路中,从一个源节点可以向网络中的所有其他节点交付分组。
- 实现方式
- 1.泛洪(flooding)
- 泛洪要求源节点向它所有邻居发送分组的拷贝。
- 循环与广播风暴。
- 2.受控泛洪
- 序号控制泛洪。
- 反向路径转发泛洪(RPF)。
- 3.生成树广播:任何节点都不会收到冗余的广播风暴。
- 1.泛洪(flooding)
多播选路
- 多播选路使单个源节点能够向其他网络节点的一个子集发送分组。
- 互联网组管理协议IGMP:运行在一台主机与其直接相连的路由器之
间。 - 多播选路算法
- 使用一棵组共享树进行多播选路。
- 使用一棵基于源的树进行多播选路。
- 距离向量多播选路协议DVMRP。
【思维导图】
0 概览
1 网络层概述
2 虚电路和数据报网络
3 路由器工作原理
4 网际协议:转发与编址
5 路由选择算法
6 因特网中的选路
7 广播和多播选路
参考资料
《计算机网络自顶向下方法》(第4版)James F.Kurose,Keith W.Ross