导图社区 计算机网络第四章网络层
计算机网络第四章 网络层,比较详尽。把这一行的子网掩码与目的地址D按位与运算,若匹配则查找结束,按照下一跳所指处进行处理,或者直接交付本网络上的主机,否则若转发表还有下一行,则对下一行进行检查,看是否匹配。
编辑于2022-01-23 13:56:24计算机网络第四章 网络层
网络层的几个重要概念
网络层提供的两种服务
互联网设计思路:网络层要设计得尽量简单,向其上层只提供简单灵活的、无连接的、尽最大努力交付的数据包服务——网络层不提供服务质量的承诺。 事实证明,数据包服务更好。
虚电路服务
思路
可靠通信由网络保证
连接的建立
必须有
终点地址
仅在连接建立阶段使用,每个分组使用短的虚电路号
分组的转发
属于同一条虚电路的分组均按照同一路由进行转发
节点出故障时
所有通过出故障的节点的虚电路均不能工作
分组顺序
总是按发送顺序达到终点
端对端的差错处理和流量控制
可以由网络负责,也可以由用户主机负责
数据包服务
思路
可靠通信由用户主机保证
连接的建立
不需要
终点地址
每个分组都有终点的完整地址,即IP地址
分组的转发
每个分组独立查找转发表进行转发
节点出故障时
出故障节点会丢失分组,一些路由会发生变化
分组顺序
到达终点的顺序不一定是按照发送的顺序
端对端的差错处理和流量控制
由用户主机负责
网络层的两个层面
路由转发信息类别
转发源主机和目的主机之间所传送的数据
传送路由信息
网络层抽象成两个层面
控制层面
路由转发算法
协同工作
数据层面(转发层面)
转发表
独立工作
如今的控制层面
软件定义网络SDN
由远程控制器控制各主机和网络状态直接为路由器生成合适的转发表
网际协议IP
总概
网际协议IP是TCP/IP体系中两个最主要的协议之一。
与IP配套的还有3个协议
地址解析协议ARP
网际控制报文协议ICMP
网际组管理协议IGMP
与IP关系
IP协议要使用ARP协议
ICMP、IGMP要使用IP协议
虚拟互联网络
问题:没有一种单一网络可以适应所有用户需求
定义
将许多网络通过路由器互连,参加互连的主机均使用相同的网际协议IP,可以把整个网络看成逻辑互联网络,即虚拟互联网络
理解
将不同的物理异构网络互联后通过统一的IP协议使之在网络层看起来是一个统一的网络
可以简称IP网
在这种覆盖全球的IP网上层使用TCP协议,就是现在的互联网
互联网可以是由多种异构网络组成
将网络连接起来需要的中间设备
转发器
物理层使用
网桥、交换机
数据链路层使用
路由器
网络层使用
由于历史原因,很多文献将路由器称为网关。
网关
网络层以上使用
交付方式
直接交付
间接交付
每一次转发都称为“跳”,在转发分组时称为“下一跳”
IP地址
IP地址及其表示方法
整个互联网是一个单一的、抽象的网络,IP地址是给连接到互联网上的每一台主机的每一个接口,分配一个在全世界范围内是唯一的32位的标识符
IP地址现在由互联网名字和数字分配机构ICANN分配
IP地址的申请是按级分配
显示
一般每八位间隔一个点,并用十进制表示
表示
IP地址由网络号和主机号组成
IP地址::={<网络号>,<主机号>}
“::=”为“表示为”
网络号n位,主机号32-n位
分类的IP地址
分类
A类n=8
总地址的一半,2的31次方
第一位固定为0
网络号性质
网络号全为0的IP有特殊用途,表示“本网络”
网络号为01111111保留作为本地软件环回测试本主机的进程之间的通信。
A类可用网络号为126个
主机号性质
全0和全1的主机号一般不指派
全0主机号表示该IP地址是本主机所连接到的单个网络地址
全1主机号表示该网络上“所有的”主机
所以每个A类网络最大主机数为2的24次方-2,即16777214
B类n=16
总地址的25%,2的30次方
前两位固定为10
网络号
可指派网络数为16384
主机号
可指派2的16次方-2,即65534
C类n=24
总地址的12.5%,2的29次方
前三位固定为110
网络号
可指派网络数为2097152
主机数
可指派主机254
D类为多播地址(一对多通信)
占6.25%
前四位固定为1110
E类为保留地址
占6.25%
前四位固定为1111
分类的目的
各种网络差异大,有的网络主机多,用A,有的网络主机少,用C类,满足不同用户的需求
但由于互联网发展,很多已经不满足于该分类方式
无分类编址CIDR
全名为无分类域间路由编址CIDR
要点
网络前缀
将网络号改为网络前缀
记法
IP地址::={<网络前缀>,<主机号>}
网络前缀可以在0~32内任意取值,主机号为32-n位
CIDR使用斜线记法,在IP地址后面加上斜线“/”斜线后面是网络前缀所占的位数
例如:128.14.35.7/20则前20位为网络前缀,后12位为主机号
地址块
斜线前n位为网络前缀,也可简称为/20地址块
128.14.35.7是IP地址但不知道网络地址
128.14.35.7/20知道网络地址
128.14.32.0/20是包含多个IP地址的地址块或网络前缀
128.14.32.0不能仅用这个表示网络地址,因为无法知道网络前缀是多少
地址掩码(子网掩码)
计算机从IP看不出来斜线记法,所以要一个32位的地址掩码从IP地址迅速计算出网络地址
由0,1构成,网络前缀部分为1,后面部分为0
将IP和子网掩码按位与运算,即可得到地址块
3个特殊地址块
前缀n=32,即32位均为前缀,没有主机号,其实就是IP地址,这个特殊地址用于主机路由
前缀n=31,这个地址块中只有两个IP地址,其主机号分别为0和1,这个地址块用于点对点链路,如两台路由器之间的通信,但如今常常不分配地址,称为“无编号网络”或“匿名网络”
前缀n=0同时IP地址也全是0,即0.0.0.0/0,这用于默认路由
全部CIDR地址块的地址数一定是2的整数次幂,大部分地址块都包含了多个C类地址(C类地址的2的n次方倍),有时CIDR编址称为“构造超网”
路由聚合
路由器的转发表中利用较大的CIDR地址块代替许多较小的地址块
压缩转发表所占时间,减少查找转发表用时
网络前缀越短的地址块所包含的地址数越多
IP地址的特点
1
每一个IP地址都由网络前缀和主机号组成,表明是一个分等级的地址结构
好处
IP地址管理机构在分配IP时只分配网络前缀
路由器根据目的主机所连接的网络前缀来转发分组,减少转发表所占存储空间,缩短查找所用时间
2
IP地址是标志一台主机或路由器和一条链路的接口
当一台主机连接两个网络上,则必须同时具有两个相应的IP地址,且网络前缀不能相同,这种主机称为多归属主机
3
互联网的观点,一个网络指的是相同网络前缀的主机的集合,因此用转发器或交换机连接起来的若干个局域网仍是一个网络,因为这些局域网具有相同的前缀
具有不同的网络前缀的局域网必须使用路由器相连
4
在IP地址中,所有分配到网络前缀的网络都是平等的
IP地址与MAC地址
区分
MAC地址已经固化在网卡的ROM中,因此称为“硬件地址”或“物理地址”
在链路层协议使用
IP地址就是虚拟地址,软件地址或逻辑地址
在网际层及以上使用
要点
在IP层抽象的互联网上只能看到IP数据包
虽然在IP数据包首部有源站IP,但路由器只根据目的站的IP进行转发
在局域网的链路层,只能看见MAC帧
互联在一起的MAC层不相同,但是IP层抽象的互联网屏蔽了下层很复杂的细节,只要我们在网络层上讨论问题,就能够使用统一、抽象的IP地址研究主机和主机或路由器之间的通信
地址解析协议ARP
功能
已经知道了一个机器的IP地址,找出其相对应的MAC地址
实现
在主机的ARP缓存中存放一个从IP映射到MAC地址的映射表,并且动态更新。
ARP缓存对每个映射项目设置生存时间,保证在IP和MAC出问题后能及时更新映射
获取目的IP主机的MAC步骤
如果在同一局域网
主机A的ARP进程在本局域网上广播发送一个ARP请求分组,信息携带目标地址的IP和自己的IP和MAC地址
在本局域网上的所有主机上运行的ARP进程都收到此ARP请求分组
主机B的IP地址与ARP请求分组要查询的IP地址一致,就收下该ARP请求分组,并将主机A的IP和MAC映射存入ARP高速缓存,并向A发送ARP响应分组,信息携带自己的IP和MAC地址
主机A收到B的ARP响应分组后,在其ARP高速缓存中写入B的IP和MAC地址映射
如果不在同一局域网
主机A应知道接入该局域网的路由器IP和MAC地址,并将IP数据包传送给路由器,由路由器进行分组转发
路由器在另一网络查询,如果没有目标IP地址则转发给下一个路由器,用同样方法直到传送给目标地址
IP存在意义
世界上存在各式各样的网络,它们使用不同的MAC地址,若使这些异构网络相互通信需要进行非常复杂的MAC地址转换工作,用户主机算力不足以支持全世界范围内的MAC寻址,而IP解决这一问题。因此在虚拟的IP网络上用IP地址进行通信给广大计算机用户带来很大的方便
IP数据包的格式
首部固定长20字节,宽4字节,可变长为0~40字节
IP数据包首部固定的部分
版本
占4位,指协议IP的版本,通信双方使用的IP协议版本必须保持一致
首部长度
占4位,可表示最大长度为15,表示首部所占的长度
因为固定字长为20/4=5 (4为宽度),最小为5,为0101,最长可表示60字节(15x4)
当首部字节不够4的整数倍时使用填充使之为4的整数倍
区分服务
占8位,用来获得更好的服务
1998年IEIF将该字段改为区分服务DS,在使用区分服务时该字段才起作用,一般不使用
总长度
占16位,指的是首部和数据包的总字长,可以达到65535字节
但一般不会太长,IP下面的数据链路层规定MTU有最长字节限制,以太网的MTU为1500字节,如果数据包太长会将其分片处理
协议IP规定所有主机应该接受576=512(合理长度)+60(最长首部)+4(富余量)字节的数据包
标识
占16位,保证分片后主机能识别为同一个数据包并在接受端恢复
标志
占3位,但仅仅2位有意义
最低位记为MF,MF=1表示后面还有分片,为0表示没有分片了
中间位记为DF,DF=1表示不能被分片,只有为0时才能分片
片偏移
占13位,表示较长分组被分片后,某片在原分组中的相对位置
片偏移以8的整数倍为单位,除了最后一片,其他的片段都是8字节的整数倍
生存时间
占8位,常用英文缩写为TTL,表明这是数据包在网络中的寿命
如今以一跳为单位,每经过一个路由器即“一跳”,就把TTL减1
协议
占8位,协议字段指出此数据包携带的数据使用何种协议,以便目标主机的IP层知道应将数据部分上交给哪个协议进行处理
常用协议及字段
IP
4
ICMP
1
IGMP
2
TCP
6
UDP
17
IPv6
41
ESP
50
首部检验和
占16位,该字段只检验数据包的首部,不包括数据部分
每经过一个路由器,路由器都应重新计算一下首部检验和(一些字段会发生变化)
方式
将首部划分为许多16位字的序列,全部相加后取反码运算,得到最后的首部检验和
每经过一个路由器后,将所有字段分为16字的段并全部取反码运算,若为0则保留,不为0则整明出了差错,应该丢弃
源地址
占32位,发送数据包的IP地址
目的地址
占32位,接收数据包的IP地址
IP数据包首部的可变部分
为一个选项字段,选项字段用来支持排错、测量以及安全等措施
长度从1·40字节不等,取决于所选择的项目
选项很少被使用,所以在IPv6做成固定的
IP层转发分组的过程
基于终点的转发
定义
分组在互联网上传送和转发是基于分组首部中的目的地址
实现
先查找目的网络(网络前缀)
将分组在这个网络上直接交付给目的主机
最长前缀匹配
定义
如果一个分组在转发表中可以找到多个匹配的前缀,则应该选择前缀最长的一个作为匹配的前缀
实现
将前缀最长的地址排在第一行,按照前缀的长短依次往下排列,只要检查到匹配的,就不必往下查找,立即执行跳转
两条特殊路由
主机路由(特定主机路由)
定义
对特定目的主机的IP地址专门指明的一个路由
作用
方便网络管理人员控制和测试网络
在需要考虑某种安全问题时采用这种特定主机路由
方法
若某台特定主机IP是a.b.c.d,则在转发表中对应于主机路由网络是a.b.c.d/32
默认路由
定义
不管分组最终网络在哪里,都由指定的路由器R处理
实现
在实际转发表中,用0.0.0.0/0表示默认路由,因为所有IP相与后都是0,所以均转交给路由器R处理
分组转发算法流程
从收到分组首部提取目的主机的IP地址D
若查找到有特定主机路由(目的地址为D)就按照这条路由的下一跳转发分组,否则从转发表中下一行开始检查
把这一行的子网掩码与目的地址D按位与运算,若匹配则查找结束,按照下一跳所指处进行处理,或者直接交付本网络上的主机,否则若转发表还有下一行,则对下一行进行检查,看是否匹配
若转发表有一个默认路由,则按照指明的接口,把分组传送到指明的默认路由器,否则报错
使用二叉线索查找转发表
转发表内必须使用很好的数据结构和先进的快速查找算法,才能使得数据传输速率更高
有效查找
二叉线索
一种特殊结构的树
IP地址中从左到右的比特值决定了从根节点逐层向下眼神的路径,而二叉线索中的各路径代表转发表中存放的各个地址
唯一前缀
为简化二叉线索,找出对应于每个IP地址在表中的唯一前缀
查找时只要能够和唯一前缀相匹配就行
提供一种快速在转发表中找到匹配的叶节点的机制,但是否匹配还得和子网掩码进行逻辑与运算
为了提高二叉线索搜索速度,广泛使用各种压缩技术
网际控制报文协议ICMP
为有效转发IP数据包和提高交付成功的机会,在网际层使用了网际控制报文协议ICMP
作用
ICMP允许主机或路由器报告差错情况和提供有关异常情况的报告
ICMP报文装在IP数据包中,作为其中数据的部分
格式
类型
1个字节
代码
1个字节
检验和
2个字节
接下来的4个字节与ICMP报文类型有关
ICMP数据部分
长度取决于ICMP类型
ICMP报文种类
ICMP差错报告报文
类型的值
3
终点不可达
当路由器或主机不能交付数据包时就向源点发送终点不可达报文
11
时间超过
当路由器收到生存时间为0的数据包时,除了丢弃该数据包外还要向源点发送时间超过报文
当终点在预先规定时间内不能收到一个数据包的全部数据包片时,就把已收到的数据包片全部丢弃并向源点发送时间超过报文
12
参数问题
当路由器或目的主机收到的数据包的首部中有的字段的值不正确时,就丢弃该数据包,并向源点发送参数问题报文
5
改变路由
路由器把改变路由报文发送给主机时,让主机知道下次应将数据报发送给另外的路由器(找到更好的路由)
ICMP询问报文
类型的值
8或0
回送请求或回送回答
由主机或路由向一个特定的目的主机发出的询问,收到此报文的主机或路由必须要给源主机或路由发送ICMP回送回答报文。用来测试目的站是否可达以及了解其有关状态
13或14
时间戳请求或时间戳回答
利用在报文中记录的时间戳,发送方很容易计算出当前网络的时延
不应发送ICMP报文的几种情况
对ICMP差错报告报文,不再发送ICMP差错报告报文
对第一个分片数据包片的所有后续数据包片都不在发送ICMP差错报告报文
对具有多播地址的数据包,都不发送ICMP差错报告报文
对具有特殊地址的数据包,不发送差错报告报文
ICMP应用举例
分组网间探测PING
用来测试两台主机之间的连通性
利用回送请求和回送回答报文
PING是应用层直接使用网络层ICMP的例子,没有通过TCP或UDP
命令行窗口 执行命令行ping hostname(hostname是网址里的主站名字),即可查看网络时延
traceroute(UNIX操作系统)
用来跟踪一个分组从源点到终点的路径
利用时间超过和终点不可达报文
工作原理
每次发送的是UDP用户数据报(无法交付,到达目的主机也会发送一个终点不可达)
每次的数据包的生存时间TTL依次增加1,由于每经过一个路由TTL减1,经过一个路由后TTL为0时会发送ICMP的时间超过报文
这样返回给主机的就是经过该路由的地址,这样就可以获得所有经过路由的地址
IPv6
2017年7月发布IPv6正式标准
IPv6的新变化
更大的地址空间
IPv6地址把IPv4的增大4倍,达到128位
扩展的地址层次结构
可以划分为更多的层次
灵活的首部格式
IPv6数据包的首部和IPv4并不兼容
IPv6定义了很多可选的扩展首部,可提高路由器处理效率
改进的选项
IPv6允许数据包包含有选项的控制信息,因而可以包含一些新的选项,但IPv6的首部长度是固定的,其选项放在有效载荷上
允许协议继续扩充
相对于IPv4的功能固定不变
支持即插即用(自动配置)
IPv6不需要DHCP
支持资源的预分配
支持实时视像等要求保证一定的带宽和时延的应用
IPv6首部改为8字节对齐
首部长度为8字节整数倍
组成部分
IPv6的基本首部
相比于IPv4更改
取消了首部长度字段,因为IPv6首部长度固定
取消了服务类型字段,因为优先级和流标号字段实现了服务类型字段的功能
取消了总长度字段,改用有效载荷长度字段
取消了标识、标志和片偏移字段,因为这些功能已包含在分片扩展首部中
把TTL字段改成跳数限制字段,作用相同
取消了协议字段,改用下一个首部字段
取消了检验和字段,加快路由器处理数据包速度(在运输层处理该问题)
取消了选项字段,而用扩展首部来实现选项功能
首部各字段
版本
占4位,指明协议版本,对IPv6为6
通信量类
占8位,为了区分不同的IPv6数据包的类别或优先级,和IPv4区分服务字段的作用相似
目前在进行不同通信量类性能的实验
流标号
占20位,IPv6的新机制是支持资源的预分配,允许路由器把每个数据包与一个给定的资源分配相联系
IPv6提出“流”的抽象概念
流指的是互联网上从特定源点到特定终点(单播或多播)的一系列数据包,而在这个“流”所经过的路径上的路由器都保证指明的服务质量
所有属于同一个流的数据包都具有同一个流标号
流标号对实时音频/视频数据都很有用
有效载荷长度
占16位,指明IPv6数据包除基本首部以外的字节数,字段最大值为64KB
下一个首部
占8位,相当于IPv4协议中的可选字段
没有扩展首部时,下一个首部字段作用和IPv4协议字段一样,指出基本首部后面的数据应交付给IP层上面的哪一层协议
6
TCP
17
UDP
出现拓展首部时,下一个首部字段的值就表示后面第一个拓展首部的类型
跳数限制
占8位,用来防止数据包在网络中无限期地存在,和IPv4生存时间字段类似
最大为255跳
源地址、目的地址
占128位
扩展首部
逐跳选项
路由选择
分片
鉴别
封装安全有效载荷
目的站选项
IPv6的有效载荷
允许有0个或多个扩展首部
IPv6的地址
目的地址基本类型
单播
点对点通信
多播
一对多通信
任播
新增类型,终点是一组计算机,但数据包只交付给按照路由算法最近的一个
节点
IPv6将实现IPv6的主机和路由器均称为节点
IPv6给每个节点与一条链路连接接口指派一个地址(并非给节点地址)
具有多个接口的节点可以有多个单播地址,而其中任何一个地址都可当作到达该节点的目的地址
表示方法
使用冒号16进制记法
例:68E6:8C64:FFFF:FFFF:0:1180:960A:FFFF
允许省略数字前的0
零压缩
一连串的0可以用一对冒号取代::
CIDR的斜线表示法仍然可以使用
但IPv6取消了子网掩码
常用地址分类
::/128
未指明地址
不能用作目的地址,只能将某台主机当作源地址使用条件是这台主机还没有配置到一个标准的IP地址
这类地址仅此一个
::1/128
环回地址
作用与IPv4的环回地址相同,仅此一个
FF00::/8
多播地址
功能和IPv4相同,这类地址占IPv6总数的1/256
FEC0::/10
本地站点单播地址
有些单位内部网络使用TCP/IP协议但没有连到互联网上
连接在内部网上的主机可以使用本地站点地址进行通信,但不能和互联网上的其他主机通信,与IPv4专用地址相同
这类地址占IPv6总数的1/1024
FE80::/10
本地链路单播地址
地址是在单一链路上使用,当节点启用IPv6时就自动生成本地链路地址
当需要把分组发往单一链路的设备不希望该分组被转发到此链路以外的地方时使用
全球单播地址
全球路由选择前缀n+子网标识符m+接口标识符(128-n-m)
从IPv4向IPv6过渡
IPv4向IPv6过度只能采用逐步演进的办法,同时要使新安装的IPv6能向后兼容
过渡策略
双协议栈
指在完全过度到IPv6前,使一部分主机同时装有IPv4和IPv6的系统通信,有两个IP协议栈
使用域名系统DNS查询目的主机采用的地址
隧道技术
要点
IPv6数据包进入IPv4网络时,把IPv6数据包封装成为IPv4数据包
把整个IPv6数据包当作数据封装进IPv4中
注意的是此时在“隧道"中传输的源主机和目标主机是具有两个IPv4/IPv6的路由
需要在IPv4数据包中的首部协议字段的值设置为41,表明是IPv6数据包
ICMPv6
IPv6不保证数据包的可靠交付,因为互联网上的路由可能会丢弃数据包,因此IPv6也需要ICMP来反馈一些差错信息,新版本为ICMPv6
比ICMPv4复杂,因为将ARP和IGMP合并到ICMP中
面向报文协议
利用报文来报告差错、获取信息、探测邻站或管理多播通信
ICMPv6报文
差错报文
信息报文
邻站发现报文(ND协议)
组成员关系报文(MLD协议)
互联网的路由选择协议
总概
路由选择协议规定了互联网中有关的路由器应如何交换信息并生成路由表
有关路由选择协议的几个基本概念
理想路由算法
特点
算法应该是完整的
算法应该在计算上简单
算法能适应通信量和网络拓扑的变化,具有稳健性
算法应具有稳定性
算法应该是公平的
算法应该是最佳的
相对某一特定要求下得出较为合理的选择
按是否能随网络的通信量自适应进行调整变化
静态路由选择策略
简单开销小,适合小网络
动态路由选择策略
复杂开销大,但较好适应网络状态变化,适合大网络
分层次的路由选择协议
原因
互联网规模非常大
许多单位希望在本局域网保密 同时连接上互联网
自治系统AS
每个AS对其他AS表现出的是一个单一和一致的路由选择策略
路由选择协议
内部网关协议IGP
在一个自治系统内部使用的路由选择协议
选用的协议
RIP协议
OSPF协议
IS-IS协议
外部网关协议EGP
源主机和目的主机在不同的自治系统中,那么在不同自治系统AS之间的路由选择要使用外部网关协议EGP
选用的协议
BGP-4协议
自治系统之间的路由选择也叫做域间路由选择,而在自治系统内部的路由选择叫做域内路由选择
内部网关协议RIP
协议RIP工作原理
是一种分布式基于距离向量的路由选择协议
最大的优点是简单
实现
RIP协议要求网络中的每个路由都要维护从它自己到其他每个目的网络的距离记录,这是一组距离向量
距离定义
从路由器到直连的网络的距离定为1,从一主机到非直连网络的距离定义为所经过的路由数加1(也可定义直连网络距离为0,并无影响)
RIP距离也称为跳数
RIP允许一条路径最多只能包含15个网络,可见RIP只适合于小型网络
RIP不能在两个网络之间同时使用多条路由,因为只选择一条具有最少网络数的路由。
特点
进和相邻路由器交换信息
路由器交换的信息是当前本路由器所知道的全部信息,即自己现在的路由表
按固定的时间间隔交换路由信息
路由表主要信息是到某一个网络的信息,更新原则是找到每个目的网络的最短距离
更新算法为距离向量算法
距离向量算法
对每个相邻路由发过来的RIP报文执行
步骤
对于地址X的相邻路由发来的RIP报文修改
报文结构:”到目的网络Net,距离是d,下一跳路由器X“
把下一跳字段中的地址都改为X
把所有的”距离“字段+1
对修改后的RIP报文每个项目
将原来路由表没有的目的网络Net,添加到路由表上
在路由表上有的目的网络Net,查看下一跳路由地址
若下一跳路由地址是X,则把收到的项目替换原路由表中的项目
否则如果收到的项目中的距离d小于路由表的距离,则进行更新
否则什么也不做
若3分组没收到相邻路由的更新路由,则把此相邻路由器记为不可达路由器,把距离设置为16
返回
RIP让一个自治系统中的所有路由和自己相邻路由定期交换信息,确保每个路由到一个目的网络的路由都是最短的
RIP报文
组成
首部
路由部分
要填入自治系统号ASN
要指出目标网络地址(子网掩码)、下一跳路由地址和到此网络距离
一个报文最多包括25个路由,若超过则需要发下一个RIP报文
坏消息传播得慢
出现网络故障时,要经过较长时间才能将此信息传送到所有路由
RIP协议特点
好消息传播快,坏消息传播慢
内部网关协议OSPF
名字是开放最短路径优先OSPF,为克服RIP缺点在1989年开发
使用了最短路径算法SPF
使用链路状态协议 特点
向本自治区系统中的所有路由器发送信息
使用到的是洪泛法
所有路由器都能得到这个消息的副本
发送的信息是与本路由器相邻所有路由器的链路状态, 但这只是路由器所知道的部分信息
链路状态 指的是本路由器和哪些路由器相邻 以及该链路的代价
当链路状态发生变化或每隔一段时间,路由器向所路由器用洪泛法发送链路状态信息
由于频繁交换信息,所有路由最终都可以建立一个链路状态数据库,即本AS网的拓扑结构图,这个结构图在AS内是一致的
OSPF更新过程收敛得快
OSPF使用层次结构的区域划分
区域
OSPF将一个自治系统再划分为若干个更小的范围,称为区域
每个区域都有一个32位区域标识符
一个区域内路由器最好不超过200个
上层的叫做主干区域
规定标识符为0.0.0.0
在主干区域内的路由器叫做主干路由器
在主干区域还有一个路由器专门和本自治系统以外的自治系统路由交换信息 叫做自治系统边界路由器
作用:联通其他下层区域
区域边界路由器
从其他区域传过来信息由区域边界路由器概括
好处
利用洪泛法交换链路状态信息的范围局限于每个 区域而不是 整个自治系统
其他特点
OSPF允许管理员给每条路由指派不同的代价
OSPF对于不同类型的业务可计算出不同的路由
可根据链路带宽计算不同的路由
如果同一个目的网络有多条相同代价的路径,可以将通信量分配给这几条路经,这叫多路径间的 负载均衡
所有在OSPD路由之间交换的分组都具有鉴别功能,保证了仅在可信赖的路由器之间交换链路状态信息
OSPF支持可变长度的子网划分和无分类的编址CIDR
由于网络中的链路状态可能经常发生变化,因此OSPF让每一个链路状态都带上一个32位的序号,序号越大状态越新
OSPF的物种分组类型
问候分组
用来发现和维持邻站的可达性
每10秒交换一次
若40s内没有收到问候分组则认为是不可达的
数据描述分组
向邻站给出自己的链路状态数据库中所有链路状态项目的摘要信息
链路状态请求分组
向对方发送某些链路状态项目的详细信息
链路状态更新分组
用洪泛法对全网更新链路状态
链路状态确认分组
对链路更新分组的确认
OSPF分组是作为IP数据包的数据部分来传送(首部协议字段为89)
运行
先让每个路由与相邻路由交换本数据库已有链路状态的摘要信息
摘要信息 是指出那些路由的链路状态信息及其序号以及写入数据库
交换后与本地数据库比对,发现缺少的某些链路状态项目
使用链路状态请求分组,向对方发送自己所缺少的某些链路状态项目的详细信息
在运行过程中,只要一个路由器链路状态发生变化,该路由器要使用链路状态更新分组,用泛洪法向全网更新链路状态
为了确保链路状态数据库与全网状态保持一致,OSPF规定每隔一段时间如30min要刷新一次数据库的链路状态
采用指定路由器方法,该局域网上所有的链路向连接到该网络上的各路由器发送状态信息,使得广播信息量大大减少
外部网关协议BGP
协议BGP的主要特点
不能在AS之间使用内部网关协议的原因
互联网规模太大
AS之间的路由选择必须考虑有关策略
力求选择出一条能够到达目的网络前缀且比较好的路由,并非计算出一条最佳路由
采用路径向量路由选择协议,与RIP和OSPF都有很大区别
BGP路由
流程
先建立TCP连接(半永久性质)
再不同AS间建立eBGP连接
在AS内部要建立iBGP连接
在一个AS内部所有的iBGP必须是全联通的
即使两路由没有物理连接,但仍有iBGP连接
iBGP和eBGP是相同的协议不过作用域不一样
格式
BGP路由=”前缀,BGP属性“=”前缀,AS-PATH,NEXT-HOP“
前缀 通告BGP路由终点
BGP属性
有很多类型
AS-PATH自治系统路径
告诉BGP路由所经过的AS系统
每经过一个AS,将其自治系统号ASN添加到AS-PATH中
NEXT-HOP下一跳
通告BGP路由的起点
理解
主机要知道从哪个路由发出去,必须是BGP路由
构造转发表
经过两次递归查找
R1先找到目标主机X的位置后,寻找本地AS边界路由器R2
再次查找下一跳,寻找R1到本地AS边界路由器R2的最佳路由R3
按照BGP格式,填入”X,R3“,将数据包传给R3
R3再重复以上步骤即可
三种不同的自治系统AS
末梢AS
较小
需要付费上网
可以同时连接两个或以上AS,称为多归属AS
不允许分组穿越自己的AS
穿越AS
拥有很好的高速通信干线的主干AS
为其他AS有偿转发分组
对等AS
彼此间发送接收不收费
BGP不允许出现兜圈子现象,一旦出现应删除此BGP路由
BGP路由的选择
如果有多条BGP可供选择,则应根据规则选取更好的
规则
本地偏好LOCAL-PREF值最高的路由要首先选择
本地偏好即本地优先
选择AS跳数最少的路由
可能转发次数更多
使用热土豆法
分组尽快离开本地AS的路由
选择路由器BGP标识符的数值最小的路由
(都一样~)
BGP的四种报文
OPEN报文
用来与BGP连接对等端建立关系
UPDATE报文
用来通告某一路由的信息,以及列出要撤销的路由
KEEPALIVE报文
用来周期性证实与对等端的连通性
NOTIFICATION报文
用来发送检测到的差错
路由器的构成
路由器的结构
路由选择部分/控制部分
核心构件:路由选择处理机
根据所选定路由选择协议构造出路由表
分组转发部分/数据部分
交换结构/交换组织
作用是 根据转发表对分组进行处理,将输入端口进入的分组从一个合适的输出端口转发出去
交换结构本身就是一种网络,”在路由器中的网络“
概念区分
转发仅仅由路由器根据转发表把收到的IP数据包转发出去,仅仅涉及一个路由器
路由选择
涉及到很多路由器协同工作的结果
路由器按照复杂算法得出整个网络拓扑变化情况并得出路由表
但在讨论路由选择原理不区分转发表和路由表,均使用路由表
一组输入端口
一组输出端口
线路接口卡
输入输出端口的连接的硬件
交换结构
路由器关键构件
三种常用的交换方法
通过存储器
通过总线
通过互联网络
纵横交换结构
IP多播
IP多播的基本概念
服务器仅传送一个分组,再逐级向下传递,由于局域网具有硬件多播功能,所以不需要分组,在局域网上的多播组成员都能收到这个分组
多播路由器
能够运行多播协议的路由器称为多播路由器
多播主干网MBONE
MBONE可以把分组传播给地点分散但属于一个组的许多台主机
IP多播
在互联网上进行多播
所传送分组需要使用多播IP地址
多播组的标识符是IP地址中的D类地址
多播数据包也是“尽最大努力交付”,不保证一定能够交付多播组内的所有成员
多播地址只能用于目的地址,而不能用于源地址,不产生ICMP差错报文
分类
在本局域网进行硬件多播
在互联网范围内进行多播
在局域网上进行硬件多播
D类IP地址中后23位和以太网的后23位形成映射关系,因此是多对一关系
网际组管理协议IGMP和 多播路由选择协议
IP多播需要的两种协议
网际组管理协议IGMP
让连接在本地局域网的多播路由器知道本局域网 是否有主机参加或者退出了某个多播组
多播路由选择协议
连接在局域网上的多播路由器要和其他的多播路由器协同工作, 以便把多播数据包用最小的代价传送给全部组员
多播转发必须动态适应多播组成员的变化
多播路由器在转发多播数据包时,不仅根据多播数据包的目的地址, 还要考虑这个多播数据包从哪来,要到哪去
多播数据包可以由没有加入多播组的主机发出, 也可以通过没有组成员接入的网络
网际组管理协议IGMP
1989年公布的RFC1112成为互联网标准协议(IGMPv1)
使用IP数据包传递其报文,也向IP提供服务
工作阶段
当某台主机接入新的多播组时,该主机应向多播组的多播地址发送一个IGMP报文,声明自己是该多播组的成员,本地多播路由器收到IGMP后要利用多播路由选择协议把这种组成员关系转发给互联网上的其他多播路由器
组成员关系是动态的,本地多播路由器要周期性探寻本地局域网上的主机,以便知道这些主机是否还继续是组成员,若任意一台主机响应,则认为该组活跃,但一个组经过几次探询后没有一台主机响应,则认为本网络上的主机都已经离开,则不再把这个组的成员关系转发给其他多播路由器
具体措施
在主机和多播路由器之间的所有通信都使用IP多播,没有参加IP多播的主机不会收到IGMP报文
多播路由器在探询组成员关系时只需要对所有的组发送一个请求信息询问的报文,而不需要每个组都发一个,询问速率是125s一次
当同一个网络连接有几个多播路由器时,能够迅速和有效地选择其中一个来探寻主机成员关系,不会引起IGMP通信量的增大
IGMP中有一个数值N,(默认10s)收到询问后在0到N随机选择发送响应所需经过的时延,时延最小者最先发送(若同一主机同时参加多个多播组)
同组内主机监听响应,只要本组其他主机先发送响应,自己便不发送,抑制不必要的通信量
多播路由选择协议
实质
找出以源主机为根节点的多播转发树
三种方法
洪范和剪除
采用反向路径广播RPB
要点
收到数据包时仅接收从最短路径传来的
因为IGMP报文有源点路由,所以很容易计算和辨别
剪除
发现一个路由的下游枝叶没有该组成员, 将该路由从多播转发树上剪除
隧道技术
适用于地理位置分散情况
基于核心的发现技术
适用于多播组大小在较大范围内变化时都适合
对每个多播组指定一个核心路由器给出单播IP地址
一些建议使用的多播路由选择协议
距离向量多播路由选择协议DVMRP
基于核心的转发树CBT
开放最短通路优先的多播拓展MOSPF
协议无关多播-稀疏方式PIM-SM
协议无关多播-密集方式PIM-DM
虚拟专用网VPN和网络地址转换NAT
虚拟专用网VPN
互联网上所有路由器对于目的地址是专用地址的数据包一律不进行转发
可重用地址/专用地址
10.0.0.0/8
172.16.0.0/12
192.168.0.0/16
若公司内部的部门分布广,则需要利用公用互联网作为本机构各专用网之间通信载体,这样的网叫做虚拟专用网VPN
如果通信有保密要求,则所有通过互联网传送的数据必须经过加密
种类
外联网
有的机构VPN需要有一些外部机构参加进来
内联网
直接使用VPN
远程接入VPN
网络地址转换NAT
定义
本地地址主机连接互联网方法
方法
在专用网连接到互联网的路由器上安装NAT软件
装有NAT软件的路由器称为NAT路由,至少一个有效外部全球IP地址
所有使用本地地址的主机在和外界通信时,都要在NAT路由上将其本地地址转换成全球IP才能与互联网连接
使用端口号的NAT也叫网络地址与端口号转换NAPT
多协议标签交换MPLS
总概
2001年成为建议标准
利用面向连接技术,使每一个分组携带一个叫做标签的小整数,当分组到达交换机时(即标签交换路由),交换机读取分组的标签,并利用标签纸来检索分组转发表
这种方式比查找路由表来分组转发快得多
MPLS作为一种IP增强技术被广泛应用在互联网上
特点
支持面向连接的服务质量
支持流量工程,均衡网络负载
有效支持虚拟专用网
MPLS工作原理
在MPLS域的入口处给每个IP数据包打上固定长度“标签”,对打上标签的IP数据包用硬件转发
标签交换
采用硬件技术对打上标签的IP进行转发就称为标签交换
“交换”也表示在转发时不在上升到第三层查找转发表,而是根据标签在第二层用硬件进行转发
可使用多种链路协议
PPP
以太网
ATM
帧中继
MPLS域
指该域中有许多彼此相邻的路由器,并且所有路由器都是支持MPLS技术的标签交换路由器LSR
分类
给IP数据包打标签的过程
严格的第三层分类只使用了IP首部中的字段
如源IP和目的IP
大多运营商实现第四层分类
运输层检查TCP和UDP首部的协议端口号
有的ISP实现第五层
检查数据包内部及考虑有效载荷
基本工作过程
LSR使用专门的标签分配协议LDP交换报文,并找出和特定标签相对应的路径,即标签交换路径LSP
当一个IP数据包进入MPLS域时,MPLS入口节点会把它打上标签(插入MPLS首部)并按照转发表转发给下一个LSR
一个标签仅仅在两个LSR交换才有意义,所以每经过一个LSR,不仅要转发,还要先更换新的标签,将入标签转为出标签(标签对换)
当IP数据包离开MPLS域时,MPLS出口节点把MPLS标签去除,按照普通方法转发
转发等价类FEC
就是路由器按照同样方式对待的IP数据包集合
打上相同标签的情况
目的地址和某一个特定IP地址的前缀匹配的IP数据包
所有源地址与目的地址都相同的IP数据包
具有某种服务质量需求的IP数据包
应用于负载均衡,避免最短路径过载,也称流量工程TE/通信量工程
MPLS首部位置和格式
使用封装技术:将IP数据包封装成以太网帧之前,先插入一个MPLS首部
以太网类型字段0x8847表示单播,0x8848表示多播。可以用帧的类型判断是否为多播形式
MPLS首部格式
标签值
占20位,基本上不会使用到全部,通常需要管理人员设置
试验
占3位,目前保留用于实验
S
占1位,表示栈,在有“标签栈”时使用
生存时间TTL
占8位,防止MPLS分组在域内兜圈子
新一代MPLS
段路由选择协议SR也称SR-MPLS
原理
基于标签交换
不需要使用协议LDP
将路径转换成有序的段列表,及MPLS标签栈,封装在MPLS首部
需要SDN控制器收集并掌握全网拓扑信息和链路状态信息,计算出分组应传送的整个路径
SR正向IPv6演进
软件定义网络SDN简介
总概
控制在逻辑上是集中式的,是基于流的控制
扩充了转发的内容
匹配
能够对不同层次的首部中的字段进行匹配
转发
能够把具有同样目的地址的分组从不同接口转发(负载均衡)
可以重写首部IP,或者人为阻挡一些分组
完成SDN的设备
分组交换机/OpenFlow交换机
流
穿过网络的一种序列,在此序列的分组都共享首部的某些字段
流表-取代传统的转发表
匹配+动作
流表项
首部字段值
一组字段用来使入分组的对应首部与之相匹配,又称匹配字段
计数器
已经与该表项匹配的分组数量
该表上次更新到现在经历的时间
动作
一组动作,如:
分组匹配某个流表项时把分组转发到指明的端口
或丢弃该分组
或把分组进行复制后再从多个端口转发
或重写分组的首部字段
关键特征
基于流的转发
SDN控制的交换机分布在数据层面,而分组的转发可以基于网络层、运输层和链路层协议数据单元中的首部字段值进行
数据层面与控制层面分离
位于数据层面交换机之外的网络控制功能
SDN控制层面是用软件实现的
软件在不同的机器上
可编程的网络
SDN控制器层次
最下面是通信层
中间是网络范围的状态管理层
最上面是到网络控制应用程序层的接口