第九章 IP选路

netstat -rn 显示路由表

初始化路由表的两种方法:

  方法1:在配置文件中指定静态路由(不常用)

  方法2:运行路由守护程序 或者 使用ICMP路由器发现报文

没有到达目的地的路由的处理:

  此时的结果取决于该IP数据报是由主机产生的还是被转发的。

    若是由本地主机产生的,那么就给发送该数据报的应用程序返回一个差错(“主机不可达差错”或“网络不可达差错”);

    若是被转发的IP数据报,那么就给原始发送端发送一份ICMP主机不可达差错报文

ICMP主机与网络不可达差错

  当路由器收到一份IP数据报但又不能转发时,就要发送该报文

ICMP重定向差错

当IP数据报应该被发送到另一个路由器时,收到数据报的路由器就要发送ICMP重定向差错报文给IP数据报的发送端。

如下图:
1) 我们假定主机发送一份IP数据报给R1。这种选路决策经常发生,因为R1是该主机的默认路由。

2) R1收到数据报并且检查它的路由表,发现R2是发送该数据报的下一站。当它把数据报发送给R2时,R1检测到它正在发送的接口与数据报到达接口是相同的(即主机和两个路由器所在的LAN)。这样就给路由器发送重定向报文给原始发送端提供了线索。

3) R1发送一份ICMP重定向报文给主机,告诉它以后把数据报发送给R2而不是R1。

ICMP重定向例子

ICMP重定向可以帮助主机来动态学习,逐步建立更完善的路由表

ICMP路由器发现报文

这是一种较好的初始化路由表的方法!

一般认为,主机在引导以后要广播或多播传送一份路由器请求报文。一台或更多台路由器响应一份路由器通告报文。另外,路由器定期地广播或多播传送它们的路由器通告报文,允许每个正在监听的主机相应地更新它们的路由表。

(1) 路由器操作

  当路由器启动时,它定期在所有广播或多播传送接口上发送通告报文。准确地说,这些通告报文不是定期发送的,而是随机传送的,以减小与子网上其他路由器发生冲突的概率。一般每两次通告间隔450秒和600秒。一份给定的通告报文默认生命周期是30分钟。

  使用生命周期域的另一个时机是当路由器上的某个接口被关闭时。在这种情况下,路由器可以在该接口上发送最后一份通告报文,并把生命周期值设为0.除了定期发送主动提供的通告报文以外,路由器还要监听来自主机的请求报文,并发送路由器通告报文以响应这些请求报文。如果子网上有多台路由器,由系统管理员为每个路由器设置优先等级。例如,主默认路由器就要比备份路由器具有更高的优先级。

(2) 主机操作

  主机在引导期间一般发送三份路由器请求报文,每三秒钟发送一次。一旦接收到一个有效的通告报文,就停止发送请求报文。主机也监听来自相邻路由器的请求报文。这些通告报文可以改变主机的默认路由器。另外,如果没有接收到来自当前默认路由器的通告报文,那么默认路由器会超时。只要有一般的默认路由器,该路由器就会每隔10分钟发送通告报文,报文的生命周期是30分钟。这说明主机的默认表项是不会超时的,即使错过一份或两份通告报文。

(3) 实现

  路由器发现报文一般由用户进程(守护程序)创建和处理。这样,就有另一个修改路由表的程序,尽管它只增加或删除默认表项。守护程序必须把它配置成一台路由器或主机来使用。

第十章 动态选路协议

动态路由协议,用于路由器间的通信,它由路由器上的路由守护程序运行。

内部网关协议(IGP)用于同一自治系统各路由器之间的选路协议,常用的有 RIP OSPF

外部网关协议(EGP)用于不同自治系统路由器之间的选路协议,常用的有 BGP

Unix选路守护程序:

  routed路由守护程序(其只使用RIP进行通信)

  gated路由守护程序

RIP(选路信息协议)

RIP常用的UDP端口是520(这是路由器路由守护程序的端口号)

一、正常运行流程:

1 初始化

  启动一个路由守护程序时,它先判断启动了哪些接口,并在每个接口上发送一个请求报文(这是一种要求另一端完整路由表的特殊请求报文),要求其他路由器发送完整路由表。若网络支持广播,该请求一般以广播形式发送。

2 接收到请求

  若此请求是上述的特殊请求,则路由器就将完整的路由表发送给请求者。否则就处理请求中的每一个表项:若有连接到指明地址的路由,则将度量设置成我们的值,否则将度量设置为16(度量为16是一种称为“无穷大”的特殊值,它意味着没有到达目的的路由)。然后发回响应。

3 接收到响应

  使响应生效,可能会更新路由表。可能会增加新表项,对已有的表项进行修改,或是将已有表项删除

4 定期选路更新

  每过30秒,所有或部分路由器会将其完整路由表发送给相邻路由器。一般是以广播形式发

5 触发更新

  当每一条路由的度量变化时,就对其更新。无需发送完整路由表,而只需发送变化了的表项。

二、度量

  RIP所使用的度量是以hop计算的。

三、第一版RIP存在的问题

 1 RIP没有子网地址的概念

 2 在路由器或者链路发生故障后,需要很长一段时间才能稳定,一般是几分钟

 3 采用跳数作为路由度量忽略了其他一些应该考虑的因素。同时,度量最大值为15则限制了可以使用RIP的网络的大小

RIP版本2

对RIP版本1作了扩充。这些扩充并未改变协议本身,而是利用RIP版本1中的一些标注为“必须为0”的字段来传递一些额外的信息。

OSPF(开放最短路径优先)

OSPF克服了RIP的所有限制

与采用距离向量的RIP协议不同的是,OSPF是一个链路状态协议

链路状态协议总是比距离向量协议收敛更快

OSPF与RIP不同在于,OSPF直接使用IP,即其并不使用UDP或TCP

BGP( 边界网关协议 )

BGP使用TCP作为其传输层协议。两个运行BGP的系统间建立一条TCP连接,然后交换整个BGP路由表。此时开始,若路由表发生变化,再发送更新信号;

BGP是距离向量协议,但与(通告到目的地址跳数的)RIP不同的是,BGP列举了到每个目的地址的路由;

BGP通过定期发送keepalive报文给其邻站来检测TCP连接对端的链路或主机失败。时间间隔建议为30秒

CIDR(无类型域间选路)

是一个防止路由表膨胀的方法,也称为超网;

无类型的意思是现在的选路决策是基于整个32bit的IP地址的掩码操作,而不管其IP地址是A类、B类、C类;

CIDR的基本观念是采用一种分配多个IP地址的方式,使其能够将路由表中的许多表项总和成更少的数目;

CIDR使用一种技术,使路由表项最佳匹配总是最长的匹配:即在32bit掩码中,它具有最大值

TCP/IP详解之:IP选路 动态选路协议的更多相关文章

  1. TCP/IP详解之IP协议

    1.IP协议 IP协议是TCP/IP协议的核心,所有的TCP,UDP,IMCP,IGCP的数据都以IP数据格式传输.要注意的是,IP不是可靠的协议,这是说,IP协议没有提供一种数据未传达以后的处理机制 ...

  2. TCP/IP详解学习笔记 这位仁兄写得太好了

      TCP/IP详解学习笔记(1)-基本概念 为什么会有TCP/IP协议 在世界上各地,各种各样的电脑运行着各自不同的操作系统为大家服务,这些电脑在表达同一种信息的时候所使用的方法是千差万别.就好像圣 ...

  3. TCP/IP详解学习笔记 这位仁兄写得太好了.(转载)

    TCP/IP详解学习笔记   这位仁兄写得太好了   TCP/IP详解学习笔记   这位仁兄写得太好了. http://blog.csdn.net/goodboy1881/category/20444 ...

  4. 【转】TCP/IP详解学习笔记(一)

      TCP/IP详解学习笔记   这位仁兄写得太好了. http://blog.csdn.net/goodboy1881/category/204448.aspx TCP/IP详解学习笔记(13)-T ...

  5. TCP/IP详解学习笔记(5)-IP选路,动态选路,和一些细节

    1.静态IP选路 1.1.一个简单的路由表 选路是IP层最重要的一个功能之一.前面的部分已经简单的讲过路由器是通过何种规则来根据IP数据包的IP地址来选择路由.这里就不重复了.首先来看看一个简单的系统 ...

  6. TCP/IP详解学习笔记

    TCP/IP详解学习笔记(1)-基本概念 TCP/IP详解学习笔记(2)-数据链路层 TCP/IP详解学习笔记(3)-IP协议,ARP协议,RARP协议 TCP/IP详解学习笔记(4)-ICMP协议, ...

  7. TCP/IP详解 (转)

    TCP/IP详解学习笔记(1)-基本概念 为什么会有TCP/IP协议 在世界上各地,各种各样的电脑运行着各自不同的操作系统为大家服务,这些电脑在表达同一种信息的时候所使用的方法是千差万别.就好像圣经中 ...

  8. TCP IP详解(转)

    大学学习网络基础的时候老师讲过,网络由下往上分为物理层.数据链路层.网络层.传输层.会话层.表示层和应用层. 网络七层协议简称OSI.TCP/IP刨除了物理层,并把上三层(会话层.表示层和应用层)统称 ...

  9. 《TCP/IP详解卷1:协议》第2章 链路层-读书笔记

    章节回顾: <TCP/IP详解卷1:协议>第1章 概述-读书笔记 <TCP/IP详解卷1:协议>第2章 链路层-读书笔记 <TCP/IP详解卷1:协议>第3章 IP ...

  10. 《TCP/IP详解卷1:协议》第4章 ARP:地址解析协议-读书笔记

    章节回顾: <TCP/IP详解卷1:协议>第1章 概述-读书笔记 <TCP/IP详解卷1:协议>第2章 链路层-读书笔记 <TCP/IP详解卷1:协议>第3章 IP ...

随机推荐

  1. find()与children()方法的区别

    来源:http://www.jb51.net/article/26195.htm 总经一下前段时间用于的jQuery方法:find及children.需要的朋友可以参考下. 首先看看英文解释吧: ch ...

  2. 安装Cocoapoads遇到的问题的解决办法

    错误一.首先来个错误截图

  3. foreach的用法(转)

    JDK1.5加入的增强for和循环. foreach语句使用总结增强for(part1:part2){part3}; part2中是一个数组对象,或者是带有泛性的集合. part1定义了一个局部变量, ...

  4. eclipse项目提交到git

    http://www.open-open.com/lib/view/open1406105786710.html 1.在https://github.com   new repository 2.在e ...

  5. java菜鸟篇<四> ZTree入门篇

    今天准备入手ZTree,于是在百度上搜了搜,找到了开源网址和一些大神们的教程,于是乎下午开始了组织树(ZTree)的练习 初步完整的作品是这个样子的: 1.咱们要去这个工具的开源网里找下载的东西: ( ...

  6. express框架目录结构

    . ├── app.js ├── bin │   └── www ├── node_modules │   ├── body-parser │   ├── cookie-parser │   ├── ...

  7. C++中的类和对象(二)

    一,对象的动态建立和释放 1.什么是对象的动态建立和释放 通常我们创建的对象都是由C++编译器为我们在栈内存中创建的,我们无法对其进行生命周期的管理.所以我们需要动态的去建立该对象,因此我们需要在堆内 ...

  8. BootStrap 模态框禁用空白处点击关闭,手动显示隐藏,垂直居中

    $('#ajax_wait').modal({ backdrop: 'static', keyboard: false }); backdrop:static ,空白处不关闭. keyboard:fa ...

  9. Nginx 配置指令的执行顺序(九)

    紧接在 server-rewrite 阶段后边的是 find-config 阶段.这个阶段并不支持 Nginx 模块注册处理程序,而是由 Nginx 核心来完成当前请求与 location 配置块之间 ...

  10. 关于网络协议和socket编程基本概念

    TCP协议可以说已经是IT人耳熟能详的协议,最近在学习socket网络编程时后重新温习一下这个协议,针对一些问题做了一些总结,很多理解可能还不是很准确. 1. 协议是什么?所谓的各种网络协议无非是一种 ...