大家好,又见面了,我是全栈君。
前提:
IP数据报的首部中没有地方能够用来指明“下一跳路由器的 IP 地址”。
那么。当路由器接受到一个待转发的报文时。是怎样确定将该报文的传向呢?在此,我们引入“路由表”概念。
路由表如图所看到的:
当一个IP报文传到路由器R2时,则会通过查询R2所维护的路由表,依据IP报文段中的目的地址进行匹配。
得到对应的下一跳地址。
这样,
IP 数据报终于一定能够找到目的主机所在目的网络上的路由器(可能要通过多次的间接交付)。
仅仅有到达最后一个路由器时,才试图向目的主机进行直接交付。
当然,路由表内容不止上图所看到的。例如以下:
特定主机路由:
这样的路由是为特定的目的主机指明一个路由。
採用特定主机路由可使网络管理人员能更方便地控制网络和測试网络,同一时候也可在须要考虑某种安全问题时採用这样的特定主机路由。
默认路由:
作用:
路由器还可採用默认路由以降低路由表所占用的空间和搜索路由表所用的时间。
仅仅要目的网络在路由表中匹配不到,就一律选择默认路由(详情见后面:分组转发规则)
用途:
假设一个主机连接在一个小网络上。而这个网络仅仅用一个路由器和因特网连接,那么在这样的情况下使用默认路由是非 常合适的。 。
当路由器收到待转发的数据报,不是将下一跳路由器的 IP 地址填入 IP 数据报,而是送交下层的网络接口软件。
确认下一跳路由器之后,
网络接口软件使用 ARP 负责将下一跳路由器的 IP 地址转换成硬件地址。并将此硬件地址放在链路层的 MAC 帧的首部。然后依据这个硬件地址找到下一跳路由器。
以下列出路由器之间分组转发的算法:
(1) 从数据报的首部提取目的主机的 IP 地址 D, 得出目的网络地址为 N。
(2) 若网络 N 与此路由器直接相连。则把数据报直接交付目的主机 D。否则是间接交付,运行(3)。
(3) 若路由表中有目的地址为 D 的特定主机路由。则把数据报传送给路由表中所指明的下一跳路由器。否则,运行(4)。
(4) 若路由表中有到达网络 N 的路由,则把数据报传送给路由表指明的下一跳路由器。否则,运行(5)。
(5) 若路由表中有一个默认路由。则把数据报传送给路由表中所指明的默认路由器;否则,运行(6)。
(6) 报告转发分组出错。
本文由Cout_Sev 搜集整理并改动
转载请注明出处
谢谢!
发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/116367.html原文链接:https://javaforall.cn
【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛
【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...