zoukankan      html  css  js  c++  java
  • tcp/ip ---IP路由选择

    从概念上说, I P路由选择是简单的,特别对于主机来说。如果目的主机与源主机直接相
    连(如点对点链路)或都在一个共享网络上(以太网或令牌环网),那么I P数据报就直接送到
    目的主机上。否则,主机把数据报发往一默认的路由器上,由路由器来转发该数据报。大多
    数的主机都是采用这种简单机制。

    I P层既可以配置成路由器的功能,也可
    以配置成主机的功能。当今的大多数多用户系统,包括几乎所有的U n i x系统,都可以配置成
    一个路由器。我们可以为它指定主机和路由器都可以使用的简单路由算法。本质上的区别在
    于主机从不把数据报从一个接口转发到另一个接口,而路由器则要转发数据报。内含路由器
    功能的主机应该从不转发数据报,除非它被设置成那样。

    在一般的体制中,I P可以从T C P、U D P、I C M P和I G M P接收数据报(即在本地生成的数据
    报)并进行发送,或者从一个网络接口接收数据报(待转发的数据报)并进行发送。I P层在
    内存中有一个路由表。当收到一份数据报并进行发送时,它都要对该表搜索一次。当数据报
    来自某个网络接口时, I P首先检查目的I P地址是否为本机的I P地址之一或者I P广播地址。如果
    确实是这样,数据报就被送到由I P首部协议字段所指定的协议模块进行处理。如果数据报的

    目的不是这些地址,那么( 1)如果I P层被设置为路由器的功能,那么就对数据报进行转发
    (也就是说,像下面对待发出的数据报一样处理);否则( 2)数据报被丢弃。

    路由表中的每一项都包含下面这些信息:
    • 目的I P地址。它既可以是一个完整的主机地址,也可以是一个网络地址,由该表目中的标
    志字段来指定(如下所述)。主机地址有一个非0的主机号,以指定某一特定的
    主机,而网络地址中的主机号为0,以指定网络中的所有主机(如以太网,令牌环网)。
    • 下一站(或下一跳)路由器( next-hop router)的I P地址,或者有直接连接的网络I P地
    址。下一站路由器是指一个在直接相连网络上的路由器,通过它可以转发数据报。下
    一站路由器不是最终的目的,但是它可以把传送给它的数据报转发到最终目的。
    • 标志。其中一个标志指明目的I P地址是网络地址还是主机地址,另一个标志指明下一
    站路由器是否为真正的下一站路由器,还是一个直接相连的接口
    • 为数据报的传输指定一个网络接口。

    I P路由选择是逐跳地( h o p - b y - h o p)进行的。从这个路由表信息可以看出, I P并不知道到
    达任何目的的完整路径(当然,除了那些与主机直接相连的目的)。所有的I P路由选择只为数
    据报传输提供下一站路由器的I P地址。它假定下一站路由器比发送数据报的主机更接近目的,
    而且下一站路由器与该主机是直接相连的。

    I P路由选择主要完成以下这些功能:
    1) 搜索路由表,寻找能与目的I P地址完全匹配的表目(网络号和主机号都要匹配)。如果
    找到,则把报文发送给该表目指定的下一站路由器或直接连接的网络接口(取决于标
    志字段的值)。
    2) 搜索路由表,寻找能与目的网络号相匹配的表目。如果找到,则把报文发送给该表目
    指定的下一站路由器或直接连接的网络接口(取决于标志字段的值)。目的网络上的所
    有主机都可以通过这个表目来处置。例如,一个以太网上的所有主机都是通过这种表
    目进行寻径的。
    这种搜索网络的匹配方法必须考虑可能的子网掩码。
    3) 搜索路由表,寻找标为“默认( d e f a u l t)”的表目。如果找到,则把报文发送给该表目
    指定的下一站路由器。

    如果上面这些步骤都没有成功,那么该数据报就不能被传送。如果不能传送的数据报来自
    本机,那么一般会向生成数据报的应用程序返回一个“主机不可达”或“网络不可达”的错误。

    完整主机地址匹配在网络号匹配之前执行。只有当它们都失败后才选择默认路由。默认
    路由,以及下一站路由器发送的I C M P间接报文

    为一个网络指定一个路由器,而不必为每个主机指定一个路由器,这是I P路由选择机制
    的另一个基本特性。这样做可以极大地缩小路由表的规模,比如I n t e r n e t上的路由器有只有几
    千个表目,而不会是超过1 0 0万个表目。

    举例
    首先考虑一个简单的例子:我们的主机b s d i有一个I P数据报要发送给主机s u n。双方都在
    同一个以太网上(参见扉页前图)。数据报的传输过程如图3 - 3所示。
    当I P从某个上层收到这份数据报后,它搜索路由表,发现目的I P地址(1 4 0 . 2 5 2 . 1 3 . 3 3)在
    一个直接相连的网络上(以太网1 4 0 . 2 5 2 . 1 3 . 0)。于是,在表中找到匹配网络地址(
    数据报被送到以太网驱动程序,然后
    作为一个以太网数据帧被送到s u n主机上
    。I P数据报中的目的地址是
    s u n的I P地址( 1 4 0 . 2 5 2 . 1 3 . 3 3),而在链
    路层首部中的目的地址是48 bit的s u n主
    机的以太网接口地址。这个48 bit的以太
    网地址是用A R P协议获得的。

    现在来看另一个例子:主机b s d i有一份I P数据报要传到f t p . u u . n e t主机上,它的I P地
    址是1 9 2 . 4 8 . 9 6 . 9。经过的前三个路由器如图3 - 4所示。首先,主机b s d i搜索路由表,但是没有
    找到与主机地址或网络地址相匹配的表目,因此只能用默认的表目,把数据报传给下一站路
    由器,即主机s u n。当数据报从b s d i被传到s u n主机上以后,目的I P地址是最终的信宿机地
    址(1 9 2 . 4 8 . 9 6 . 9),但是链路层地址却是s u n主机的以太网接口地址。这与图3 - 3不同,在那里
    数据报中的目的I P地址和目的链路层地址都指的是相同的主机( s u n)。

    当s u n收到数据报后,它发现数据报的目的I P地址并不是本机的任一地址,而s u n已被设
    置成具有路由器的功能,因此它把数据报进行转发。经过搜索路由表,选用了默认表目。根
    据s u n的默认表目,它把数据报转发到下一站路由器n e t b,该路由器的地址是1 4 0 . 2 5 2 . 1 . 1 8 3。
    数据报是经过点对点S L I P链路被传送的,采用了图2 - 2所示的最小封装格式。这里,我们没有
    给出像以太网链路层数据帧那样的首部,因为在S L I P链路中没有那样的首部。
    当n e t b收到数据报后,它执行与s u n主机相同的步骤:数据报的目的地址不是本机地址,
    而n e t b也被设置成具有路由器的功能,于是它也对该数据报进行转发。采用的也是默认路由
    表目,把数据报送到下一站路由器g a t e w a y(1 4 0 . 2 5 2 . 1 . 4)。位于以太网1 4 0 . 2 5 2 . 1上的主机
    n e t b用A R P获得对应于1 4 0 . 2 5 2 . 1 . 4的48 bit以太网地址。这个以太网地址就是链路层数据帧头
    上的目的地址。
    路由器g a t e w a y也执行与前面两个路由器相同的步骤。它的默认路由表目所指定的下一
    站路由器I P地址是1 4 0 . 2 5 2 . 1 0 4 . 2
    对于这个例子需要指出一些关键点:
    1) 该例子中的所有主机和路由器都使用了默认路由。事实上,大多数主机和一些路由器
    可以用默认路由来处理任何目的,除非它在本地局域网上。
    2) 数据报中的目的I P地址始终不发生任何变化(在8 . 5节中,我们将看到,只有使用源路
    由选项时,目的I P地址才有可能被修改,但这种情况很少出现)。所有的路由选择决策都是基
    于这个目的I P地址。
    3) 每个链路层可能具有不同的数据帧首部,而且链路层的目的地址(如果有的话)始终
    指的是下一站的链路层地址。在例子中,两个以太网封装了含有下一站以太网地址的链路层
    首部,但是S L I P链路没有这样做。以太网地址一般通过A R P获得。
    在第9章,我们在描述了I C M P之后将再次讨论I P路由选择问题。我们将看到一些路由表
    的例子,以及如何用它们来进行路由决策的。

  • 相关阅读:
    为什么 PCB 生产时推荐出 Gerber 给工厂?
    Fedora Redhat Centos 有什么区别和关系?
    【KiCad】 如何给元件给元件的管脚加上划线?
    MCU ADC 进入 PD 模式后出现错误的值?
    FastAdmin 生产环境升级注意
    EMC EMI 自行评估记录
    如何让你的 KiCad 在缩放时不眩晕?
    KiCad 5.1.0 正式版终于发布
    一次单片机 SFR 页引发的“事故”
    java基础之集合
  • 原文地址:https://www.cnblogs.com/saryli/p/5309746.html
Copyright © 2011-2022 走看看