第四章 网络层(下)
4.7 IPv6
中国主导“雪人计划”于2016年在全球16个国家完成25台IPv6根服务器架设,事实上形成了 13 台原有 IPv4 根加 25 台 IPv6 根的新格局。在中国,目前部署有4台服务器,其中含有1台主根服务器和3台辅根服务器,这也打破了中国过去没有根服务器的格局。
32位IPv4地址空间已分配殆尽…
CIDR、NAT治标不治本
而IPv6从根本上解决地址耗尽问题
特点
改进首部格式、快速处理/转发数据报、支持QoS
QoS(Quality of Service,服务质量)指 一个网络能够利用各种基础技术,为指定的网络通信提供更好的服务能力, 是 网络的一种安全机制, 是用来解决网络延迟和阻塞等问题的一种技术。
IPv6数据报格式
依次解读
- 指明了协议版本,总是6。
- 区分数据报的类别和优先级。
- “流”是互联网络上从特定 源点到特定终点的一系列数 据报。
- 所有属于同一个流的 数据报都具有同样的流标签。
- 标识下一个扩展首部或上层 协议首部。
- 跳数限制相当于IPv4的TTL。路由器在转发数据报时将跳数限制字段中的值减当跳数限制的值为零时,则将此数据报丢弃。
IPv6地址表示形式
一般形式,冒号十六进制记法:4BF5:AA12:0216:FEBC:BA5F:039A:BE9A:217
压缩形式4BF5:0000:0000:0000:BA 5F:039A:000A:2176
零压缩:一连串连续的0可以被一对冒号取代。 FF05:0:0:0:0:0:0:B3----FF05::B3(零压缩,双冒号表示法)注意:双冒号表示法在一个地址中仅可出现一次。
CIDR的斜线表示法仍然可用。
例如:
12AB:0000:0000:CD30:0000:0000:0000:0000/60
——12AB::CD30:0:0:0:0/60(零压缩,双冒号表示法)
——12AB:0:0:CD30:/60(零压缩)
IPv6基本地址类型
IPv6和IPv4
1.IPv6将地址从32位(4B)扩大到128位(16B),更大的地址空间。
2.IPv6将IPv4的校验和字段彻底移除,以减少每跳的处理时间。
3.IPv6将IPv4的可选字段移出首部,变成了扩展首部,成为灵活的首部格式,路由器通常不对扩展首部进行检查,大大提高了路由器的处理效率。
4.IPv6支持即插即用(即自动配置),不需要DHCP协议。
5.IPv6首部长度必须是8B的整数倍,IPv4首部是4B的整数倍。
6.IPv6只能在主机处分片,IPv4可以在路由器和主机处分片。
7.ICMPv6:附加报文类型“分组过大”。
8.IPv6支持资源的预分配, 支持实时视像等要求,保证一定的带宽和时延的应用。
9.IPv6取消了协议字段,改成下一个首部字段。
10.IPv6取消了总长度字段,改用有效载荷长度字段。
11.IPv6取消了服务类型字段
IPv6向IPv4过渡的策略
双栈协议
双协议栈技术就是指在一台设备上同时启用lPv4协议栈和IPv6协议栈。这样的话,这台设备既能和IPv4网络通信,又能和IPv6网络通信。
- 如果这台设备是一个路由器,那么这台路由器的不同接口上,分别配置了IPv4地址和IPv6地址,并很可能分别连接了IPv4网络和IPv6网络。
- 如果这台设备是一个计算机,那么它将同时拥有IPv4地址和IPv6地址,并具备同时处理这两个协议地址的功能。
隧道技术
通过使用互联网络的基础设施在网络之间传递数据的方式。
使用隧道传递的数据(或负载)可以是不同协议的数据帧或包。
隧道协议将其它协议的数据帧或包重新封装然后通过隧道发送。
4.8 路由算法及路由协议
路由算法
用于确定数据报的通过的最佳路径,于是路由器会存储一个自己的路由表,来记录这些值。
路由算法的分类
- 静态路由算法(非自适应路由算法)管理员手工配置路由信息。
- 简便、可靠,在负荷稳定、拓扑变化不大的网络中运行效果很好,广泛用于高度安全性的军事网络和较小的商业网络。
- 路由更新慢,不适用大型网络。
- 动态路由算法(自适应路由算法)路由器间彼此交换信息,按照路由算法优化出路由表项。
- 路由更新快,适用大型网络,及时响应链路费用或网络拓扑变化。
- 算法复杂,增加网络负担。
- 算法举例
- 全局性链路状态路由算法 OSPF :所有路由器掌握完整的网络拓扑和链路费用信息
- 分散性距离向量路由算法 RIP :路由器只掌握物理相连的邻居及链路费用。【邻居去世了会去祈祷,所以是RIP】
分层次的路由选择协议
(1)因特网规模很大
(2)许多单位不想让外界知道自己的路由选择协议,但还想连入因特网
自治系统AS:在单一的技术管理下的一组路由器,AS内部有路由,AS之间也有路由。
一个AS内的所有网络都属于一个行政单位来管辖,一个自治系统的所有路由器在本自治系统内都必须连通。
路由选择协议
内部网关协议IGP —— 一个AS内使用的,如RIP、OSPF
外部网关协议EGP —— 各AS之间使用的,如 BGP
4.9 RIP协议及距离向量算法
如何让一个系统的各路由器知道目标最短路径——RIP协议
RIP是一种分布式的基于距离向量的路由选择协议,是因特网的协议标准,最大优点是简单。
- 特点:要求网络中每一个路由器都维护从它自己到其他每一个目的网络的唯一最佳距离记录(即一组距离)。
- 距离:通常为“跳数”,即从源端口到目的端口所经过的路由器个数,经过一个路由器跳数+1。(特别的,从一路由器到直接连接的网络距离为1 )
- RIP允许一条路由最多只能包含15个路由器,因此距离为16表示网络不可达。
===> RIP协议只适用于小互联网。
RIP协议和谁交换?交换什么?多久交换一次?大致过程是?
1.仅和相邻路由器交换信息。
⒉路由器交换的信息是自己的路由表。
3.每30秒交换一次路由信息,然后路由器根据新信息更新路由表。若超过180s没收到邻居路由器的通告,则判定邻居没了(只好R.I.P了),并更新自己路由表。
4.路由器刚开始工作时,只知道直接连接的网络的距离(距离为1),接着每一个路由器也只和数目非常有限的相邻路由器交换并更新路由信息。经过若干次更新后,所有路由器最终都会知道到达本自治系统任何一个网络的最短距离和下一跳路由器的地址,即“收敛”。
路由表怎么更新的?——距离向量算法
- 1.修改相邻路由器发来的RIP报文中所有表项,对地址为X的相邻路由器发来的RIP报文,修改此报文中的所有项目:把“下一跳”字段中的地址改为X,并把所有的“距离”字段+1。
- 2.对修改后的RIP报文中的每一个项目,进行以下步骤:
- (1)R1路由表中若没有Net3,则把该项目填入R1路由表
- (2)R1路由表中若有Net3,则查看下一跳路由器地址: 若下一跳是X,则用收到的项目替换源路由表中的项目; 若下一跳不是X, 原来距离比从X走的距离远则更新,否则不作处理。
- 3.若180s还没收到相邻路由器X的更新路由表,则把X记为不可达的路由器,即把距离设置为16。
- 4.返回
距离向量算法练习1
已知路由器R6的路由表,现收到相邻路由器R4发来的路由更新信息,试更新路由器R6的路由表:
- 在R4发来的路由更新信息中修改:各项距离+1,下一跳路由器全部设置为自己,也就是R4
- 对R6进行更新:原来没有Net1,这里直接从修改后的R4中抄过来,之前有Net2、Net3,也是直接抄过来。
距离向量算法练习2
考虑如图所示的子网,该子网使用了距离-向量算法,下面的向量刚刚到达路由器C:
来自B的向量为(5,0, 8,12,6,2);
来自D的向量为(16,12,6,0,9,10);
来自E的向量为(7,6,3,9,0,4);
经过测量,C到B、D和E的延迟分别为6,3和5,那么C到达所有结点的最短路径是?
—— (11,6,0,3,5,8)
解:
各个向量对应元素的意思是(A,B,C,D,E,F),路由节点X到其他节点X'所需要的延迟。
(注:这里是C经B、C经D、C经E,再到目标节点的延迟)
如图写出过后,从这些向量中的所有元素中选出各对应点里面的延迟最小值的,组成一个新向量,即(11,6,0,3,5,8)
RIP协议的报文格式
- RIP是应用层协议,使用UDP传送数据。
- 一个RIP报文最多可包括25个路由,如 超过,必须再用一 个RIP报文传送。
RIP协议特点——好消息传得快,坏消息传得慢
RIP的特点:当网络出现故障时,要经过比较长的时间 (例如数分钟) 才能将此信息传送到所有的路由器,“慢收敛”
当网络1故障时,
- R说:“我到网1的距离是16(表示无法到达),是直接交付。”
- 但R2在收到R1的更新报文之前,还发送原来的报文,因为这时R2并不知道R1出了故障。
- R1收到R2的更新报文后,误认为可经过R2到达网1,于是更新自己的路由表,说:“我到网1的距离是3,下一跳经过R2”。然后将此更新信息发送给R2。
- R2又更新自己的路由表为“1,4,R1",表明“我到网1距离是4,下一跳经过R1”。
- 如此不断更新,知道都为16,R1、R2才明白网1不可达。一个网络中那么多路由,总耗时自然更长了。
4.10 OSPF协议及链路状态算法
开放最短路径优先OSPF协议:“开放”Opening,标明OSPF协议不是受某一家厂商控制,而是公开发表的;
“最短路径优先” 是因为使用了Dijkstra提出的最短路径算法SPF。
OSPF最主要的特征就是使用分布式的链路状态协议。
OSPF的特点:和谁交换? 交换什么? 多久交换?
- 1.向使用洪泛法向自治系统内所有路由器发送信息,即路由器通过输出端口向所有相邻的路由器发送信息,而每一个相邻路由器又再次将此信息发往其所有的相邻路由器。
- 广播----最终整个区域内所有路由器都得到了这个信息的一个副本。
- 最后,所有路由器都能建立一个链路状态数据库,即全网拓扑图。
- ⒉.发送的信息就是与本路由器相邻的所有路由器的链路状态(本路由器和哪些路由器相邻,以及该链路的度量/代价――费用、距离、时延、带宽等)。
- 3.只有当链路状态发生变化时,路由器才向所有路由器洪泛发送此信息。
链路状态路由算法
- 1.每个路由器发现它的邻居结点【HELLO问候分组】,并了解邻居节点的网络地址。
- 2.设置到它的每个邻居的成本度量metric。
- 3.构造【DD数据库描述分组】,向邻站给出自己的链路状态数据库中的所有链路状态项目的摘要信息。
- 4.如果DD分组中的摘要自己都有,则邻站不做处理;如果有没有的或者是更新的,则发送【LSR链路状态请求分组】,请求自己没有的信息、比自己更新的信息。
- 5.收到邻站的LSR分组后,发送【LSU链路状态更新分组】进行更新。
- 6.更新完毕后,邻站返回一个【LSAck链路状态确认分组】进行确认。
- 只要一个路由器的链路状态发生变化:
- 5.泛洪发送【LSU链路状态更新分组】进行更新。
- 6.更新完毕后,其他站返回一个【LSAck链路状态确认分组】进行确认。
- 7.使用Dijkstra根据自己的链路状态数据库构造到其他节点间的最短路径。
OSPF的区域
- 为了使 OSPF 能够用于规模很大的网络,OSPF 将一个自治系统再划分为若干个更小的范围,叫做区域。
- 每一个区域都有一个 32 位的区域标识符(用点分十进制表示)。
- 区域也不能太大,在一个区域内的路由器最好不超过 200 个。
OSPF其他特点
1.每隔30min,要刷新一次数据库中的链路状态。
2.由于一个路由器的链路状态只涉及到与相邻路由器的连通状态,因而与整个互联网的规模并无直接关系。因
此当互联网规模很大时,OSPF 协议要比距离向量协议 RIP 好得多。
3.OSPF不存在坏消息传的慢的问题,它的收敛速度很快。
4.11 BGP协议
- 和谁交换? ——与其他AS的邻站BGP发言人交换信息。
- 交换什么? ——交换的网络可达性的信息,即要到达某个网络所要经过的一系列AS。
- 多久交换? ——发生变化时更新有变化的部分。
BGP协议交换信息的过程
BGP 所交换的网络可达性的信息就是要到达某个网络所要经过的一系列 AS。
当 BGP 发言人互相交换了网络可达 性的信息后,各 BGP 发言人就根据所采用的策略从收到的路由信息中找出到达各 AS 的较好路由。
BGP发言人的两种发言走向
BGP协议报文格式
一个 BGP 发言人与其他自治系统中的 BGP 发言人要交换路由信息,就要先建立 TCP 连接,即通过TCP传送,
然后 在此连接上交换 BGP 报文以建立 BGP 会话(session),利用 BGP 会话交换路由信息。
BGP协议特点
BGP 支持 CIDR,因此 BGP 的路由表也就应当包括目的网络前缀、下一跳路由器,以及到达该目的网络所要经过的 各个自治系统序列。
在 BGP 刚刚运行时,BGP 的邻站是交换整个的 BGP 路由表。
但以后只需要在发生变化时更新有变化的部分。这样 做对节省网络带宽和减少路由器的处理开销都有好处。
BGP-4的四种报文
- OPEN(打开)报文:用来与相邻的另一个BGP发言人建立关系,并认证发送方。
- UPDATE(更新)报文:通告新路径或撤销原路径。
- KEEPALIVE(保活)报文:在无UPDATE时,周期性证实邻站的连通性;也作为OPEN的确认。
- NOTIFICATION(通知)报文:报告先前报文的差错;也被用于关闭连接。
三种路由协议比较
- RIP是一种分布式的基于距离向量的内部网关路由选择协议,通过广播UDP报文来交换路由信息。【RU】
- OSPF是一个内部网关协议,要交换的信息量较大,应使报文的长度尽量短,所以不使用传输层协议(如UDP
或TCP),而是直接采用IP。【OI】 - BGP是一个外部网关协议,在不同的自治系统之间交换路由信息,由于网络环境复杂,需要保证可靠传输,所
以采用TCP。【BT】
4.12 IP组播
- 单播【1v1恋爱】
- 单播用于发送数据包到单个目的地,且每发送一份单播报文都使用一个单播IP地址作为目的地址。是一种点对点传输方式。
- 广播【1vn 海王恋爱】
- 广播是指发送数据包到同一广播域或子网内的所有设备的一种数据传输方式,是一种点对多点传输方式。
- 组播(多播)【1vi 海王特定目标的恋爱】
- 当网络中的某些用户需要特定数据时,组播数据发送者仅发送一次数据,借助组播路由协议为组播数据包建立组播分发树,被传递的数据到达距离用户端尽可能近的节点后才开始复制和分发,是一种点对多点传输方式。
单播
在发送者和每一接收者之间需要单独的数据信道。
组播
组播提高了数据传送效率。减少了主干网出现拥塞的可能性。组播组中的主机可以是在同一个物理网络,也可以来自不同的物理网络(如果有组播路由器的支持,组播路由器就是运行组播协议的路由器)。
IP组播地址
IP组播地址让源设备能够将分组发送给一组设备。属于多播组的设备将被分配一个组播组IP地址(一群共同需求
主机的相同标识)。
组播地址范围为224.0.0.0~239.255.255.255(D类地址),一个D类地址表示一个组播组。只能用作分组的目标地址。源地址总是为单播地址。
特点
1.组播数据报也是“尽最大努力交付”,不提供可靠交付,应用于UDP。
2.对组播数据报不产生ICMP差错报文。
3.并非所有D类地址都可以作为组播地址。
组播分类
- 因特网范围内组播
- 硬件组播
硬件组播
同单播地址一样,组播IP地址也需要相应的组播MAC地址在本地网络中实际传送帧。
组播MAC地址以十六进制 值01-00-5E打头,余下的6个十六进制位是根据IP组播组地址的最后23位转换得到的。
TCP/IP 协议使用的以太网多播地址的范围是: 从01-00-5E-00-00-00到01-00-5E-7F-FF-FF
收到多播数据报的主机,还要在 IP 层利用软件进行过滤,把不是 本主机要接收的数据报丢弃。
IGMP协议与组播路由选择协议
IGMP协议
ICMP和IGMP都使用IP数据报传递报文。
IGMP工作的两个阶段
ROUND 1:
某主机要加入组播组时,该主机向组播组的组播地址发送一个lGMP报文,声明自己要称为该组的成员。本地组播路由器收到IGMP报文后,要利用组播路由选择协议把这组成员关系发给因特网上的其他组播路由器。
ROUND 2:
本地组播路由器周期性探询本地局域网上的主机,以便知道这些主机是否还是组播组的成员。
只要有一个主机对某个组响应,那么组播路由器就认为这个组是活跃的;如果经过几次探询后没有一个主机响应,组播路由器就认为本网络上的没有此组播组的主机,因此就不再把这组的成员关系发给其他的组播路由器。
组播路由器知道的成员关系只是所连接的局域网中有无组播组的成员。
组播路由选择协议
组播路由选择协议目的是找出以源主机为根节点的组播转发树。
组播路由协议目的是找出以源主机为根节点的组播转发树。 构造树可以避免在路由器之间兜圈子。 对不同的多播组对应于不同的多播转发树;同一个多播组,对不同的源点也会有不同的多播转发树。
组播路由选择协议常使用的三种算法:
- 基于链路状态的路由选择
- 基于距离-向量的路由选择
- 协议无关的组播(稀疏/密集)
4.13 移动IP、网络层设备
移动IP
- 比如QQ异地登陆、数据漫游
- 介绍相关概念 通信过程
移动IP相关概念
移动lP技术是移动结点(计算机/服务器等)以固定的网络IP地址,实现跨越不同网段的漫游功能,并保证了基于网络IP的网络权限在漫游过程中不发生任何改变。
-
移动结点具有永久IP地址的移动设备。
-
归属代理(本地代理)一个移动结点的永久“居所”称为归属网络,在归属网络中代表移动节点执行移
动管理功能的实体叫做归属代理。 -
永久地址(归属地址/主地址)移动站点在归属网络中的原始地址。
-
外部代理(外地代理)在外部网络中帮助移动节点完成移动管理功能的实体称为外部代理。
-
转交地址(辅地址)可以是外部代理的地址或动态配置的一个地址。
举例:学生
归属代理——自己的家
移动节点——学生本人
永久地址——身份证号ID
外部代理——学校
转交地址——学校编号ID
过程
4.14 网络层设备
路由器