更为详细的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详解 卷一:协议】第十章 动态选路协议的更多相关文章

  1. TCP/IP详解 卷一(第二十章 TCP的成块数据流)

    本章将介绍TCP所使用的被称为滑动窗口协议的一种流量控制方法. 该协议允许发送方在停止并等待确认前可以连续发送多个分组,这样就可以加速数据的传输. 滑动窗口 下图用可视化的方法显示了滑动窗口协议 我们 ...

  2. 《TCP/IP详解 卷一》读书笔记-----动态路由协议

    1.以下条件只要有一个不满足,则需要使用动态路由协议:1)网络规模小,2)只有一个连接点用于连接其他网络,3)没有冗余的路由器(一般用作备份) 2.所谓动态路由就是各个路由器与自己相邻的路由器交换各自 ...

  3. 『TCP/IP详解——卷一:协议』读书笔记——10

    2013-08-22 22:57:17 3.8 ifconfig命令 这个命令在Linux系统下可以通过下面的指令阅读说明文档: ifconfig 由于书中作者用的系统比较早的某Unix系统,所以我的 ...

  4. 『TCP/IP详解——卷一:协议』读书笔记——01

    从今日起开始认真研读TCP/IP详解这本经典制作,一是巩固我薄弱的计算机网络知识,二来提高我的假期的时间利用率.将心得与思考记录下来,防止白看-哦耶 2013-08-14 18:47:06 第一章 概 ...

  5. 【TCP/IP详解 卷一:协议】第二章:链路层

    2.1 引言 链路层的三个目的: (1)为IP模块发送和接收IP数据报. (2)为ARP模块发送ARP请求和接收ARP应答.地址解析协议:ARP. (3)为RARP模块发送RARP请求和接收RARP应 ...

  6. 【TCP/IP详解 卷一:协议】TCP的小结

    前言:TCP学习的综述 在学习TCP/IP协议的大头:TCP协议 的过程中,遇到了很多机制和知识点,详解中更是用了足足8章的内容介绍它. TCP协议作为 应用层 和 网络层 中间的 传输层协议,既要为 ...

  7. 【TCP/IP详解 卷一:协议】第十一章 UDP 用户数据报协议

    11.1 引言 UDP 是一个简单的 面向数据报 的运输层协议:进程的每个 输出操作 都正好产生一个 UDP数据报,并且组装成一份待发送的IP数据报. 这与 TCP 不一样,它是 面向流字符 的协议, ...

  8. 【TCP/IP详解 卷一:协议】第六章:DHCP 和自动配置

    简介 为了使用 TCP/IP 协议族,每台主机or路由器都需要一定的配置信息: IP地址 子网掩码 广播地址 路由或转发表 DNS 协议配置方法: 手动 通过使用网络服务来获得 使用一些算法来自动确定 ...

  9. TCP/IP 详解卷一之 HTTP协议

    HTTP协议 简介 超文本传输协议(HypertextTransfer Protocol,简称HTTP)是应用层协议.HTTP 是一种请求/响应式的协议,即一个客户端与服务器建立连接后,向服务器发送一 ...

随机推荐

  1. Netty In Action中文版 - 第三章:Netty核心概念

            在这一章我们将讨论Netty的10个核心类.清楚了解他们的结构对使用Netty非常实用.可能有一些不会再工作中用到.可是也有一些非经常常使用也非常核心,你会遇到. Bootstrap ...

  2. Unity3d 镜面折射 vertex and frag Shader源代码

    Unity3d 镜面折射  网上能找到的基本上是固定管道或表面渲染的shader. 特此翻译为顶点.片段渲染的Shader, 本源代码仅仅涉及shader与cs部分, 请自行下载NGUI  unity ...

  3. 万恶之源 - Python函数进阶

    函数参数-动态参数 之前我们说过传参,如果我们在传参数的时候不很清楚有哪些的时候,或者说给一个函数传了很多参数,我们就要写很多,很麻烦怎么办呢,我们可以考虑使用动态参数 形参的第三种:动态参数 动态参 ...

  4. [py]django前台处理后端返回的各类数据

    参考 要完成的任务 返回str 返回list 返回arr 前端遍历 关键字 if for语句处理str list dict - 遍历字典 for语句 {% for key, value in info ...

  5. centos7 设置 静态IP

    centos7 图形设置 yum install NetworkManager-tui #centos7 nmtui edit eth0 #图形设置ip systemctl restart netwo ...

  6. Centos 6.5安装OpenSSL

    方法一.直接安装 yum install openssl 方法二.下载源码编译安装 1.下载 wget https://www.openssl.org/source/openssl-1.0.2h.ta ...

  7. 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 ...

  8. .NET 互联网技术简介

    概述 技术更新太快,尤其是在互联网公司里,很多新的主流技术,我们还是必须要知道和熟练使用的.下面就给大家简单介绍,入门还是需要大家更努力的去深入学习. 目录 Git 入门 常用软件安装及VS插件工具 ...

  9. C语言常用函数大全

    一.数学函数 调用数学函数时,要求在源文件中包下以下命令行: #include <math.h> 函数原型说明 功能 返回值 说明 int abs( int x) 求整数x的绝对值 计算结 ...

  10. Liferay中request

    在liferay中的请求分为renderRequest和actionRequest这两种请求的方式,portletRequest的子类有三个1renderRequest,2EventRequest3C ...