路由器的功能
路由器是一种具有多个输入/输出接口的专用计算机,其任务是连接不同的网络(异构网络)并完成分组转发。多个逻辑网络互联时必须使用路由器。
路由器包含了前三层的处理模块(物理层、数据链路层、网络层)。
路由器隔离了广播域。
默认网关:子网与外部网络连接的设备,也就是连接本机或子网的路由器接口的 IP 地址。
若一个存储转发设备实现了某个层次的功能,则它可以互联两个在该层次上使用不同协议的网段。若网桥实现了物理层和数据链路层,则网桥可以互联两个物理层和数据链路层不同的网段;但是 [[物理层设备#|中继器]] 实现了物理层,却不能互联两个物理层不同的网段,这是因为中继器不是存储转发设备,它属于直通设备。
路由器的组成
路由器由路由选择和分组转发两个部分组成。
- 路由选择(控制部分):核心构件是路由选择处理机
- 路由选择分为直接交付和间接交付。当发送站和目的站在同一网段时,使用直接交付,否则使用间接交付。间接交付的最后一个路由器肯定直接交付
- 分组转发:由交换结构、一组输入端口和一组输出端口组成
- 交换结构(交换组织): 根据转发表对分组进行处理,将从某个输入端口进入的分组从一个合适的端口转发出去
路由表与分组转发
标准的路由表结构
目的网络 IP 地址 | 子网掩码 | 下一跳 | 接口 |
---|
转发表
转发表是从路由表得出的,路由表不等于转发表,分组的实际转发是直接查找转发表,而不是路由表。转发表是为了结构性能最优化(去除对转发无用信息)。
转发表中含有目的地址、下一跳(MAC 地址)。为了减少转发表的重复项目,可以使用一个默认路由代替所有具有相同下一跳的项目,并将默认路由的优先级设置最低。
路由器转发分组的过程
转发表中,每条路由必须有(目的网络地址,下一跳地址)两条信息。
采用 CIDR 编址时,使用最长前缀匹配,就是若一个分组在转发表中可以找到多个匹配的前缀时,匹配最长的前缀。
特定主机路由:若特定主机的 IP 地址为 a.b.c.d,则转发表中对应项的目的网络是 a.b.c.d/32,/32 表示的子网掩码没有意义。
默认路由:用特殊前缀 0.0.0.0/0 表示默认路由,用于没有路由匹配时的默认路由,常用于路由器到互联网的路由。
路由器执行的分组转发算法:
- 从收到的 IP 分组的首部提取目的主机 IP 地址 D
- 若查找到特定主机路由(目的地址为 D),则按照这条路由的下一跳转发分组
- 若没有特定主机路由,按前缀长度的顺序开始检查每一项路由表,如果子网掩码和目的地址 D 逐位“与”操作的运算结果和某一行的前缀匹配,则查找结束,按照下一跳转发分组
- 若查找完路由表的每一行都没有匹配,则把分组传送给默认路由;如果没有默认路由,则报告转发分组出错
得到下一跳的路由器 IP 地址后,将该 IP 地址使用 ARP 转换为 MAC 地址,将此 MAC 地址填入 MAC 帧首部,然后根据 MAC 地址找到下一跳路由器。在不同网络中传送时,MAC 帧的源地址和目的地址要发生变化。