路由器的分组转发算法
路由器的分组转发算法
路由器概述
用于执行路由活动的设备被称为路由器。通过使用路由表,路由器则规划网络包到各自目的地的线路。路由的功能不仅仅是诸如路由器等网络设备能够完成,在安装有该功能的任意计算机系统也能够完成。可以运行 route print 或 netstat -r 显示本地计算机上的路由表
路由器的每行包括的主要内容是:目的网络地址,子网掩码,下一跳地址等
目的地址/子网掩码 | 下一跳地址 |
---|---|
20.0.0.0/8 | 直接交付 |
30.0.0.0/8 | 192.168.1.1 |
0.0.0.0/0 | 另一个路由器IP地址 |
1)从收到的分组首部提取出目的IP地址D
2)先判断是否为直接交付,用那些和路由器直接相邻的网络的子网掩码和D按位相与,如果匹配的结果和该行的目的网络地址相同,那将分组直接交付,否则就是间接交付,转到3
3)如果路由表中有目的地址为D的特定主机路由,则将分组转给指明的下一跳路由器,否则转到4
4)对路由表中的每一行的子网掩码和D按位相与,若匹配,则将分组转给下一个路由器(此时为间接交付),否则转到5
5)若路由表中有一默认路由,则将分组转到默认路由器,否则报告分组出错
特定主机路由:
这种路由是为特定的目的主机指明一个路由。
采用特定主机路由可使网络管理人员能更方便地控制网络和测试网络,同时也可在需要考虑某种安全问题时采用这种特定主机路由。
默认路由:
路由器还可采用默认路由以减少路由表所占用的空间和搜索路由表所用的时间。
只要目的网络在路由表中匹配不到,就一律选择默认路由(详情见后面:分组转发规则)
用途:
如果一个主机连接在一个小网络上,而这个网络只用一个路由器和因特网连接,那么在这种情况下使用默认路由是非 常合适的。
网关(Gateway,又称为下一跳服务器):
在发送IP数据包时,网关定义了针对特定的网络目的地址,数据包发送到的下一跳服务器。如果是本地计算机直接连接到的网络,网关通常是本地计算机对应的网络接口,但是此时接口必须和网关一致;如果是远程网络或默认路由,网关通常是本地计算机所连接到的网络上的某个服务器或路由器。
接口(Interface):
接口定义了针对特定的网络目的地址,本地计算机用于发送数据包的网络接口。网关必须位于和接口相同的子网(默认网关除外),否则造成在使用此路由项时需调用其他路由项,从而可能会导致路由死锁。
跃点数(Metric):
跃点数用于指出路由的成本,通常情况下代表到达目标地址所需要经过的跃点数量,一个跃点代表经过一个路由器。跃点数越低,代表路由成本越低;跃点数越高,代表路由成本越高。当具有多条到达相同目的网络的路由项时,TCP/IP会选择具有更低跃点数的路由项。
参考链接:
https://zhuanlan.zhihu.com/p/133094539
https://www.cnblogs.com/yxwkf/p/5120811.html