Java常见面试题汇总-----------计算机网络(路由协议)

69、路由协议

69.1、基本概念

  网络层主要做的是通过查找路由表确定如何到达服务器,期间可能经过多个路由器,这些都是由路由器来完成的工作,通过查找路由表决定通过那个路径到达服务器,其中用到路由选择协议。
  路由主要分为两类:即静态路由和动态路由。从管理层面来说,静态路由比较容易部署/修改(小网络),动态路由协议一般路由的体积比较大,管理相对比较复杂(大网络)。但是从技术层面来说,动态路由协议能够适应各种网络结构的拓扑,能够智能检测网络状态;静态路由技术无法实现,需要人工干预,包括后面我们学习的RIP,EIGRP,OSPF,ISIS,BGP这些路由协议都是动态路由。

69.2、算法特征

  距离矢量:距离矢量就是路由协议会根据路由距离的远近来判断到达目的网络的最佳路径选择,例如在RIP路由协议中,数据报每经过一个路由器,就是一跳,到达目标网络最少需要经过几跳被认为是最佳路径,矢量是用于指明目的网络方向。另外还有EIGRP、BGP这几个也是基于距离矢量的路由协议。
  链路状态:链路状态就是根据链路的一个带宽的状态来决定链路路径的选择,基于链路状态的路由协议有OSPF、ISIS。
  关于距离矢量和链路状态:
Java常见面试题汇总-----------计算机网络(路由协议)
  基于距离矢量的路由选择:
  假设pc1到pc2有两条路径可选
  路径1:pc1–>R1–>R2–>pc2
  路径2:pc1–>R1–>R3–>R2–>pc2
  如果是按距离矢量来选择路由路径的话,显然路径1对于pc1来说无疑是最佳的路由路径。
  基于链路状态的路由选择:但是如果此时再根据链路的带宽状态来选择路由路径的话,路径1中R1–>R2的带宽是120KB/s,而路径2中R1–>R3–>R2的带宽是2M/s,显然是路径2的带宽速度比路径1要快几十倍不止,也就是说,路径2从带宽的速度上弥补了路由距离上的不足,甚至可以忽略路由路径的距离,根据链路状态选择路径2是最佳路由路径。

69.3、运行范围

  按基于运行范围来看,主要有IGP和EGP两个协议:
  IGP是内部网关协议(internal gateway protocol)的简称, 一般是由一个组织控制或管理的网络。比如:RIP,EIGRP,OSPF,ISIS等都是内部网关协议的一种。
  EGP是外部网关协议(external gateway protocol)的简称, 一般是用于两个不同组织控制或管理的网络之间通信,BGP是边界网关协议,是外部网关协议的一种。
Java常见面试题汇总-----------计算机网络(路由协议)
  如图所示,移动,联通,电信三大运营商部使用的都是不同的内部网关协议,移动内部跑的是RIP,EIGRP协议;电信内部跑的是OSPF路由协议;联通内部跑的是ISIS协议。但是他们相互之间想要进行通信资源的整合,就必须把网络连接起来,而BGP协议就是相当于把互联网中的资源进行连接,相当于连接不同网络的一个边界一样。

69.4、内部网关协议

  1、RIP(Routing Information Protocol,应用层协议,基于 UDP)
  RIP 是一种基于距离向量的路由选择协议。RIP 协议要求网络中的每一个路由器都要维护从它自己到其他每一个目的网络的距离记录。这里的“距离”实际上指的是“最短距离”。RIP 认为一个好的路由就是它通过的路由器的数目少,即“距离短”。RIP 允许一条路径最多只能包含 15 个路由器。“距离”的最大值为 16 时即相当于不可达。RIP 选择一个具有最少路由器的路由(即最短路由),哪怕还存在另一条高速(低时延)但路由器较多的路由。
  2、OSPF(Open Shortest Path First,网络层协议)
  “最短路径优先”是因为使用了 Dijkstra 提出的最短路径算法。使用洪泛法向本自治系统中所有路由器发送信息。发送的信息就是与本路由器相邻的所有路由器的链路状态(“链路状态”就是说明本路由器都和哪些路由器相邻,以及该链路的“度量”),但这只是路由器所知道的部分信息。只有当链路状态发生变化时,路由器才用洪泛法向所有路由器发送此信息。

69.5、外部网关协议

  1、BGP 协议(应用层协议,基于 TCP的)
  BGP是不同自治系统的路由器之间交换路由信息的协议。边界网关协议 BGP 只能是力求寻找一条能够到达目的网络且比较好的路由(不能兜圈子),而并非要寻找一条最佳路由。
  BGP发言人:每一个自治系统的管理员要选择至少一个路由器作为该自治系统的“BGP发言人”。一般说来,两个 BGP 发言人都是通过一个共享网络连接在一起的,而 BGP 发言人往往就是 BGP 边界路由器,但也可以不是 BGP 边界路由器。
  BGP 交换路由信息:
  一个 BGP 发言人与其他自治系统中的 BGP 发言人要交换路由信息,就要先建立 TCP连接,然后在此连接上交换 BGP 报文以建立 BGP 会话(session),利用 BGP 会话交换路由信息。使用 TCP 连接能提供可靠的服务也简化了路由选择协议。使用 TCP 连接交换路由信息的两个 BGP 发言人,彼此成为对方的邻站或对等站。BGP 所交换的路由信息就是到达某个网络所要经过的一系列 AS 。
Java常见面试题汇总-----------计算机网络(路由协议)

69.6、路由器分组转发算法

  (1)、首先从 IP 数据报首部提取出目的主机的 IP地址D,得出其所在的网络 N。
  (2)、若 N 就是与此路由器直接相连的某个网络,则进行 直接交付,直接把数据报交付给目的主机。否则就执行(3)。
  (3)、若路由表中有目的地址为 D 的特定主机路由,则把数据报传给路由表中所指明的下一跳路由器。否则执行(4)。
  (4)、若路由表中有到达网络 N 的路由,则把数据报传给路由表中所指明的下一跳路由器。否则执行(5)。
  (5)、若路由表中有一个 默认路由,则把数据报传给默认路由所指明的默认路由器。否则执行(6)。
  (6)、报告转发分组出错。