首页 > 其他分享 >数据帧传输

数据帧传输

时间:2023-05-28 15:35:09浏览次数:39  
标签:组播 主机 地址 传输 MAC 交换机 转发 数据

数据帧传输

1.数据帧如何传输

数据帧传输_单播



1.数据链路层基于MAC地址进行帧的传输。
2.以太网在二层链路上通过MAC地址来唯一标识网络设备,并且实现局域网上网络设备之间的通信。
3.MAC地址也叫物理地址,大多数网卡厂商把MAC地址烧入了网卡的ROM中。
4.发送端使用接收端的MAC地址作为目的地址。
5.以太帧封装完成后会通过物理层转换成比特流在物理介质上传输。

2.以太网的MAC地址

数据帧传输_组播_02



1.MAC地址由两部分组成,分别是供应商代码和序列号。
2.网络设备的MAC地址是全球唯一的。
3.MAC地址长度为48比特,通常用十六进制表示。
4.MAC地址包含两部分:
5.前24比特是组织唯一标识符(OUI,Organizationally Unique Identifier),由IEEE统一分配给设备制造商。
6.后24位序列号是厂商分配给每个产品的唯一数值,由各个厂商自行分配(这里所说的产品可以是网卡或者其他需要MAC地址的设备)。

3.单播

数据帧传输_组播_03



1.局域网上的帧可以通过三种方式发送。
2.第一种是单播,指从单一的源端发送到单一的目的端。
3.每个主机接口由一个MAC地址唯一标识,MAC地址的OUI中,第一字节第8个比特表示地址类型。对于主机MAC地址,这个比特固定为0,表示目的4.MAC地址为此MAC地址的帧都是发送到某个唯一的目的端。
5.在冲突域中,所有主机都能收到源主机发送的单播帧,但是其他主机发现目的地址与本地MAC地址不一致后会丢弃收到的帧,只有真正的目的主机6.才会接收并处理收到的帧。

4.广播

数据帧传输_单播_04



1.第二种发送方式是广播,表示帧从单一的源发送到共享以太网上的所有主机。
2.广播帧的目的MAC地址为十六进制的FF:FF:FF:FF:FF:FF,所有收到该广播帧的主机都要接收并处理这个帧。
3.广播方式会产生大量流量,导致带宽利用率降低,进而影响整个网络的性能。
4.当需要网络中的所有主机都能接收到相同的信息并进行处理的情况下,通常会使用广播方式。

5.组播

数据帧传输_数据帧_05



1.第三种发送方式为组播,组播比广播更加高效。
2.组播转发可以理解为选择性的广播,主机侦听特定组播地址,接收并处理目的MAC地址为该组播MAC地址的帧。
3.组播MAC地址和单播MAC地址是通过第一字节中的第8个比特区分的。组播MAC地址的第8个比特为1,而单播MAC地址的第8个比特为0。
4.当需要网络上的一组主机(而不是全部主机)接收相同信息,并且其他主机不受影响的情况下通常会使用组播方式。

6.数据帧的发送和接收

数据帧传输_组播_06



1.当主机接收到的数据帧所包含的目的MAC地址是自己时,会把以太网封装剥掉后送往上层协议。
2.帧从主机的物理接口发送出来后,通过传输介质传输到目的端。共享网络中,这个帧可能到达多个主机。
3.主机检查帧头中的目的MAC地址,如果目的MAC地址不是本机MAC地址,也不是本机侦听的组播或广播MAC地址,则主机会丢弃收到的帧。
4.如果目的MAC地址是本机MAC地址,则接收该帧,检查帧校验序列(FCS)字段,并与本机计算的值对比来确定帧在传输过程中是否保持了完整性。
5.如果帧的FCS值与本机计算的值不同,主机会认为帧已被破坏,并会丢弃该帧。
6.如果该帧通过了FCS校验,则主机会根据帧头部中的Type字段来确定将帧发送给上层哪个协议处理。
7.本例中,Type字段的值为0x0800,表明该帧需要发送到IP协议上处理。在发送给IP协议之前,帧的头部和尾部会被剥掉。

交换机的基本原理

1.小型交换网络

数据帧传输_组播_07

交换机的转发行为

数据帧传输_数据帧_08

1、交换机中有一个MAC地址表,里面存放了MAC地址与交换机端口的映射关系。

MAC地址表也称为CAM(Content Addressable Memory)表。

2、交换机对帧的转发操作行为一共有三种:

泛洪(Flooding),转发(Forwarding),丢弃(Discarding)。



1.泛洪:交换机把从某一端口进来的帧通过所有其它的端口转发出去。

2.转发:交换机把从某一端口进来的帧通过另一个端口转发出去。

3.丢弃:交换机把从某一端口进来的帧直接丢弃。

2.交换机初始状态

数据帧传输_数据帧_09

1.初始状态下,交换机并不知道所连接主机的MAC地址,所以MAC地址表为空。SWA为初始状态

在收到主机A发送的数据帧之前,MAC地址表中没有任何表项。


数据帧传输_组播_10

2.交换机将收到的数据帧的源MAC地址和对应接口记录到MAC地址表中

主机A发送数据给主机C时,一般会首先发送ARP请求来获取主机C的MAC地址,此ARP请求帧中的目的MAC地址是广播地址,源MAC地址是自己的MAC地址

SWA收到该帧后,会将源MAC地址和接收端口的映射关系添加到MAC地址表中。

缺省情况下,交换机学习到的MAC地址表项的老化时间为300秒。

如果在老化时间内再次收到主机A发送的数据帧,SWA中保存的主机A的MAC地址和G0/0/1的映射的老化时间会被刷新。

此后,如果交换机收到目标MAC地址为00-01-02-03-04-AA的数据帧时,都将通过G0/0/1端口转发。


3.转发数据帧

数据帧传输_数据帧_11

1.数据帧的目的MAC地址不在MAC表中,或者目的MAC地址为广播地址时,交换机会泛洪该帧。

主机A发送的数据帧的目的MAC地址为广播地址,所以交换机会将此数据帧通过G0/0/2和G0/0/3端口广播到主机B和主机C。


数据帧传输_单播_12

2.交换机根据MAC地址表将目标主机的回复信息单播转发给源主机。

主机B和主机C接收到此数据帧后,都会查看该ARP数据帧。

但是主机B不会回复该帧,主机C会处理该帧并发送ARP回应,此回复数据帧的目的MAC地址为主机A的MAC地址,源MAC地址为主机C的MAC地址。SWA收到回复数据帧时,会将该帧的源MAC地址和接口的映射关系添加到MAC地址表中。

如果此映射关系在MAC地址表已经存在,则会被刷新。然后SWA查询MAC地址表,根据帧的目的MAC地址找到对应的转发端口后,从G0/0/1转发此数据帧。

标签:组播,主机,地址,传输,MAC,交换机,转发,数据
From: https://blog.51cto.com/u_16133006/6365087

相关文章

  • Elasticsearch掰开揉碎第21篇京东商场之爬取数据
    引言上一篇主要讲解的是:京东商场之前期准备(引入pom依赖、删除环境中无用的文件、修改资源配置文件、拷贝前端素材、创建测试controller、启动springboot项目、访问测试)本篇主要讲解的是:京东商场之爬取数据(京东商场搜索请求、HTML解析器之jsoup、编写html解析工具类、解析页面所......
  • 批处理和数据库连接池
    1. 批处理  8381.1 基本介绍1. 当需要成批插入或者更新记录时。可以采用Java的批量更新机制,这一机制允许多条语句一次性提交给数据库批量处理。通常情况下比单独提交处理更有效率。2. JDBC的批量处理语句包括 下面方法:addBatch():添加需要批量处理的SQL语句或参数executeBa......
  • 数据库课程设计报告
    一、概述1.   项目背景学生成绩管理系统是学校管理的重要工具,是学校不可或缺的一部分。随着在校人数的不断增加,教务系统的数量也不断的上涨。学校工作繁杂,资料众多,人工管理信息的难度也越来越大,显然是不能满足实际的需要,效率也是很低的。并且这种传统的方式存在着众多的弊端......
  • RefsUtil 是 Windows 下一款用于管理 REFS 文件系统的实用工具,它提供了丰富的功能和命
    RefsUtil是Windows下一款用于管理REFS文件系统的实用工具,它提供了丰富的功能和命令行界面,可用于创建、修改、检查和修复REFS分区,以及导出和导入数据等操作。以下是一些使用RefsUtil工具的示例:创建REFS分区要创建一个新的REFS分区,可以使用以下命令:CopyCoderef......
  • 【python基础】基本数据类型-字符串类型
    1.初识字符串字符串就是一系列字符。在python中,用引号括起来文本内容的都是字符串。其语法格式为:‘文本内容’或者“文本内容”我们发现其中的引号可以是单引号,也可以是双引号。这样的灵活性可以使我们进行引号之间的嵌套。编写程序如下所示:运行结果如下所示我们可以发现......
  • django_ORM_数据库取值
    #查询方法1:直接查询models.Info_Phone.objects.filter(mobile="157137632",id=2)#查询方法2:把查询条件放在字典里面data_list={"mobile":"157137632","id":2}models.Info_Phone.objects.filter(**data_l......
  • 【cursor】大数据量操作
    cursor是什么数据库Cursor(游标)是一种可编程的数据库对象,用于在查询结果集中遍历和操作数据。通过使用Cursor,我们可以在数据库中执行SQL查询、检索数据和对数据进行更新、插入或删除等操作。在使用Cursor时,首先要创建一个Cursor对象,并将其与一个查询关联。随后,可以使用......
  • 删除指定数据
    packagecom.ArrayList;importjava.util.ArrayList;publicclassDemo1{publicstaticvoidmain(String[]args){//创建一个ArrayList集合对象ArrayList<String>list=newArrayList<>();list.add("Java入门");......
  • 第一次写一篇与技术无关的博客-大批量数据处理
    上周接到了一个这样的需求,有几千个xml文件需要解析入库,每个文件里边有三万条数据。解析出来后要按表字段,重新组成需要的数据,不能直接将解析后的json入库。一开始我觉得这个事挺简单的,直接动手写了个demo,用随机选了两个xml文件测一下,没问题,成功入库。从解压xml到最后的数据入库,一......
  • Python 标准类库-因特网数据处理之Base64数据编码
    该模块提供将二进制数据编码为可打印ASCII字符并将这种编码解码回二进制数据的功能。它为RFC3548中指定的编码提供编码和解码功能。定义了Base16、Base32和Base64算法,以及事实上的标准Ascii85和Base85编码。RFC3548编码适用于对二进制数据进行编码,以便可以安全地通过电子邮件......