首页 > 其他分享 >二层转发过程

二层转发过程

时间:2023-07-05 20:44:35浏览次数:24  
标签:二层 主机 报文 地址 MAC 交换机 转发 过程

一、什么是二层转发?

 二层转发就是基于MAC地址进行数据包转发。

详解:

1、二层指的就是网络七层模型中的数据链路层 2、数据链路层传输的数据单元叫 -- 帧      以太帧格式              前两个字段分别是目的地址和源地址字段。第3个字段是2字节的类型字段,用来标识上一层是什么协议(0x800:IP协议,0x0806:ARP协议等)。第4个字段是数据字段,长度在46-1500字节之间。最后一个字段是CRC检验字段,存放4字节的帧检测序列FCS。校验范围是目的地址、源地址、类型、数据字段。 MAC帧长度最小为64字节,数据字段最小为46字节,如果不够,则自动加0填充。   3、MAC 地址    MAC地址也就是物理地址,大小为48位,6个字节,前24位是厂商代码,后24位为序号,比如H3C厂商代码为00-0f-e2。
  • 单播地址:第一个字节最低位为0,如 00-0f-e2-00-00-06
  • 多播地址:第一个字节最低位为1,如 01-0f-e2-00-00-06
  • 广播地址:48位全为1,如ff-ff-ff-ff-ff-ff
 

4、冲突域与广播域

  • 冲突网络(冲突域):连接在同一个到导线上的所有工作站点集合,一个节点发出的报文其余节点都能收到,从而产生冲突。
  • 广播网络(广播域):限制以太网广播报文的范围,一个站点发送一个广播报文其余站点都可以收到。
5、转发         基于MAC地址转发:主要是根据原MAC、目的MAC、MAC地址表进行业务转发(详细见原理)。     基于VLAN转发:为了解决广播域的问题引入了VLAN机制进行隔离。    二、二层转发原理 1、转发原理及流程      原理:基于原MAC、目的MAC、MAC地址表进行业务转发      流程:PC_A 与 PC_B通信                ①PC_A发送ARP请求给交换机1来尝试获取计算机B的mac地址(基于以太网的通信必须在数据帧中指定目标MAC地址才能通信)                ②交换机1收到广播帧(ARP请求)后,会将他发给除接收端口外的所有端口,也就是flooding了。                ③计算机B收到ARP后,回复MAC地址给A。                ④计算机A收到B的MAC地址后写入以太帧目的MAC中开始业务传输。                ⑤交换机1收到PC_A发出的以太帧后,会进行查表,如果查到按照MAC地址表指定的端口转发,查不到的话就进行广播转发。     附:MAC地址学习流程(以下流程按照地址表中未学习到介绍,学习到的话直接转发):     ① PC_A 发送的以太帧进入交换机(假设与A连的端口是1,与B连的端口是2)     ② 交换机查表,无相应信息     ③ 交换机将收到以太帧的端口和源MAC地址学习到MAC转发表     ④ 利用目的MAC转发,查表发现MAC转发表中无目的MAC对应信息     ⑤ 广播,其他端口收到后丢弃,目的为以太帧中DMAC的设备接收     注意:除非PC_B和PC_A是双向业务的交换机才会学到B的MAC地址,A->B单向不会。   注:

场景1

如果主机A没有主机B的ARP映射,主机A需要发送ARP请求,以获取主机B的MAC,将报文发往交换机C,交换机C采用洪泛的形式广播报文,主机B收到广播报文后,在自己的ARP缓存表中写入主机A的IP到MAC的映射,将自己的MAC封装到ARP回复报文中,单播给主机A,交换机C收到主机B恢复给主机A的ARP Reply报文后记录主机B的IP到MAC的映射表,并把报文转发给主机A,主机A获取到主机B的MAC后,在自己的ARP缓存表中写入主机B的IP到MAC的映射,构造报文发送给主机B。

场景2

主机A查看自己的ARP缓存,检查是否有主机B的IP到MAC的映射,如果有映射,构造报文,目的IP为主机B的IP,源IP为主机A的IP,目的MAC为主机B的MAC,源MAC为主机A的MAC,将报文发送给交换机C,交换机C进行MAC地址表学习,将主机A的MAC和报文入端口号记录下来,然后交换机C查看自己的MAC转发表,获取主机BMAC的映射端口,将报文从此端口转发出去,报文到达主机B。

跨vlan转发过程

跨网段通信(单臂路由):首先源IP地址是PC1的,目标IP地址是PC2,发送出去时首先经过交换机,那么此时交换机发现是从vlan10过来的就会标记一个标签,VLAN-ID为10,然后将数据发给R1,此时R1收到后查询路由表,然后发现是自己的直连网段,随即转发出去,但是此时的VLAN-ID转换为20,因为路由器根据自己的逻辑子接口和PC1发送的数据包是可以确定出将要发往哪个VLAN-ID的。所以上图中ID转换为20.从Trunk链路回到交换机,交换机接收到信息后知道是发往VLAN20 ,然后解除标记的ID,当PC2收到信息时,会给出回应,此时源IP地址是PC2,目标IP地址是PC1,而经过交换机时,又被打上标签所以是VLAN20,即上图中ID为20,交换机收到信息后通过Trunk链路发送给路由器,路由器开始匹配路由表,将VLAN ID进行转换在将信息转发出去,所以此时的ID为10.

标签:二层,主机,报文,地址,MAC,交换机,转发,过程
From: https://www.cnblogs.com/qianz/p/17529711.html

相关文章

  • 给 Helm 提一个 PR,重温开源项目参与过程
    目录逛社区领任务复现Bug用GPT-4来准备Bug复现材料对着GPT-4给的命令复现Bug定位Bug修复思路编写代码测试提PR逛社区酒足饭饱,闲来无事,打开Helm项目的issues列表,咦,这个issue看起来眉清目秀呀:其实一点都不“眉清目秀”,这段issue描述太冗长了,没有任何排版,看起......
  • 关于调试gmsh源码过程中产生的gmsh.dll和gmsh.pdb文件无法匹配,进而导致无法载入pdb文
    省流版由于ALL_BUILD会将对应于gmsh.exe的调试文件gmsh.pdb附在对应于gmsh.dll的调试文件gmsh.pdb文件,进而导致gmsh.pdb无法和gmsh.dll文件进行版本匹配,进而导致无法载入,进而导致无法调试gmsh源码;解决办法:将对应于gmsh.exe的gmsh.pdb改为其他任意命名即可;或者仅仅生成gms......
  • MySQL存储过程
    --存储过程delimiter$--声明结束符号CREATEPROCEDUREpro_test1()BEGINSELECT'HelloMySQL';END$delimiter;--声明结束符号CALLpro_test1();--调用存储过程DROPPROCEDUREpro_test1;--删除存储过程CREATEPROCEDUREpro_test1()BEGIN......
  • 为什么K8s在阿里能成功过?基于K8s的云原生改造实践过程
    导读:本文描述了阿里巴巴在容器管理领域的技术演进历程,解读了为什么K8s最终能够大获成功的原因,以及到今年双11阿里巴巴内部的K8s应用情况。内容着重描述了阿里巴巴基于K8s的云原生改造实践过程的三大能力升级,在对应能力升级过程中沉淀的技术解决方案,以及通过这些能力升级......
  • 个人对面向对象和面向过程的认识
    面向过程和面向对象的区别:面向过程和面向对象都是对软件分析、设计和开发的一种思想,它指导着人们以不同的方式去分析、设计和开发软件。C语言是一种典型的面向过程语言,Java是一种典型的面向对象语言。面向过程适合简单、不需要协作的事务,重点关注如何执行。面向对象(Oriented......
  • 面试再问MySQL存储过程和触发器就把这篇文章给他
    Mysql存储过程及触发器trigger存储过程一、一个简单的存储过程1,一个简单的存储过程delimiter$$ createproceduretesta() begin Select*fromemp; Select*fromdept; End; $$; delimiter; --调用存储过程 calltesta();存储过程的结构组成:1,创建格式:createpr......
  • 面试再问MySQL存储过程和触发器就把这篇文章给他
    Mysql存储过程及触发器trigger 存储过程一、一个简单的存储过程1,一个简单的存储过程 delimiter$$ createproceduretesta() begin Select*fromemp; Select*fromdept; End; $$; delimiter; --调用存储过程 calltesta();存储过程的结构组成:1,创建......
  • 探秘高逼格艺术二维码的制作过程-AI绘画文生图
    前几天看到几个逼格比较高的二维码,然后自己动手做了一下,给大家看看效果:1、文生图(狮子):2、文生图(城市): 下边将开始介绍怎么做的,有兴趣的可以继续读一读。这里使用的AI绘图工具是StableDiffusion,没有的同学需要去部署一个,计算平台国内建议使用AutoDL,国外可以白嫖Kaggle的......
  • mysql数据库语法总结--存储过程、函数、视图、触发器、表
    ​概述抽空总结一下mysql的一些概念性内容,涉及存储过程、函数、视图、触发器等。一、查看存储过程、函数、视图、触发器、表1、存储过程select*frommysql.procwheretype='PROCEDURE';showprocedurestatus;showcreateprocedureproc_name;//存储过程定义​编......
  • 12统一过程
    统一过程以用例为驱动,以架构为中心,迭代与增量。分四个阶段,初始:确定需求系统范围、细化:确定架构、构造:构造剩余构件与其他构件拼合、移交:测试移交有9个核心工作流:业务建模需求分析与设计实现测试部署配置与变更管理项目管理环境......