【TCP/IP详解 卷一:协议】第十章 动态选路协议
更为详细的RIP博客解析:
RIP理论
距离向量算法的简介:
RIP协议V-D算法的介绍
10.1 引言
静态选路修改路由表的三种方法
- (1)主机设置时,默认的路由表项
- (2)ICMP重定向报文(默认路由错误)
- (3)route命令
在上述方法都不成功的情况下,使用动态选路。
10.2 动态选路
当相邻路由器之间进行通信,以告知对方每个路由器当前所连接的网络,这时就出现了动态选路。
要点
- 动态选路 用 选路策略(由路由守护程序执行) 影响路由表的表项。
- 路由守护程序 决定了 把哪些路由 增添到路由表中 或者 删除。
- 路由器之间通信的方法:动态选路协议。
- 动态选路协议 运行在 路由守护程序。
在 路由守护程序 上运行的 动态选路协议 中,最重要的是 IGP协议(Interior Gateway Protocol),即内部网关协议。
动态选路协议 有很多种,比如 IGP 和 EGP。
Internet 是以一组自治系统(AS)的方式组织的。每个自治系统可以选择 在该自治系统下(即 同一自治系统下) 各个路由器之间的 动态选路协议。这种协议(自治系统选择的,在其内部执行的) 称为 内部网关协议(IGP) 或者叫做 域内选路协议。
- 最常使用的 IGP 是 选路信息协议 RIP。 一种新的 IGP 是 开放最短路径优先 OSPF协议,它正在逐步取代 RIP。还有一种比较老的,以及被取代的 IGP:HELLO。
在 不同自治系统之间 路由器上 运行的 动态选路协议 是 外部网关协议(EGP) 或者是 域内选路协议 中的 分隔选路协议。
- 边界网关协议(BGP) 意在取代 EGP。
10.3 Unix选路守护程序
Unix系统上常常运行名为 routed 路由守护程序。另一个程序是 gated,动态路由协议 IGP 和 EGP,都支持它。
10.4 RIP:选路信息协议 用于路由器之间的通信
摘:RIP(Routing Information Protocol 路由信息协议)是一种简单的IGP。RIP是一个国际标准协议,所有的路由器厂商都支持它。RIP是 应用层协议 工作在 UDP的520端口 上,所有的 RIP数据包的源端口 和 目的端口的端口号 都是520。RIP 使用 距离矢量算法,当数据包通过一个路由器是一跳。RIP初始化时会从每个参与工作的接口上发送请求报文,该数据包向所有的RIP路由器请求一份对方完整的路由表,该请求以广播或点到点的形式发送到直连路由器。
10.4.1 RIP报文格式
命令字段:1 为请求,表示要求其他系统发送全部或部分路由表。2为应答,包含发送者全部或部分路由表。3和4舍弃不用。5 为轮询,6为轮询表项。
版本字段:通常为1,第二版 RIP为2。
度量:RIP的度量以跳计算。
RIP 报文最多可以通告25条路由。上限25 保证总长度为 25 × 20 + 4 = 504 < 512 bit。因此,发送整个路由表,需要多个RIP报文。
10.4.3 度量
RIP 所使用的度量是以跳(hop)来计数的。
如果相邻路由器通告它与其他网络路由的跳数为1,那么我们与那个网络的度量就是2。
所有直接相连接口的跳数为1。
最大的跳数为15。这意味着 RIP 只能在 主机间最大跳数值为15的AS 内使用。
跳数为16,代表无穷大,意味着没有到达的路由。
10.4.2 正常运行
(1)初始化:启动一个路由守护程序的时候,它先判断启动了哪些接口,并在接口上发送一个请求报文,要求其他路由器发送完整路由表。
- 如果是点对点链路 那么该请求 就是发送给其他终点的。
- 如果网络支持广播的话,那么这种请求就是以广播形式发送的。
- 之前有提到,目的UDP端口号为520,这是其他路由器的路由守护程序端口号。
(2)接收到请求:
如果是刚才提到的特殊请求(要求发送路由表),那么路由器就将完整的路由表发送给请求者。
如果不是,处理请求中的每一个表项:
- 如果在自己的路由表中发现 某一个表项指明的路由,那么就将度量指定为我们的值。
- 如果没有发现,指定为16。
通常来说,在主机设置的过程中,就已经计算好各个路由的度量了。
(3)接收到响应:使响应生效,根据响应报文中的度量,可能会更新路由表。
(4)定期路由更新:每过30s,所有或者部分路由器 会把 它的完整路由表 发送给相邻路由器。可以是广播形式的(比如在以太网上面)。或者是发送给点对点链路的其他终点的。
10.4.4 问题
(1)RIP无法区分非0部分是一个子网号,还是一个主机地址。
(2)在链路或者路由器发送故障的时候,需要很长的一段时间才能稳定下来。
(3)采用跳数作为度量,最大跳数为15,限制了可以使用RIP的网络的大小。
包括RIP在内的V-D算法路径刷新协议,都有一个严重的缺陷,即“慢收敛”(slow convergence)问题,又叫“计数到无穷”(count to infinity)。如果出现环路,直到路径长度达到16,也就是说要经过7番来回(至少30×7秒),路径回路才能被解除,这就是所谓的慢收敛问题。
解决方法:
主要的解决方法有水平分割(split horizon)法和带触发更新的毒性逆转 (Posion Reverse with Triggered updates) 法。水平分割法的原理是:当网关从某个网络接口发送RIP路径刷新报文时,其中不能包含从该接口获得的路径信息。毒性逆转法的原理是:某路径崩溃后,最早广播此路径的网关将原路径继续保存在若干刷新报文中,但是指明路径为无限长。为了加强毒性逆转的效果,最好同时使用触发更新技术:一旦检测到路径崩溃,立即广播路径刷新报文,而不必等待下一个广播周期。
路由环路:百度百科
10.5 RIP 版本2
RIP-2 对 RIP 的定义进行了扩充,这些扩充并不改变协议本身,而是利用上面RIP报文格式中的 标注为“必须为0” 的协议来传递一些额外的东西。如果RIP协议 忽略这些必须为0的字段,那么RIP 和 RIP-2 可以互相操作。
- 版本号为2。
- 选路域:是一个选路守护程序的标识符,它指出了这个数据报的所有者。
- 选路标记:支持外部网关协议。
- 每个表项的子网掩码 应用于相应的IP地址上。
- 下一站IP地址指明发往目的IP地址的报文应该发往哪里,该字段为0 说明 发往目的地址的报文 应该 发送给 发送RIP报文的系统。
- RIP-2 提供了一种简单的认证机制。指定一个明文口令。
- RIP-2 除了广播,还支持多播。
关于RIP-2和RIP的区别,RIP的防环机制,RIPv1 RIPv2 的接收及发送机制,可以参考本篇随笔开头给出的《RIP理论》。
10.6 OSPF 开放最短路径优先
OSPF 是另外的一种 内部网关协议(IGP)。克服了RIP的所有限制。
RIP:采用距离向量法,而 OSPF 采用链路状态协议:路由器不与邻站交换距离信息。每个路由器主动的测试和邻站相连链路的状态,并将这些信息发送给它的其他邻站,而邻站将这些信息传播出去。每个路由器接收这些信息,建立起完整的路由表。>
链路状态协议 相比 距离向量协议 收敛的更快。收敛的意思是,在路由发生变化的时候,比如路由器关闭或者链路故障的时候,可以稳定下来。RIP处理 路由环路 的速度有点慢,也侧面说明了这一点。
OSPF 直接使用 IP,并不使用 TCP 或者 UDP。
其他还有一些优点,参见教材P103。其实根据 RIP的缺点就能够大致的推出 OSPF 的优点。
附:RIP的缺点
RIP的缺点:
1.仅以跳数作为度量值,常常不能计算出最优路径。
2.度量值以16跳为上限,不适合于大的网络。
3.安全性差,接受来自任何设备的路由更新,容易受到恶意的RIP欺骗。(单指RIPv1,RIPv2有密码验证机制)
4.不支持VLSM。(RIP采用子网掩码恢复机制,并不能解决这个问题)
5.收敛慢,RIP采用周期性的更新而不是触发更新。(如抑制计时器也增加了收敛时间)
6.带宽消耗大。RIP需要大量的信息交换:一方面,每个更新报文就每一条路由都包含一个条目,更新报文的大
小相当于一个路由表(其条目数与网间网络数成正比),而且其中的许多条目都是与当前路径刷新无关的;另一
方面,所有网络都参与定期交换信息,要交换的信息量极大。
10.7 BGP 边界网关协议
是一种 外部网关协议,意在取代老的 EGP。
BGP 与其他BGP系统之间交换网络可到达信息(包括数据到达网络所必须经过的 自治系统AS 中的 所有路径)。根据这些信息,构成一幅自治系统连接图。然后根据连接图删除选路环,制定选路策略。
章节还介绍了一些其他的内容:本地流量(信宿IP地址 或者 信源IP地址 所指定的主机在该自治系统中) 和 通过流量。三种自治系统。
BGP 允许使用基于策略的选路。由 自治系统管理员 制订策略,并且 通过配置文件 将策略指定给 BGP。
BGP 与 RIP 和 OSPF 不同的地方在于:选择 TCP 作为传输层协议。
BGP 是一个 距离向量协议。
10.8 CIDR 无类型域间选路
CIDR 是一个防止 Internet 路由表膨胀 的方法,它也称为超网。
基本观点是,采用一种 分配多个IP地址 的方法,使他能够将路由表中的许多表项 总和 成更少的数目。
选路决策 基于 32 bit 的 IP地址和 32 bit 的掩码操作,不管 IP地址 是 A类 还是 B类 还是其他类。
即 路由表 和 路由算法 必须拓展成为 根据 32bit IP地址 和 32 bit 掩码 做出路由选择。
"IP地址有“类”的概念,/8掩码是A类,/16掩码是B类,/24掩码是C类等等。但是/12,/18,/25呢?这就是无类的概念了,CIDR的作用就是支持IP地址的无类规划,把IP的网段规划成更细的方式来表示,这样可以有效的节约IP地址的使用和方便管理。"
2016/8/1
这一块的内容较为晦涩,大概写了一个树形图在外面,归纳一下这几个协议的关系。
目的:改变路由表项
(1)分成静态路由(三种) 和 动态路由
(2)动态路由:路由守护程序 将 选路策略 添加到 路由表项。
* 路由守护程序 运行 动态选路协议(用于路由器之间交流),动态选路协议 反馈信息(度量)到 路由守护程序。
(3)动态选路协议:内部 IGP,外部 EGP,外部 BGP(取代 EGP),新 CIDR。
(4)内部IGP:最主要的 RIP,老的被淘汰的 HELLO,新的 OSPF(取代 RIP)。
【TCP/IP详解 卷一:协议】第十章 动态选路协议的更多相关文章
- TCP/IP详解 卷一(第二十章 TCP的成块数据流)
本章将介绍TCP所使用的被称为滑动窗口协议的一种流量控制方法. 该协议允许发送方在停止并等待确认前可以连续发送多个分组,这样就可以加速数据的传输. 滑动窗口 下图用可视化的方法显示了滑动窗口协议 我们 ...
- 《TCP/IP详解 卷一》读书笔记-----动态路由协议
1.以下条件只要有一个不满足,则需要使用动态路由协议:1)网络规模小,2)只有一个连接点用于连接其他网络,3)没有冗余的路由器(一般用作备份) 2.所谓动态路由就是各个路由器与自己相邻的路由器交换各自 ...
- 『TCP/IP详解——卷一:协议』读书笔记——10
2013-08-22 22:57:17 3.8 ifconfig命令 这个命令在Linux系统下可以通过下面的指令阅读说明文档: ifconfig 由于书中作者用的系统比较早的某Unix系统,所以我的 ...
- 『TCP/IP详解——卷一:协议』读书笔记——01
从今日起开始认真研读TCP/IP详解这本经典制作,一是巩固我薄弱的计算机网络知识,二来提高我的假期的时间利用率.将心得与思考记录下来,防止白看-哦耶 2013-08-14 18:47:06 第一章 概 ...
- 【TCP/IP详解 卷一:协议】第二章:链路层
2.1 引言 链路层的三个目的: (1)为IP模块发送和接收IP数据报. (2)为ARP模块发送ARP请求和接收ARP应答.地址解析协议:ARP. (3)为RARP模块发送RARP请求和接收RARP应 ...
- 【TCP/IP详解 卷一:协议】TCP的小结
前言:TCP学习的综述 在学习TCP/IP协议的大头:TCP协议 的过程中,遇到了很多机制和知识点,详解中更是用了足足8章的内容介绍它. TCP协议作为 应用层 和 网络层 中间的 传输层协议,既要为 ...
- 【TCP/IP详解 卷一:协议】第十一章 UDP 用户数据报协议
11.1 引言 UDP 是一个简单的 面向数据报 的运输层协议:进程的每个 输出操作 都正好产生一个 UDP数据报,并且组装成一份待发送的IP数据报. 这与 TCP 不一样,它是 面向流字符 的协议, ...
- 【TCP/IP详解 卷一:协议】第六章:DHCP 和自动配置
简介 为了使用 TCP/IP 协议族,每台主机or路由器都需要一定的配置信息: IP地址 子网掩码 广播地址 路由或转发表 DNS 协议配置方法: 手动 通过使用网络服务来获得 使用一些算法来自动确定 ...
- TCP/IP 详解卷一之 HTTP协议
HTTP协议 简介 超文本传输协议(HypertextTransfer Protocol,简称HTTP)是应用层协议.HTTP 是一种请求/响应式的协议,即一个客户端与服务器建立连接后,向服务器发送一 ...
随机推荐
- python+requests接口自动化完整项目设计源码(一)
原文地址https://www.cnblogs.com/yoyoketang/tag/python接口自动化/ 原文地址https://www.cnblogs.com/yoyoketang/ 原文地址 ...
- c/c++的预处理定义 Stringizing Operator (#) Charizing Operator (#@) Token-Pasting Operator (##)
c/c++的预处理定义:一.Stringizing Operator (#)在c和c++中数字标志符#被赋予了新的意义,即字符串化操作符.其作用是:将宏定义中的传入参数名转换成用一对双引号括起来参数名 ...
- C# NPOI 操作excel
转载的文章,方便自己查看. 一.下载NPOI:http://down.gougou.com/down?cid=DAEA322D9D7F934B898077FB01C3A8CB02A746E6 二.项目 ...
- innob and myisam存储引擎分析
首次啊对比一下两者的区别: MyISAM InnoDB 构成上的区别: 每个MyISAM在磁盘上存储成三个文件.第一个文件的名字以表的名字开始,扩展名指出文件类型. .frm文件存储表定义 ...
- 线段树(I tree)
Codeforces Round #254 (Div. 2)E题这题说的是给了一个一段连续的区间每个区间有一种颜色然后一个彩笔从L画到R每个区间的颜色都发生了 改变然后 在L和R这部分区间里所用的颜色 ...
- 小试---EF5.0简介
简介 实体框架Entity Framework 是 ADO.NET 中的一组支持开发面向数据的软件应用程序的技术.是微软的一个ORM框架.简单的说就是把关系型数据库映射成面向对象模型. 一篇更加详细的 ...
- Python: 列表,元组,字典的区别
Python中有3种内建的数据结构:列表,元组和字典 1.列表 list是处理一组有序项目的数据结构,即可以在一个列表中存储一个序列的项目.列表中项目应该包括在方括号中,这样python就知道是在指明 ...
- 数据仓库基础(四)ODS、元数据
本文转载自:http://www.cnblogs.com/evencao/archive/2013/06/14/3135691.html ODS的概念:是一个面向主题的.集成的.可变的.反应当前细节的 ...
- Window下PHP三种运行方式图文详解,window下的php是不是单进程的?
Window下PHP三种运行方式图文详解,window下的php是不是单进程的? PHP运行目前为止主要有三种方式: a.以模块加载的方式运行,初学者可能不容易理解,其实就是将PHP集成到Apache ...
- oracle_存储过程小记
# 刷新会员标签函数 {color:red} fun_refresh_code{color} {noformat}CREATE OR REPLACE FUNCTION fun_refresh_code ...