IPv6
- 由于IPv4最大的问题在于网络地址资源不足,严重制约了互联网的应用和发展。IPv6的使用,不仅能解决网络地址资源数量的问题,而且也解决了多种接入设备连入互联网的障碍。
- IPv6数据报格式:
- 解决"IP地址耗尽"问题的措施有以下三种:
①采用无类别编址CIDR,使IP地址的分配更加合理 ②采用网络地址转换(NAT)方法以节省全球IP地址 ③采用具有更大地址空间的新版本的IPv6 其中前两种方法只是延长了IPv4地址分配完毕的时间,只有第三种方法从根本上解决了IP地址的耗尽问题
IPv6 VS IPv4
- IPv6将地址从32位(4B)扩大到128位(16B),更大的地址空间
- IPv6将IPv4的校验和字段彻底移除,以减少每跳的处理时间
- IPv6将IPv4的可选字段移出首部,变成了扩展首部,成为灵活的首部格式,路由器通常不对扩展首部进行检查,大大提高了路由器的处理效率
- IPv6支持即插即用(即自动配置),不需要DHCP协议
- IPv6首部长度必须是8B的整数倍,IPv4首部是4B的整数倍
- IPv6只能在主机处分片,IPv4可以在路由器和主机处分片
- ICMPv6:附加报文类型"分组过大"
- IPv6支持资源的预分配,支持实时视像等要求,保证一定的带宽和时延的应用
- IPv6取消了协议字段,改成下一个首部字段
- IPv6取消了总长度字段,改用有效载荷长度字段
- IPv6取消了服务类型字段
IPv6地址
- IPv6数据报的目的地址可以是以下三种基本类型地址之一:
单播:单播就是传统的点对点通信【可做源地址+目的地址】 多播:多播是一点对多点的通信,分组被交付到一组计算机的每台计算机【可做目的地址】 任播:这是IPv6增加的一种类型。任播的目的站是一组计算机,但数据报在交付时只交付其中的一台计算机,通常是距离最近的一台计算机。【可做目的地址】 - IPv6地址表示形式:
①一般形式:把地址中的每4位用一个十六进制数表示,并用冒号分隔每16位 如:4BF5:AA12:0216:FEBC:BA5F:039A:BE9A:2170 ②压缩形式:当16位域的开头有一些0时,可以省略写一些0,但在域中必须至少有一个数字 如:4BF5:0000:0000:0000:BA5F:039A:000A:2176 → 4BF5:0:0:0:BA5F:39A:A:2176 零压缩:一连串连续的0可以被一对冒号取代【注意:双冒号表示法在一个地址中仅可出现一次】 如:FF05:0:0:0:0:0:0:B3 → FF05::B3 - IPv6向IPv4过渡的策略:
双栈协议:双协议栈技术就是指在一台设备上同时启用IPv4协议栈和IPv6协议栈。这样的话,这台设备既能和IPv4网络通信,又能和IPv6网络通信。如果这台设备是一个路由器,那么这台路由器的不同接口上,分别配置了IPv4地址和IPv6地址,并很可能分别连接了IPv4网络和IPv6网络。如果这台设备是一个计算机,那么它将同时拥有IPv4地址和IPv6地址,并具备同时处理这两个协议地址的功能。 隧道技术:将整个IPv6数据报封装到IPv4数据报的数据部分,使得IPv6数据报可以在IPv4网络的隧道中传输
路由协议
自治系统
- 自治系统AS:在单一的技术管理下的一组路由器,而这些路由器使用一种AS内部的路由选择协议和共同的度量以确定分组在该AS内的路由,同时还使用一种AS之间的路由协议以确定在AS之间的路由
- 一个自治系统内的所有网络都由一个行政单位(如一家公司、一所大学、一个行政部门等)管辖,一个自治系统的所有路由器在本自治系统内都必须是连通的
域内路由与域间路由
- 自治系统内部的路由选择称为域内路由选择,自治系统之间的路由选择称为域间路由选择。因特网有两大类路由选择协议。
- 内部网关协议(Interior Gateway Protocol,IGP)
- 内部网关协议即在一个自治系统内部使用的路由协议,它与互联网中其他自治系统选用什么路由选择协议无关。目前这类路由选择协议使用得最多,如RIP和OSPF
- 外部网关协议(External Gateway Protocol,EGP)
- 若源站与目的站处在不同的自治系统中,当数据报传送到一个自治系统的边界时,就需要使用一种协议将路由选择信息传递到另一个自治系统中。这样的协议就是外部网关协议。目前使用最多的外部网关协议是BGP-4。
路
由
算
法
{
静
态
路
由
算
法
(
非
自
适
应
路
由
算
法
)
:
管
理
员
手
工
配
置
路
由
信
息
动
态
路
由
算
法
(
自
适
应
路
由
算
法
)
:
路
由
器
间
彼
此
交
换
信
息
,
按
照
路
由
算
法
优
化
出
路
由
表
项
路由算法\begin{cases} 静态路由算法(非自适应路由算法):管理员手工配置路由信息 \\ 动态路由算法(自适应路由算法):路由器间彼此交换信息,按照路由算法优化出路由表项 \\ \end{cases}
路由算法{静态路由算法(非自适应路由算法):管理员手工配置路由信息动态路由算法(自适应路由算法):路由器间彼此交换信息,按照路由算法优化出路由表项? 静态路由算法: 优点:简便、可靠,在负荷稳定、拓扑变化不大的网络中运行效果很好,广泛用于高度安全性的军事网络和较小的商业网络 缺点:路由更新慢,不适用大型网络 动态路由算法: 优点:路由更新快,适用大型网络,及时响应链路费用或网络拓扑变化 缺点:算法复杂,增加网络负担
路由信息协议(Routing Information Protocol,RIP)
- RIP是一种分布式的基于距离向量的路由选择协议,是因特网的协议标准,最大优点是简单
- RIP协议要求网络中每一个路由器都维护从它自己到其他每一个目的网络的唯一最佳距离记录(即一组距离)
- 距离:通常为"跳数",即从源端口到目的端口所经过的路由器个数,经过一个路由器跳数+1。特别的,从一路由器到直接连接的网络距离为1。RIP允许一条路由最多只能包含15个路由器,因此距离为16表示网络不可达。
- RIP协议只适用于小互联网
- 仅和相邻路由器交换信息。
- 路由器交换的信息是自己的路由表
- 每30秒交换一次路由信息,然后路由器根据新信息更新路由表。若超过180s没收到邻居路由器的通告,则判定邻居没了,并更新自己路由表。
- 路由器刚开始工作时,只知道直接连接的网络的距离(距离为1),接着每一个路由器也只和数目非常有限的相制路由器交换并更新路由信息
- 经过若干次更新后,所有路由器最终都会知道到达本自治系统任何一个网络的最短距离和下一跳路由器的地址,即"收敛"
距离向量算法
- 每个路由表项目都有三个关键数据:<目的网络N,距离d,下一跳路由器地址X>。对于每个相邻路由器发送过来的RIP报文,执行如下步骤:
(1)对地址为X的相邻路由器发过来的RIP报文,先修改此报文中的所有项目:把"下一跳"字段中的地址都改为X,并把所有的"距离"字段的值加1 (2)对修改后的RIP报文中的每个项目,执行如下步骤: ①当原来的路由表中没有目的网络N时,把该项目添加到路由表中 ②当原来的路由表中有目的网络N,且下一跳路由器的地址是X时,用收到的项目替换原路由表中的项目 ③当原来的路由表中有目的网络N,且下一跳路由器的地址不是X时,如果收到的项目中的距离d小于路由表中的距离,那么就用收到的项目替换原路由表中的项目;否则什么也不做 (3)如果180秒(RIP默认超时时间为180秒)还没有收到相邻路由器的更新路由表,那么把此相邻路由器记为不可达路由器,即把距离设置为16(距离为16表示不可达) (4)返回
开放最短路径优先(Open Shortest Path First,OSPF)协议
- OSPF向本自治系统中所有路由器发送信息,这里使用的方法是洪泛法;而RIP协议仅仅向自己相邻的几个路由器发送信息
- 发送的信息是与本路由器相邻的所有路由器的链路状态,但这只是路由器所知道的部分信息;而在RIP中,发送的信息是本路由器所知道的全部信息,即整个路由表
- 只有当链路状态发生变化时,路由器才用洪泛法向所有路由器发送此信息,并且更新过程收敛得快,不会出现RIP"坏消息传得慢"的问题;而在RIP中,不管网络拓扑是否发生变化,路由器之间都要定期交换路由表的信息
- OSPF是网络层协议,它不使用UDP或TCP,而直接用IP数据报传送;而RIP是应用层协议,它在传输层使用UDP
- 为了使OSPF能够用于规模很大的网络,OSPF将一个自治系统再划分为若干更小的范围,称为区域。划分区域的好处是:将利用洪泛法交换链路状态信息的范围局限于每个区域而非整个自治系统,减少了整个网络上的通信量。在一个区域内部的路由器只知道本区域的完整网络拓扑,而不知道其他区域的网络拓扑情况。这些区域也有层次之分。处在上层的域称为主干区域,负责连通其他下层的区域,并且还连接其他自治域。
- OSPF的五种分组类型:
①问候分组 ②数据库描述分组 ③链路状态请求分组 ④链路状态更新分组 ⑤链路状态确认分组
边界网关协议(Border Gateway Protocol,BGP)
-
边界网关协议是不同自治系统的路由器之间交换路由信息的协议,是一种外部网关协议。边界网关协议常用于互联网的网关之间。 -
边界网关协议只能力求寻找一条能够到达目的网络且比较好的路由,而并非寻找一条最佳路径。BGP采用的是路径向量路由选择协议,它与距离向量协议和链路状态协议有很大的区别。BGP是应用层协议,它是基于TCP的。 -
BGP-4共使用4种报文: ①打开(Open)报文。用来与相邻的另一个BGP发言人建立关系 ②更新(Update)报文。用来发送某一路由的信息,以及列出要撤销的多条路由 ③保活(Keepalive)报文。用来确认打开报文并周期性地证实邻站更新 ④通知(Notification)报文。用来发送检测到的差错 -
三种路由协议的比较
协议 | RIP | OSPF | BGP |
---|
类型 | 内部 | 内部 | 外部 | 路由算法 | 距离-向量 | 链路状态 | 路径-向量 | 传递协议 | UDP | IP | TCP | 路径选择 | 跳数最少 | 代价最低 | 较好,非最佳 | 交换结点 | 和本结点相邻的路由器 | 网络中的所有路由器 | 和本结点相邻的路由器 | 交换内容 | 当前本路由器知道的全部信息,即自己的路由表 | 与本路由器相邻的所有路由器的链路状态 | 首次:整个路由表;非首次:有变化的部分 |
IP组播
组播的概念
- IP数据报的三种传输方式:
单播:单播用于发送数据包到单个目的地,且每发送一份单播报文都使用一个单播IP地址作为目的地址,是一种点对点传输方式 广播:广播是指发送数据包到同一广播域或子网内的所有设备的一种数据传输方式,是一种点对多点传输方式 组播(多播):当网络中的某些用户需要特定数据时,组播数据发送者仅发送一次数据,借助组播路由协议为组播数据包建立组播分发树,被传递的数据到达距离用户端尽可能近的节点后才开始复制和分发,是一种点对多点传输方式 - 需要注意的是,主机组播时仅发送一份数据,只有数据在传送路径出现分岔时才将分组复制后继续转发。因此,对于发送方而言,数据只需发送一次就可发送到所有接收者,大大减轻了网络的负载和发送者的负担。组播需要路由器的支持才能实现,能够运行组播协议的路由器称为组播路由器。
IP组播地址
- IP组播使用D类地址格式。D类地址的前四位是1110,因此D类地址范围是224.0.0.0~239.255.255.255.每个D类IP地址标志一个组播组。
- 组播数据报和一般IP数据报的区别是,前者使用D类IP地址作为目的地址,并且首部中的协议字段指是2,表明使用IGMP。需要注意的是:
- 组播数据报也是"尽最大努力交付",不提供可靠交付,应用于UDP
- 对组播数据报不产生ICMP差错报文。
- 并非所有D类地址都可以作为组播地址
- IP组播可以分为两种:一种只在本局域网上进行硬件组播;另一种则在因特网的范围内进行组播。在因特网上进行组播的最后阶段,还是要把组播数据报在局域网上用硬件组播交付给组播组的所有成员
- IANA拥有的以太网组播地址的范围是从01-00-5E-00-00-00到01-00-5E-7F-FF-FF。不难看出,在每个地址中,只有23位可用作组播。这只能和D类IP地址中的23位有一一对应关系。D类IP地址可供分配的有28位,可见在这28位中,前5位不能用来构成以太网的硬件地址。
IGMP与组播路由算法
- 要使路由器知道组播组成员的信息,需要利用以太网组管理协议(Internet Group Management Protocol,IGMP)
- IGMP应视为网际协议IP的一个组成部分,其工作可分为两个阶段:
- 某主机要加入组播组时,该主机向组播组的组播地址发送一个lGMP报文,声明自己要称为该组的成员。本地组播路由器收到GMP报文后,要利用组播路由选择协议把这组成员关系发给因特网上的其他组播路由器。
- 本地组播路由器周期性探询本地局域网上的主机,以便知道这些主机是否还是组播组的成员。只要有一个主机对某个组响应,那么组播路由器就认为这个组是活跃的;如果经过几次探询后没有一个主机响应,组播路由器就认为本网络上的没有此组播组的主机,因此就不再把这组的成员关系发给其他的组播路由器。
- 组播路由选择实际上就是要找出以源主机为根结点的组播转发树,其中每个分组在每条链路上只传送一次(即在组播转发树上的路由器不会受到重复的组播数据报)。对于不同的多播组对应于不同的多播转发树;同一个多播组,对不同的源点也有不同的多播转发树
- 在许多由路由器互联的支持硬件多点传送的网络上实现因特网组播时,主要有三种路由算法:
- 基于链路状态的路由选择
- 基于距离-向量的路由选择
- 协议无关的组播PIM(稀疏/密集)
网络层设备
冲突域和广播域
- 冲突域:是指连接到同一物理介质上的所有结点的集合,这些结点之间存在争用的现象
- 广播域:是指接收到同样广播消息的结点集合。也就是说,在该集合中的任何一个结点发送一个广播帧,其他能收到这个帧的结点都被认为是该广播域的一部分
路由器的组成和功能
- 路由器是一种具有多个输入端口和多个输出端口的专用计算机,其任务是连接不同的网络(连接异构网络)并完成路由转发。在多个逻辑网络(即多个广播域)互联时必须使用路由器。
- 当源主机要向目标主机发送数据报时,路由器先检查源主机与目的主机是否连接在同一个网络上。如果源主机和目标主机在同一个网络上,那么直接交付而无须通过路由器。如果源主机和目标主机不在同一个网络上,那么路由器按照转发表(路由表)指出路由将数据报转发给下一个路由器,这称为间接交付。可见,在同一个网络中传递数据无须路由器的参与,而跨网通信必须通过路由器进行转发。
- 从结构上看,路由器由路由选择和分组转发两部分构成。而从模型的角度看,路由器是网络层设备,它实现了网络模型的下三层,即网络层、数据链路层和网络层。
- 分组转发部分由三部分组成:交换结构、一组输入端口和一组输出端口。输入端口在从物理层接收到的比特流中提取出数据链路层帧,进而从帧中提取出网络层数据报,输出端口则执行恰好相反的操作。交换结构是路由器的关键部件,它根据转发表对分组进行处理,将某个输入端口进入的分组从一个合适的输出端口转发出去。有三种常用的交换方法:通过存储器进行交换、通过总线进行交换和通过互联网络进行交换。
- 若路由器处理分组的速率赶不上分组进入队列的速率,则队列的存储空间最终必定减少到零,这就使后面再进入队列的分组由于没有存储空间而只能被丢弃 【路由器中的输入或输出队列产生溢出是造成分组丢失的重要原因】
- 路由器主要完成两个功能:一是分组转发,二是路由计算。前者处理通过路由器的数据流,关键操作是转发表查询、转发及相关的队列管理和任务调度等;后者通过和其他路由器进行基于路由协议的交互,完成路由表的计算。
路由表与路由转发
- 标准的路由表有4个项目:目的网络IP地址、子网掩码、下一跳IP地址、接口
- 转发表是从路由表得出的,其表项和路由表项有直接的对应关系。但转发表的格式和路由表的格式不同,其结构应使查找过程最优化(而路由表则需对网络拓扑变化的计算最优化)。转发表中含有一个分组将要发往的目的地址,以及分组的下一跳(即下一步接收者的目的地址,实际为MAC地址)。为了减少转发表的重复项目,可以使用一个默认路由代替所有具有相同"下一跳"的项目,并将默认路由设置得比其他项目的优先级低
- 注意转发和路由选择的区别:"转发"是路由器根据转发表把收到的IP数据报从合适的端口转发出去,它仅涉及一个路由器。而"路由选择"则涉及很多路由器,路由表是许多路由器协同工作的结果。这些路由器按照复杂的路由算法,根据从各相邻路由器得到的关于网络拓扑的变化情况,动态地改变所选择的路由,并由此构造出整个路由表。
|