【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 是一种请求/响应式的协议,即一个客户端与服务器建立连接后,向服务器发送一 ...
随机推荐
- Netty In Action中文版 - 第三章:Netty核心概念
在这一章我们将讨论Netty的10个核心类.清楚了解他们的结构对使用Netty非常实用.可能有一些不会再工作中用到.可是也有一些非经常常使用也非常核心,你会遇到. Bootstrap ...
- Unity3d 镜面折射 vertex and frag Shader源代码
Unity3d 镜面折射 网上能找到的基本上是固定管道或表面渲染的shader. 特此翻译为顶点.片段渲染的Shader, 本源代码仅仅涉及shader与cs部分, 请自行下载NGUI unity ...
- 万恶之源 - Python函数进阶
函数参数-动态参数 之前我们说过传参,如果我们在传参数的时候不很清楚有哪些的时候,或者说给一个函数传了很多参数,我们就要写很多,很麻烦怎么办呢,我们可以考虑使用动态参数 形参的第三种:动态参数 动态参 ...
- [py]django前台处理后端返回的各类数据
参考 要完成的任务 返回str 返回list 返回arr 前端遍历 关键字 if for语句处理str list dict - 遍历字典 for语句 {% for key, value in info ...
- centos7 设置 静态IP
centos7 图形设置 yum install NetworkManager-tui #centos7 nmtui edit eth0 #图形设置ip systemctl restart netwo ...
- Centos 6.5安装OpenSSL
方法一.直接安装 yum install openssl 方法二.下载源码编译安装 1.下载 wget https://www.openssl.org/source/openssl-1.0.2h.ta ...
- PHP中header('content-type:text/html;charset="utf-8')和error_reporting()的作用
1.header PHP文件插入header("Content-type: text/html; charset=utf-8");相当于页面里面的<meta http-equ ...
- .NET 互联网技术简介
概述 技术更新太快,尤其是在互联网公司里,很多新的主流技术,我们还是必须要知道和熟练使用的.下面就给大家简单介绍,入门还是需要大家更努力的去深入学习. 目录 Git 入门 常用软件安装及VS插件工具 ...
- C语言常用函数大全
一.数学函数 调用数学函数时,要求在源文件中包下以下命令行: #include <math.h> 函数原型说明 功能 返回值 说明 int abs( int x) 求整数x的绝对值 计算结 ...
- Liferay中request
在liferay中的请求分为renderRequest和actionRequest这两种请求的方式,portletRequest的子类有三个1renderRequest,2EventRequest3C ...