路由器与交换机的工作原理

注:文中内容多是自身理解,错误之处,欢迎指正。

路由器

路由器(指纯路由器,不包含交换机的功能,以下同)的功能是是网络层转发,它工作在三层(网络层/IP层)。当收到一个数据包后,需要进行转发。转发的原则就是根据数据包IP头部中的目的IP地址,与路由表中每一条记录的子网掩码列进行与操作,并将操作结果与该条记录中网络地址列进行比对,按最长匹配原则进行转发;如所有都不匹配,则转发至默认路由。通常都会设置默认路由;另外,还可以在路由表中添加特定路由。(具体实现可以参考路由转发算法)

 

图1:Windows下route print命令的执行结果

 

图2:某家用路由器中的路由表
 
在主机和路由器中,都保存有路由表。其中,目的地址和子网掩码都为0的这一项,是默认路由项。(表中内容的更多含义可搜索“route print 详解”进行查看)。在路由表中一个接口对应于一个IP地址,可以理解为在网络层所指的接口即是IP地址(下一跳地址)。在路由器中存储的是目的网络地址与接口之间的对应关系。
其中,图1 Windows下的路由表,该表中含有两个接口,一个是环回测试接口(127.0.0.1,非真实的网卡接口),一个是真实的网卡接口(10.70.7.59)。

图2某家用路由器的路由表,该表中第一条记录是默认路由,将局域网数据包转发到外网。该表中没有环回接口(路由器没有自身环回测试的需求),而有2个网络接口,其中,局域网接口192.168.1.1(即局域网内主机的默认网关),一个外网接口39.183.0.237。在路由器中,每个接口对应一块网卡,因此,该路由器具有2个网卡,即该路由器的局域网IP地址是192.168.1.1,外网IP地址是39.183.0.237,外网地址的网关地址是39.183.0.1。


图3: 路由器中接口的IP地址及网关

 

当接口192.168.1.1收到局域网内某一主机192.168.1.100的数据包后,从该数据包中取出目的IP地址,与路由表中各项进行与操作,选择路由1;从数据包中取出源IP地址,如果该源IP地址是局域网IP地址,则将源IP和端口转换为外网IP(39.183.0.237,即所选路由的网卡的IP地址)和端口;然后从选路由项中指定的接口进行数据包的转发。这里,是绝对不会选择路由2的,因为路由2是目的IP只能是局域网IP,而局域网间的通信在链路层就已经进行转发了,未进入到网络层。
当ppp0口收到来自外网的数据包后,外网数据包中的IP地址为39.183.0.237,为路由器的外网网卡IP地址。如果数据包的目的地址是路由器某一接口的IP,先将数据包中的目的IP和端口转换为局域网的IP和端口,然后再比对路由表进行转发。注意,这里如果外网IP和端口映射到内网IP和端口失败,则可以断定该包是发给路由器的。此时路由器的协议栈将根据数据包中协议类型和端口号交给路由器的上层协议进行处理,如果无法处理路由器也应发送ICMP端口不可达差错报文给该包的发送者,告诉其端口不可达。
 

通过比对路由表,找到转发的接口后,得到的是下一跳的IP地址。在投递给二层之前,需要重新封装数据包的以太网头部信息,这就需要下一跳的MAC地址了。这时,通过查找arp表找到下一跳IP的MAC地址,封装后投递给二层。arp表如下所示:


图4:windows下执行arp –a 命令结果


图5:某路由器的arp表(网络摘图)


路由器工作在三层,它与其它路由器或主机不能直接相连,而必须通过二层(链路层)设备(交换机)进行相连。(注意:这里指的是纯路由器,不具有交换功能。而通常的家用路由器集成了路由器和交换机的功能,是一种同时工作在二层和三层的设备)。拓扑结构见下图:

图6:路由器/交换机/主机 连接拓扑图

 

交换机

交换机的功能是在链路层转发,它工作在链路层(二层)。当主机或路由器通过网线连接至交换机后,会自动将本身的MAC地址注册到交换机,交换机与之相连的设备接口与主机或路由器的MAC地址绑定起来;同时,交换机中生成一条记录,记录设备接口与MAC地址之间的映射关系(例如交换机接口1绑定主机MAC地址01:01:01:01:01:01),且该条记录不会被更改,除非主机或路由器离线,该条记录被删除(注意:ARP攻击改变的是主机或路由器中的apr表中的记录,而不是这条记录)。
交换机的工作比较简单,在收到数据包后,查找目的MAC对应的设备接口,并将数据包从该接口转发出去;当然,如果是局域网的广播包,需要将该包往任一接口上投递一份。交换机(链路层)中不存在IP地址,它所关心的是MAC地址。在链路层,可以将接口理解为所连接设备的MAC地址。
 
注意:ARP攻击所改变的是主机或路由器中ARP表的记录,而不能改变交换机设备接口与主机/路由器MAC地址的映射关系。
 


  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值