一、路由器的历史演变
第一代路由器:早期的路由器主要是基于硬件的设备,具备有限的功能,主要用于连接不同的局域网。这一时期的路由器主要由硬件制造商提供,缺乏标准化和灵活性。
第二代路由器:随着网络技术的发展,路由器开始采用嵌入式系统,具备了更强大的处理能力和更多的功能。这一时期的路由器开始支持更多的网络协议和连接方式,逐渐形成了现代路由器的雏形。
第三代路由器:随着互联网的普及,路由器成为了家庭和企业必备的网络设备。此时的路由器已经高度集成化和模块化,能够支持更多的接口和协议,并且可以通过软件升级来更新功能。
二. 什么是直连路由、静态路由、动态路由?
(1)直连路由:直连接口所在网段的路由,由设备自动生成。直连路由的下一跳为本接口,在进行数据转发时,路由器会查看ARP表项,将报文直接转到目的地址。
关注我,为你开拓更多知识点! 私信留言“知识”在线答疑哦!
(2)静态路由:由网络管理员手工配置的路由条目,当网络的拓扑结构或链路的状态发生变化时,需要手工去修改路由表中相关的静态路由信息。
(3)动态路由:通过相互连接的路由器之间交换彼此信息,然后按照一定的算法优化出来的,而这些路由信息是在一定时间间隙里不断更新,以适应不断变化的网络。
三、路由器的工作原理
路由器是一种三层设备,是使用IP地址寻址,实现从源IP到达目标IP地址的端到端的服务,其工作原理如下:
(1)路由器接收到数据包,提取目标IP地址及子网掩码计算目标网络地址
(2)根据目标网络地址查找路由表,如果找到目标网络地址就按照相应的出口发送到下一个路由器
(3)如果没有找到,就看一下有没有默认路由,如果有就按照默认路由的出口发送给下一个路由器
(4)如果没有找到就给源IP发送一个出错ICMP数据包表明没法传递该数据包如果是直连路由就按照第二层MAC地址发送给目标站点
四.路由器的功能
(1) 协议转换:能对网络层及其以下各层的协议进行转换。
(2) 路由选择:当分组从互联的网络到达路由器时,路由器能根据分组的目的地址按某种路由策略,选择最佳路由,将分组转发出去,并能随网络拓扑的变化,自动调整路由表。
(3) 能支持多种协议的路由选择:路由器与协议有关,不同的路由器有不同的路由器协议,支持不同的网络层协议。如果互联的局域网采用了两种不同的协议,例如,一 种是TCP/IP协议,另一种是SPX/IPX协议(即Netware的传输层/网络层协议),由于这两种协议有许多不同之处,分布在互联网中的 TCP/IP(或SPX/IPX)主机上,只能通过TCP/IP(或SPX/IPX)路由器与其他互联网中的TCP/IP(或SPX/IPX)主机通信, 但不能与同一局域网中的SPX/IP(或TCP/IP)主机通信。多协议路由器能支持多种协议,如IP,IPX及X.25协议,能为不同类型的协议建立和 维护不同的路由表。这样不仅能连接同一类型的网络,还能用它连接不同类型的网络。这种功能虽然使路由器的适应性变强,但同时也使得路由器的整体性能降低, 现在IP协议在网络中越来越占主导地位,因此在下一代路由器(如交换式路由器)只需要支持IP协议。
(4) 流量控制:路由器不仅具有缓冲区,而且还能控制收发双方数据流量,使两者更加匹配。
(5) 分段和组装功能:当多个网络通过路由器互联时,各网络传输的数据分组的大小可能不相同,这就需要路由器对分组进行分段或组装。即路由器能将接收的大分组分 段并封装成小分组后转发,或将接收的小分组组装成大分组后转发。如果路由器没有分段组装功能,那么整个互联网就只能按照所允许的某个最短分组进行传输,大 大降低了其他网络的效能。
(6) 网络管理功能:路由器是连接多种网络的汇集点,网间分组都要通过它,在这里对网络中的分组、设备进行监视和管理是比较方便的。因此,高档路由器都配置了网络管理功能,以便提高网络的运行效率、可靠性和可维护行。
五.路由转发工作原理
网络中各种网络设备对业务数据的转发主要有二层转发和三层转发。二层转发主要由交换机在同一个VLAN内实现,其转发依据是MAC地址表。如果MAC地址表中存在目的MAC地址表项,就从对应接口发出去,否则会从所有接口都发出去寻找接收者,同时,对ARP请求等广播帧也会从所有接口发出去。二层转发的特点导致可能存在环路,需要STP等协议防止二层环路。
三层转发主要由三层交换机或路由器在不同VLAN间或不同网段间实现,其转发依据是路由表。如果路由表中有目标网段的路由表项,就从对应接口或下一跳发出去,否则就把数据包丢弃。同时,三层转发不会在不同网段间转发广播包。
那么,是不是说三层转发没有环路呢?
并不是!如果因为静态路由配置错误,依然会造成环路。
如图中,在RTA上配置静态路由,目标网段20.0.0.0/24的下一跳为RTC,RTC上配置目标网段20.0.0.0/24的下一跳为RTB,而RTB上错误地配置的目标网段20.0.0.0/24的下一跳为RTA。
其实,这样并不会有环路!不同的路由来源拥有不同的优先级。20.0.0.0/24网段是RTB的直连路由,拥有最高优先级,即使在RTB上配置了目标网段20.0.0.0/24的静态路由,也不会选择。
那么,如果RTB连接PC的链路故障了呢?
这时,由于RTB上20.0.0.0/24的直连路由消失,所配置的静态路由就起作用了,于是形成了环路:RTA把目的地址为20.0.0.1的数据包发给RTC,RTC发给RTB,RTB又发给RTA,RTA再发给RTC,如此循环下去!
数据包会永远循环下去吗?
事实上,在设计IP协议时就考虑到了这个问题。如果网络中因为配置或其他错误而造成路由环路,由IP协议报文封装中的TTL字段来解决,避免永远循环下去。
IP封装中的TTL字段字面意思是Time to Live包生存时间,实际上和时间没什么关系。路由器在转发数据包之前,会先把TTL字段内容减去1,如果结果大于零,则正常转发给下一跳,如果结果为零,则把数据包丢弃。
所以,三层转发不像二层转发,没有专门的协议来防止路由环路。三层转发的环路一是依靠TTL,二是依靠路由协议本身来考虑。
我们所说的路由表,通常是指IP路由表,也叫全局路由表。每台网络设备只有一个全局路由表,路由器转发数据也是查找全局路由表。
但并不是说路由器只有一个路由表,事实上,除了直连和静态路由,每个动态路由协议都有自己的路由表,如RIP路由表、OSPF路由表、BGP路由表,等等。
所以,为了正确选择路由,不同的路由来源拥有不同的优先级(思科叫管理距离),包括直连、静态及各种动态路由协议。如果目标网段和掩码都相同,会优选优先级最高的路由来源加入全局路由表;如果路由来源相同,则优选开销最小的路由加入全局路由表;如果都相同,那么都加入到全局路由表中,称为多路径等值路由或等价路由,可以实现负载分担。
有了路由表,路由器就可以根据路由表来转发三层数据包了。当路由器收到一个数据包,先遍历整个全局路由表,如果没有找到匹配项,则丢弃数据包,否则在找到的所有匹配项中选择掩码最长的路由表项,查看该表项的下一跳地址是否是路由器的直连路由,如果是直连,把数据包送到对应接口,封装为帧后发给目标电脑。如果不是直连,则解析下一跳的MAC地址,封装为帧后发给下一跳路由器。
希望这会给大家带来一些帮助。