《TCP/IP协议卷1》第9章 IP选路

🌍 思考:IP 选路是什么?路由表的作用是什么?路由表是如何初始化的?如何更新的 ?IP 如何根据路由表进行选路的?选路的方法有哪些?

IP 选路是什么?

IP选路,也称为路由选择或路由决策,是指在数据包传输过程中,确定从源主机到目标主机路径的过程。每个数据包都包含一个目的IP地址,路由器需要根据这个地址决定如何转发该数据包,以便其能够到达目的地。

路由表的作用是什么?

路由表是网络设备(如路由器和主机)中用于存储路由信息的数据结构。它包含了到达不同网络的路径信息,包括下一跳地址、接口信息以及可能的一些度量值(如距离、延迟等)。路由表的主要作用在于指导IP数据包的转发过程,确保数据包可以沿着正确的路径前进直至抵达目标网络。

路由表是如何初始化的?

路由表的初始化通常发生在设备启动时,并且可以通过以下几种方式完成:

  • 静态配置:管理员手动添加静态路由到路由表。
  • 直连网络识别:当设备接口激活并连接到网络后,会自动将这些直接连接的网络加入路由表。
  • 动态路由协议:使用诸如RIP、OSPF、BGP等动态路由协议来学习和共享路由信息,从而自动填充路由表。

如何更新的?

路由表的更新主要依赖于以下机制:

  • 静态路由:需要人工干预进行修改或更新。
  • 动态路由协议:通过定期交换路由信息与邻居路由器保持同步,实现路由表的自动更新。例如,OSPF协议中的LSU(链路状态更新)消息。
  • 直连网络变化:当接口状态发生变化(上线或下线),路由表也会相应地增加或删除相关路由条目。

IP 如何根据路由表进行选路的?

IP选路的基本流程如下:

匹配最长前缀:首先查找路由表中与目标IP地址最精确匹配的路由条目。如果存在多个匹配项,则选择具有最长子网掩码长度的那一条。

默认路由:如果没有找到具体的匹配项,则可能会有一条默认路由作为最后的选择,它通常指向互联网服务提供商(ISP)或其他外部网络的网关。

执行转发:一旦确定了下一跳地址或出口接口,就将数据包发送出去。

选路的方法有哪些?

常见的IP选路方法包括但不限于:

  • 直接路由:如果目标位于本地网络内,则直接交付给目标主机而无需经过路由器。
  • 间接路由:对于非本地网络的目标,必须通过一个或多个中间路由器转发才能到达。
  • 基于策略的路由:允许根据特定条件(如源地址、协议类型等)制定不同的路由策略。
  • 多路径路由:支持同时使用多条路径到达同一目的地以提高可靠性或负载均衡。

IP选路是一个复杂但有序的过程,涉及到了解网络拓扑、维护路由表以及做出最佳路径选择等多个方面。这不仅影响着单个数据包能否成功到达其目的地,也关系到整个网络的性能和稳定性。

🌍 思考:RIP ,OSPF 和 BGP 是什么?有什么用?和 IP 路由有什么关系?

RIP、OSPF和 BGP是三种不同的路由协议,它们在计算机网络中用于自动发现并维护路由信息。

RIP

用途:RIP是一种基于距离矢量算法的内部网关协议(IGP),主要用于小型网络中,通过周期性地交换整个路由表来更新邻居路由器上的路由信息。

工作原理:每个路由器都会维护一个距离向量(即到各个目标网络的距离),这个距离通常以跳数表示。路由器定期发送自己的路由表给直接相连的邻居,并根据收到的信息更新自己的路由表。

与IP路由的关系:RIP帮助路由器动态学习网络拓扑结构,自动调整路由表中的条目,使得IP数据包能够沿着最优路径传输。

OSPF

用途:OSPF是一种基于链路状态算法的内部网关协议,适用于较大规模的企业网络或ISP网络。它比RIP更高效,因为它只传播必要的链路状态变化而非整个路由表。

工作原理:路由器之间交换链路状态通告(LSA),构建出整个网络的拓扑图。然后使用Dijkstra算法计算到达所有目的地的最短路径树(SPT)。

与IP路由的关系:OSPF提供了更为精确的路由选择能力,可以支持VLSM(可变长子网掩码)和CIDR(无类别域间路由),并且能更好地适应网络的变化,确保IP数据包沿最佳路径传输。

BGP (Border Gateway Protocol)

  • 用途:BGP是一种路径矢量协议,主要作为外部网关协议(EGP)用于互联网自治系统(AS)之间的路由选择。它允许不同AS之间共享路由信息,以便决定跨AS的数据流如何流动。
  • 工作原理:BGP路由器通过TCP连接与其他BGP对等体交换路由信息。这些信息包括到达特定网络的完整路径以及一系列属性值,如本地优先级、多出口区分符(MED)等,用来做出路由决策。
  • 与IP路由的关系:BGP负责管理全球范围内的大规模路由表,并决定了国际互联网上不同AS间的流量走向,对于保证IP数据包在全球范围内正确传输至关重要。

总结

这三种协议都是为了支持IP路由而设计的,但它们针对的应用场景不同:RIP 适合于简单的小型网络环境;OSPF 更适合于复杂且规模较大的企业级网络;BGP则是处理不同自治系统间通信的关键协议,在互联网架构中扮演着核心角色。

9.1 引言

  1. 选路的重要性:选路是IP最重要功能之一 。需选路的数据报可由本地主机产生,也可来自其他主机。若主机接收非发往本机的数据报且未配置成路由器,该数据报将被丢弃。
  2. 路由守护程序:图9 - 1展示IP层处理简单流程,其中路由守护程序(daemon ) ,在Unix系统中多为用户进程,系统引导时启动,运行期间一直存在。它负责处理路由相关事务,如与相邻路由器交换选路信息、执行选路协议等,这些问题复杂,相关内容可参考[Perlman 1992] 。后续第10章将简单讨论动态选路和选路信息协议RIP 。
  3. 路由表相关:路由表常被IP访问(繁忙主机每秒可能访问几百次 ) ,但由路由守护程序更新的频率低很多(约30秒一次 ) 。收到ICMP重定向报文时路由表会更新,后续9.5节将介绍route命令用于显示路由表

9.4 转发或不转发

主机一般不转发IP数据报,特殊配置为路由器时才转发。多数伯克利派生系统通过内核变量ipforwarding控制转发 ,不同系统取值含义不同:如BSD/386和SVR4非0时转发 ;SunOS 4.1.x ,-1表示始终转发且不变,0表示默认不转发(打开多接口时设为1 ) ,1表示始终转发 ;Solaris 2.x ,0为始终不转发,2为打开两个或更多接口时转发 。早期4.2BSD主机默认转发带来问题,所以内核选项多设为默认不转发,除非管理员特殊配置。

9.5 ICMP重定向差错

当IP数据报应发往另一路由器时,收到数据报的路由器向发送端发送ICMP重定向差错报文 。原理如下:

  1. 主机选默认路由R1发送IP数据报 。
  2. R1收到数据报,查路由表发现R2是下一站,且R1发送接口与数据报到达接口相同(主机和两路由器在同一LAN ) 。
  3. R1向主机发送ICMP重定向报文,告知主机后续发往该目的地数据报应发给R2而非自己
  1. ICMP重定向报文格式:类型值为5 ,代码值有0 - 3 ,含检验和字段 ,还包括应该使用的路由器IP地址、IP首部(含选项 )及原始IP数据报中数据前8字节 。
  2. 重定向报文类型:代码0为网络重定向;代码1为主机重定向;代码2为网络和服务类型重定向;代码3为服务类型和主机重定向 。
  3. 接收者检查要点:接收者需查看导致重定向的IP地址(发送重定向报文的路由器IP ) 、发送重定向报文的路由器IP地址(含重定向信息的IP数据报源地址 ) 、应采用的路由器IP地址(报文中4 - 7字节 ) 。
  4. 生成规则与检查机制
    • 生成规则:重定向报文只能由路由器生成 ,用于为主机消除路由使用低效问题,且新路由器须直接连网络 。
    • 发送前检查(4.4BSD ):生成重定向报文前,接口必须等于入接口;用于向外传送数据报的路由不能被ICMP重定向报文创建或修改且不能是默认路由;数据报不能用源站选路转发;内核须配置成可发送重定向报文 。多数系统默认设置相关内核变量(如ip_sendre directs ) 。
    • 接收后检查(4.4BSD ):收到重定向报文后,主机检查新路由器是否直接连网络;报文是否来自当前到目的地所选路由器;重定向报文不能由主机本身作为路由器发送;被修改的路由必须是间接路由 。一些主机在路由器发错类型重定向时,只处理对主机的重定向 。

9.6 ICMP路由器发现报文

概述:除在配置文件指定静态路由(常用来设置默认路由 )外,还可利用ICMP路由器通告和请求报文初始化路由表 。主机引导后广播或多播路由器请求报文,路由器响应通告报文,且路由器定期广播或多播通告报文,助主机更新路由。

路由器操作

通告发送:路由器启动时,在广播或多播接口随机发送通告报文(间隔450-600秒),默认生命周期30分钟 。接口关闭时,可发最后一份通告报文并设生命周期为0。

响应请求:路由器监听主机请求报文并发送通告报文响应。多路由器子网中,系统管理员为其设置优先级,主默认路由器优先级高于备份路由器。

主机操作

请求发送:主机引导期一般发三份路由器请求报文(间隔3秒),收到有效通告报文后停止发送 。

监听与更新:主机监听相邻路由器通告报文,可改变默认路由器 。若未收到当前默认路由器通告报文,默认路由器会超时 。有默认路由器时,其每隔10分钟发通告报文(生命周期30分钟 ),确保主机默认表项不超时。

实现:路由器发现报文一般由用户进程(守护程序)创建和处理,用于修改路由表(增删默认表项 ) 。并非所有系统都支持,如网络中仅Solaris 2.x通过in.rdisc守护程序支持,虽RFC建议IP多播传送,但也可用广播报文实现。

相关推荐
我也要当昏君13 小时前
6.3 文件传输协议 (答案见原书 P277)
网络
Greedy Alg13 小时前
Socket编程学习记录
网络·websocket·学习
刘逸潇200514 小时前
FastAPI(二)——请求与响应
网络·python·fastapi
Mongnewer15 小时前
通过虚拟串口和网络UDP进行数据收发的Delphi7, Lazarus, VB6和VisualFreeBasic实践
网络
我也要当昏君15 小时前
6.5 万维网(答案见原书P294)
网络
嶔某16 小时前
网络:传输层协议UDP和TCP
网络·tcp/ip·udp
文火冰糖的硅基工坊16 小时前
[嵌入式系统-154]:各种工业现场总线比较
网络·自动驾驶·硬件架构
以己之16 小时前
详解TCP(详细版)
java·网络·tcp/ip
Ronin30516 小时前
【Linux网络】封装Socket
linux·网络·socket·网络通信
Brianna Home17 小时前
博客安全攻防演练:从攻击者视角构筑铜墙铁壁
网络·数据库·安全·oracle