热门标签 | 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版权协议。


推荐阅读
  • 本文介绍了Oracle数据库中tnsnames.ora文件的作用和配置方法。tnsnames.ora文件在数据库启动过程中会被读取,用于解析LOCAL_LISTENER,并且与侦听无关。文章还提供了配置LOCAL_LISTENER和1522端口的示例,并展示了listener.ora文件的内容。 ... [详细]
  • http:my.oschina.netleejun2005blog136820刚看到群里又有同学在说HTTP协议下的Get请求参数长度是有大小限制的,最大不能超过XX ... [详细]
  • C++字符字符串处理及字符集编码方案
    本文介绍了C++中字符字符串处理的问题,并详细解释了字符集编码方案,包括UNICODE、Windows apps采用的UTF-16编码、ASCII、SBCS和DBCS编码方案。同时说明了ANSI C标准和Windows中的字符/字符串数据类型实现。文章还提到了在编译时需要定义UNICODE宏以支持unicode编码,否则将使用windows code page编译。最后,给出了相关的头文件和数据类型定义。 ... [详细]
  • 本文讨论了在openwrt-17.01版本中,mt7628设备上初始化启动时eth0的mac地址总是随机生成的问题。每次随机生成的eth0的mac地址都会写到/sys/class/net/eth0/address目录下,而openwrt-17.01原版的SDK会根据随机生成的eth0的mac地址再生成eth0.1、eth0.2等,生成后的mac地址会保存在/etc/config/network下。 ... [详细]
  • 如何自行分析定位SAP BSP错误
    The“BSPtag”Imentionedintheblogtitlemeansforexamplethetagchtmlb:configCelleratorbelowwhichi ... [详细]
  • 本文介绍了解决Netty拆包粘包问题的一种方法——使用特殊结束符。在通讯过程中,客户端和服务器协商定义一个特殊的分隔符号,只要没有发送分隔符号,就代表一条数据没有结束。文章还提供了服务端的示例代码。 ... [详细]
  • Spring源码解密之默认标签的解析方式分析
    本文分析了Spring源码解密中默认标签的解析方式。通过对命名空间的判断,区分默认命名空间和自定义命名空间,并采用不同的解析方式。其中,bean标签的解析最为复杂和重要。 ... [详细]
  • Nginx使用(server参数配置)
    本文介绍了Nginx的使用,重点讲解了server参数配置,包括端口号、主机名、根目录等内容。同时,还介绍了Nginx的反向代理功能。 ... [详细]
  • 本文介绍了在Pygame中使用矩形对表面进行涂色的方法。通过查阅Pygame文档中的blit函数,可以了解到如何将一个表面的特定部分复制到另一个表面的指定位置上。具体的解决方法和参数说明在文中都有详细说明。 ... [详细]
  • 向QTextEdit拖放文件的方法及实现步骤
    本文介绍了在使用QTextEdit时如何实现拖放文件的功能,包括相关的方法和实现步骤。通过重写dragEnterEvent和dropEvent函数,并结合QMimeData和QUrl等类,可以轻松实现向QTextEdit拖放文件的功能。详细的代码实现和说明可以参考本文提供的示例代码。 ... [详细]
  • 本文分享了一个关于在C#中使用异步代码的问题,作者在控制台中运行时代码正常工作,但在Windows窗体中却无法正常工作。作者尝试搜索局域网上的主机,但在窗体中计数器没有减少。文章提供了相关的代码和解决思路。 ... [详细]
  • CSS3选择器的使用方法详解,提高Web开发效率和精准度
    本文详细介绍了CSS3新增的选择器方法,包括属性选择器的使用。通过CSS3选择器,可以提高Web开发的效率和精准度,使得查找元素更加方便和快捷。同时,本文还对属性选择器的各种用法进行了详细解释,并给出了相应的代码示例。通过学习本文,读者可以更好地掌握CSS3选择器的使用方法,提升自己的Web开发能力。 ... [详细]
  • 本文介绍了Python爬虫技术基础篇面向对象高级编程(中)中的多重继承概念。通过继承,子类可以扩展父类的功能。文章以动物类层次的设计为例,讨论了按照不同分类方式设计类层次的复杂性和多重继承的优势。最后给出了哺乳动物和鸟类的设计示例,以及能跑、能飞、宠物类和非宠物类的增加对类数量的影响。 ... [详细]
  • 先看官方文档TheJavaTutorialshavebeenwrittenforJDK8.Examplesandpracticesdescribedinthispagedontta ... [详细]
  • 本文介绍了在处理不规则数据时如何使用Python自动提取文本中的时间日期,包括使用dateutil.parser模块统一日期字符串格式和使用datefinder模块提取日期。同时,还介绍了一段使用正则表达式的代码,可以支持中文日期和一些特殊的时间识别,例如'2012年12月12日'、'3小时前'、'在2012/12/13哈哈'等。 ... [详细]
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社区 版权所有