路由器的工作原理
路由器的是实现网络互连,在不同网络之间转发数据单元的重要网络设备。
路由器主要工作在OSI参考模型的第三层(网络层),路由器的主要任务就是为经过路由器的每个数据帧寻找一条最佳传输路径,并将该数据有效地传送到目的站点。
为了完成这项工作,在路由器中保存着各种传输路径的相关数据——路由表(Routing Table),供路由选择时使用。
由此可见,选择最佳路径的策略即路由算法是路由器的关键所在。
因此,当路由器接收到来自一个网络接口的数据包时,首先根据其中所含的目的地址查询路由表,决定转发路径(转发接口和下一跳地址),然后从ARP缓存中调出下一跳地址的MAC地址,将路由器自己的MAC 地址作为源MAC,下一跳地址的MAC作为目的MAC,封装成帧头,同时IP数据包头的TTL(Time To Live)也开始减数,最后将数据发送至转发端口,按顺序等待,传送到输出链路上去。
在这个过程中,路由器被认为了执行两个最重要的基本功能:路由功能与交换功能。
路由功能
路由功能是指路由器通过运行动态路由协议或其他方法来学习和维护网络拓扑结构,建立,查询和维护路由表。
路由表里则保存着路由器进行路由选择时所需的关键信息,包含了目的地址、目的地址的掩码、下一跳地址、转发端口、路由信息来源、路由优先级、度量值(metric)等。
路由信息可通过多种协议的学习而来,其来源方式可分为直连路由、静态路由、缺省路由和动态路由。
一个路由器上可以同时运行多个不同的路由协议,每个路由协议都会根据自己的选路算法计算出到达目的网络的最佳路径,但是由于选路算法不同,不同的路由协议对某一个特定的目的网络可能选择的最佳路径不同。
此时路由器根据路由优先级(决定了来自不同路由来源的路由信息的优先权)选择将具有最高路由优先级(数值最小)的路由协议计算出的最佳路径放置在路由表中,作为到达这个目的网络的转发路径。
(优先级顺序:直连路由>静态路由>动态路由(OSPF>RIP))
而对于一个特定的路由协议,可以发现到达目的网络的所有路径,根据选路
算法赋予每一条路径metric值,并比较metric值,选择metric数值最小的路径为最佳路径。
在路由器的交换过程中查找路由时也可能会发现能匹配上多条路由条目。
此时路由器将根据最长匹配原则(最长匹配原则的优先级最高,大于优先级和metric)进行数据的转发。
路由器会选择匹配最深的,也就是说可以匹配的掩码长度最长的一条路由进行转发。
转发功能
一般来说,路由器的主要工作是对数据包进行存储转发,具体过程如下:
第一步:当一个数据帧到达某一端口,端口对帧进行CRC校验并检查其目的数据链路层地址是否与本端口符合。
第二步:如果通过检查,则去掉帧的封装并读出IP数据包中的目的地址信息,查询路由表,并决定转发接口与下一跳地址。
第三步:根据路由表中所查到的下一跳IP地址,再从ARP缓存中调出下一跳的MAC地址,并将转发接口的MAC地址作为源MAC,下一跳地址的MAC作为
目的MAC,封装成帧头。
同时,IP数据包头的TTL减一,并重新计算校
验和。
第四步:最后封装成帧,经转发接口发送到输出链路上去。
当主机A发向主机B的数据流在网络层封装成IP数据包,IP数据包的首部包含了源地址和目标地址。
主机A会用本机配置的24位IP网络掩码255.255.255.0与目标地址进行与运算,得出目标网络地址与本机的网络地址是不是在同一个网段中。
如果不是,主机A则会通过ARP的请求获得默认网关的MAC地址并将IP数据包转发到网关。
当网关路由器接收到以太网数据帧时,发现数据帧中的目标MAC地址是自己的某一个端口的物理地址,这时路由器会把以太网数据帧的封装去掉。
路由器认为这个IP数据包是要通过自己进行转发,接着它就在匹配路由表。
匹配到路由项后,它就将包发往下一条地址。
路由器转发数据包就是这样,所以它始终是不
会改IP地址的,只会改MAC。
当有数据包传到路由器时,路由器首先将其的目的地址与路由表进行对比,如果是本地网络,将不会进行转发到外网络,而是直接转发给本地网内的目的主机,改变的只是数据包的源地址,(原源地址MAC变为了路由器的MAC)。
但是如果目的地址经路由表对比,发现不是在本网中,有nat就将改变源地址的IP(原源地址的IP地址改为了路由器的IP地址),路由器将数据包转发到相应的端口,进行通信。
如:A访问B,首先对比是否同一子网,如果是,检查ARP表,有B的MAC就直接发送,没有就发送ARP请求.如果否,发送到默认网关C,源IP为A,源MAC为A,目的IP为B,目的MAC地址为C,C接收到这个包,检查路由表,发送到下一跳D,源IP为A,源MAC为C,目的IP为B,目的MAC为D.....如此循环,直到发送到B.。