热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

【分享】二层交换和三层交换转发

本文主要介绍关于网络,HCIA,HCIP,交换机,路由器的知识点,对【【分享】二层交换和三层交换转发】和【三层交换转发原理】有兴趣的朋友可以看下由【微思xmws】投稿的技术文章,希望该技术和经验能帮到

本文主要介绍关于网络,HCIA,HCIP,交换机,路由器的知识点,对【【分享】二层交换和三层交换转发】和【三层交换转发原理】有兴趣的朋友可以看下由【微思xmws】投稿的技术文章,希望该技术和经验能帮到你解决你所遇的思科认证,华为认证相关技术问题。

三层交换转发原理

关于多层交换:

 

第2层交换:

本质上是多端口的透明桥接,但比传统桥接增加了存储转发外的两种转发交换方式。2层交换机比桥增加了VLAN功能,同一交换机可以做多个独立的桥使用, 在分割冲突域的同时,分割广播域。扩展性有限,域中只能存在有限的几台交换机。有可能支持第三层的特性,如QoS或访问控制

第3层交换:

类似于路由,根据目的IP来转发帧,同时改变帧中的MAC地址,减少TTL,执行一次帧检测。但三层交换机与传统路由器靠CPU和软件来转发不同,它是靠 ASIC来实现转发,俗称switch。Cisco的三层交换机实现 了“路由一次,交换多次”的快捷交换方式。本身兼有二层特性,设计方案扩展性良好。

第4层交换与第7层交换:

所谓四层交换是指根据协议会话进行交换,即交换机的ASIC硬件可以识别第4层的TCP或 UDP协议。也就是说,可以一次完成基于MAC、IP和上层应用端口号在内的复杂路由与交换功能。所谓七层交换指的是内容智能(Content Intelligence)

Layer 2 Forwarding

1.Layer 2 Forwarding(最关键的特征是二层交换机透明,也叫透明网桥。因为不改变数据帧。透明网桥不用ARP表,因为不需要二层和三层的映射关系)

 

如上图所示

1.A,B连接到相同Switch上,并且处于相同VLAN.

2.A,B有相同网段的接口IP地址.

Question:

Router A ping Router B 此时在各个设备上各自发生了哪些事件?查了哪些表项?

A#ping 192.168.1.2

Type escape sequence to abort.

Sending 5, 100-byte ICMP Echos to 192.168.1.2, timeout is 2 seconds:

.!!!!

Success rate is 80 percent (4/5), round-trip min/avg/max = 4/11/16 ms

在Router和Switch上分别完成如下转发动作

1.查询路由表,找到目的地址的下一跳地址,并且通过递归查询获得最终到达目的地址的出包接口,这里因为属于同一广播域,所以没有下一跳问题,A将直接找到出包接口.

2.通过出包接口,判断Layer 2的封装,由于是以太接口,因此,二层封装是MAC地址。但是,由于A的ARP表中没有B的MAC地址和IP地址的映射关系,因此,第一个ping包会封装失败 "." 由此将触发一个ARP Request以获得B的以太接口的MAC地址.

ARP Request消息是一个广播的消息.

源IP地址 A以太接口 192.168.1.1

目的IP地址 B以太接口 192.168.1.2

源MAC地址 A以太接口 CA01.0F30.0000

目的MAC地址 FFFF.FFFF.FFFF

Switch收到ARP Request后将拆帧头并查找出源MAC地址,然后执行CAM表的检查,检查在收到数据包的端口上是否存在与MAC 地址的绑定,如果不存在,将学习该源MAC地址并加入到CAM表中,然后查找包中目的MAC地址,由于目的MAC地址是 FFFF.FFFF.FFFF的二层广播MAC地址,交换机对于广播帧,组播帧以及未知的单播帧将从除了接收端口以外的所有端口泛洪.

B收到后将给A回应单播的ARP Reply:

Switch收到ARP Reply后将拆帧头查找出源MAC地址,然后执行 CAM表的检查,检查在收到数据包的端口上是否存在与MAC地址的绑定,由于不存在,Switch将学习源B以太口的MAC地址。然后查找包中的目的MAC地址,由于目的MAC地址是A以太接口MAC地址,Switch再次查找CAM表并发现A以太接口MAC地址与端口的关联条目,交换机对于已知单播帧的转发方式是从与目的MAC地址相关联的端口转发出去.

小结:

二层交换机相当于一个透明网桥,不能修改原始帧。路由器转发数据包是查找路由表和ARP表,二层交换机转发数据帧是查找CAM表。ARP表中存放IP地址和MAC地址的映射信息.

在Layer 2的转发过程中,Switch对于A,B来说没有对传输的数据帧做任何的改变,所以A,B对于转发过程来说并不知道Switch的存在。形成逻辑上直连的关系,但是在物理上并不是。

Layer 3 Forwarding(三层包头不改变,二层封装要发生变化)

1.A与路由器不在同一个VLAN.

2.A default-gateway 指向Switch.

3.A与B不在同一个网段.

Question

A ping B,此时的转发与之前的转发方式有何不同?

由于A和B不在同一个网段且A设置了默认网关,A ping B的数据包将发送给其默认网关Switch.

源IP地址 A E1的IP地址 目的IP地址 B E6的IP地址 

源MAC地址 A E1的MAC地址 目的MAC地址 Switch E2的MAC地址 

Switch收到后拆包发现其中的目的MAC地址是自己E2的MAC地址,

在此处存在着2种情况:

1.该数据包是发送给自己的

2.该数据包是经由它发送给别的目的网络的。Switch继续查看数据包中的目的IP地址是B E6的IP地址,于是查找路由表发现到达B是从 E3接口出去,Switch在转发时执行数据包的重写:

源IP地址 A E1的IP地址 目的IP地址 B E6的IP地址

源MAC地址 Switch E3的MAC地址 目的MAC地址 Router E4的MAC地址

小结:

对于三层交换机转发非直连网段的数据包时,要执行数据包源MAC地址的重写,但是该数据包中的源和目的IP地址永远不改变。即二层封装改变是逐网段改变.

如上图所示

A. R1属于 VLAN 1,并且与 Switch上 VLAN 1的三层接口通信 

B. R2属于 VLAN 2,并且与 Switch上 VLAN 2的三层接口通信 

C. R1,R2,Switch之间运行 RIP 协议,并且R1 将学到 R2的路由

当 R1 ping R2时,在Router 和 Switch上分别会完成如下转发动作

Router1:

1.查询路由表,找到对应条目,获得到达该网段的下一跳地址以及出包接口。因为这里运行了路由协议,所以R1查询路由表的结果是必须通过Switch上的三层接口才可以到达目的地址,而出包接口指示的是到达下一跳的接口.

2.判断Layer 2的封装,并且查询对应的"ARP"表项,完成对数据包的封装。此时查询获得的将是下一跳的IP地址所对应的二层地址.

这里不做关于ARP表查询的结果的讨论,可以参考Layer 2Forwarding.

Switch:

1.收到来自R1的数据帧,并且完成对于数据帧源MAC地址的检测.

2.检测数据帧的目的MAC地址,并且发现该地址是一个本地的MAC地址

此时意味这里有两种可能性:

2.1该数据包已经到达目的地,Switch将试图拆开数据包检测上层应用.

2.2该数据包没有到达目的地,Switch只是作为该数据包转发过程中的一个中间节点,Switch会通过对包头的检测,获得该数据包的目的IP地址。以上两种结果都会导致Switch检测数据包头,而检测包头获得的将是数据包的IP地址,而此时对应的查询表项即为Routing Table,Switch开启Layer 3 Forwarding.

3.Switch查询完路由表,找到到达目的地址的下一跳以及出包接口.

4.查询对应的"ARP"表项,完成封装。此时Switch将用自己的下一跳地址所对应的二层地址作为目的,以及自己出包接口的二层地址作为源来封装该数据包.

Router2的转发过程不作讨论.

结论:

当Switch检测接收的数据帧,并且发现目的MAC地址是本地接口地址时,但是目的IP又不是自己,那么Layer 3 Forwarding就开启了,并且原有数据帧被改变.

开启Layer 3 Forwarding同时必须满足以下条件:

1.Switch支持三层转发,并且开启了IP Routing(能产生Routing Table的条件)

2.Switch上存在三层接口(SVI,Routing Port)

A.如上图

1.R1与R2处于不同VLAN中运行RIP协议

2.R3与R4处于相同VLAN中运行OSPF协议

逻辑图:

 

二层转发与三层转发的区别:

1.二层转发不查路由表,三层转发查路由表.

2.二层转发中,Switch不改变数据帧,而三层转发中,数据帧的源与目的是在每一跳都需要改变的.

3.二层转发中,Switch对 Router 来说透明了,而三层转发Switch无法透明

4.如上图 R1与R2属于相同VLAN,SW1与SW2之间建立Trunk此时R1 ping R2在Sw2的CAM表中,Fa0/23口对应的MAC地址是R1的G0/0口MAC.(一旦有SW1的F0/23的MAC地址,那么是STP的BPDU导致的,只有一端有因为一端是ROOT,而另一端没有是因为STP的选举 ROOT的过程是不记录MAC的(learning,listening过程))

 

本文《【分享】二层交换和三层交换转发》版权归微思xmws所有,引用【分享】二层交换和三层交换转发需遵循CC 4.0 BY-SA版权协议。


推荐阅读
  • Java高并发与多线程(二):线程的实现方式详解
    本文将深入探讨Java中线程的三种主要实现方式,包括继承Thread类、实现Runnable接口和实现Callable接口,并分析它们之间的异同及其应用场景。 ... [详细]
  • 面试题总结_2019年全网最热门的123个Java并发面试题总结
    面试题总结_2019年全网最热门的123个Java并发面试题总结 ... [详细]
  • 本文介绍了 Python 中的基本数据类型,包括不可变数据类型(数字、字符串、元组)和可变数据类型(列表、字典、集合),并详细解释了每种数据类型的使用方法和常见操作。 ... [详细]
  • 包含phppdoerrorcode的词条 ... [详细]
  • 如果应用程序经常播放密集、急促而又短暂的音效(如游戏音效)那么使用MediaPlayer显得有些不太适合了。因为MediaPlayer存在如下缺点:1)延时时间较长,且资源占用率高 ... [详细]
  • 本文详细介绍了Java反射机制的基本概念、获取Class对象的方法、反射的主要功能及其在实际开发中的应用。通过具体示例,帮助读者更好地理解和使用Java反射。 ... [详细]
  • 用阿里云的免费 SSL 证书让网站从 HTTP 换成 HTTPS
    HTTP协议是不加密传输数据的,也就是用户跟你的网站之间传递数据有可能在途中被截获,破解传递的真实内容,所以使用不加密的HTTP的网站是不 ... [详细]
  • MySQL Decimal 类型的最大值解析及其在数据处理中的应用艺术
    在关系型数据库中,表的设计与SQL语句的编写对性能的影响至关重要,甚至可占到90%以上。本文将重点探讨MySQL中Decimal类型的最大值及其在数据处理中的应用技巧,通过实例分析和优化建议,帮助读者深入理解并掌握这一重要知识点。 ... [详细]
  • 在C#编程中,数值结果的格式化展示是提高代码可读性和用户体验的重要手段。本文探讨了多种格式化方法和技巧,如使用格式说明符、自定义格式字符串等,以实现对数值结果的精确控制。通过实例演示,展示了如何灵活运用这些技术来满足不同的展示需求。 ... [详细]
  • Java Socket 关键参数详解与优化建议
    Java Socket 的 API 虽然被广泛使用,但其关键参数的用途却鲜为人知。本文详细解析了 Java Socket 中的重要参数,如 backlog 参数,它用于控制服务器等待连接请求的队列长度。此外,还探讨了其他参数如 SO_TIMEOUT、SO_REUSEADDR 等的配置方法及其对性能的影响,并提供了优化建议,帮助开发者提升网络通信的稳定性和效率。 ... [详细]
  • 本文深入解析了WCF Binding模型中的绑定元素,详细介绍了信道、信道管理器、信道监听器和信道工厂的概念与作用。从对象创建的角度来看,信道管理器负责信道的生成。具体而言,客户端的信道通过信道工厂进行实例化,而服务端则通过信道监听器来接收请求。文章还探讨了这些组件之间的交互机制及其在WCF通信中的重要性。 ... [详细]
  • PHP预处理常量详解:如何定义与使用常量 ... [详细]
  • 基于Dubbo与Zipkin的微服务调用链路监控解决方案
    本文提出了一种基于Dubbo与Zipkin的微服务调用链路监控解决方案。通过抽象配置层,支持HTTP和Kafka两种数据上报方式,实现了灵活且高效的调用链路追踪。该方案不仅提升了系统的可维护性和扩展性,还为故障排查提供了强大的支持。 ... [详细]
  • 单片微机原理P3:80C51外部拓展系统
      外部拓展其实是个相对来说很好玩的章节,可以真正开始用单片机写程序了,比较重要的是外部存储器拓展,81C55拓展,矩阵键盘,动态显示,DAC和ADC。0.IO接口电路概念与存 ... [详细]
  • Visual Studio Code (VSCode) 是一款功能强大的源代码编辑器,支持多种编程语言,具备丰富的扩展生态。本文将详细介绍如何在 macOS 上安装、配置并使用 VSCode。 ... [详细]
author-avatar
brucegogo02
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有