im钱包官方网站
数字资产服务平台

im钱包官方网站是全球著名的数字资产交易平台之一,主要面向全球用户提供比特币、莱特币、以太币等数字资产的币币和衍生品交易服务。

imtoken最新版下载|ethernet的mac地址长度为

时间:2024-03-14 19:36:29

以太网帧结构详解 - 知乎

以太网帧结构详解 - 知乎首发于网络协议详解切换模式写文章登录/注册以太网帧结构详解nwatch计算机的世界真是太精彩了!!!前言20世纪60年代以来,计算机网络得到了飞速发展。各大厂商和标准组织为了在数据通信网络领域占据主导地位,纷纷推出了各自的网络架构体系和标准,如IBM公司的SNA协议,Novell公司的IPX/SPX协议,以及广泛流行的OSI参考模型和TCP/IP协议。同时,各大厂商根据这些协议生产出了不同的硬件和软件。标准组织和厂商的共同努力促进了网络技术的快速发展和网络设备种类的迅速增长。网络通信中,“协议”和“标准”这两个词汇常常可以混用。同时,协议或标准本身又常常具有层次的特点。一般地,关注于逻辑数据关系的协议通常被称为上层协议,而关注于物理数据流的协议通常被称为低层协议。IEEE 802就是一套用来管理物理数据流在局域网中传输的标准,包括在局域网中传输物理数据的802.3以太网标准。还有一些用来管理物理数据流在使用串行介质的广域网中传输的标准,如帧中继FR(Frame Relay),高级数据链路控制HDLC(High-Level Data Link Control),异步传输模式ATM(Asynchronous Transfer Mode)。分层模型- OSI不同的协议栈用于定义和管理不同网络的数据转发规则。国际标准化组织ISO于1984年提出了OSI RM(Open System Interconnection Reference Model,开放系统互连参考模型)。OSI 参考模型很快成为了计算机网络通信的基础模型。OSI参考模型具有以下优点:简化了相关的网络操作;提供了不同厂商之间的兼容性;促进了标准化工作;结构上进行了分层;易于学习和操作。OSI参考模型各个层次的基本功能如下:1.物理层: 在设备之间传输比特流,规定了电平、速度和电缆针脚。2.数据链路层:将比特组合成字节,再将字节组合成帧,使用链路层地址(以太网使用MAC地址)来访问介质,并进行差错检测。3.网络层:提供逻辑地址,供路由器确定路径。4.传输层:提供面向连接或非面向连接的数据传递以及进行重传前的差错检测。5.会话层:负责建立、管理和终止表示层实体之间的通信会话。该层的通信由不同设备中的应用程序之间的服务请求和响应组成。6.表示层:提供各种用于应用层数据的编码和转换功能,确保一个系统的应用层发送的数据能被另一个系统的应用层识别。7.应用层:OSI参考模型中最靠近用户的一层,为应用程序提供网络服务。分层模型– TCP/IPTCP/IP模型同样采用了分层结构,层与层相对独立但是相互之间也具备非常密切的协作关系。TCP/IP模型将网络分为四层。TCP/IP模型不关注底层物理介质,主要关注终端之间的逻辑数据流转发。TCP/IP模型的核心是网络层和传输层:网络层解决网络之间的逻辑转发问题,传输层保证源端到目的端之间的可靠传输。最上层的应用层通过各种协议向终端用户提供业务应用。数据封装应用数据需要经过TCP/IP每一层处理之后才能通过网络传输到目的端,每一层上都使用该层的协议数据单元PDU(Protocol Data Unit)彼此交换信息。不同层的PDU中包含有不同的信息,因此PDU在不同层被赋予了不同的名称。如上层数据在传输层添加TCP报头后得到的PDU被称为Segment(数据段 )数据段被传递给网络层,网络层添加IP报头得到的PDU被称为Packet(数据包)数据包被传递到数据链路层,封装数据链路层报头得到的PDU被称为Frame(数据帧)最后,帧被转换为比特(物理层)通过网络介质传输。这种协议栈逐层向下传递数据,并添加报头和报尾的过程称为封装。终端之间的通信数据链路层控制数据帧在物理链路上传输。数据包在以太网物理介质上传播之前必须封装头部和尾部信息。封装后的数据包称为称为数据帧,数据帧中封装的信息决定了数据如何传输。以太网上传输的数据帧有两种格式,选择哪种格式由TCP/IP协议簇中的网络层决定。帧格式以太网上使用两种标准帧格式。第一种是上世纪80年代初提出的DIX v2格式,即Ethernet II帧格式。Ethernet II后来被IEEE 802标准接纳,并写进了IEEE 802.3x-1997的3.2.6节。第二种是1983年提出的IEEE 802.3格式。这两种格式的主要区别在于,Ethernet II格式中包含一个Type字段,标识以太帧处理完成之后将被发送到哪个上层协议进行处理。IEEE 802.3格式中,同样的位置是长度字段。不同的Type字段值可以用来区别这两种帧的类型当Type字段值小于等于1500(或者十六进制的0x05DC)时,帧使用的是IEEE 802.3格式。当Type字段值大于等于1536 (或者十六进制的0x0600)时,帧使用的是Ethernet II格式。以太网中大多数的数据帧使用的是Ethernet II格式。以太帧中还包括源和目的MAC地址,分别代表发送者的MAC和接收者的MAC,此外还有帧校验序列字段,用于检验传输过程中帧的完整性。Ethernet_II 帧格式Ethernet_II 帧类型值大于等于1536 (0x0600)以太网数据帧的长度在64-1518字节之间Ethernet_II的帧中各字段说明如下:DMAC(Destination MAC)是目的MAC地址。DMAC字段长度为6个字节,标识帧的接收者。SMAC(Source MAC)是源MAC地址。SMAC字段长度为6个字节,标识帧的发送者。类型字段(Type)用于标识数据字段中包含的高层协议,该字段长度为2个字节。类型字段取值为0x0800的帧代表IP协议帧;类型字段取值为0806的帧代表ARP协议帧。数据字段(Data)是网络层数据,最小长度必须为46字节以保证帧长至少为64字节,数据字段的最大长度为1500字节。循环冗余校验字段(FCS)提供了一种错误检测机制。该字段长度为4个字节。IEEE802.3 帧格式IEEE 802.3 帧长度字段值小于等于1500 (0x05DC)IEEE 802.3帧格式类似于Ethernet_II帧,只是Ethernet_II帧的Type域被802.3帧的Length域取代,并且占用了Data字段的8个字节作为LLC和SNAP字段。Length字段定义了Data字段包含的字节数。逻辑链路控制LLC(Logical Link Control)由目的服务访问点DSAP(Destination Service Access Point)、源服务访问点SSAP(Source Service Access Point)和Control字段组成。SNAP(Sub-network Access Protocol)由机构代码(Org Code)和类型(Type)字段组成。Org code三个字节都为0。Type字段的含义与Ethernet_II帧中的Type字段相同。IEEE802.3帧根据DSAP和SSAP字段的取值又可分为以下几类:当DSAP和SSAP都取特定值0xff时,802.3帧就变成了Netware-ETHERNET帧,用来承载NetWare类型的数据。当DSAP和SSAP都取特定值0xaa时,802.3帧就变成了ETHERNET_SNAP帧。ETHERNET_SNAP帧可以用于传输多种协议。DSAP和SSAP其他的取值均为纯IEEE802.3帧。数据帧传输数据链路层基于MAC地址进行帧的传输以太网在二层链路上通过MAC地址来唯一标识网络设备,并且实现局域网上网络设备之间的通信。MAC地址也叫物理地址,大多数网卡厂商把MAC地址烧入了网卡的ROM中。发送端使用接收端的MAC地址作为目的地址。以太帧封装完成后会通过物理层转换成比特流在物理介质上传输。以太网的MAC地址MAC地址由两部分组成,分别是供应商代码和序列号。其中前24位代表该供应商代码,由IEEE管理和分配。剩下的24位序列号由厂商自己分配。如同每一个人都有一个名字一样,每一台网络设备都用物理地址来标识自己,这个地址就是MAC地址。网络设备的MAC地址是全球唯一的。MAC地址长度为48比特,通常用十六进制表示。MAC地址包含两部分:前24比特是组织唯一标识符(OUI,Organizationally Unique Identifier),由IEEE统一分配给设备制造商。例如,华为的网络产品的MAC地址前24比特是0x00e0fc。后24位序列号是厂商分配给每个产品的唯一数值,由各个厂商自行分配(这里所说的产品可以是网卡或者其他需要MAC地址的设备)。数据帧的发送和接收单播局域网上的帧可以通过三种方式发送。第一种是单播,指从单一的源端发送到单一的目的端。每个主机接口由一个MAC地址唯一标识,MAC地址的OUI中,第一字节第8个比特表示地址类型。对于主机MAC地址,这个比特固定为0,表示目的MAC地址为此MAC地址的帧都是发送到某个唯一的目的端。在冲突域中,所有主机都能收到源主机发送的单播帧,但是其他主机发现目的地址与本地MAC地址不一致后会丢弃收到的帧,只有真正的目的主机才会接收并处理收到的帧。广播第二种发送方式是广播,表示帧从单一的源发送到共享以太网上的所有主机。广播帧的目的MAC地址为十六进制的FF:FF:FF:FF:FF:FF,所有收到该广播帧的主机都要接收并处理这个帧。广播方式会产生大量流量,导致带宽利用率降低,进而影响整个网络的性能。当需要网络中的所有主机都能接收到相同的信息并进行处理的情况下,通常会使用广播方式。组播第三种发送方式为组播,组播比广播更加高效。组播转发可以理解为选择性的广播,主机侦听特定组播地址,接收并处理目的MAC地址为该组播MAC地址的帧。组播MAC地址和单播MAC地址是通过第一字节中的第8个比特区分的。组播MAC地址的第8个比特为1,而单播MAC地址的第8个比特为0。当需要网络上的一组主机(而不是全部主机)接收相同信息,并且其他主机不受影响的情况下,通常会使用组播方式。发送与接收当主机接收到的数据帧所包含的目的MAC地址是自己时,会把以太网封装剥掉后送往上层协议。帧从主机的物理接口发送出来后,通过传输介质传输到目的端。共享网络中,这个帧可能到达多个主机。主机检查帧头中的目的MAC地址,如果目的MAC地址不是本机MAC地址,也不是本机侦听的组播或广播MAC地址,则主机会丢弃收到的帧。如果目的MAC地址是本机MAC地址,则接收该帧,检查帧校验序列(FCS)字段,并与本机计算的值对比来确定帧在传输过程中是否保持了完整性。如果帧的FCS值与本机计算的值不同,主机会认为帧已被破坏,并会丢弃该帧。如果该帧通过了FCS校验,则主机会根据帧头部中的Type字段来确定将帧发送给上层哪个协议处理。实际数据包分析:ARP类型数据包其他类型数据包:原文链接;以太网帧结构详解_曌赟的博客-CSDN博客发布于 2020-10-12 11:16计算机网络网络通信数据通信​赞同 53​​1 条评论​分享​喜欢​收藏​申请转载​文章被以下专栏收录网络协议详解网络协

MAC地址_百度百科

址_百度百科 网页新闻贴吧知道网盘图片视频地图文库资讯采购百科百度首页登录注册进入词条全站搜索帮助首页秒懂百科特色百科知识专题加入百科百科团队权威合作下载百科APP个人中心MAC地址播报讨论上传视频媒体访问控制地址收藏查看我的收藏0有用+10本词条由“科普中国”科学百科词条编写与应用工作项目 审核 。MAC地址(英语:Media Access Control Address),直译为媒体存取控制位址,也称为局域网地址(LAN Address),MAC位址,以太网地址(Ethernet Address)或物理地址(Physical Address),它是一个用来确认网络设备位置的位址。在OSI模型中,第三层网络层负责IP地址,第二层数据链路层则负责MAC位址 [1]。MAC地址用于在网络中唯一标示一个网卡,一台设备若有一或多个网卡,则每个网卡都需要并会有一个唯一的MAC地址 [2]。中文名MAC地址外文名Media Access Control Address别    名MAC位址、硬件地址作    用用来定义网络设备的位置特    点唯一性所属领域计算机技术目录1简介2结构3工作过程4作用5获取方法6与IP地址区别简介播报编辑MAC地址也叫物理地址、硬件地址,由网络设备制造商生产时烧录在网卡(Network lnterface Card)的EPROM(一种闪存芯片,通常可以通过程序擦写)。IP地址与MAC地址在计算机里都是以二进制表示的,IP地址是32位的,而MAC地址则是48位的 [3]。MAC地址的长度为48位(6个字节),通常表示为12个16进制数,如:00-16-EA-AE-3C-40就是一个MAC地址,其中前3个字节,16进制数00-16-EA代表网络硬件制造商的编号,它由IEEE(电气与电子工程师协会)分配,而后3个字节,16进制数AE-3C-40代表该制造商所制造的某个网络产品(如网卡)的系列号。只要不更改自己的MAC地址,MAC地址在世界是唯一的。形象地说,MAC地址就如同身份证上的身份证号码,具有唯一性 [3]。结构播报编辑网络中每台设备都有一个唯一的网络标识,这个地址叫MAC地址或网卡地址,由网络设备制造商生产时写在硬件内部。MAC地址则是48位的(6个字节),通常表示为12个16进制数,每2个16进制数之间用冒号隔开,如08:00:20:0A:8C:6D就是一个MAC地址。具体如下图所示,其前3字节表示OUI(Organizationally Unique Identifier),是IEEE的注册管理机构给不同厂家分配的代码,区分不同的厂家。后3字节由厂家自行分配 [2]。MAC地址最高字节(MSB)的低第二位(LSb)表示这个MAC地址是全局的还是本地的,即U/L(Universal/Local)位,如果为0,表示是全局地址。所有的OUI这一位都是0。MAC地址最高字节(MSB)的低第一位(LSb),表示这个MAC地址是单播还是多播。0表示单播。 [4]工作过程播报编辑网络上的数据包从初始点开始 ,经过一个个中间节点最终到达目标节点 ,数据包是如何从初始节点开始识别一个个中间节点最终找到目标节点的呢? 实际上初始节点是根据目标节点的地址 ,将目标节点的IP地址映射到中间节点的MAC地址,找到第一个中间节点。从第一个中间节点出发,根据目标节点的IP地址映射到第二个中间节点的MAC地址,从而找到第二个中间节点……,以此类推,直到当找到最后一个中间节点后,从最后一个中间节点出发,根据目标节点的地址映射到目的节点的MAC地址,从而将数据包传送给目标主机。所以数据包的传送过程就是:不断地将目标节点的地址映射到一个个中间节点的MAC地址,再从一个个中间节点出发,直到找到最终的目标节点 [5]。数据包传送的关键是将目标节点的IP地址映射到中间节点的MAC地址。IP地址与MAC地址的映射要通过ARP地址解析协议来完成,它可将网络中的IP地址映射到主机的MAC地址,如交换机可以根据网络中的IP地址来找到本地主机的MAC地址。具体过程是:当交换机接收到来自网上一个数据包时,会根据该数据包的目标IP地址,查看交换机内部是否有跟该IP地址对应的MAC地址 ,如果有上次保留下来的对应的MAC地址,就会将该数据包 转发到对应MAC地址的主机上去。如果在交换机内部没有与目标)地址对应的MAC地址,则交换机会根据ARP协议将目标IP地址按照“表”中的对应关系映射成MAC地址 ,数据包就被转送到对应的MAC地址的主机上 [5]。作用播报编辑IP 地址是基于逻辑的,比较灵活,不受硬件的限制,也容易记忆。而 MAC地址在一定程度上与硬件一致,是基于物理的,能够标识具体的网络节点。这两种地址各有优点,使用时也因条件不同而采取不同的地址 [6]。大多数接入Internet的方式是把主机通过局域网组织在一起,然后再通过交换机或路由器等设备和 Internet 相连接。这样一来就出现了如何区分具体用户,防止 IP地址被盗用的问题。由于IP地址只是逻辑上的标识,任何人都能随意修改,因此不能用来具体标识一个用户。而 MAC地址则不然,它是固化在网卡里面的。从理论上讲,除非盗来硬件即网卡,否则一般是不能被冒名顶替的。基于 MAC 地址的这种特点,因此局域网采用了用MAC地址来标识具体用户的方法 [6]。在具体的通信过程中,通过交换机内部的交换表把 MAC地址和 IP 地址一一对应。当有发送给本地局域网内一台主机的数据包时,交换机首先将数据包接收下来,然后把数据包中的 IP 地址按照交换表中的对应关系映射成 MAC地址,然后将数据包转发到对应的 MAC地址的主机上去。这样一来,即使某台主机盗用了这个 IP 地址,但由于此主机没有对应的 MAC地址,因此也不能收到数据包,发送过程和接收过程类似 [6]。所以,无论是局域网,还是广域网中的计算机之间进行通信时,最终都表现为将数据包从某种形式的链路上的一个初始节点出发,从一个节点传递到另一个节点,最终传送到目的节点。数据包在这些节点之间的传递都是由 ARP(Address Resolution Protocol:地址解析协议)负责将IP地址映射到 MAC地址上来完成的 [6]。身份证就是用来证明一个人的身份。平日身份证的作用并不是很大,但是到了有的关键时刻,必须有身份证来说明一个人的一切。那么,IP地址与MAC地址绑定,就如同在日常生活中一个人与身份证的关系。因为,IP地址可以随意的,但MAC地址是唯一说明IP地址身份的。例如,为防止IP地址被盗用,通常交换机的端口绑定(端口的MAC表使用静态表项),可以在每个交换机端口只连接一台主机的情况下防止修改MAC地址的盗用,如果是三层设备还可以提供交换机端口、IP地址和MAC地址三者的绑定 [7]。获取方法播报编辑在命令提示符下输入命令“ipconfig /all”回车之后就会显示当前计算机的一些网络信息,其中“Physical Address”字样的这一项就是当前计算机中网卡的 MAC地址。当然,如果计算机中安装有多个网卡,则会有多个“Physical Address”字样 [6]。与IP地址区别播报编辑IP地址和MAC地址相同点是它们都唯一,不同的特点主要有:1.对于网络上的某一设备,如一台计算机或一台路由器,其IP地址是基于网络拓扑设计出的,同一台设备或计算机上,改动IP地址是很容易的(但必须唯一),而MAC则是生产厂商烧录好的,一般不能改动。我们可以根据需要给一台主机指定任意的IP地址,如我们可以给局域网上的某台计算机分配IP地址为192.168.0.112 ,也可以将它改成192.168.0.200。而任一网络设备(如网卡,路由器)一旦生产出来以后,其MAC地址不可由本地连接内的配置进行修改。如果一个计算机的网卡坏了,在更换网卡之后,该计算机的MAC地址就变了 [5]。2.长度不同。IP地址为32位,MAC地址为48位 [5]。3.分配依据不同。IP地址的分配是基于网络拓扑,MAC地址的分配是基于制造商 [8]。4.寻址协议层不同。IP地址应用于OSI第三层,即网络层,而MAC地址应用在OSI第二层,即数据链路层。 数据链路层协议可以使数据从一个节点传递到相同链路的另一个节点上(通过MAC地址),而网络层协议使数据可以从一个网络传递到另一个网络上(ARP根据目的IP地址,找到中间节点的MAC地址,通过中间节点传送,从而最终到达目的网络) [1]。新手上路成长任务编辑入门编辑规则本人编辑我有疑问内容质疑在线客服官方贴吧意见反馈投诉建议举报不良信息未通过词条申诉投诉侵权信息封禁查询与解封©2024 Baidu 使用百度前必读 | 百科协议 | 隐私政策 | 百度百科合作平台 | 京ICP证030173号 京公网安备110000020000

以太网帧结构详解 - 知乎

以太网帧结构详解 - 知乎首发于网络协议详解切换模式写文章登录/注册以太网帧结构详解nwatch计算机的世界真是太精彩了!!!前言20世纪60年代以来,计算机网络得到了飞速发展。各大厂商和标准组织为了在数据通信网络领域占据主导地位,纷纷推出了各自的网络架构体系和标准,如IBM公司的SNA协议,Novell公司的IPX/SPX协议,以及广泛流行的OSI参考模型和TCP/IP协议。同时,各大厂商根据这些协议生产出了不同的硬件和软件。标准组织和厂商的共同努力促进了网络技术的快速发展和网络设备种类的迅速增长。网络通信中,“协议”和“标准”这两个词汇常常可以混用。同时,协议或标准本身又常常具有层次的特点。一般地,关注于逻辑数据关系的协议通常被称为上层协议,而关注于物理数据流的协议通常被称为低层协议。IEEE 802就是一套用来管理物理数据流在局域网中传输的标准,包括在局域网中传输物理数据的802.3以太网标准。还有一些用来管理物理数据流在使用串行介质的广域网中传输的标准,如帧中继FR(Frame Relay),高级数据链路控制HDLC(High-Level Data Link Control),异步传输模式ATM(Asynchronous Transfer Mode)。分层模型- OSI不同的协议栈用于定义和管理不同网络的数据转发规则。国际标准化组织ISO于1984年提出了OSI RM(Open System Interconnection Reference Model,开放系统互连参考模型)。OSI 参考模型很快成为了计算机网络通信的基础模型。OSI参考模型具有以下优点:简化了相关的网络操作;提供了不同厂商之间的兼容性;促进了标准化工作;结构上进行了分层;易于学习和操作。OSI参考模型各个层次的基本功能如下:1.物理层: 在设备之间传输比特流,规定了电平、速度和电缆针脚。2.数据链路层:将比特组合成字节,再将字节组合成帧,使用链路层地址(以太网使用MAC地址)来访问介质,并进行差错检测。3.网络层:提供逻辑地址,供路由器确定路径。4.传输层:提供面向连接或非面向连接的数据传递以及进行重传前的差错检测。5.会话层:负责建立、管理和终止表示层实体之间的通信会话。该层的通信由不同设备中的应用程序之间的服务请求和响应组成。6.表示层:提供各种用于应用层数据的编码和转换功能,确保一个系统的应用层发送的数据能被另一个系统的应用层识别。7.应用层:OSI参考模型中最靠近用户的一层,为应用程序提供网络服务。分层模型– TCP/IPTCP/IP模型同样采用了分层结构,层与层相对独立但是相互之间也具备非常密切的协作关系。TCP/IP模型将网络分为四层。TCP/IP模型不关注底层物理介质,主要关注终端之间的逻辑数据流转发。TCP/IP模型的核心是网络层和传输层:网络层解决网络之间的逻辑转发问题,传输层保证源端到目的端之间的可靠传输。最上层的应用层通过各种协议向终端用户提供业务应用。数据封装应用数据需要经过TCP/IP每一层处理之后才能通过网络传输到目的端,每一层上都使用该层的协议数据单元PDU(Protocol Data Unit)彼此交换信息。不同层的PDU中包含有不同的信息,因此PDU在不同层被赋予了不同的名称。如上层数据在传输层添加TCP报头后得到的PDU被称为Segment(数据段 )数据段被传递给网络层,网络层添加IP报头得到的PDU被称为Packet(数据包)数据包被传递到数据链路层,封装数据链路层报头得到的PDU被称为Frame(数据帧)最后,帧被转换为比特(物理层)通过网络介质传输。这种协议栈逐层向下传递数据,并添加报头和报尾的过程称为封装。终端之间的通信数据链路层控制数据帧在物理链路上传输。数据包在以太网物理介质上传播之前必须封装头部和尾部信息。封装后的数据包称为称为数据帧,数据帧中封装的信息决定了数据如何传输。以太网上传输的数据帧有两种格式,选择哪种格式由TCP/IP协议簇中的网络层决定。帧格式以太网上使用两种标准帧格式。第一种是上世纪80年代初提出的DIX v2格式,即Ethernet II帧格式。Ethernet II后来被IEEE 802标准接纳,并写进了IEEE 802.3x-1997的3.2.6节。第二种是1983年提出的IEEE 802.3格式。这两种格式的主要区别在于,Ethernet II格式中包含一个Type字段,标识以太帧处理完成之后将被发送到哪个上层协议进行处理。IEEE 802.3格式中,同样的位置是长度字段。不同的Type字段值可以用来区别这两种帧的类型当Type字段值小于等于1500(或者十六进制的0x05DC)时,帧使用的是IEEE 802.3格式。当Type字段值大于等于1536 (或者十六进制的0x0600)时,帧使用的是Ethernet II格式。以太网中大多数的数据帧使用的是Ethernet II格式。以太帧中还包括源和目的MAC地址,分别代表发送者的MAC和接收者的MAC,此外还有帧校验序列字段,用于检验传输过程中帧的完整性。Ethernet_II 帧格式Ethernet_II 帧类型值大于等于1536 (0x0600)以太网数据帧的长度在64-1518字节之间Ethernet_II的帧中各字段说明如下:DMAC(Destination MAC)是目的MAC地址。DMAC字段长度为6个字节,标识帧的接收者。SMAC(Source MAC)是源MAC地址。SMAC字段长度为6个字节,标识帧的发送者。类型字段(Type)用于标识数据字段中包含的高层协议,该字段长度为2个字节。类型字段取值为0x0800的帧代表IP协议帧;类型字段取值为0806的帧代表ARP协议帧。数据字段(Data)是网络层数据,最小长度必须为46字节以保证帧长至少为64字节,数据字段的最大长度为1500字节。循环冗余校验字段(FCS)提供了一种错误检测机制。该字段长度为4个字节。IEEE802.3 帧格式IEEE 802.3 帧长度字段值小于等于1500 (0x05DC)IEEE 802.3帧格式类似于Ethernet_II帧,只是Ethernet_II帧的Type域被802.3帧的Length域取代,并且占用了Data字段的8个字节作为LLC和SNAP字段。Length字段定义了Data字段包含的字节数。逻辑链路控制LLC(Logical Link Control)由目的服务访问点DSAP(Destination Service Access Point)、源服务访问点SSAP(Source Service Access Point)和Control字段组成。SNAP(Sub-network Access Protocol)由机构代码(Org Code)和类型(Type)字段组成。Org code三个字节都为0。Type字段的含义与Ethernet_II帧中的Type字段相同。IEEE802.3帧根据DSAP和SSAP字段的取值又可分为以下几类:当DSAP和SSAP都取特定值0xff时,802.3帧就变成了Netware-ETHERNET帧,用来承载NetWare类型的数据。当DSAP和SSAP都取特定值0xaa时,802.3帧就变成了ETHERNET_SNAP帧。ETHERNET_SNAP帧可以用于传输多种协议。DSAP和SSAP其他的取值均为纯IEEE802.3帧。数据帧传输数据链路层基于MAC地址进行帧的传输以太网在二层链路上通过MAC地址来唯一标识网络设备,并且实现局域网上网络设备之间的通信。MAC地址也叫物理地址,大多数网卡厂商把MAC地址烧入了网卡的ROM中。发送端使用接收端的MAC地址作为目的地址。以太帧封装完成后会通过物理层转换成比特流在物理介质上传输。以太网的MAC地址MAC地址由两部分组成,分别是供应商代码和序列号。其中前24位代表该供应商代码,由IEEE管理和分配。剩下的24位序列号由厂商自己分配。如同每一个人都有一个名字一样,每一台网络设备都用物理地址来标识自己,这个地址就是MAC地址。网络设备的MAC地址是全球唯一的。MAC地址长度为48比特,通常用十六进制表示。MAC地址包含两部分:前24比特是组织唯一标识符(OUI,Organizationally Unique Identifier),由IEEE统一分配给设备制造商。例如,华为的网络产品的MAC地址前24比特是0x00e0fc。后24位序列号是厂商分配给每个产品的唯一数值,由各个厂商自行分配(这里所说的产品可以是网卡或者其他需要MAC地址的设备)。数据帧的发送和接收单播局域网上的帧可以通过三种方式发送。第一种是单播,指从单一的源端发送到单一的目的端。每个主机接口由一个MAC地址唯一标识,MAC地址的OUI中,第一字节第8个比特表示地址类型。对于主机MAC地址,这个比特固定为0,表示目的MAC地址为此MAC地址的帧都是发送到某个唯一的目的端。在冲突域中,所有主机都能收到源主机发送的单播帧,但是其他主机发现目的地址与本地MAC地址不一致后会丢弃收到的帧,只有真正的目的主机才会接收并处理收到的帧。广播第二种发送方式是广播,表示帧从单一的源发送到共享以太网上的所有主机。广播帧的目的MAC地址为十六进制的FF:FF:FF:FF:FF:FF,所有收到该广播帧的主机都要接收并处理这个帧。广播方式会产生大量流量,导致带宽利用率降低,进而影响整个网络的性能。当需要网络中的所有主机都能接收到相同的信息并进行处理的情况下,通常会使用广播方式。组播第三种发送方式为组播,组播比广播更加高效。组播转发可以理解为选择性的广播,主机侦听特定组播地址,接收并处理目的MAC地址为该组播MAC地址的帧。组播MAC地址和单播MAC地址是通过第一字节中的第8个比特区分的。组播MAC地址的第8个比特为1,而单播MAC地址的第8个比特为0。当需要网络上的一组主机(而不是全部主机)接收相同信息,并且其他主机不受影响的情况下,通常会使用组播方式。发送与接收当主机接收到的数据帧所包含的目的MAC地址是自己时,会把以太网封装剥掉后送往上层协议。帧从主机的物理接口发送出来后,通过传输介质传输到目的端。共享网络中,这个帧可能到达多个主机。主机检查帧头中的目的MAC地址,如果目的MAC地址不是本机MAC地址,也不是本机侦听的组播或广播MAC地址,则主机会丢弃收到的帧。如果目的MAC地址是本机MAC地址,则接收该帧,检查帧校验序列(FCS)字段,并与本机计算的值对比来确定帧在传输过程中是否保持了完整性。如果帧的FCS值与本机计算的值不同,主机会认为帧已被破坏,并会丢弃该帧。如果该帧通过了FCS校验,则主机会根据帧头部中的Type字段来确定将帧发送给上层哪个协议处理。实际数据包分析:ARP类型数据包其他类型数据包:原文链接;以太网帧结构详解_曌赟的博客-CSDN博客发布于 2020-10-12 11:16计算机网络网络通信数据通信​赞同 53​​1 条评论​分享​喜欢​收藏​申请转载​文章被以下专栏收录网络协议详解网络协

【小菜学网络】MAC地址详解 - 知乎

【小菜学网络】MAC地址详解 - 知乎首发于小菜学编程切换模式写文章登录/注册【小菜学网络】MAC地址详解fasionchan上一小节介绍了以太网帧的结构,以及帧中各个字段的作用。参与以太网通讯的实体,由以太网地址唯一标识。以太网地址也叫做 MAC 地址,我们对它仍知之甚少。 以太网地址在不同场景,称谓也不一样,常用叫法包括这些: 以太网地址MAC 地址硬件地址物理地址网卡地址网卡在以太网中,每台主机都需要安装一个物理设备并通过网线连接到一起:这个设备就是 网卡 ( NIC ),网络接口卡 ( network interface card )的简称。有些文献也将网卡称为 网络接口控制器 ( network interface controller )。从物理的层面看,网卡负责将比特流转换成电信号发送出去; 反过来,也负责将检测到的电信号转换成比特流并接收。从软件的层面看,发送数据时,内核协议栈负责封装以太网帧(填充 目的地址 , 源地址 , 类型 和 数据 并计算 校验和),并调用网卡驱动发送; 接收数据时,负责验证 目的地址 、 校验和 并取出数据部分,交由上层协议栈处理。每块网卡出厂时,都预先分配了一个全球唯一的 MAC地址 ,并烧进硬件。 不管后来网卡身处何处,接入哪个网络,MAC 地址均不变。 当然,某些操作系统也允许修改网卡的 MAC 地址。MAC地址MAC 地址由 6 个字节组成( 48 位),可以唯一标识 $2^{48}$ ,即 281474976710656 个网络设备(比如网卡)。MAC 地址 6 个字节可以划分成两部分,如下图:3 字节长的 厂商代码 ( OUI ),由国际组织分配给不同的网络设备商;3 字节长的 序列号 ( SN ),由厂商分配给它生产的网络设备;厂商代码和序列号都是唯一分配,因此 MAC 地址是 全球唯一 的。冒分十六进制表示法MAC 地址 6 个字节如何展示呢? 是否能够作为 ASCII 来解读并显示?恐怕不能。一个字节总共有 8 个位,而 ASCII 只定义了其中的 7 位。况且 ASCII 中定义了很多控制字符,能显示的也只有字母、数字以及一些常用符号。以上述地址为例,只有 0x5B 这个字节是可以显示的,对应着字符 [ 。好在,我们可以用多个可读字符来表示一个原始字节。我们将一个字节分成两部分,高 4 位以及低 4 位,每部分可以用一个十六进制字符来表示。以 0x00 这个字节为例,可以用两个字符 00 表示:这样一来,整个地址可以用一个 12 字节长的字符串表示: 0010A4BA875B 。 为了进一步提高可读性,可以在中间插入冒号 : : 00:10:A4:BA:87:5B 。这就是 冒分十六进制表示法 ( colon hexadecimal notation )。注意到,冒分十六进制总共需要 17 个字节。 如果算上字符串结尾处的 \0 ,将达到 18 个字节,原始 MAC 地址的整整 3 倍!顺便提一下,十六进制字母字符用大小写都可以。网卡管理Linux 上有不少工具命令可以查看系统当前接入的网卡以及每张网卡的详细信息。首先是 ifconfig 命令,他默认显示已启用的网卡,详情中可以看到每张网卡的物理地址:fasion@u2004 [ ~ ] ➜ ifconfig

enp0s3: flags=4163 mtu 1500

inet 10.0.2.15 netmask 255.255.255.0 broadcast 10.0.2.255

inet6 fe80::a00:27ff:fe49:50dd prefixlen 64 scopeid 0x20

ether 08:00:27:49:50:dd txqueuelen 1000 (Ethernet)

RX packets 3702 bytes 4881568 (4.8 MB)

RX errors 0 dropped 0 overruns 0 frame 0

TX packets 538 bytes 42999 (42.9 KB)

TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0

enp0s8: flags=4163 mtu 1500

inet 192.168.56.2 netmask 255.255.255.0 broadcast 192.168.56.255

inet6 fe80::a00:27ff:fe56:831c prefixlen 64 scopeid 0x20

ether 08:00:27:56:83:1c txqueuelen 1000 (Ethernet)

RX packets 4183 bytes 1809871 (1.8 MB)

RX errors 0 dropped 0 overruns 0 frame 0

TX packets 2674 bytes 350013 (350.0 KB)

TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0

lo: flags=73 mtu 65536

inet 127.0.0.1 netmask 255.0.0.0

inet6 ::1 prefixlen 128 scopeid 0x10

loop txqueuelen 1000 (Local Loopback)

RX packets 679 bytes 1510416 (1.5 MB)

RX errors 0 dropped 0 overruns 0 frame 0

TX packets 679 bytes 1510416 (1.5 MB)

TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0例子中,系统总共有 3 块已启用网卡,名字分别是 enp0s3 、 enp0s8 以及 lo 。其中 lo 是环回网卡,用于本机通讯。ether 08:00:27:49:50:dd 表明,网卡 enp0s3 的物理地址是 08:00:27:49:50:dd 。 请注意,ifconfig 是一个比较老旧的命令,正在慢慢淡出历史舞台。 ip 命令也可以查看系统网卡信息,默认显示所有网卡:fasion@u2004 [ ~ ] ➜ ip link

1: lo: mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT group default qlen 1000

link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00

2: enp0s3: mtu 1500 qdisc fq_codel state UP mode DEFAULT group default qlen 1000

link/ether 08:00:27:49:50:dd brd ff:ff:ff:ff:ff:ff

3: enp0s8: mtu 1500 qdisc fq_codel state UP mode DEFAULT group default qlen 1000

link/ether 08:00:27:56:83:1c brd ff:ff:ff:ff:ff:ffip 命令输出信息比较紧凑, link/ether 08:00:27:49:50:dd 这行展示网卡的物理地址。ip 命令是一个比较新的命令,功能非常强大。它除了可以用于管理网络设备,还可以用于管理路由表,策略路由以及各种隧道。因此,推荐重点学习掌握 ip 命令的用法。编程获取网卡地址如果程序中需要用到网卡地址,如何获取呢?有个方法是执行 ip 命令输出网卡详情,然后从输出信息中截取网卡地址。例如:fasion@u2004 [ ~ ] ➜ ip link show dev enp0s3 | grep 'link/ether' | awk '{print $2}'

08:00:27:49:50:dd这种方法多用于 Shell 编程中。更优雅的办法是通过套接字编程,直接向操作系统获取。Linux 套接字支持通过 ioctl 系统调用获取网络设备信息,大致步骤如下:创建一个套接字,任意类型均可;准备 ifreq 结构体,用于保存网卡设备信息;将待查询网卡名填充到 ifreq 结构体;调用 ioctl 系统调用,向套接字发起 SIOCGIFHWADDR 请求,获取物理地址;如无错漏,内核将被查询网卡的物理地址填充在 ifreq 结构体 ifr_hwaddr 字段中;最后,附上一个完整的例子:#include

#include

#include

#include

#include

/**

* Convert binary MAC address to readable format.

*

* Arguments

* n: binary format, must be 6 bytes.

*

* a: buffer for readable format, 18 bytes at least(`\0` included).

**/

void mac_ntoa(unsigned char *n, char *a) {

// traverse 6 bytes one by one

sprintf(a, "%02x:%02x:%02x:%02x:%02x:%02x", n[0], n[1], n[2], n[3], n[4], n[5]);

}

int main(int argc, char *argv[]) {

if (argc < 2) {

fprintf(stderr, "no iface given\n");

return 1;

}

// create a socket, any type is ok

int s = socket(AF_INET, SOCK_STREAM, 0);

if (-1 == s) {

perror("Fail to create socket");

return 2;

}

// fill iface name to struct ifreq

struct ifreq ifr;

strncpy(ifr.ifr_name, argv[1], 15);

// call ioctl to get hardware address

int ret = ioctl(s, SIOCGIFHWADDR, &ifr);

if (-1 == ret) {

perror("Fail to get mac address");

return 3;

}

// convert to readable format

char mac[18];

mac_ntoa((unsigned char *)ifr.ifr_hwaddr.sa_data, mac);

// output result

printf("IFace: %s\n", ifr.ifr_name);

printf("MAC: %s\n", mac);

return 0;

}其中,mac_ntoa 函数调用字符串格式化函数 sprintf 将原始 MAC 地址转换成冒分十六进制形式。【小菜学网络】系列文章首发于公众号【小菜学编程】,敬请关注:发布于 2021-01-13 18:48Mac介质访问控制层(MAC)Mac Pro​赞同 8​​添加评论​分享​喜欢​收藏​申请转载​文章被以下专栏收录小菜学编程欢迎关注小菜,这里有你想要的编程

Network 之二 Ethernet(以太网)中的 MAC、MII、PHY 详解[通俗易懂]-腾讯云开发者社区-腾讯云

ork 之二 Ethernet(以太网)中的 MAC、MII、PHY 详解[通俗易懂]-腾讯云开发者社区-腾讯云全栈程序员站长Network 之二 Ethernet(以太网)中的 MAC、MII、PHY 详解[通俗易懂]关注作者腾讯云开发者社区文档建议反馈控制台首页学习活动专区工具TVP最新优惠活动文章/答案/技术大牛搜索搜索关闭发布登录/注册首页学习活动专区工具TVP最新优惠活动返回腾讯云官网全栈程序员站长首页学习活动专区工具TVP最新优惠活动返回腾讯云官网社区首页 >专栏 >Network 之二 Ethernet(以太网)中的 MAC、MII、PHY 详解[通俗易懂]Network 之二 Ethernet(以太网)中的 MAC、MII、PHY 详解[通俗易懂]全栈程序员站长关注发布于 2022-11-08 20:24:142.3K0发布于 2022-11-08 20:24:14举报文章被收录于专栏:全栈程序员必看全栈程序员必看大家好,又见面了,我是你们的朋友全栈君。

结构  从硬件的角度看,以太网接口电路主要由 MAC(Media Access Control,MAC)控制器和物理层接口 PHY(Physical Layer,PHY)两大部分构成。如下图所示:

MAC_PHY

  但是,在实际的设计中,以上三部分并不一定是独立分开的。 由于,PHY 整合了大量模拟硬件,而 MAC 则是典型的全数字器件。考虑到芯片面积及模拟/数字混合架构的原因,通常,将 MAC 集成进微控制器而将 PHY 留在片外。更灵活、密度更高的芯片技术已经可以实现 MAC 和 PHY 的单芯片整合。总的来说,可分为下列几种类型:CPU 集成 MAC 与 PHY,目前来说并不多见。

MAC_PHY_1CPU 集成 MAC,PHY 采用独立芯片,这种比较常见。

MAC_PHY_2CPU 不集成 MAC 与 PHY,MAC 与 PHY 采用集成芯片(形成一个独立的网卡),这种也比较常见。

MAC_PHY_3  MAC 及 PHY 工作在 OSI 七层模型的数据链路层和物理层。具体如下

MAC_PHY_OSI

  IEEE802.3 标准文档下载地址:https://ieeexplore.ieee.org/browse/standards/get-program/page/。它分为很多个 section。标准文档贼长,没有全部看过,大概第一部分是 10Mb/s 以太网(其中有关于 MAC 的规范),第二部分是 100BASE-T 100Mb/s 基带网络介绍,第三部分是 1000 Mb/s 基带网络介绍,第四部分是 10 Gb/s 基带网络介绍。但是,并不是说每部分都是独立的。

IEEE802.3什么是 MAC  MAC(Media Access Control,MAC)即媒体访问控制。该部分有两个概念:MAC 可以指的是一个硬件控制器,也可以指 MAC 通信协议。该协议位于 OSI 七层协议中数据链路层的下半部分,主要负责控制与连接物理层的物理介质。MAC 硬件大约就是下面的样子了:

MAC

  在发送数据的时候,MAC 协议可以事先判断是否可以发送数据,如果可以发送将给数据加上一些控制信息,最终将数据以及控制信息以规定的格式发送到物理层;在接收数据的时候,MAC 协议首先判断输入的信息并是否发生传输错误,如果没有错误,则去掉控制信息发送至 LLC(逻辑链路控制)层。该层协议是以太网 MAC,由 IEEE-802. 3 以太网标准定义。最新的 MAC 同时支持 10Mbps 和100Mbps 两种速率。  以太网数据链路层其实包含 MAC(介质访问控制)子层和 LLC(逻辑链路控制)子层。一块以太网卡 MAC 芯片的作用不但要实现 MAC 子层和 LLC 子层的功能,还要提供符合规范的 PCI 界面以实现和主机的数据交换。  MAC 从 PCI 总线收到 IP 数据包或者其他网络层协议的数据包后,将之拆分并重新打包成最大 1518Byte、最小 64Byte 的帧。这个帧里面包括了目标 MAC 地址、自己的源 MAC 地址和数据包里面的协议类型(比如IP数据包的类型用 80 表示),最后还有一个DWORD(4Byte)的 CRC 码。  可是目标的 MAC 地址是哪里来的呢?这牵扯到一个 ARP 协议(介乎于网络层和数据链路层的一个协议)。第一次传送某个目的 IP 地址的数据的时候,先会发出一个 ARP 包,其 MAC 的目标地址是广播地址,里面说到:“谁是 xxx.xxx.xxx.xxx 这个 IP 地址的主人?”因为是广播包,所有这个局域网的主机都收到了这个 ARP 请求。收到请求的主机将这个 IP 地址和自己的相比较,如果不相同就不予理会,如果相同就发出 ARP 响应包。这个 IP 地址的主机收到这个 ARP 请求包后回复的 ARP 响应里说到:“我是这个 IP 地址的主人”。这个包里面就包括了他的 MAC 地址。以后的给这个IP地址的帧的目标 MAC 地址就被确定了。(其它的协议如 IPX/SPX 也有相应的协议完成这些操作)  IP 地址和 MAC 地址之间的关联关系保存在主机系统里面,叫做 ARP 表。由驱动程序和操作系统完成。在 Windows 及 Linux 里面可以用 arp -a 的命令查看 ARP 表。

在这里插入图片描述

收到数据帧的时候也是一样,做完 CRC 校验以后,如果没有 CRC 效验错误,就把帧头去掉,把数据包拿出来通过标准的接口传递给驱动和上层的协议栈。最终正确的达到我们的应用程序。什么是 MII  MII(Media Independent Interface)即媒体独立接口,MII 接口是 MAC 与 PHY 连接的标准接口。它是 IEEE-802.3 定义的以太网行业标准。MII 接口提供了 MAC 与 PHY 之间、PHY 与 STA(Station Management)之间的互联技术,该接口支持 10Mb/s 与 100Mb/s 的数据传输速率,数据传输的位宽为 4 位。“媒体独立” 表明在不对 MAC 硬件重新设计或替换的情况下,任何类型的 PHY 设备都可以正常工作。802.3 协议最多支持 32 个 PHY,但有一定的限制:要符合协议要求的 connector 特性。MII 接口如下图所示:

MII

  提到 MII,就有可能涉及到 RS,PLS,STA 等名词术语,下面讲一下他们之间对应的关系。  所谓 RS 即 Reconciliation sublayer,它的主要功能主要是提供一种 MII 和 MAC/PLS 之间的信号映射机制。它们(RS与MII)之间的关系如下图:

RS_MII

MII 的 Management Interface 是与 STA(Station Management)相连的。 关于本节,具体可参考 IEEE 以太网标准 802.3 的 22.3 Signal timing characteristics 节,其中包含时钟信号等更详细内容。

  MII 接口主要包括四个部分。一是从 MAC 层到 PHY 层的发送数据接口,二是从 PHY 层到 MAC 层的接收数据接口,三是从PHY 层到 MAC 层的状态指示信号,四是 MAC 层和 PHY 层之间传送控制和状态信息的 MDIO 接口。

MII_MAC_PHY

MII 包括一个数据接口,以及一个 MAC 和 PHY 之间的管理接口:数据接口: 包括分别用于发送器和接收器的两条独立信道。每条信道都有自己的数据、时钟和控制信号。MII 数据接口总共需要 16 个信号,包括TX_ER(transmit coding error): TX_ER 同步于 TX_CLK,在数据传输过程中,如果 TX_ER 有效超过一个时钟周期,并且此时TX_EN 是有效的,则数据通道中传输的数据是无效的,没用的。注:当 TX_ER 有效并不影响工作在 10Mb/s 的 PHY 或者 TX_EN 无效时的数据传输。在 MII 接口的连线中,如果 TX_ER 信号线没有用到,必须将它下拉接地。TXD<3:0>(transmit data): TXD 由 RS 驱动,同步于 TX_CLK,在 TX_CLK 的时钟周期内,并且TX_EN 有效,TXD 上的数据被 PHY 接收,否则 TXD 的数据对 PHY 没有任何影响。TX_EN: 发送使能。TX_EN 由 Reconciliation 子层根据 TX_CLK 上升沿同步进行转换。TX_CLK(transmit clock): TX_CLK (Transmit Clock) 是一个连续的时钟信号(即系统启动,该信号就一直存在),它是 TX_EN、TXD、TX_ER(信号方向为从 RS 到 PHY)的参考时钟,TX_CLK 由 PHY 驱动 TX_CLK 的时钟频率是数据传输速率的 25%,偏差 ±100ppm。例如,100Mb/s 模式下,TX_CLK 时钟频率为 25MHz,占空比在 35% 至 65% 之间。COL(collision detected): COL 不需要同步于参考时钟。The behavior of the COL signal is unspecified when the duplex mode bit0.8 inthe control register is set to a logic one(自动协商禁止,人工设为全双工模式), or when the Auto-Negotiation process selects a full duplex mode of operation。即半双工模式信号有效,全双工模式信号无效。RXD<3:0>(receive data): RXD由RS驱动,同步于 RX_CLK,在 RX_CLK 的时钟周期内,并且 RX_DV 有效,RXD 上的数据被RS 接收,否则 RXD 的数据对 RS 没有任何影响。While RX_DV is de-asserted, the PHY may provide a False Carrier indication by asserting the RX_ER signal while driving the value <1110> onto RXD<3:0>。RX_ER(receive error): RX_ER 同步于 RX_CLK,其在 RX 通道中的作用类似于 TX_ER 对于 TX 通道数据传输的影响。RX_CLK: 它与 TX_CLK 具有相同的要求,所不同的是它是 RX_DV、RXD、RX_ER(信号方向是从 PHY 到 RS)的参考时钟。RX_CLK 同样是由 PHY 驱动,PHY 可能从接收到的数据中提取时钟 RX_CLK,也有可能从一个名义上的参考时钟(e.g., the TX_CLK reference)来驱动RX_CLK。CRS(carrier sense): CRS 不需要同步于参考时钟,只要通道存在发送或者接收过程,CRS 就需要有效。The behavior of the CRS signal is unspecified when the duplex mode bit0.8 inthe control register is set to a logic one(自动协商禁止,人工设为全双工模式), or when the Auto-Negotiation process selects a full duplex mode of operation,即半双工模式信号有效,全双工模式信号无效。RX_DV(Receive Data Valid): RXD_DV 同步于 RX_CLK,被 PHY 驱动,它的作用如同于发送通道中的 TX_EN,不同的是在时序上稍有一点差别:为了让数据能够成功被RS接收,要求RXD_DV有效的时间必须覆盖整个 FRAME 的过程,即starting no later than the Start Frame Delimiter (SFD) and excluding any End-of-Frame delimiter。

MII以4位半字节方式传送数据双向传输,时钟速率25MHz。其工作速率可达100Mb/s。MII 管理接口: 是个双信号接口,通过管理接口,MAC 就能监视和控制 PHY。其管理是使用 SMI(Serial Management Interface) 总线通过读写 PHY 的寄存器来完成的。一个是时钟信号(***MDC (management data clock)***)。另一个是数据信号(***MDIO (management data input/output)***)。MDC: 由站管理实体向 PHY 提供,作为在 MDIO 信号上传送信息的定时参考。 MDC 是一种非周期性的信号,没有最高或最低时间。 无论 TX_CLK 和 RX_CLK 的标称周期如何,MDC 的最小高低时间应为 160 ns,MDC 的最小周期为 400 ns。MDIO: 是 PHY 和 STA 之间的双向信号。 它用于在 PHY 和 STA 之间传输控制信息和状态。 控制信息由 STA 同步地针对 MDC 驱动并且由 PHY 同步地采样。 状态信息由 PHY 针对 MDC 同步驱动并由 STA 同步采样。  PHY 里面的部分寄存器是 IEEE 定义的,这样PHY把自己的目前的状态反映到寄存器里面,MAC 通过 SMI 总线不断的读取PHY 的状态寄存器以得知目前 PHY 的状态。例如连接速度、双工的能力等。当然也可以通过 SMI 设置 PHY的寄存器达到控制的目的。例如流控的打开关闭、自协商模式还是强制模式等。不论是物理连接的MII总线和 SMI 总线还是 PHY 的状态寄存器和控制寄存器都是由IEEE的规范的。因此不同公司的 MAC 和 PHY 一样可以协调工作。当然为了配合不同公司的 PHY 的自己特有的一些功能,驱动需要做相应的修改。  MII 支持 10Mbps 和 100Mbps 的操作,一个接口由 14 根线组成,它的支持还是比较灵活的。但是有一个缺点是因为它一个端口用的信号线太多,如果一个 8 端口的交换机要用到 112 根线,16 端口就要用到 224 根线,到 32 端口的话就要用到 448 根线。一般按照这个接口做交换机是不太现实的。所以现代的交换机的制作都会用到其它的一些从 MII 简化出来的标准,比如 RMII、SMII、GMII等。RMII(Reduced Media Independant Interface)  简化媒体独立接口是标准的以太网接口之一,比 MII 有更少的 I/O 传输。RMII 口是用两根线来传输数据的,MII 口是用 4 根线来传输数据的,GMII 是用 8 根线来传输数据的。MII/RMII 只是一种接口,对于10Mbps 线速,MII 的时钟速率是 2.5MHz 就可以了,RMII 则需要 5MHz;对于 100Mbps 线速,MII 需要的时钟速率是 25MHz,RMII 则是 50MHz。

  MII/RMII 用于传输以太网包,在 MII/RMII 接口是4/2bit的,在以太网的PHY里需要做串并转换,编解码等才能在双绞线和光纤上进行传输,其帧格式遵循IEEE 802.3(10M)/IEEE 802.3u(100M)/IEEE 802.1q(VLAN)。以太网帧的格式为:前导符+开始位+目的mac地址+源mac地址+类型/长度+数据+padding(optional)+32bitCRC。如果有vlan,则要在类型/长度后面加上2个字节的vlan tag,其中12bit来表示vlan id,另外4bit表示数据的优先级!GMII(Gigabit MII)  GMII是千兆网的MII接口,这个也有相应的RGMII接口,表示简化了的GMII接口。

  GMII采用8位接口数据,工作时钟125MHz,因此传输速率可达1000Mbps。同时兼容MII所规定的10/100 Mbps工作方式。GMII接口数据结构符合IEEE以太网标准,该接口定义见IEEE 802.3-2000。发送器: 在千兆速率下,向PHY提供GTXCLK信号、TXD、TXEN、TXER信号与此时钟信号同步。否则在10/100Mbps速率下,PHY提供TXCLK时钟信号,其它信号与此信号同步。其工作频率为25MHz(100M网络)或2.5MHz(10M网络)。GTXCLK——吉比特TX…信号的时钟信号(125MHz)TXCLK——10/100Mbps信号时钟TXD[7…0]——被发送数据TXEN——发送器使能信号TXER——发送器错误(用于破坏一个数据包)接收器:RXCLK——接收时钟信号(从收到的数据中提取,因此与GTXCLK无关联)RXD[7…0]——接收数据RXDV——接收数据有效指示RXER——接收数据出错指示COL——冲突检测(仅用于半双工状态)管理配置: 管理配置接口控制PHY的特性。该接口有32个寄存器地址,每个地址16位。其中前16个已经在“IEEE 802.3,2000-22.2.4 Management Functions”中规定了用途,其余的则由各器件自己指定。MDC——配置接口时钟MDIO——配置接口I/O什么是PHY  PHY(Physical Layer,PHY)是 IEEE802.3 中定义的一个标准模块,STA(station management entity,管理实体,一般为MAC 或 CPU)通过 SMI(Serial Manage Interface)对 PHY 的行为、状态进行管理和控制,而具体管理和控制动作是通过读写 PHY 内部的寄存器实现的。一个 PHY 的基本结构如下图:

PHY

  PHY 是物理接口收发器,它实现 OSI 模型的物理层。IEEE-802.3 标准定义了以太网 PHY。包括 MII/GMII (介质独立接口) 子层、PCS(物理编码子层)、PMA(物理介质附加)子层、PMD(物理介质相关)子层、MDI子层。它符合 IEEE-802.3k 中用于 10BaseT(第14条) 和 100BaseTX(第24条和第25条) 的规范。 PHY 寄存器在 IEEE802.3 标准的 22.2.4 Management functions 节有介绍,但不涉及所有的寄存器,个别寄存器需要到其它章节中看,当然,文档里面也提到该在哪里找到哪个寄存器。

PHY寄存器  PHY 寄存器的地址空间为 5 位,从 0 到 31 最多可以定义 32 个寄存器(随着芯片功能不断增加,很多 PHY 芯片采用分页技术来扩展地址空间以定义更多的寄存器),IEEE802.3 定义了地址为 0-15 这 16 个寄存器的功能,地址16 – 31的寄存器留给芯片制造商自由定义,如下表所示。

PHY_REG (1)官方介绍请参考 IEEE802.3 标准的 22.2.4 Management functions 节。

(2)上图的 B 和 E 表示了,在特定接口下,寄存器是基本的还是扩展的。例如:MII 接口下只有 0 和 1 寄存器是基本的,其它的是扩展的。注意:所为扩展是指留给 IEEE 以后的扩展特性用,不是给 PHY 厂商的扩展,PHY 厂商自定义的只能是 16~31 号寄存器

(3)在 IEEE 标准文档及某些 PHY 手册中,某寄存器的比特(bit)用 X.y 表示,如 0.15 表示第 0 寄存器的第 15 位。

Control Register (Register 0)  寄存器 0 是 PHY 控制寄存器,通过 Control Register 可以对 PHY 的主要工作状态进行设置。应该保证控制寄存器每个位的默认值,以便在没有管理干预的情况下,上电或复位时 PHY 的初始状态为正常操作状态。Control Register 的每一位完成的功能见下。

PHY_CTRL_REG Reset: 通过将位 0.15 设置为逻辑 1 来完成复位 PHY。 该操作应将状态和控制寄存器设置为其默认状态。 因此,此操作可能会改变PHY 的内部状态以及与 PHY 关联的物理链路的状态。复位过程中 Bit15 保持为 1,复位完成之后该位应该自动清零。 在复位过程完成之前,PHY 不需要接受对控制寄存器的写入操作,并且在复位过程完成之前写入 0.15 以外的控制寄存器位可能不起作用。 复位过程应在0.15 位设置的 0.5 s 内完成。

(1)一般要改变端口的工作模式(如速率、双工、流控或协商信息等)时,在设置完相应位置的寄存器之后,需要通过 Reset 位复位 PHY 来使配置生效。

(2)该比特位的默认值为 0。

Loopback: 当位 0.14 被设置为逻辑 1 时,PHY 应置于环回操作模式。 当位 0.14 置位时,PHY 接收电路应与网络介质隔离,并且MII 或 GMII 处的 TX_EN 断言不应导致网络介质上的数据传输。 当位 0.14 置位时,PHY 应接受来自 MII 或 GMII 发送数据路径的数据,并将其返回给 MII 或 GMII 接收数据路径,以响应TX_EN 的断言。 当位 0.14 置位时,从断言 TX_EN 到断言 RX_DV 的延迟应小于 512 BT。 当位 0.14 置位时,除非设置了位 0.7,否则 COL 信号应始终保持无效。 清 0.14 位为零允许正常操作。

  Loopback 是一个调试以及故障诊断中常用的功能,Bit14 置 1 之后,PHY 和外部 MDI 的连接在逻辑上将被断开,从 MAC 经过 MII/GMII(也可能是其他的 MAC/PHY 接口)发送过来的数据将不会被发送到 MDI 上,而是在 PHY 内部(一般在 PCS)回环到本端口的 MII/GMII 接收通道上,通过 Loopback 功能可以检查 MII/GMII 以及PHY接口部分是否工作正常,对于端口不通的情况可用于故障定位。

(1)需要注意的是,很多时候 PHY 设置 Loopback 后端口可能就 Link down 了,MAC 无法向该端口发帧,这时就需要通过设置端口Force Link up 才能使用 Loopback 功能。

(2)该比特位的默认值为 0。

Speed Selection: Bit13 和 Bit6 两位联合实现 对端口的速率控制功能。链接速度可以通过自动协商过程或手动速度选择来选择。 通过将位0.12清零来禁用自动协商时,允许手动速度选择。

当禁用自动协商并将位0.6清除为逻辑0时,将位0.13设置为逻辑1将PHY配置为100 Mb / s操作,并将位0.13清除为逻辑0将PHY配置为10 Mb / s操作 。当禁用自动协商并将位0.6设置为逻辑1时,将位0.13清零为逻辑0会选择1000 Mb / s的操作。 将位0.6和0.13设置为逻辑1的组合保留用于未来的标准化。当使能自动协商时,可以读取或写入位0.6和0.13,但位0.6和位0.13的状态对链路配置没有影响,位0.6和位0.13不需要反映当它被读取时链接。  如果 PHY 通过比特 1.15:9 和比特 15.15:12 报告它不能工作在所有速度时,则比特0.6和0.13的值应该与PHY可以操作的速度相对应。并且任何试图将该位设置为无效的操作均将被忽略。 (1)对Speed Selection的修改设置,往往需要复位端口才能配置生效。因此在设置该位置的时候需要检查自动协商的设置并通过Bit15复位端口。

(2)位0.6和0.13的默认值是根据位1.15:9和15.15:12所指示的PHY可以操作的***最高数据速率***的编码组合。

Auto-Negotiation Enable: 自动协商过程应通过将位0.12设置为逻辑1来启用。 如果位0.12设置为逻辑1,则位0.13、0.8和0.6不应对链路配置和除了自动协商协议规定之外的站操作产生影响。 如果将位0.12清零为逻辑0,则无论链路配置和自动协商过程的先前状态如何,位0.13、0.8和0.6都将确定链路配置。

  如果PHY通过位1.3报告它缺乏执行自动协商的能力,则PHY应在位0.12返回零值。 如果PHY通过位1.3报告它缺乏执行自动协商的能力,则位0.12应该始终写为0,并且任何尝试将1写入位0.12都应该被忽略。

必须注意的是,对于1000BASE-T接口,自动协商必须打开。

Power Down: 通过将位0.11设置为逻辑1,可以将PHY置于低功耗状态。 清0.11位为零允许正常操作。 PHY在掉电状态下的具体行为是特定实现的。 处于掉电状态时,PHY应响应管理事务。 在转换到掉电状态期间和处于掉电状态期间,PHY不应在MII或GMII上产生寄生信号。

  当位0.11或位0.10被设置为逻辑1时,PHY不需要满足RX_CLK和TX_CLK信号功能要求。 在位0.11和0.10清零后,PHY应在0.5 s内满足22.2.2中定义的RX_CLK和TX_CLK信号功能要求。

(1)Power Down模式一般在软件shut down端口的时候使用,需要注意的是端口从Power Down模式恢复,需要复位端口以保证端口可靠的连接。

(2)该位的默认值为 0。

Isolate: 通过将位0.10设置为逻辑1,PHY可能被迫将其数据路径与MII或GMII电隔离。 清零位0.10允许正常操作。 当PHY与MII或GMII隔离时,它不会响应TXD数据包和TX_EN,TX_ER、GTX_CLK的输入。并且它的TX_CLK,RX_CLK,RX_DV,RX_ER,RXD数据包、COL和CRS输出均应为高阻态。 当PHY与MII或GMII隔离时,它将响应管理事务(MDC/MDIO接口的信号)。

(1)IEEE802.3没有对Isolate 时MDI接口的状态进行规范,此时MDI端可能还在正常运行。Isolate在实际应用中并没有用到。

(2)由于目前很多百兆的PHY芯片其MAC接口主流的都是SMII/S3MII,8个端口的接口是相互关联的,一个端口设置Isolate可能会影响其他端口的正常使用,因此在使用中注意不要随意更改bit10的状态。

Restart Auto-Negotiation: 如果PHY通过位1.3报告它缺乏执行自动协商的能力,或者如果自动协商被禁用,则PHY应在位0.9返回零值。 如果PHY通过位1.3报告它缺乏执行自动协商的能力,或者如果禁用了自动协商,则应将位0.9始终写为0,并且任何尝试将1写入位0.9应被忽略。

  Bit9置1将重新启动端口的自动协商进程,当然前提是Auto-Negotiation Enable是使能的。

一般在修改端口的自动协商能力信息之后通过Bit9置1重新启动自动协商来使端口按照新的配置建立link。

Duplex Mode: 可以通过自动协商过程或手动双面选择来选择双工模式。 通过将位0.12清零来禁用自动协商时,允许手动双面选择。

当禁用自动协商时,将位0.8设置为逻辑1将PHY配置为全双工操作,并将位0.8清零以将逻辑0配置为用于半双工操作的PHY。当启用自动协商时,可以读取或写入位0.8,但位0.8的状态对链路配置没有影响。  如果PHY通过位1.15:9和15.15:12报告它只能在一个双工模式下工作,则位0.8的值应该与PHY可以工作的模式相对应,并且任何尝试改变将该位0.8修改为无效指的操作应被忽略。 对Duplex Mode的修改配置也需要复位端口才能生效。

Collision Test: 冲突信号(COL)测试开关。在需要对COL信号进行测试时,可以通过Bit7置1,这时PHY将输出一个COL脉冲以供测试。实际测试操作中也可以将端口配置为半双工状态,通过发帧冲突来测试COL信号,因此该配置实用价值不大。Unidirectional enable: 如果PHY通过比特1.7报告它不具备编码和传输来自媒体独立接口的数据的能力,而不管PHY是否确定已建立有效链路,则PHY应在比特0.5中返回零值,并且 任何尝试写一个到位0.5应该被忽略。Status register  寄存器1是PHY状态寄存器,主要包含PHY的状态信息,大多数bit的值都是由芯片厂家确定的,每一个bit的功能在表3种已有详细说明。

PHY_STA_REG

寄存器中各位的详细说明如下:100BASE-T4 ability: 当读为逻辑1时,位1.15指示PHY有能力使用100BASE-T4信令规范执行链路发送和接收。 当读为逻辑0时,位1.15表示PHY缺乏使用100BASE-T4信令规范执行链路发送和接收的能力。100BASE-X full duplex ability: 当读为逻辑1时,位1.14指示PHY有能力使用100BASE-X信令规范执行全双工链路传输和接收。 当作为逻辑0读取时,bit1.14表示PHY缺乏使用100BASE-X信令规范执行全双工链路传输和接收的能力。100BASE-X half duplex ability: 当读为逻辑1时,位1.13指示PHY有能力使用100BASE-X信令规范执行半双工链路传输和接收。 当读为逻辑0时,位1.13指示PHY缺乏使用100BASE-X信令规范执行半双工链路传输和接收的能力。其他同类型的值意义基本与上面几个相同:指示PHY所具有的工作模式能力,不再一一说明。Unidirectional ability: 当读为逻辑1时,位1.7指示PHY具有编码和传输来自媒体独立接口的数据的能力,而不管PHY是否确定已建立有效链路。 当读为逻辑0时,位1.7指示PHY只有在PHY确定已建立有效链路时才能从媒体独立接口传输数据。MF preamble suppression ability: 当读为逻辑1时,位1.6指示PHY能够接受管理帧,而不管它们是否在22.2.4.5.2中描述的前导码模式之前。 当读为逻辑0时,位1.6指示PHY不能接受管理帧,除非它们之前是22.2.4.5.2中描述的前导码模式。Auto-Negotiation Complete: 当读为逻辑1时,位1.5指示自动协商过程已完成,并且由自动协商协议(条款28或条款37)实施的扩展寄存器的内容是有效的。 当读为逻辑0时,位1.5指示自动协商过程尚未完成,并且扩展寄存器的内容由自动协商协议的当前状态定义,或者为手动配置写入。 如果自动协商通过清除位0.12禁用,则PHY应在位1.5返回零值。 如果PHY缺乏执行自动协商的能力,它还应在位1.5返回零值。 在调试以及异常故障处理时,可以通过该位寄存器的状态判断AN是否成功,从而进一步的检查AN相关的设置是否正确,或者芯片的AN功能是否正常等。

Remote Fault: 当读为逻辑1时,位1.4表示检测到远程故障状态。 故障类型以及故障检测的标准和方法是PHY特定的。 远程故障位必须使用锁存功能来实现,以便发生远程故障将导致远程故障位置位,并保持置位状态直至被​​清除。 每当通过管理接口读取寄存器1时,远程故障位应清零,并且还应通过PHY复位清零。

  远端错误指示位。Bit4=1代表连接对端(Link Partner)出错,至于出错的具体类型以及错误检测机制在规范中并没有定义,由PHY的制造商自由发挥,一般的厂商都会在其他的寄存器(Register16-31由厂商自行定义)指示比较详细的错误类型。在与端口相关的故障查证中,Remote Fault是一个重要的指示信息,通过互联双方的Remote Fault信息(可能要加上其他的具体错误指示),可以帮助定位故障原因。Auto-Negotiation ability: 当读为逻辑1时,位1.3指示PHY有能力执行自动协商。 当读为逻辑0时,位1.3指示PHY缺乏执行自动协商的能力。Link Status: 当读为逻辑1时,位1.2指示PHY已经确定已建立有效链路。 当作为逻辑0读取时,位1.2指示该链接无效。 确定链路有效性的标准是PHY特定的。 链路状态位应该使用锁存功能来实现,以便发生链路故障情况将导致链路状态位清零并保持清零,直到通过管理接口读取。 此状态指示旨在支持在30.5.1.1.4,aMediaAvailable中定义的管理属性。

  实际应用中一般都是通过Bit2来判断端口的状态。而且,一般的MAC芯片也是通过轮询PHY的这个寄存器值来判断端口的Link状态的(这个过程可能有不同的名称,比如BCM叫做Link Scan,而Marvell叫做PHY Polling。)如前所述,在AN Enable的情况下,Link Status的信息只有在Auto-Negotiation Complete指示已经完成的情况下才是正确可靠的,否则有可能出错。Jabber Detect: 当作为逻辑1读取时,位1.1指示已经检测到爆音条件。 此状态指示旨在支持30.5.1.1.6中定义的管理属性,aJabber和30.5.1.3.1 nJabber中定义的MAU通知。 检测Jabber条件的标准是PHY特定的。 Jabber检测位应该使用锁存功能来实现,以便发生Jabber条件将导致Jabber检测位置位,并保持置位状态直至被​​清除。 每次通过管理接口读取寄存器1时,Jabber检测位应清零,并且还应通过PHY复位清零。

  IEEE802.3对Jabber的解释是“A condition wherein a station transmits for a period of time longer than the maximum permissible packet length, usually due to a fault condition”。这一位指示的是Link Partner发送的时间超过了规定的最大长度。值得注意的是,Jabber Detect只有在10BASE-T模式下才有意义,100和1000M模式是没有定义Jabber这一功能的。PHY Identifier Register  寄存器2和3存放PHY芯片的型号代码,寄存器2(PHY ID1)为高16位,而寄存器3(PHY ID2)为低16位。由芯片制造商自行定义,实际应用中软件通过读取这两个寄存器的内容可以识别PHY的型号和版本。

  PHY标识符应由由IEEE分配给PHY制造商的组织唯一标识符(OUI)的(只需要使用第3至第24位,共22位),加上6位制造商的型号以及4位制造商的修订版编号组成。 PHY标识符旨在提供足够的信息来支持30.1.2中所要求的oResourceTypeID对象。

  OUI的第三位分配给位2.15,OUI的第四位分配给位2.14,依此类推。 位2.0包含OUI的第十八位。 位3.15包含OUI的第十九位,位3.10包含OUI的第二十四位。 位3.9包含制造商型号的MSB。 位3.4包含制造商型号的LSB。 位3.3包含制造商版本号的MSB,位3.0包含制造商版本号的LSB。具体如下图所示:

PHY_ID_REGAuto-Negotiation Advertisement Register (Register 4) (R/W)  寄存器4是自动协商的能力通告寄存器,在AN Enable的前提下(见寄存器0),端口根据该寄存器的相关配置将自动协商信息通过FLP在MDI上进行通告。当AN配置为Disable状态的时候,寄存器4的配置将不起作用,端口的工作模式由控制寄存器中的配置决定。

  该寄存器包含PHY的通告能力,它们将在自动协商期间传送给其链接伙伴。 基本页的位定义在IEEE标准的28.2.1.2中定义。 上电时,在自动协商开始之前,该寄存器应具有以下默认配置:Selector Field (4.4:0): 被设置为适当的代码,如IEEE标准的附件28A中所规定。Reserved(4.14): 被设置为逻辑0。Technology Ability Field(4.11:5): 根据MII状态寄存器(寄存器1)(1.15:11)中设置的值或等效值设置。 另见28.2.1.2.3和附件28D。

PHY_REG_4Link codeword encoding(基本链路码字)  在FLP Burst内传输的基本链路代码字(基本页面)应该传达如图28-7所示的编码。 自动协商功能可以使用下一页功能支持其他页面。 下一页交换中使用的链接代码字的编码在28.2.3.4中定义。 在FLP Burst中,D0应该是第一个传输的位。

这里写图片描述Next Page function  下一页功能使用标准的自动协商仲裁机制来允许交换任意的数据。 数据由可选的下一页信息携带,其遵循用于基本链接码字的传输和确认过程。 定义了四种类型的下一页编码:消息页面,未格式化页面,扩展消息页面和扩展的未格式化页面。

  关于该部分,具体见IEEE标准的28.2.3.4 Next Page function。

  在IEEE标准中,Auto-Negotiation Advertisement Register中的各部分全部是在独立章节中进行介绍的。具体如下:Selector Field: 选择器字段(S [4:0])是一个5位宽的字段,编码32个可能的消息。 链路码字中的选择器字段S [4:0]应用于识别自动协商发送的消息的类型。 下表列出了可能发送的消息的类型。 随着新消息的发展,该表格将相应更新。

Selector Field

未指定的组合保留供将来使用。 不会传输选择器字段的预留组合。***我们所接触的以太网PHY遵从IEEE802.3规范,Selector Field=0001,该区域不可随意更改(很多PHY将此区域设计为只读寄存器,以免被修改)***。Technology Ability Field: 技术能力字段(A [6:0])是一个7位宽的字段,其中包含指示选择器字段值特定的支持技术的信息。 这些位被映射到各个技术,以便能够针对单个选择器字段值并行通告能力。 附录28B.2和附件28D描述了IEEE 802.3选择器的技术能力字段编码。 链接代码字中可能会公布多种技术。 设备应支持其宣传的技术的数据服务能力。

Technology Ability FieldExtended Next Page: 扩展下一页(XNP)被编码在基本链路码字的位D12中。 扩展下一页位指示本地设备在设置为逻辑1时支持扩展下一页的传输,并指示本地设备在设置为逻辑0时不支持扩展下一页。 Extended Next Page的使用与协商的数据速率,媒体或链接技术是正交的。 扩展下一页位按照28.2.3.4中的扩展下一页功能规范使用。Next Page: 无论选择器字段值还是链接码字编码,下一页(NP)都在D15位编码。 支持附加链接码字编码的传输和接收是可选的。 如果不支持Next Page功能,NP位应始终设置为逻辑0。 如果设备实现下一页功能并希望进行下一页交换,则应将NP位设置为逻辑1。 设备可以实现下一页功能,并通过将NP位设置为逻辑0来选择不参与下一页交换。 下一页功能在28.2.3.4中定义。Remote Fault: 远程故障(RF)编码在基本链路码字的位D13中。 默认值是逻辑零。 远程故障位为传输简单的故障信息提供了一种标准的传输机制。 当自动协商通告寄存器(寄存器4)中的RF位设置为逻辑1时,发送的基本链路码字中的RF位被设置为逻辑1。 当接收到的基本链路代码字中的RF位被设置为逻辑1时,如果存在MII管理功能,则MII状态寄存器(寄存器1)中的远程故障位将被设置为逻辑1。Auto-Negotiation Link Partner ability register (Register 5) (RO)  寄存器5保存的是本端PHY接收到的对端PHY所通告的端口能力,寄存器5的结构和寄存器4基本一致。Auto-Negotiation Expansion Register (Register 6) (RO)  寄存器6保存了PHY自动协商过程的异常信息。从这个寄存其中我们可以获取到Link Partner子否支持自动协商以及自动协商下一页有没有收到的信息。

Auto-Negotiation Expansion RegisterAuto-Negotiation Next Page transmit register (Register 7) (R/W)  自动协商下一页发送寄存器包含在支持下一页功能时要发送的下一页链接码字。 (见表28-6)内容在28.2.3.4中定义。 上电时,该寄存器应包含默认值2001H,该值表示消息代码设置为Null消息的消息页面。 该值可以由设备希望传输的任何有效的下一页消息代码替换。 写入该寄存器应将mr_next_page_loaded设置为true。

Register 7Auto-Negotiation Link Partner Received Next Page register (Register 8) (RO)Register 8未完待续。。。附件无参考文档IEEE Standard for Ethernet网络版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。 发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/190748.html原文链接:https://javaforall.cn本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。 原始发表:2022年9月22日 ,如有侵权请联系 cloudcommunity@tencent.com 删除前往查看单片机本文分享自 作者个人站点/博客 前往查看如有侵权,请联系 cloudcommunity@tencent.com 删除。本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!单片机评论登录后参与评论0 条评论热度最新登录 后参与评论推荐阅读LV.关注文章0获赞0目录结构什么是 MAC什么是 MIIRMII(Reduced Media Independant Interface)GMII(Gigabit MII)什么是PHYPHY寄存器Control Register (Register 0)Status registerPHY Identifier RegisterAuto-Negotiation Advertisement Register (Register 4) (R/W)Auto-Negotiation Link Partner ability register (Register 5) (RO)Auto-Negotiation Expansion Register (Register 6) (RO)Auto-Negotiation Next Page transmit register (Register 7) (R/W)Auto-Negotiation Link Partner Received Next Page register (Register 8) (RO)附件参考文档领券社区专栏文章阅读清单互动问答技术沙龙技术视频团队主页腾讯云TI平台活动自媒体分享计划邀请作者入驻自荐上首页技术竞赛资源技术周刊社区标签开发者手册开发者实验室关于社区规范免责声明联系我们友情链接腾讯云开发者扫码关注腾讯云开发者领取腾讯云代金券热门产品域名注册云服务器区块链服务消息队列网络加速云数据库域名解析云存储视频直播热门推荐人脸识别腾讯会议企业云CDN加速视频通话图像分析MySQL 数据库SSL 证书语音识别更多推荐数据安全负载均衡短信文字识别云点播商标注册小程序开发网站监控数据迁移Copyright © 2013 - 2024 Tencent Cloud. All Rights Reserved. 腾讯云 版权所有 深圳市腾讯计算机系统有限公司 ICP备案/许可证号:粤B2-20090059 深公网安备号 44030502008569腾讯云计算(北京)有限责任公司 京ICP证150476号 |  京ICP备11018762号 | 京公网安备号11010802020287问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档Copyright © 2013 - 2024 Tencent Cloud.All Rights Reserved. 腾讯云 版权所有登录 后参与评论00

MAC地址_百度百科

址_百度百科 网页新闻贴吧知道网盘图片视频地图文库资讯采购百科百度首页登录注册进入词条全站搜索帮助首页秒懂百科特色百科知识专题加入百科百科团队权威合作下载百科APP个人中心MAC地址播报讨论上传视频媒体访问控制地址收藏查看我的收藏0有用+10本词条由“科普中国”科学百科词条编写与应用工作项目 审核 。MAC地址(英语:Media Access Control Address),直译为媒体存取控制位址,也称为局域网地址(LAN Address),MAC位址,以太网地址(Ethernet Address)或物理地址(Physical Address),它是一个用来确认网络设备位置的位址。在OSI模型中,第三层网络层负责IP地址,第二层数据链路层则负责MAC位址 [1]。MAC地址用于在网络中唯一标示一个网卡,一台设备若有一或多个网卡,则每个网卡都需要并会有一个唯一的MAC地址 [2]。中文名MAC地址外文名Media Access Control Address别    名MAC位址、硬件地址作    用用来定义网络设备的位置特    点唯一性所属领域计算机技术目录1简介2结构3工作过程4作用5获取方法6与IP地址区别简介播报编辑MAC地址也叫物理地址、硬件地址,由网络设备制造商生产时烧录在网卡(Network lnterface Card)的EPROM(一种闪存芯片,通常可以通过程序擦写)。IP地址与MAC地址在计算机里都是以二进制表示的,IP地址是32位的,而MAC地址则是48位的 [3]。MAC地址的长度为48位(6个字节),通常表示为12个16进制数,如:00-16-EA-AE-3C-40就是一个MAC地址,其中前3个字节,16进制数00-16-EA代表网络硬件制造商的编号,它由IEEE(电气与电子工程师协会)分配,而后3个字节,16进制数AE-3C-40代表该制造商所制造的某个网络产品(如网卡)的系列号。只要不更改自己的MAC地址,MAC地址在世界是唯一的。形象地说,MAC地址就如同身份证上的身份证号码,具有唯一性 [3]。结构播报编辑网络中每台设备都有一个唯一的网络标识,这个地址叫MAC地址或网卡地址,由网络设备制造商生产时写在硬件内部。MAC地址则是48位的(6个字节),通常表示为12个16进制数,每2个16进制数之间用冒号隔开,如08:00:20:0A:8C:6D就是一个MAC地址。具体如下图所示,其前3字节表示OUI(Organizationally Unique Identifier),是IEEE的注册管理机构给不同厂家分配的代码,区分不同的厂家。后3字节由厂家自行分配 [2]。MAC地址最高字节(MSB)的低第二位(LSb)表示这个MAC地址是全局的还是本地的,即U/L(Universal/Local)位,如果为0,表示是全局地址。所有的OUI这一位都是0。MAC地址最高字节(MSB)的低第一位(LSb),表示这个MAC地址是单播还是多播。0表示单播。 [4]工作过程播报编辑网络上的数据包从初始点开始 ,经过一个个中间节点最终到达目标节点 ,数据包是如何从初始节点开始识别一个个中间节点最终找到目标节点的呢? 实际上初始节点是根据目标节点的地址 ,将目标节点的IP地址映射到中间节点的MAC地址,找到第一个中间节点。从第一个中间节点出发,根据目标节点的IP地址映射到第二个中间节点的MAC地址,从而找到第二个中间节点……,以此类推,直到当找到最后一个中间节点后,从最后一个中间节点出发,根据目标节点的地址映射到目的节点的MAC地址,从而将数据包传送给目标主机。所以数据包的传送过程就是:不断地将目标节点的地址映射到一个个中间节点的MAC地址,再从一个个中间节点出发,直到找到最终的目标节点 [5]。数据包传送的关键是将目标节点的IP地址映射到中间节点的MAC地址。IP地址与MAC地址的映射要通过ARP地址解析协议来完成,它可将网络中的IP地址映射到主机的MAC地址,如交换机可以根据网络中的IP地址来找到本地主机的MAC地址。具体过程是:当交换机接收到来自网上一个数据包时,会根据该数据包的目标IP地址,查看交换机内部是否有跟该IP地址对应的MAC地址 ,如果有上次保留下来的对应的MAC地址,就会将该数据包 转发到对应MAC地址的主机上去。如果在交换机内部没有与目标)地址对应的MAC地址,则交换机会根据ARP协议将目标IP地址按照“表”中的对应关系映射成MAC地址 ,数据包就被转送到对应的MAC地址的主机上 [5]。作用播报编辑IP 地址是基于逻辑的,比较灵活,不受硬件的限制,也容易记忆。而 MAC地址在一定程度上与硬件一致,是基于物理的,能够标识具体的网络节点。这两种地址各有优点,使用时也因条件不同而采取不同的地址 [6]。大多数接入Internet的方式是把主机通过局域网组织在一起,然后再通过交换机或路由器等设备和 Internet 相连接。这样一来就出现了如何区分具体用户,防止 IP地址被盗用的问题。由于IP地址只是逻辑上的标识,任何人都能随意修改,因此不能用来具体标识一个用户。而 MAC地址则不然,它是固化在网卡里面的。从理论上讲,除非盗来硬件即网卡,否则一般是不能被冒名顶替的。基于 MAC 地址的这种特点,因此局域网采用了用MAC地址来标识具体用户的方法 [6]。在具体的通信过程中,通过交换机内部的交换表把 MAC地址和 IP 地址一一对应。当有发送给本地局域网内一台主机的数据包时,交换机首先将数据包接收下来,然后把数据包中的 IP 地址按照交换表中的对应关系映射成 MAC地址,然后将数据包转发到对应的 MAC地址的主机上去。这样一来,即使某台主机盗用了这个 IP 地址,但由于此主机没有对应的 MAC地址,因此也不能收到数据包,发送过程和接收过程类似 [6]。所以,无论是局域网,还是广域网中的计算机之间进行通信时,最终都表现为将数据包从某种形式的链路上的一个初始节点出发,从一个节点传递到另一个节点,最终传送到目的节点。数据包在这些节点之间的传递都是由 ARP(Address Resolution Protocol:地址解析协议)负责将IP地址映射到 MAC地址上来完成的 [6]。身份证就是用来证明一个人的身份。平日身份证的作用并不是很大,但是到了有的关键时刻,必须有身份证来说明一个人的一切。那么,IP地址与MAC地址绑定,就如同在日常生活中一个人与身份证的关系。因为,IP地址可以随意的,但MAC地址是唯一说明IP地址身份的。例如,为防止IP地址被盗用,通常交换机的端口绑定(端口的MAC表使用静态表项),可以在每个交换机端口只连接一台主机的情况下防止修改MAC地址的盗用,如果是三层设备还可以提供交换机端口、IP地址和MAC地址三者的绑定 [7]。获取方法播报编辑在命令提示符下输入命令“ipconfig /all”回车之后就会显示当前计算机的一些网络信息,其中“Physical Address”字样的这一项就是当前计算机中网卡的 MAC地址。当然,如果计算机中安装有多个网卡,则会有多个“Physical Address”字样 [6]。与IP地址区别播报编辑IP地址和MAC地址相同点是它们都唯一,不同的特点主要有:1.对于网络上的某一设备,如一台计算机或一台路由器,其IP地址是基于网络拓扑设计出的,同一台设备或计算机上,改动IP地址是很容易的(但必须唯一),而MAC则是生产厂商烧录好的,一般不能改动。我们可以根据需要给一台主机指定任意的IP地址,如我们可以给局域网上的某台计算机分配IP地址为192.168.0.112 ,也可以将它改成192.168.0.200。而任一网络设备(如网卡,路由器)一旦生产出来以后,其MAC地址不可由本地连接内的配置进行修改。如果一个计算机的网卡坏了,在更换网卡之后,该计算机的MAC地址就变了 [5]。2.长度不同。IP地址为32位,MAC地址为48位 [5]。3.分配依据不同。IP地址的分配是基于网络拓扑,MAC地址的分配是基于制造商 [8]。4.寻址协议层不同。IP地址应用于OSI第三层,即网络层,而MAC地址应用在OSI第二层,即数据链路层。 数据链路层协议可以使数据从一个节点传递到相同链路的另一个节点上(通过MAC地址),而网络层协议使数据可以从一个网络传递到另一个网络上(ARP根据目的IP地址,找到中间节点的MAC地址,通过中间节点传送,从而最终到达目的网络) [1]。新手上路成长任务编辑入门编辑规则本人编辑我有疑问内容质疑在线客服官方贴吧意见反馈投诉建议举报不良信息未通过词条申诉投诉侵权信息封禁查询与解封©2024 Baidu 使用百度前必读 | 百科协议 | 隐私政策 | 百度百科合作平台 | 京ICP证030173号 京公网安备110000020000

秒懂以太网的 MAC 硬件地址_以太网卡ksz8041nl的mac地址-CSDN博客

>

秒懂以太网的 MAC 硬件地址_以太网卡ksz8041nl的mac地址-CSDN博客

秒懂以太网的 MAC 硬件地址

最新推荐文章于 2023-07-03 13:13:14 发布

硕子鸽

最新推荐文章于 2023-07-03 13:13:14 发布

阅读量9k

收藏

37

点赞数

5

分类专栏:

计算机网络

文章标签:

以太网

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。

本文链接:https://blog.csdn.net/weixin_43941364/article/details/105653172

版权

计算机网络

专栏收录该内容

20 篇文章

27 订阅

订阅专栏

MAC 层的硬件地址

在局域网中,以下几个称呼是一样的:

硬件地址 物理地址 MAC 地址

48 位的 MAC 地址

✅ IEEE 的注册管理机构 RA 负责向厂家分配地址字段 6 个字节中的前三个字节 (即高位 24 位),称为组织唯一标识符。

✅ 所以就只有 3 个字节能支配了,这 3 个字节由厂家支配,称为扩展唯一标识符,必须保证生产出的适配器没有重复地址。

❗ 生产适配器时,6 字节的 MAC 地址已被固化在适配器的 ROM,因此,MAC 地址也叫做硬件地址 (hardware address) 或物理地址。

所以无论你把它带到哪里去,或者把它砸了,烧了,它的硬件地址还是不会变。

下面介绍一下 IEEE 组织的一些规定:

IEEE 规定地址字段的 第一字节的最低位 为

I

/

G

I/G

I/G 位。

I

/

G

I/G

I/G 表示

I

n

d

i

v

i

d

u

a

l

/

G

r

o

u

p

Individual / Group

Individual/Group。当

I

/

G

I/G

I/G 位

=

0

= 0

=0 时,地址字段表示一个单站地址。当

I

/

G

I/G

I/G 位

=

1

= 1

=1 时,表示组地址,用来进行多播。

所以对于前三个字节,既然第一个字节的最后一位被占用了,就只能支配其余的

23

23

23 位了。

❗所有 48 位都为 1 时,为广播地址。只能作为目的地址使用。

IEEE 又规定了!

IEEE 把地址字段第一字节的倒数第

2

2

2 位规定为

G

/

L

G/L

G/L 位,表示

G

l

o

b

a

l

/

L

o

c

a

l

Global / Local

Global/Local 。当

G

/

L

G/L

G/L 位

=

0

= 0

=0 时,是全球管理。当

G

/

L

G/L

G/L 位

=

1

= 1

=1 时, 是本地管理。

❓ 那么有啥区别呢 ?

全球管理需要购买,本地管理用户自定义,不过以太网几乎不会去理会这个用户自定义的。

适配器检查 MAC 地址

适配器从网络上每收到一个 MAC 帧就首先用硬件检查 MAC 帧中的 MAC 地址,然后检查这个帧是否是下面的其中一种,如果不是就丢弃,如果是就收下然后转发。

1️⃣ 单播 (unicast) 帧(一对一)2️⃣ 广播 (broadcast) 帧(一对全体)3️⃣ 多播 (multicast) 帧(一对多)

MAC 帧的格式

常用的以太网 MAC 帧格式有两种标准 :

D

I

X

 

E

t

h

e

r

n

e

t

 

V

2

DIX \space Ethernet \space V2

DIX Ethernet V2 标准✅

I

E

E

E

802.3

IEEE 的 802.3

IEEE的802.3 标准

最常用的

M

A

C

MAC

MAC 帧是以太网

V

2

V2

V2 的格式。

我们来放大看一下:

1️⃣ 首先是目的地址字段,占 6 个字节。 2️⃣ 然后是源地址字段,也是 6 字节。 3️⃣ 类型字段用来标志上一层使用的是什么协议,以便把收到的

M

A

C

MAC

MAC 帧的数据上交给上一层的这个协议。 4️⃣ 数据字段的正式名称是 MAC 客户数据字段。 最小长度

64

18

64 字节 - 18 字节

64字节−18字节 的首部和尾部

=

=

= 数据字段的最小长度(

46

46

46 字节 5️⃣ FSC 用于差错检测

❓ 其实你会发现从

M

A

C

MAC

MAC 层到物理层还会多出

8

8

8 个字节,那么这

8

8

8 个字节是啥呢?

在帧的前面插入(硬件生成)的 8 字节中,第一个字段共 7 个字节,是前同步码,用来迅速实现

M

A

C

MAC

MAC 帧的比特同步。第二个字段 1 个字节是帧开始定界符,表示后面的信息就是 MAC 帧。

最后提一下与

I

E

E

E

 

802.3

 

M

A

C

IEEE \space802.3\space MAC 帧

IEEE 802.3 MAC帧 的区别:

IEEE 802.3 规定的 MAC 帧的第三个字段是“长度 / 类型”。当

/

长度 / 类型

长度/类型 字段值小于

0

x

0600

0x0600

0x0600 时,数据字段必须装入上面的逻辑链路控制 LLC 子层的 LLC 帧。

帧间最小间隔为

9.6

μ

s

9.6 \mu s

9.6μs,相当于

96

b

i

t

96 bit

96bit 的发送时间。 一个站在检测到总线开始空闲后,还要等待

9.6

μ

s

9.6 \mu s

9.6μs 才能再次发送数据。

优惠劵

硕子鸽

关注

关注

5

点赞

37

收藏

觉得还不错?

一键收藏

打赏

知道了

0

评论

秒懂以太网的 MAC 硬件地址

什么是MAC硬件地址,以及物理地址是什么,他们有什么关系,本文介绍了以太网 MAC帧的格式,解释了常见的两种格式,以及一些基础知识,可以在遗忘的时候查阅。

复制链接

扫一扫

专栏目录

获取以太网和wifiMac地址

10-30

获取Mac地址,以太网和无线网,获取IP地址,希望能够帮到你

KSZ8041中文资料

12-09

KSZ8041NL是单电源供电的10Base-T/100Base-TX物理层收发器,它可提供MII/RMII接口来收发数据。

参与评论

您还未登录,请先

登录

后发表或查看评论

M2378-CFNS20核心板原理图(KSZ8041NL版

07-02

基于altium design软件的 M2378-CFNS20核心板原理图,网络芯片使用micrel公司的ksz8041NL PHY

Android 判断网络是否可用 & 获取IP地址 & 获取以太网口MAC地址

01-03

判断网络是否可用:

注意!是判断网络是否可用,但网络可用不代表一定能上外网的!

public static boolean isNetworkAvailable(Context context) {

ConnectivityManager manager = (ConnectivityManager) context

.getApplicationContext().getSystemService(

Context.CONNECTIVITY_SERVICE);

if (m

Android 固定以太网MAC地址

11-10

没有MAC地址的设备,通过cpu 序列号(设备唯一ID)转换为MAC地址.

https://blog.csdn.net/qq_33544860/article/details/127784655

以太网 以太网地址(MAC地址)

Hades_Ling的CSDN博客

12-02

2927

MAC地址也称为物理地址、硬件地址、链路地址

- MAC地址在网络设备制造生产时就已经写入了硬件内部,与IP地址不一样,MAC地址非手动强制修改,MAC地址将不会改变。MAC地址通常表示为12个16进制数,每2个16进制之间用冒号隔开:74-D8-3E-7A-AD-09

- 前6位16进制(`74-D8-3E`-7A-AD-09)为供应商地址代码、后6位16进制(74-D8-3E-`7A-AD-09`)为网卡唯一地址代码

以太网MAC地址组成与交换机基本知识点

Guiled7的博客

10-07

7588

以太网MAC地址组成与交换机基本知识点

1、以太网MAC地址

MAC地址由48位二进制数组成,通常分为六段,用十六进制表示

例:08 - 00 - 5a - e3 - 93 - 6c 前二十四位是供应商标识,后二十四位:供应商对网卡的唯一编号

以太网帧格式

以太网帧分为7部分,目的地址和源地址为MAC地址,各占6字节,协议占2字节,数据最多可占1500字节,帧校检占4字节。

2、交换机基础知识点

交换机转发原理

比方说,这是一台交换机,我们接上网络,开机,这时候c1要找c2,c1发出一个数

以太网和MAC地址

最新发布

幾微的学习博客

07-03

1029

本文简单的介绍了,以太网和MAC地址,以及如何去理解以太网和MAC地址,可以为小白打下坚实的数通基础。

碎碎记 1

weifengdq的专栏

02-14

3375

文章目录LAN8742->KSZ8041晶振负载电容千兆网络线序串口

LAN8742->KSZ8041

STM32Cube配置以太网默认的PHY为LAN8742, 支持PHY地址自动搜索, 抱着试一试的态度, 虽然外部PHY是KSZ8041, 直接运行LAN8742的程序, 仍然是可以ping通的. 具体寄存器未查看.

lan8742.c有个2000的宏定义, 每次初始化会死等2000ms, 显得初始化很慢, 可以视情况手动改小, 当然每次Cube自动生成代码又会回到2000

#define

Network 之八 详解 MAC 地址、MAC 协议、MAC 控制器

技术干货

04-23

2096

MAC(Media Access Control,MAC)即媒体访问控制,定义于 IEEE Std 802.3 中。IEEE Std 802.3-1985 中规定的半双工媒体访问控制协议是带有冲突检测的载波侦听多址访问(CSMA/CD)。并于 1997 年添加了全双工 MAC 协议。双工 MAC 协议不需要使用 CSMA/CD 协议,因为采用收发线路完全分离的物理介质,点到点的连接,不存在冲突。

rk平台android5.1固定以太网mac地址

04-08

设置里增添以太网mac地址显示ui,解决了rk3288平台以太网mac地址每次开机都会发生变化的情况

常见以太网设备IP地址 用户名密码_施耐德PLC常见以太网设备默认IP地址_

09-28

施耐德PLC的常见设备默认IP地址大全,包括PLC,交换机等

3.3.5 以太网的 MAC 层

engineer0的博客

04-04

921

一、 MAC层中的硬件地址

硬件地址又叫物理地址,mac地址(因为在mac帧中)

IEEE 802标准 为局域网规定了一种48位二进制数的全球地址

是指局域网上的每一台计算机固化在适配器的ROM中的地址

这个 48 位的二进制数地址是全球唯一的

若局域网中的主机或路由器安装了多个适配器,那么这样的主机或路由器就有多个地址

以太网mac帧 中有 mac地址字段,mac地址字段可采用 6字节(48bit)或 2字节(16bit)中的一种

6字节 mac地址 是全球唯一的,使全世界所有的局域网适配器都

计算机网络-MAC地址与以太网帧格式

m0_73995538的博客

03-28

2270

计算机联网必需的硬件是安装在计算机上的网卡,通信中,用来标识主机身份的地址就是制作在网卡上的一个硬件地址,每块网卡在生产出来后,除了具有基本的功能外,都有一个,这个地址就是,即网卡的,MAC地址由,通常分成六段,用十六进制表示,如00-D0-09-A1-D7-B7。其中。MAC地址的第8位为0时,表示该MAC地址为单播地址:为1时,表示该MAC地址为组播MAC地址,一块物理网卡的地址一定是一个单播地址,也就是第8位一定为0;组播地址是一个逻辑地址,用来表示一组接收者,而不是一个接收者。如下图。

复制虚拟机出现”适配器 的mac地址在保留地址范围内‘’

weixin_30340617的博客

03-27

4363

首先我的虚拟机是复制出来的,选择我已经移到,但是结果会出现了以下情况,导致了我无法ping 通,先看下提示:

使用:ipconfig –all 命令查寻,果然再现有打开的虚拟机中,存在两个mac地址相同的虚拟机,所以就有思路了,修改mac地址。

尝试1:直接利用虚拟机自带的修改mac地址

选择对应的虚拟机,直接在虚拟机设置中进行修改,修改步骤如下

不知道是不是虚拟机没...

MAC地址;地址解析协议(ARP);以太网;链路层交换机

Unique-You的博客

06-04

9113

链路层编址

地址解析协议(ARP),该协议为节点提供了将IP地址转换为链路层地址的机制。

动态主机配置协议(DHCP)。

MAC地址

并非节点具有链路层地址,而是节点的适配器(网络接口)具有链路层地址(MAC)。 

MAC地址的作用是标识局域网内一个帧从哪个接口到哪个物理相连的其他接口.因此,拥有多个网络接口的主机或路由器将具有与之相关联的多个链路层地址,就像他们也具有多个IP地址一样.需要...

计算机网络——MAC地址,IP地址,ARP协议

weixin_51818357的博客

07-09

1790

MAC地址,IP地址及ARP协议

MAC地址是以太网MAC子层所使用的地址(数据链路层)

IP地址是TCP/IP体系结构网际层所使用的地址

ARP协议属于TCP/IP体系结构的网际层,起作用是已只设备所分配到的IP地址,使用ARP协议可以通过该IP地址获取到设备的MAC地址

MAC地址

使用点对点信道的数据链路层不需要地址,因为只是两个对象,点对点就可以了

但是在广播域中,多个主机连接在一个广播通道上,要想实现两个主机之间的通信,则每个主句都必须有一个唯一的标识,即一个数据链路层地址;

在每个组件发送的

4.2.2 以太网技术(二) MAC地址和MAC帧的格式

nytcjsjboss的博客

05-04

3700

下一个字段就是用户的数据(data)字段,这个字段的长度是从46个字节到1500个字节之间,它存放的是高层的协议数据单元里面真正的内容,即我们的数据内容。第二个字段是类型字段,占2个字节,在DIX第二版本中规定了数据的类型字段是用来标识该帧的上一层使用的是什么协议,以便把收到的MAC帧交给上一层相应的协议当中,这个字段的用法就相当于查表了,如当前的类型字段的值是0X0800(16进制)就代表了上层携带的是IP数据报的内容,如果类型字段值是。

思科模拟器:路由器基本配置

热门推荐

WS的小屋

06-05

2万+

实验四 路由器基本配置

一、实验目的

(1)熟悉路由各接口的外观、接口的功能、接口的表示方法;(2)掌握带外的管理方法:通过接口console配置;(3)掌握带内的管理方法:通过方式telnet配置;

二、应用环境

路由器是三层设备,主要功能是进行路径选择和广域网的连接。与交换机相比,接口数量要少很多,但功能要强大的多,这些功能在外观上就是接口、模块的类型比较多,当然价格有很大的差异,通常高端的设备都是模块化的,支持的模块类型也很丰富。

三、实验设备

(1) DCR 路由器1

(2) PC 机1台

android 获取以太网mac地址

06-04

获取 Android 设备的以太网(Ethernet) MAC 地址,可以使用以下代码:

```java

EthernetManager ethManager = (EthernetManager) context.getSystemService(Context.ETHERNET_SERVICE);

String macAddress = ethManager.getMacAddress();

```

该代码首先获取 EthernetManager 实例,然后调用其 getMacAddress() 方法获取以太网 MAC 地址。需要注意的是,获取以太网 MAC 地址需要 android.permission.ACCESS_NETWORK_STATE 权限,因此需要在 AndroidManifest.xml 文件中添加以下权限声明:

```xml

```

此外,获取以太网 MAC 地址也需要设备支持以太网功能,否则该代码返回的是一个空字符串。

“相关推荐”对你有帮助么?

非常没帮助

没帮助

一般

有帮助

非常有帮助

提交

硕子鸽

CSDN认证博客专家

CSDN认证企业博客

码龄5年

暂无认证

221

原创

3万+

周排名

88万+

总排名

91万+

访问

等级

8815

积分

731

粉丝

1460

获赞

390

评论

6527

收藏

私信

关注

热门文章

VMware虚拟机没有网络

60880

数据库关系模式的函数依赖习题讲解

50434

ssh: connect to host ip port 22: Connection timed out

43456

SpringBoot + 阿里云 OSS 实现在线视频播放

34010

ATM 系统的用例图、类图、顺序图、协作图、活动图设计

32605

分类专栏

Spring Boot

2篇

JavaWeb

25篇

Spring

22篇

微服务

11篇

数据库

17篇

软件架构

1篇

设计模式

8篇

UML

4篇

Python

12篇

大前端

6篇

微信小程序

2篇

计算机网络

20篇

操作系统

10篇

BUG

20篇

实用工具

9篇

Linux

25篇

编程语言

8篇

数据结构和算法

8篇

技术分享

10篇

平面设计

1篇

最新评论

打包部署微服务项目

dd白:

请问知道了吗

CSI Tools 工具的安装 Intel 5300 + Ubuntu14.04

fgd0707:

我也是 您解决了吗

CSI Tools 工具的安装 Intel 5300 + Ubuntu14.04

fgd0707:

随身wifi当路由器ping不出来,receive端没有跳任何字

CSI Tools 工具的安装 Intel 5300 + Ubuntu14.04

熙莫:

想问问解决了吗,我也出现了这个问题

CSI Tools 工具的安装 Intel 5300 + Ubuntu14.04

熙莫:

你好,外网是指什么?我也遇到这个问题

您愿意向朋友推荐“博客详情页”吗?

强烈不推荐

不推荐

一般般

推荐

强烈推荐

提交

最新文章

Jar 包加密

Mybatis-plus 使用 typeHandler 将 String 拼接字符串转换为 List 列表

Provides transitive vulnerable dependency org.yaml:snakeyaml:1.33

2023年3篇

2022年1篇

2021年20篇

2020年200篇

目录

目录

分类专栏

Spring Boot

2篇

JavaWeb

25篇

Spring

22篇

微服务

11篇

数据库

17篇

软件架构

1篇

设计模式

8篇

UML

4篇

Python

12篇

大前端

6篇

微信小程序

2篇

计算机网络

20篇

操作系统

10篇

BUG

20篇

实用工具

9篇

Linux

25篇

编程语言

8篇

数据结构和算法

8篇

技术分享

10篇

平面设计

1篇

目录

评论

被折叠的  条评论

为什么被折叠?

到【灌水乐园】发言

查看更多评论

添加红包

祝福语

请填写红包祝福语或标题

红包数量

红包个数最小为10个

红包总金额

红包金额最低5元

余额支付

当前余额3.43元

前往充值 >

需支付:10.00元

取消

确定

下一步

知道了

成就一亿技术人!

领取后你会自动成为博主和红包主的粉丝

规则

hope_wisdom 发出的红包

打赏作者

硕子鸽

你的鼓励将是我创作的最大动力

¥1

¥2

¥4

¥6

¥10

¥20

扫码支付:¥1

获取中

扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元

使用余额支付

点击重新获取

扫码支付

钱包余额

0

抵扣说明:

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

余额充值

以太网帧结构详解 - 知乎

以太网帧结构详解 - 知乎首发于网络协议详解切换模式写文章登录/注册以太网帧结构详解nwatch计算机的世界真是太精彩了!!!前言20世纪60年代以来,计算机网络得到了飞速发展。各大厂商和标准组织为了在数据通信网络领域占据主导地位,纷纷推出了各自的网络架构体系和标准,如IBM公司的SNA协议,Novell公司的IPX/SPX协议,以及广泛流行的OSI参考模型和TCP/IP协议。同时,各大厂商根据这些协议生产出了不同的硬件和软件。标准组织和厂商的共同努力促进了网络技术的快速发展和网络设备种类的迅速增长。网络通信中,“协议”和“标准”这两个词汇常常可以混用。同时,协议或标准本身又常常具有层次的特点。一般地,关注于逻辑数据关系的协议通常被称为上层协议,而关注于物理数据流的协议通常被称为低层协议。IEEE 802就是一套用来管理物理数据流在局域网中传输的标准,包括在局域网中传输物理数据的802.3以太网标准。还有一些用来管理物理数据流在使用串行介质的广域网中传输的标准,如帧中继FR(Frame Relay),高级数据链路控制HDLC(High-Level Data Link Control),异步传输模式ATM(Asynchronous Transfer Mode)。分层模型- OSI不同的协议栈用于定义和管理不同网络的数据转发规则。国际标准化组织ISO于1984年提出了OSI RM(Open System Interconnection Reference Model,开放系统互连参考模型)。OSI 参考模型很快成为了计算机网络通信的基础模型。OSI参考模型具有以下优点:简化了相关的网络操作;提供了不同厂商之间的兼容性;促进了标准化工作;结构上进行了分层;易于学习和操作。OSI参考模型各个层次的基本功能如下:1.物理层: 在设备之间传输比特流,规定了电平、速度和电缆针脚。2.数据链路层:将比特组合成字节,再将字节组合成帧,使用链路层地址(以太网使用MAC地址)来访问介质,并进行差错检测。3.网络层:提供逻辑地址,供路由器确定路径。4.传输层:提供面向连接或非面向连接的数据传递以及进行重传前的差错检测。5.会话层:负责建立、管理和终止表示层实体之间的通信会话。该层的通信由不同设备中的应用程序之间的服务请求和响应组成。6.表示层:提供各种用于应用层数据的编码和转换功能,确保一个系统的应用层发送的数据能被另一个系统的应用层识别。7.应用层:OSI参考模型中最靠近用户的一层,为应用程序提供网络服务。分层模型– TCP/IPTCP/IP模型同样采用了分层结构,层与层相对独立但是相互之间也具备非常密切的协作关系。TCP/IP模型将网络分为四层。TCP/IP模型不关注底层物理介质,主要关注终端之间的逻辑数据流转发。TCP/IP模型的核心是网络层和传输层:网络层解决网络之间的逻辑转发问题,传输层保证源端到目的端之间的可靠传输。最上层的应用层通过各种协议向终端用户提供业务应用。数据封装应用数据需要经过TCP/IP每一层处理之后才能通过网络传输到目的端,每一层上都使用该层的协议数据单元PDU(Protocol Data Unit)彼此交换信息。不同层的PDU中包含有不同的信息,因此PDU在不同层被赋予了不同的名称。如上层数据在传输层添加TCP报头后得到的PDU被称为Segment(数据段 )数据段被传递给网络层,网络层添加IP报头得到的PDU被称为Packet(数据包)数据包被传递到数据链路层,封装数据链路层报头得到的PDU被称为Frame(数据帧)最后,帧被转换为比特(物理层)通过网络介质传输。这种协议栈逐层向下传递数据,并添加报头和报尾的过程称为封装。终端之间的通信数据链路层控制数据帧在物理链路上传输。数据包在以太网物理介质上传播之前必须封装头部和尾部信息。封装后的数据包称为称为数据帧,数据帧中封装的信息决定了数据如何传输。以太网上传输的数据帧有两种格式,选择哪种格式由TCP/IP协议簇中的网络层决定。帧格式以太网上使用两种标准帧格式。第一种是上世纪80年代初提出的DIX v2格式,即Ethernet II帧格式。Ethernet II后来被IEEE 802标准接纳,并写进了IEEE 802.3x-1997的3.2.6节。第二种是1983年提出的IEEE 802.3格式。这两种格式的主要区别在于,Ethernet II格式中包含一个Type字段,标识以太帧处理完成之后将被发送到哪个上层协议进行处理。IEEE 802.3格式中,同样的位置是长度字段。不同的Type字段值可以用来区别这两种帧的类型当Type字段值小于等于1500(或者十六进制的0x05DC)时,帧使用的是IEEE 802.3格式。当Type字段值大于等于1536 (或者十六进制的0x0600)时,帧使用的是Ethernet II格式。以太网中大多数的数据帧使用的是Ethernet II格式。以太帧中还包括源和目的MAC地址,分别代表发送者的MAC和接收者的MAC,此外还有帧校验序列字段,用于检验传输过程中帧的完整性。Ethernet_II 帧格式Ethernet_II 帧类型值大于等于1536 (0x0600)以太网数据帧的长度在64-1518字节之间Ethernet_II的帧中各字段说明如下:DMAC(Destination MAC)是目的MAC地址。DMAC字段长度为6个字节,标识帧的接收者。SMAC(Source MAC)是源MAC地址。SMAC字段长度为6个字节,标识帧的发送者。类型字段(Type)用于标识数据字段中包含的高层协议,该字段长度为2个字节。类型字段取值为0x0800的帧代表IP协议帧;类型字段取值为0806的帧代表ARP协议帧。数据字段(Data)是网络层数据,最小长度必须为46字节以保证帧长至少为64字节,数据字段的最大长度为1500字节。循环冗余校验字段(FCS)提供了一种错误检测机制。该字段长度为4个字节。IEEE802.3 帧格式IEEE 802.3 帧长度字段值小于等于1500 (0x05DC)IEEE 802.3帧格式类似于Ethernet_II帧,只是Ethernet_II帧的Type域被802.3帧的Length域取代,并且占用了Data字段的8个字节作为LLC和SNAP字段。Length字段定义了Data字段包含的字节数。逻辑链路控制LLC(Logical Link Control)由目的服务访问点DSAP(Destination Service Access Point)、源服务访问点SSAP(Source Service Access Point)和Control字段组成。SNAP(Sub-network Access Protocol)由机构代码(Org Code)和类型(Type)字段组成。Org code三个字节都为0。Type字段的含义与Ethernet_II帧中的Type字段相同。IEEE802.3帧根据DSAP和SSAP字段的取值又可分为以下几类:当DSAP和SSAP都取特定值0xff时,802.3帧就变成了Netware-ETHERNET帧,用来承载NetWare类型的数据。当DSAP和SSAP都取特定值0xaa时,802.3帧就变成了ETHERNET_SNAP帧。ETHERNET_SNAP帧可以用于传输多种协议。DSAP和SSAP其他的取值均为纯IEEE802.3帧。数据帧传输数据链路层基于MAC地址进行帧的传输以太网在二层链路上通过MAC地址来唯一标识网络设备,并且实现局域网上网络设备之间的通信。MAC地址也叫物理地址,大多数网卡厂商把MAC地址烧入了网卡的ROM中。发送端使用接收端的MAC地址作为目的地址。以太帧封装完成后会通过物理层转换成比特流在物理介质上传输。以太网的MAC地址MAC地址由两部分组成,分别是供应商代码和序列号。其中前24位代表该供应商代码,由IEEE管理和分配。剩下的24位序列号由厂商自己分配。如同每一个人都有一个名字一样,每一台网络设备都用物理地址来标识自己,这个地址就是MAC地址。网络设备的MAC地址是全球唯一的。MAC地址长度为48比特,通常用十六进制表示。MAC地址包含两部分:前24比特是组织唯一标识符(OUI,Organizationally Unique Identifier),由IEEE统一分配给设备制造商。例如,华为的网络产品的MAC地址前24比特是0x00e0fc。后24位序列号是厂商分配给每个产品的唯一数值,由各个厂商自行分配(这里所说的产品可以是网卡或者其他需要MAC地址的设备)。数据帧的发送和接收单播局域网上的帧可以通过三种方式发送。第一种是单播,指从单一的源端发送到单一的目的端。每个主机接口由一个MAC地址唯一标识,MAC地址的OUI中,第一字节第8个比特表示地址类型。对于主机MAC地址,这个比特固定为0,表示目的MAC地址为此MAC地址的帧都是发送到某个唯一的目的端。在冲突域中,所有主机都能收到源主机发送的单播帧,但是其他主机发现目的地址与本地MAC地址不一致后会丢弃收到的帧,只有真正的目的主机才会接收并处理收到的帧。广播第二种发送方式是广播,表示帧从单一的源发送到共享以太网上的所有主机。广播帧的目的MAC地址为十六进制的FF:FF:FF:FF:FF:FF,所有收到该广播帧的主机都要接收并处理这个帧。广播方式会产生大量流量,导致带宽利用率降低,进而影响整个网络的性能。当需要网络中的所有主机都能接收到相同的信息并进行处理的情况下,通常会使用广播方式。组播第三种发送方式为组播,组播比广播更加高效。组播转发可以理解为选择性的广播,主机侦听特定组播地址,接收并处理目的MAC地址为该组播MAC地址的帧。组播MAC地址和单播MAC地址是通过第一字节中的第8个比特区分的。组播MAC地址的第8个比特为1,而单播MAC地址的第8个比特为0。当需要网络上的一组主机(而不是全部主机)接收相同信息,并且其他主机不受影响的情况下,通常会使用组播方式。发送与接收当主机接收到的数据帧所包含的目的MAC地址是自己时,会把以太网封装剥掉后送往上层协议。帧从主机的物理接口发送出来后,通过传输介质传输到目的端。共享网络中,这个帧可能到达多个主机。主机检查帧头中的目的MAC地址,如果目的MAC地址不是本机MAC地址,也不是本机侦听的组播或广播MAC地址,则主机会丢弃收到的帧。如果目的MAC地址是本机MAC地址,则接收该帧,检查帧校验序列(FCS)字段,并与本机计算的值对比来确定帧在传输过程中是否保持了完整性。如果帧的FCS值与本机计算的值不同,主机会认为帧已被破坏,并会丢弃该帧。如果该帧通过了FCS校验,则主机会根据帧头部中的Type字段来确定将帧发送给上层哪个协议处理。实际数据包分析:ARP类型数据包其他类型数据包:原文链接;以太网帧结构详解_曌赟的博客-CSDN博客发布于 2020-10-12 11:16计算机网络网络通信数据通信​赞同 53​​1 条评论​分享​喜欢​收藏​申请转载​文章被以下专栏收录网络协议详解网络协

【小菜学网络】MAC地址详解 - 知乎

【小菜学网络】MAC地址详解 - 知乎首发于小菜学编程切换模式写文章登录/注册【小菜学网络】MAC地址详解fasionchan上一小节介绍了以太网帧的结构,以及帧中各个字段的作用。参与以太网通讯的实体,由以太网地址唯一标识。以太网地址也叫做 MAC 地址,我们对它仍知之甚少。 以太网地址在不同场景,称谓也不一样,常用叫法包括这些: 以太网地址MAC 地址硬件地址物理地址网卡地址网卡在以太网中,每台主机都需要安装一个物理设备并通过网线连接到一起:这个设备就是 网卡 ( NIC ),网络接口卡 ( network interface card )的简称。有些文献也将网卡称为 网络接口控制器 ( network interface controller )。从物理的层面看,网卡负责将比特流转换成电信号发送出去; 反过来,也负责将检测到的电信号转换成比特流并接收。从软件的层面看,发送数据时,内核协议栈负责封装以太网帧(填充 目的地址 , 源地址 , 类型 和 数据 并计算 校验和),并调用网卡驱动发送; 接收数据时,负责验证 目的地址 、 校验和 并取出数据部分,交由上层协议栈处理。每块网卡出厂时,都预先分配了一个全球唯一的 MAC地址 ,并烧进硬件。 不管后来网卡身处何处,接入哪个网络,MAC 地址均不变。 当然,某些操作系统也允许修改网卡的 MAC 地址。MAC地址MAC 地址由 6 个字节组成( 48 位),可以唯一标识 $2^{48}$ ,即 281474976710656 个网络设备(比如网卡)。MAC 地址 6 个字节可以划分成两部分,如下图:3 字节长的 厂商代码 ( OUI ),由国际组织分配给不同的网络设备商;3 字节长的 序列号 ( SN ),由厂商分配给它生产的网络设备;厂商代码和序列号都是唯一分配,因此 MAC 地址是 全球唯一 的。冒分十六进制表示法MAC 地址 6 个字节如何展示呢? 是否能够作为 ASCII 来解读并显示?恐怕不能。一个字节总共有 8 个位,而 ASCII 只定义了其中的 7 位。况且 ASCII 中定义了很多控制字符,能显示的也只有字母、数字以及一些常用符号。以上述地址为例,只有 0x5B 这个字节是可以显示的,对应着字符 [ 。好在,我们可以用多个可读字符来表示一个原始字节。我们将一个字节分成两部分,高 4 位以及低 4 位,每部分可以用一个十六进制字符来表示。以 0x00 这个字节为例,可以用两个字符 00 表示:这样一来,整个地址可以用一个 12 字节长的字符串表示: 0010A4BA875B 。 为了进一步提高可读性,可以在中间插入冒号 : : 00:10:A4:BA:87:5B 。这就是 冒分十六进制表示法 ( colon hexadecimal notation )。注意到,冒分十六进制总共需要 17 个字节。 如果算上字符串结尾处的 \0 ,将达到 18 个字节,原始 MAC 地址的整整 3 倍!顺便提一下,十六进制字母字符用大小写都可以。网卡管理Linux 上有不少工具命令可以查看系统当前接入的网卡以及每张网卡的详细信息。首先是 ifconfig 命令,他默认显示已启用的网卡,详情中可以看到每张网卡的物理地址:fasion@u2004 [ ~ ] ➜ ifconfig

enp0s3: flags=4163 mtu 1500

inet 10.0.2.15 netmask 255.255.255.0 broadcast 10.0.2.255

inet6 fe80::a00:27ff:fe49:50dd prefixlen 64 scopeid 0x20

ether 08:00:27:49:50:dd txqueuelen 1000 (Ethernet)

RX packets 3702 bytes 4881568 (4.8 MB)

RX errors 0 dropped 0 overruns 0 frame 0

TX packets 538 bytes 42999 (42.9 KB)

TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0

enp0s8: flags=4163 mtu 1500

inet 192.168.56.2 netmask 255.255.255.0 broadcast 192.168.56.255

inet6 fe80::a00:27ff:fe56:831c prefixlen 64 scopeid 0x20

ether 08:00:27:56:83:1c txqueuelen 1000 (Ethernet)

RX packets 4183 bytes 1809871 (1.8 MB)

RX errors 0 dropped 0 overruns 0 frame 0

TX packets 2674 bytes 350013 (350.0 KB)

TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0

lo: flags=73 mtu 65536

inet 127.0.0.1 netmask 255.0.0.0

inet6 ::1 prefixlen 128 scopeid 0x10

loop txqueuelen 1000 (Local Loopback)

RX packets 679 bytes 1510416 (1.5 MB)

RX errors 0 dropped 0 overruns 0 frame 0

TX packets 679 bytes 1510416 (1.5 MB)

TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0例子中,系统总共有 3 块已启用网卡,名字分别是 enp0s3 、 enp0s8 以及 lo 。其中 lo 是环回网卡,用于本机通讯。ether 08:00:27:49:50:dd 表明,网卡 enp0s3 的物理地址是 08:00:27:49:50:dd 。 请注意,ifconfig 是一个比较老旧的命令,正在慢慢淡出历史舞台。 ip 命令也可以查看系统网卡信息,默认显示所有网卡:fasion@u2004 [ ~ ] ➜ ip link

1: lo: mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT group default qlen 1000

link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00

2: enp0s3: mtu 1500 qdisc fq_codel state UP mode DEFAULT group default qlen 1000

link/ether 08:00:27:49:50:dd brd ff:ff:ff:ff:ff:ff

3: enp0s8: mtu 1500 qdisc fq_codel state UP mode DEFAULT group default qlen 1000

link/ether 08:00:27:56:83:1c brd ff:ff:ff:ff:ff:ffip 命令输出信息比较紧凑, link/ether 08:00:27:49:50:dd 这行展示网卡的物理地址。ip 命令是一个比较新的命令,功能非常强大。它除了可以用于管理网络设备,还可以用于管理路由表,策略路由以及各种隧道。因此,推荐重点学习掌握 ip 命令的用法。编程获取网卡地址如果程序中需要用到网卡地址,如何获取呢?有个方法是执行 ip 命令输出网卡详情,然后从输出信息中截取网卡地址。例如:fasion@u2004 [ ~ ] ➜ ip link show dev enp0s3 | grep 'link/ether' | awk '{print $2}'

08:00:27:49:50:dd这种方法多用于 Shell 编程中。更优雅的办法是通过套接字编程,直接向操作系统获取。Linux 套接字支持通过 ioctl 系统调用获取网络设备信息,大致步骤如下:创建一个套接字,任意类型均可;准备 ifreq 结构体,用于保存网卡设备信息;将待查询网卡名填充到 ifreq 结构体;调用 ioctl 系统调用,向套接字发起 SIOCGIFHWADDR 请求,获取物理地址;如无错漏,内核将被查询网卡的物理地址填充在 ifreq 结构体 ifr_hwaddr 字段中;最后,附上一个完整的例子:#include

#include

#include

#include

#include

/**

* Convert binary MAC address to readable format.

*

* Arguments

* n: binary format, must be 6 bytes.

*

* a: buffer for readable format, 18 bytes at least(`\0` included).

**/

void mac_ntoa(unsigned char *n, char *a) {

// traverse 6 bytes one by one

sprintf(a, "%02x:%02x:%02x:%02x:%02x:%02x", n[0], n[1], n[2], n[3], n[4], n[5]);

}

int main(int argc, char *argv[]) {

if (argc < 2) {

fprintf(stderr, "no iface given\n");

return 1;

}

// create a socket, any type is ok

int s = socket(AF_INET, SOCK_STREAM, 0);

if (-1 == s) {

perror("Fail to create socket");

return 2;

}

// fill iface name to struct ifreq

struct ifreq ifr;

strncpy(ifr.ifr_name, argv[1], 15);

// call ioctl to get hardware address

int ret = ioctl(s, SIOCGIFHWADDR, &ifr);

if (-1 == ret) {

perror("Fail to get mac address");

return 3;

}

// convert to readable format

char mac[18];

mac_ntoa((unsigned char *)ifr.ifr_hwaddr.sa_data, mac);

// output result

printf("IFace: %s\n", ifr.ifr_name);

printf("MAC: %s\n", mac);

return 0;

}其中,mac_ntoa 函数调用字符串格式化函数 sprintf 将原始 MAC 地址转换成冒分十六进制形式。【小菜学网络】系列文章首发于公众号【小菜学编程】,敬请关注:发布于 2021-01-13 18:48Mac介质访问控制层(MAC)Mac Pro​赞同 8​​添加评论​分享​喜欢​收藏​申请转载​文章被以下专栏收录小菜学编程欢迎关注小菜,这里有你想要的编程

Network 之二 Ethernet(以太网)中的 MAC、MII、PHY 详解[通俗易懂]-腾讯云开发者社区-腾讯云

ork 之二 Ethernet(以太网)中的 MAC、MII、PHY 详解[通俗易懂]-腾讯云开发者社区-腾讯云全栈程序员站长Network 之二 Ethernet(以太网)中的 MAC、MII、PHY 详解[通俗易懂]关注作者腾讯云开发者社区文档建议反馈控制台首页学习活动专区工具TVP最新优惠活动文章/答案/技术大牛搜索搜索关闭发布登录/注册首页学习活动专区工具TVP最新优惠活动返回腾讯云官网全栈程序员站长首页学习活动专区工具TVP最新优惠活动返回腾讯云官网社区首页 >专栏 >Network 之二 Ethernet(以太网)中的 MAC、MII、PHY 详解[通俗易懂]Network 之二 Ethernet(以太网)中的 MAC、MII、PHY 详解[通俗易懂]全栈程序员站长关注发布于 2022-11-08 20:24:142.3K0发布于 2022-11-08 20:24:14举报文章被收录于专栏:全栈程序员必看全栈程序员必看大家好,又见面了,我是你们的朋友全栈君。

结构  从硬件的角度看,以太网接口电路主要由 MAC(Media Access Control,MAC)控制器和物理层接口 PHY(Physical Layer,PHY)两大部分构成。如下图所示:

MAC_PHY

  但是,在实际的设计中,以上三部分并不一定是独立分开的。 由于,PHY 整合了大量模拟硬件,而 MAC 则是典型的全数字器件。考虑到芯片面积及模拟/数字混合架构的原因,通常,将 MAC 集成进微控制器而将 PHY 留在片外。更灵活、密度更高的芯片技术已经可以实现 MAC 和 PHY 的单芯片整合。总的来说,可分为下列几种类型:CPU 集成 MAC 与 PHY,目前来说并不多见。

MAC_PHY_1CPU 集成 MAC,PHY 采用独立芯片,这种比较常见。

MAC_PHY_2CPU 不集成 MAC 与 PHY,MAC 与 PHY 采用集成芯片(形成一个独立的网卡),这种也比较常见。

MAC_PHY_3  MAC 及 PHY 工作在 OSI 七层模型的数据链路层和物理层。具体如下

MAC_PHY_OSI

  IEEE802.3 标准文档下载地址:https://ieeexplore.ieee.org/browse/standards/get-program/page/。它分为很多个 section。标准文档贼长,没有全部看过,大概第一部分是 10Mb/s 以太网(其中有关于 MAC 的规范),第二部分是 100BASE-T 100Mb/s 基带网络介绍,第三部分是 1000 Mb/s 基带网络介绍,第四部分是 10 Gb/s 基带网络介绍。但是,并不是说每部分都是独立的。

IEEE802.3什么是 MAC  MAC(Media Access Control,MAC)即媒体访问控制。该部分有两个概念:MAC 可以指的是一个硬件控制器,也可以指 MAC 通信协议。该协议位于 OSI 七层协议中数据链路层的下半部分,主要负责控制与连接物理层的物理介质。MAC 硬件大约就是下面的样子了:

MAC

  在发送数据的时候,MAC 协议可以事先判断是否可以发送数据,如果可以发送将给数据加上一些控制信息,最终将数据以及控制信息以规定的格式发送到物理层;在接收数据的时候,MAC 协议首先判断输入的信息并是否发生传输错误,如果没有错误,则去掉控制信息发送至 LLC(逻辑链路控制)层。该层协议是以太网 MAC,由 IEEE-802. 3 以太网标准定义。最新的 MAC 同时支持 10Mbps 和100Mbps 两种速率。  以太网数据链路层其实包含 MAC(介质访问控制)子层和 LLC(逻辑链路控制)子层。一块以太网卡 MAC 芯片的作用不但要实现 MAC 子层和 LLC 子层的功能,还要提供符合规范的 PCI 界面以实现和主机的数据交换。  MAC 从 PCI 总线收到 IP 数据包或者其他网络层协议的数据包后,将之拆分并重新打包成最大 1518Byte、最小 64Byte 的帧。这个帧里面包括了目标 MAC 地址、自己的源 MAC 地址和数据包里面的协议类型(比如IP数据包的类型用 80 表示),最后还有一个DWORD(4Byte)的 CRC 码。  可是目标的 MAC 地址是哪里来的呢?这牵扯到一个 ARP 协议(介乎于网络层和数据链路层的一个协议)。第一次传送某个目的 IP 地址的数据的时候,先会发出一个 ARP 包,其 MAC 的目标地址是广播地址,里面说到:“谁是 xxx.xxx.xxx.xxx 这个 IP 地址的主人?”因为是广播包,所有这个局域网的主机都收到了这个 ARP 请求。收到请求的主机将这个 IP 地址和自己的相比较,如果不相同就不予理会,如果相同就发出 ARP 响应包。这个 IP 地址的主机收到这个 ARP 请求包后回复的 ARP 响应里说到:“我是这个 IP 地址的主人”。这个包里面就包括了他的 MAC 地址。以后的给这个IP地址的帧的目标 MAC 地址就被确定了。(其它的协议如 IPX/SPX 也有相应的协议完成这些操作)  IP 地址和 MAC 地址之间的关联关系保存在主机系统里面,叫做 ARP 表。由驱动程序和操作系统完成。在 Windows 及 Linux 里面可以用 arp -a 的命令查看 ARP 表。

在这里插入图片描述

收到数据帧的时候也是一样,做完 CRC 校验以后,如果没有 CRC 效验错误,就把帧头去掉,把数据包拿出来通过标准的接口传递给驱动和上层的协议栈。最终正确的达到我们的应用程序。什么是 MII  MII(Media Independent Interface)即媒体独立接口,MII 接口是 MAC 与 PHY 连接的标准接口。它是 IEEE-802.3 定义的以太网行业标准。MII 接口提供了 MAC 与 PHY 之间、PHY 与 STA(Station Management)之间的互联技术,该接口支持 10Mb/s 与 100Mb/s 的数据传输速率,数据传输的位宽为 4 位。“媒体独立” 表明在不对 MAC 硬件重新设计或替换的情况下,任何类型的 PHY 设备都可以正常工作。802.3 协议最多支持 32 个 PHY,但有一定的限制:要符合协议要求的 connector 特性。MII 接口如下图所示:

MII

  提到 MII,就有可能涉及到 RS,PLS,STA 等名词术语,下面讲一下他们之间对应的关系。  所谓 RS 即 Reconciliation sublayer,它的主要功能主要是提供一种 MII 和 MAC/PLS 之间的信号映射机制。它们(RS与MII)之间的关系如下图:

RS_MII

MII 的 Management Interface 是与 STA(Station Management)相连的。 关于本节,具体可参考 IEEE 以太网标准 802.3 的 22.3 Signal timing characteristics 节,其中包含时钟信号等更详细内容。

  MII 接口主要包括四个部分。一是从 MAC 层到 PHY 层的发送数据接口,二是从 PHY 层到 MAC 层的接收数据接口,三是从PHY 层到 MAC 层的状态指示信号,四是 MAC 层和 PHY 层之间传送控制和状态信息的 MDIO 接口。

MII_MAC_PHY

MII 包括一个数据接口,以及一个 MAC 和 PHY 之间的管理接口:数据接口: 包括分别用于发送器和接收器的两条独立信道。每条信道都有自己的数据、时钟和控制信号。MII 数据接口总共需要 16 个信号,包括TX_ER(transmit coding error): TX_ER 同步于 TX_CLK,在数据传输过程中,如果 TX_ER 有效超过一个时钟周期,并且此时TX_EN 是有效的,则数据通道中传输的数据是无效的,没用的。注:当 TX_ER 有效并不影响工作在 10Mb/s 的 PHY 或者 TX_EN 无效时的数据传输。在 MII 接口的连线中,如果 TX_ER 信号线没有用到,必须将它下拉接地。TXD<3:0>(transmit data): TXD 由 RS 驱动,同步于 TX_CLK,在 TX_CLK 的时钟周期内,并且TX_EN 有效,TXD 上的数据被 PHY 接收,否则 TXD 的数据对 PHY 没有任何影响。TX_EN: 发送使能。TX_EN 由 Reconciliation 子层根据 TX_CLK 上升沿同步进行转换。TX_CLK(transmit clock): TX_CLK (Transmit Clock) 是一个连续的时钟信号(即系统启动,该信号就一直存在),它是 TX_EN、TXD、TX_ER(信号方向为从 RS 到 PHY)的参考时钟,TX_CLK 由 PHY 驱动 TX_CLK 的时钟频率是数据传输速率的 25%,偏差 ±100ppm。例如,100Mb/s 模式下,TX_CLK 时钟频率为 25MHz,占空比在 35% 至 65% 之间。COL(collision detected): COL 不需要同步于参考时钟。The behavior of the COL signal is unspecified when the duplex mode bit0.8 inthe control register is set to a logic one(自动协商禁止,人工设为全双工模式), or when the Auto-Negotiation process selects a full duplex mode of operation。即半双工模式信号有效,全双工模式信号无效。RXD<3:0>(receive data): RXD由RS驱动,同步于 RX_CLK,在 RX_CLK 的时钟周期内,并且 RX_DV 有效,RXD 上的数据被RS 接收,否则 RXD 的数据对 RS 没有任何影响。While RX_DV is de-asserted, the PHY may provide a False Carrier indication by asserting the RX_ER signal while driving the value <1110> onto RXD<3:0>。RX_ER(receive error): RX_ER 同步于 RX_CLK,其在 RX 通道中的作用类似于 TX_ER 对于 TX 通道数据传输的影响。RX_CLK: 它与 TX_CLK 具有相同的要求,所不同的是它是 RX_DV、RXD、RX_ER(信号方向是从 PHY 到 RS)的参考时钟。RX_CLK 同样是由 PHY 驱动,PHY 可能从接收到的数据中提取时钟 RX_CLK,也有可能从一个名义上的参考时钟(e.g., the TX_CLK reference)来驱动RX_CLK。CRS(carrier sense): CRS 不需要同步于参考时钟,只要通道存在发送或者接收过程,CRS 就需要有效。The behavior of the CRS signal is unspecified when the duplex mode bit0.8 inthe control register is set to a logic one(自动协商禁止,人工设为全双工模式), or when the Auto-Negotiation process selects a full duplex mode of operation,即半双工模式信号有效,全双工模式信号无效。RX_DV(Receive Data Valid): RXD_DV 同步于 RX_CLK,被 PHY 驱动,它的作用如同于发送通道中的 TX_EN,不同的是在时序上稍有一点差别:为了让数据能够成功被RS接收,要求RXD_DV有效的时间必须覆盖整个 FRAME 的过程,即starting no later than the Start Frame Delimiter (SFD) and excluding any End-of-Frame delimiter。

MII以4位半字节方式传送数据双向传输,时钟速率25MHz。其工作速率可达100Mb/s。MII 管理接口: 是个双信号接口,通过管理接口,MAC 就能监视和控制 PHY。其管理是使用 SMI(Serial Management Interface) 总线通过读写 PHY 的寄存器来完成的。一个是时钟信号(***MDC (management data clock)***)。另一个是数据信号(***MDIO (management data input/output)***)。MDC: 由站管理实体向 PHY 提供,作为在 MDIO 信号上传送信息的定时参考。 MDC 是一种非周期性的信号,没有最高或最低时间。 无论 TX_CLK 和 RX_CLK 的标称周期如何,MDC 的最小高低时间应为 160 ns,MDC 的最小周期为 400 ns。MDIO: 是 PHY 和 STA 之间的双向信号。 它用于在 PHY 和 STA 之间传输控制信息和状态。 控制信息由 STA 同步地针对 MDC 驱动并且由 PHY 同步地采样。 状态信息由 PHY 针对 MDC 同步驱动并由 STA 同步采样。  PHY 里面的部分寄存器是 IEEE 定义的,这样PHY把自己的目前的状态反映到寄存器里面,MAC 通过 SMI 总线不断的读取PHY 的状态寄存器以得知目前 PHY 的状态。例如连接速度、双工的能力等。当然也可以通过 SMI 设置 PHY的寄存器达到控制的目的。例如流控的打开关闭、自协商模式还是强制模式等。不论是物理连接的MII总线和 SMI 总线还是 PHY 的状态寄存器和控制寄存器都是由IEEE的规范的。因此不同公司的 MAC 和 PHY 一样可以协调工作。当然为了配合不同公司的 PHY 的自己特有的一些功能,驱动需要做相应的修改。  MII 支持 10Mbps 和 100Mbps 的操作,一个接口由 14 根线组成,它的支持还是比较灵活的。但是有一个缺点是因为它一个端口用的信号线太多,如果一个 8 端口的交换机要用到 112 根线,16 端口就要用到 224 根线,到 32 端口的话就要用到 448 根线。一般按照这个接口做交换机是不太现实的。所以现代的交换机的制作都会用到其它的一些从 MII 简化出来的标准,比如 RMII、SMII、GMII等。RMII(Reduced Media Independant Interface)  简化媒体独立接口是标准的以太网接口之一,比 MII 有更少的 I/O 传输。RMII 口是用两根线来传输数据的,MII 口是用 4 根线来传输数据的,GMII 是用 8 根线来传输数据的。MII/RMII 只是一种接口,对于10Mbps 线速,MII 的时钟速率是 2.5MHz 就可以了,RMII 则需要 5MHz;对于 100Mbps 线速,MII 需要的时钟速率是 25MHz,RMII 则是 50MHz。

  MII/RMII 用于传输以太网包,在 MII/RMII 接口是4/2bit的,在以太网的PHY里需要做串并转换,编解码等才能在双绞线和光纤上进行传输,其帧格式遵循IEEE 802.3(10M)/IEEE 802.3u(100M)/IEEE 802.1q(VLAN)。以太网帧的格式为:前导符+开始位+目的mac地址+源mac地址+类型/长度+数据+padding(optional)+32bitCRC。如果有vlan,则要在类型/长度后面加上2个字节的vlan tag,其中12bit来表示vlan id,另外4bit表示数据的优先级!GMII(Gigabit MII)  GMII是千兆网的MII接口,这个也有相应的RGMII接口,表示简化了的GMII接口。

  GMII采用8位接口数据,工作时钟125MHz,因此传输速率可达1000Mbps。同时兼容MII所规定的10/100 Mbps工作方式。GMII接口数据结构符合IEEE以太网标准,该接口定义见IEEE 802.3-2000。发送器: 在千兆速率下,向PHY提供GTXCLK信号、TXD、TXEN、TXER信号与此时钟信号同步。否则在10/100Mbps速率下,PHY提供TXCLK时钟信号,其它信号与此信号同步。其工作频率为25MHz(100M网络)或2.5MHz(10M网络)。GTXCLK——吉比特TX…信号的时钟信号(125MHz)TXCLK——10/100Mbps信号时钟TXD[7…0]——被发送数据TXEN——发送器使能信号TXER——发送器错误(用于破坏一个数据包)接收器:RXCLK——接收时钟信号(从收到的数据中提取,因此与GTXCLK无关联)RXD[7…0]——接收数据RXDV——接收数据有效指示RXER——接收数据出错指示COL——冲突检测(仅用于半双工状态)管理配置: 管理配置接口控制PHY的特性。该接口有32个寄存器地址,每个地址16位。其中前16个已经在“IEEE 802.3,2000-22.2.4 Management Functions”中规定了用途,其余的则由各器件自己指定。MDC——配置接口时钟MDIO——配置接口I/O什么是PHY  PHY(Physical Layer,PHY)是 IEEE802.3 中定义的一个标准模块,STA(station management entity,管理实体,一般为MAC 或 CPU)通过 SMI(Serial Manage Interface)对 PHY 的行为、状态进行管理和控制,而具体管理和控制动作是通过读写 PHY 内部的寄存器实现的。一个 PHY 的基本结构如下图:

PHY

  PHY 是物理接口收发器,它实现 OSI 模型的物理层。IEEE-802.3 标准定义了以太网 PHY。包括 MII/GMII (介质独立接口) 子层、PCS(物理编码子层)、PMA(物理介质附加)子层、PMD(物理介质相关)子层、MDI子层。它符合 IEEE-802.3k 中用于 10BaseT(第14条) 和 100BaseTX(第24条和第25条) 的规范。 PHY 寄存器在 IEEE802.3 标准的 22.2.4 Management functions 节有介绍,但不涉及所有的寄存器,个别寄存器需要到其它章节中看,当然,文档里面也提到该在哪里找到哪个寄存器。

PHY寄存器  PHY 寄存器的地址空间为 5 位,从 0 到 31 最多可以定义 32 个寄存器(随着芯片功能不断增加,很多 PHY 芯片采用分页技术来扩展地址空间以定义更多的寄存器),IEEE802.3 定义了地址为 0-15 这 16 个寄存器的功能,地址16 – 31的寄存器留给芯片制造商自由定义,如下表所示。

PHY_REG (1)官方介绍请参考 IEEE802.3 标准的 22.2.4 Management functions 节。

(2)上图的 B 和 E 表示了,在特定接口下,寄存器是基本的还是扩展的。例如:MII 接口下只有 0 和 1 寄存器是基本的,其它的是扩展的。注意:所为扩展是指留给 IEEE 以后的扩展特性用,不是给 PHY 厂商的扩展,PHY 厂商自定义的只能是 16~31 号寄存器

(3)在 IEEE 标准文档及某些 PHY 手册中,某寄存器的比特(bit)用 X.y 表示,如 0.15 表示第 0 寄存器的第 15 位。

Control Register (Register 0)  寄存器 0 是 PHY 控制寄存器,通过 Control Register 可以对 PHY 的主要工作状态进行设置。应该保证控制寄存器每个位的默认值,以便在没有管理干预的情况下,上电或复位时 PHY 的初始状态为正常操作状态。Control Register 的每一位完成的功能见下。

PHY_CTRL_REG Reset: 通过将位 0.15 设置为逻辑 1 来完成复位 PHY。 该操作应将状态和控制寄存器设置为其默认状态。 因此,此操作可能会改变PHY 的内部状态以及与 PHY 关联的物理链路的状态。复位过程中 Bit15 保持为 1,复位完成之后该位应该自动清零。 在复位过程完成之前,PHY 不需要接受对控制寄存器的写入操作,并且在复位过程完成之前写入 0.15 以外的控制寄存器位可能不起作用。 复位过程应在0.15 位设置的 0.5 s 内完成。

(1)一般要改变端口的工作模式(如速率、双工、流控或协商信息等)时,在设置完相应位置的寄存器之后,需要通过 Reset 位复位 PHY 来使配置生效。

(2)该比特位的默认值为 0。

Loopback: 当位 0.14 被设置为逻辑 1 时,PHY 应置于环回操作模式。 当位 0.14 置位时,PHY 接收电路应与网络介质隔离,并且MII 或 GMII 处的 TX_EN 断言不应导致网络介质上的数据传输。 当位 0.14 置位时,PHY 应接受来自 MII 或 GMII 发送数据路径的数据,并将其返回给 MII 或 GMII 接收数据路径,以响应TX_EN 的断言。 当位 0.14 置位时,从断言 TX_EN 到断言 RX_DV 的延迟应小于 512 BT。 当位 0.14 置位时,除非设置了位 0.7,否则 COL 信号应始终保持无效。 清 0.14 位为零允许正常操作。

  Loopback 是一个调试以及故障诊断中常用的功能,Bit14 置 1 之后,PHY 和外部 MDI 的连接在逻辑上将被断开,从 MAC 经过 MII/GMII(也可能是其他的 MAC/PHY 接口)发送过来的数据将不会被发送到 MDI 上,而是在 PHY 内部(一般在 PCS)回环到本端口的 MII/GMII 接收通道上,通过 Loopback 功能可以检查 MII/GMII 以及PHY接口部分是否工作正常,对于端口不通的情况可用于故障定位。

(1)需要注意的是,很多时候 PHY 设置 Loopback 后端口可能就 Link down 了,MAC 无法向该端口发帧,这时就需要通过设置端口Force Link up 才能使用 Loopback 功能。

(2)该比特位的默认值为 0。

Speed Selection: Bit13 和 Bit6 两位联合实现 对端口的速率控制功能。链接速度可以通过自动协商过程或手动速度选择来选择。 通过将位0.12清零来禁用自动协商时,允许手动速度选择。

当禁用自动协商并将位0.6清除为逻辑0时,将位0.13设置为逻辑1将PHY配置为100 Mb / s操作,并将位0.13清除为逻辑0将PHY配置为10 Mb / s操作 。当禁用自动协商并将位0.6设置为逻辑1时,将位0.13清零为逻辑0会选择1000 Mb / s的操作。 将位0.6和0.13设置为逻辑1的组合保留用于未来的标准化。当使能自动协商时,可以读取或写入位0.6和0.13,但位0.6和位0.13的状态对链路配置没有影响,位0.6和位0.13不需要反映当它被读取时链接。  如果 PHY 通过比特 1.15:9 和比特 15.15:12 报告它不能工作在所有速度时,则比特0.6和0.13的值应该与PHY可以操作的速度相对应。并且任何试图将该位设置为无效的操作均将被忽略。 (1)对Speed Selection的修改设置,往往需要复位端口才能配置生效。因此在设置该位置的时候需要检查自动协商的设置并通过Bit15复位端口。

(2)位0.6和0.13的默认值是根据位1.15:9和15.15:12所指示的PHY可以操作的***最高数据速率***的编码组合。

Auto-Negotiation Enable: 自动协商过程应通过将位0.12设置为逻辑1来启用。 如果位0.12设置为逻辑1,则位0.13、0.8和0.6不应对链路配置和除了自动协商协议规定之外的站操作产生影响。 如果将位0.12清零为逻辑0,则无论链路配置和自动协商过程的先前状态如何,位0.13、0.8和0.6都将确定链路配置。

  如果PHY通过位1.3报告它缺乏执行自动协商的能力,则PHY应在位0.12返回零值。 如果PHY通过位1.3报告它缺乏执行自动协商的能力,则位0.12应该始终写为0,并且任何尝试将1写入位0.12都应该被忽略。

必须注意的是,对于1000BASE-T接口,自动协商必须打开。

Power Down: 通过将位0.11设置为逻辑1,可以将PHY置于低功耗状态。 清0.11位为零允许正常操作。 PHY在掉电状态下的具体行为是特定实现的。 处于掉电状态时,PHY应响应管理事务。 在转换到掉电状态期间和处于掉电状态期间,PHY不应在MII或GMII上产生寄生信号。

  当位0.11或位0.10被设置为逻辑1时,PHY不需要满足RX_CLK和TX_CLK信号功能要求。 在位0.11和0.10清零后,PHY应在0.5 s内满足22.2.2中定义的RX_CLK和TX_CLK信号功能要求。

(1)Power Down模式一般在软件shut down端口的时候使用,需要注意的是端口从Power Down模式恢复,需要复位端口以保证端口可靠的连接。

(2)该位的默认值为 0。

Isolate: 通过将位0.10设置为逻辑1,PHY可能被迫将其数据路径与MII或GMII电隔离。 清零位0.10允许正常操作。 当PHY与MII或GMII隔离时,它不会响应TXD数据包和TX_EN,TX_ER、GTX_CLK的输入。并且它的TX_CLK,RX_CLK,RX_DV,RX_ER,RXD数据包、COL和CRS输出均应为高阻态。 当PHY与MII或GMII隔离时,它将响应管理事务(MDC/MDIO接口的信号)。

(1)IEEE802.3没有对Isolate 时MDI接口的状态进行规范,此时MDI端可能还在正常运行。Isolate在实际应用中并没有用到。

(2)由于目前很多百兆的PHY芯片其MAC接口主流的都是SMII/S3MII,8个端口的接口是相互关联的,一个端口设置Isolate可能会影响其他端口的正常使用,因此在使用中注意不要随意更改bit10的状态。

Restart Auto-Negotiation: 如果PHY通过位1.3报告它缺乏执行自动协商的能力,或者如果自动协商被禁用,则PHY应在位0.9返回零值。 如果PHY通过位1.3报告它缺乏执行自动协商的能力,或者如果禁用了自动协商,则应将位0.9始终写为0,并且任何尝试将1写入位0.9应被忽略。

  Bit9置1将重新启动端口的自动协商进程,当然前提是Auto-Negotiation Enable是使能的。

一般在修改端口的自动协商能力信息之后通过Bit9置1重新启动自动协商来使端口按照新的配置建立link。

Duplex Mode: 可以通过自动协商过程或手动双面选择来选择双工模式。 通过将位0.12清零来禁用自动协商时,允许手动双面选择。

当禁用自动协商时,将位0.8设置为逻辑1将PHY配置为全双工操作,并将位0.8清零以将逻辑0配置为用于半双工操作的PHY。当启用自动协商时,可以读取或写入位0.8,但位0.8的状态对链路配置没有影响。  如果PHY通过位1.15:9和15.15:12报告它只能在一个双工模式下工作,则位0.8的值应该与PHY可以工作的模式相对应,并且任何尝试改变将该位0.8修改为无效指的操作应被忽略。 对Duplex Mode的修改配置也需要复位端口才能生效。

Collision Test: 冲突信号(COL)测试开关。在需要对COL信号进行测试时,可以通过Bit7置1,这时PHY将输出一个COL脉冲以供测试。实际测试操作中也可以将端口配置为半双工状态,通过发帧冲突来测试COL信号,因此该配置实用价值不大。Unidirectional enable: 如果PHY通过比特1.7报告它不具备编码和传输来自媒体独立接口的数据的能力,而不管PHY是否确定已建立有效链路,则PHY应在比特0.5中返回零值,并且 任何尝试写一个到位0.5应该被忽略。Status register  寄存器1是PHY状态寄存器,主要包含PHY的状态信息,大多数bit的值都是由芯片厂家确定的,每一个bit的功能在表3种已有详细说明。

PHY_STA_REG

寄存器中各位的详细说明如下:100BASE-T4 ability: 当读为逻辑1时,位1.15指示PHY有能力使用100BASE-T4信令规范执行链路发送和接收。 当读为逻辑0时,位1.15表示PHY缺乏使用100BASE-T4信令规范执行链路发送和接收的能力。100BASE-X full duplex ability: 当读为逻辑1时,位1.14指示PHY有能力使用100BASE-X信令规范执行全双工链路传输和接收。 当作为逻辑0读取时,bit1.14表示PHY缺乏使用100BASE-X信令规范执行全双工链路传输和接收的能力。100BASE-X half duplex ability: 当读为逻辑1时,位1.13指示PHY有能力使用100BASE-X信令规范执行半双工链路传输和接收。 当读为逻辑0时,位1.13指示PHY缺乏使用100BASE-X信令规范执行半双工链路传输和接收的能力。其他同类型的值意义基本与上面几个相同:指示PHY所具有的工作模式能力,不再一一说明。Unidirectional ability: 当读为逻辑1时,位1.7指示PHY具有编码和传输来自媒体独立接口的数据的能力,而不管PHY是否确定已建立有效链路。 当读为逻辑0时,位1.7指示PHY只有在PHY确定已建立有效链路时才能从媒体独立接口传输数据。MF preamble suppression ability: 当读为逻辑1时,位1.6指示PHY能够接受管理帧,而不管它们是否在22.2.4.5.2中描述的前导码模式之前。 当读为逻辑0时,位1.6指示PHY不能接受管理帧,除非它们之前是22.2.4.5.2中描述的前导码模式。Auto-Negotiation Complete: 当读为逻辑1时,位1.5指示自动协商过程已完成,并且由自动协商协议(条款28或条款37)实施的扩展寄存器的内容是有效的。 当读为逻辑0时,位1.5指示自动协商过程尚未完成,并且扩展寄存器的内容由自动协商协议的当前状态定义,或者为手动配置写入。 如果自动协商通过清除位0.12禁用,则PHY应在位1.5返回零值。 如果PHY缺乏执行自动协商的能力,它还应在位1.5返回零值。 在调试以及异常故障处理时,可以通过该位寄存器的状态判断AN是否成功,从而进一步的检查AN相关的设置是否正确,或者芯片的AN功能是否正常等。

Remote Fault: 当读为逻辑1时,位1.4表示检测到远程故障状态。 故障类型以及故障检测的标准和方法是PHY特定的。 远程故障位必须使用锁存功能来实现,以便发生远程故障将导致远程故障位置位,并保持置位状态直至被​​清除。 每当通过管理接口读取寄存器1时,远程故障位应清零,并且还应通过PHY复位清零。

  远端错误指示位。Bit4=1代表连接对端(Link Partner)出错,至于出错的具体类型以及错误检测机制在规范中并没有定义,由PHY的制造商自由发挥,一般的厂商都会在其他的寄存器(Register16-31由厂商自行定义)指示比较详细的错误类型。在与端口相关的故障查证中,Remote Fault是一个重要的指示信息,通过互联双方的Remote Fault信息(可能要加上其他的具体错误指示),可以帮助定位故障原因。Auto-Negotiation ability: 当读为逻辑1时,位1.3指示PHY有能力执行自动协商。 当读为逻辑0时,位1.3指示PHY缺乏执行自动协商的能力。Link Status: 当读为逻辑1时,位1.2指示PHY已经确定已建立有效链路。 当作为逻辑0读取时,位1.2指示该链接无效。 确定链路有效性的标准是PHY特定的。 链路状态位应该使用锁存功能来实现,以便发生链路故障情况将导致链路状态位清零并保持清零,直到通过管理接口读取。 此状态指示旨在支持在30.5.1.1.4,aMediaAvailable中定义的管理属性。

  实际应用中一般都是通过Bit2来判断端口的状态。而且,一般的MAC芯片也是通过轮询PHY的这个寄存器值来判断端口的Link状态的(这个过程可能有不同的名称,比如BCM叫做Link Scan,而Marvell叫做PHY Polling。)如前所述,在AN Enable的情况下,Link Status的信息只有在Auto-Negotiation Complete指示已经完成的情况下才是正确可靠的,否则有可能出错。Jabber Detect: 当作为逻辑1读取时,位1.1指示已经检测到爆音条件。 此状态指示旨在支持30.5.1.1.6中定义的管理属性,aJabber和30.5.1.3.1 nJabber中定义的MAU通知。 检测Jabber条件的标准是PHY特定的。 Jabber检测位应该使用锁存功能来实现,以便发生Jabber条件将导致Jabber检测位置位,并保持置位状态直至被​​清除。 每次通过管理接口读取寄存器1时,Jabber检测位应清零,并且还应通过PHY复位清零。

  IEEE802.3对Jabber的解释是“A condition wherein a station transmits for a period of time longer than the maximum permissible packet length, usually due to a fault condition”。这一位指示的是Link Partner发送的时间超过了规定的最大长度。值得注意的是,Jabber Detect只有在10BASE-T模式下才有意义,100和1000M模式是没有定义Jabber这一功能的。PHY Identifier Register  寄存器2和3存放PHY芯片的型号代码,寄存器2(PHY ID1)为高16位,而寄存器3(PHY ID2)为低16位。由芯片制造商自行定义,实际应用中软件通过读取这两个寄存器的内容可以识别PHY的型号和版本。

  PHY标识符应由由IEEE分配给PHY制造商的组织唯一标识符(OUI)的(只需要使用第3至第24位,共22位),加上6位制造商的型号以及4位制造商的修订版编号组成。 PHY标识符旨在提供足够的信息来支持30.1.2中所要求的oResourceTypeID对象。

  OUI的第三位分配给位2.15,OUI的第四位分配给位2.14,依此类推。 位2.0包含OUI的第十八位。 位3.15包含OUI的第十九位,位3.10包含OUI的第二十四位。 位3.9包含制造商型号的MSB。 位3.4包含制造商型号的LSB。 位3.3包含制造商版本号的MSB,位3.0包含制造商版本号的LSB。具体如下图所示:

PHY_ID_REGAuto-Negotiation Advertisement Register (Register 4) (R/W)  寄存器4是自动协商的能力通告寄存器,在AN Enable的前提下(见寄存器0),端口根据该寄存器的相关配置将自动协商信息通过FLP在MDI上进行通告。当AN配置为Disable状态的时候,寄存器4的配置将不起作用,端口的工作模式由控制寄存器中的配置决定。

  该寄存器包含PHY的通告能力,它们将在自动协商期间传送给其链接伙伴。 基本页的位定义在IEEE标准的28.2.1.2中定义。 上电时,在自动协商开始之前,该寄存器应具有以下默认配置:Selector Field (4.4:0): 被设置为适当的代码,如IEEE标准的附件28A中所规定。Reserved(4.14): 被设置为逻辑0。Technology Ability Field(4.11:5): 根据MII状态寄存器(寄存器1)(1.15:11)中设置的值或等效值设置。 另见28.2.1.2.3和附件28D。

PHY_REG_4Link codeword encoding(基本链路码字)  在FLP Burst内传输的基本链路代码字(基本页面)应该传达如图28-7所示的编码。 自动协商功能可以使用下一页功能支持其他页面。 下一页交换中使用的链接代码字的编码在28.2.3.4中定义。 在FLP Burst中,D0应该是第一个传输的位。

这里写图片描述Next Page function  下一页功能使用标准的自动协商仲裁机制来允许交换任意的数据。 数据由可选的下一页信息携带,其遵循用于基本链接码字的传输和确认过程。 定义了四种类型的下一页编码:消息页面,未格式化页面,扩展消息页面和扩展的未格式化页面。

  关于该部分,具体见IEEE标准的28.2.3.4 Next Page function。

  在IEEE标准中,Auto-Negotiation Advertisement Register中的各部分全部是在独立章节中进行介绍的。具体如下:Selector Field: 选择器字段(S [4:0])是一个5位宽的字段,编码32个可能的消息。 链路码字中的选择器字段S [4:0]应用于识别自动协商发送的消息的类型。 下表列出了可能发送的消息的类型。 随着新消息的发展,该表格将相应更新。

Selector Field

未指定的组合保留供将来使用。 不会传输选择器字段的预留组合。***我们所接触的以太网PHY遵从IEEE802.3规范,Selector Field=0001,该区域不可随意更改(很多PHY将此区域设计为只读寄存器,以免被修改)***。Technology Ability Field: 技术能力字段(A [6:0])是一个7位宽的字段,其中包含指示选择器字段值特定的支持技术的信息。 这些位被映射到各个技术,以便能够针对单个选择器字段值并行通告能力。 附录28B.2和附件28D描述了IEEE 802.3选择器的技术能力字段编码。 链接代码字中可能会公布多种技术。 设备应支持其宣传的技术的数据服务能力。

Technology Ability FieldExtended Next Page: 扩展下一页(XNP)被编码在基本链路码字的位D12中。 扩展下一页位指示本地设备在设置为逻辑1时支持扩展下一页的传输,并指示本地设备在设置为逻辑0时不支持扩展下一页。 Extended Next Page的使用与协商的数据速率,媒体或链接技术是正交的。 扩展下一页位按照28.2.3.4中的扩展下一页功能规范使用。Next Page: 无论选择器字段值还是链接码字编码,下一页(NP)都在D15位编码。 支持附加链接码字编码的传输和接收是可选的。 如果不支持Next Page功能,NP位应始终设置为逻辑0。 如果设备实现下一页功能并希望进行下一页交换,则应将NP位设置为逻辑1。 设备可以实现下一页功能,并通过将NP位设置为逻辑0来选择不参与下一页交换。 下一页功能在28.2.3.4中定义。Remote Fault: 远程故障(RF)编码在基本链路码字的位D13中。 默认值是逻辑零。 远程故障位为传输简单的故障信息提供了一种标准的传输机制。 当自动协商通告寄存器(寄存器4)中的RF位设置为逻辑1时,发送的基本链路码字中的RF位被设置为逻辑1。 当接收到的基本链路代码字中的RF位被设置为逻辑1时,如果存在MII管理功能,则MII状态寄存器(寄存器1)中的远程故障位将被设置为逻辑1。Auto-Negotiation Link Partner ability register (Register 5) (RO)  寄存器5保存的是本端PHY接收到的对端PHY所通告的端口能力,寄存器5的结构和寄存器4基本一致。Auto-Negotiation Expansion Register (Register 6) (RO)  寄存器6保存了PHY自动协商过程的异常信息。从这个寄存其中我们可以获取到Link Partner子否支持自动协商以及自动协商下一页有没有收到的信息。

Auto-Negotiation Expansion RegisterAuto-Negotiation Next Page transmit register (Register 7) (R/W)  自动协商下一页发送寄存器包含在支持下一页功能时要发送的下一页链接码字。 (见表28-6)内容在28.2.3.4中定义。 上电时,该寄存器应包含默认值2001H,该值表示消息代码设置为Null消息的消息页面。 该值可以由设备希望传输的任何有效的下一页消息代码替换。 写入该寄存器应将mr_next_page_loaded设置为true。

Register 7Auto-Negotiation Link Partner Received Next Page register (Register 8) (RO)Register 8未完待续。。。附件无参考文档IEEE Standard for Ethernet网络版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。 发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/190748.html原文链接:https://javaforall.cn本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。 原始发表:2022年9月22日 ,如有侵权请联系 cloudcommunity@tencent.com 删除前往查看单片机本文分享自 作者个人站点/博客 前往查看如有侵权,请联系 cloudcommunity@tencent.com 删除。本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!单片机评论登录后参与评论0 条评论热度最新登录 后参与评论推荐阅读LV.关注文章0获赞0目录结构什么是 MAC什么是 MIIRMII(Reduced Media Independant Interface)GMII(Gigabit MII)什么是PHYPHY寄存器Control Register (Register 0)Status registerPHY Identifier RegisterAuto-Negotiation Advertisement Register (Register 4) (R/W)Auto-Negotiation Link Partner ability register (Register 5) (RO)Auto-Negotiation Expansion Register (Register 6) (RO)Auto-Negotiation Next Page transmit register (Register 7) (R/W)Auto-Negotiation Link Partner Received Next Page register (Register 8) (RO)附件参考文档领券社区专栏文章阅读清单互动问答技术沙龙技术视频团队主页腾讯云TI平台活动自媒体分享计划邀请作者入驻自荐上首页技术竞赛资源技术周刊社区标签开发者手册开发者实验室关于社区规范免责声明联系我们友情链接腾讯云开发者扫码关注腾讯云开发者领取腾讯云代金券热门产品域名注册云服务器区块链服务消息队列网络加速云数据库域名解析云存储视频直播热门推荐人脸识别腾讯会议企业云CDN加速视频通话图像分析MySQL 数据库SSL 证书语音识别更多推荐数据安全负载均衡短信文字识别云点播商标注册小程序开发网站监控数据迁移Copyright © 2013 - 2024 Tencent Cloud. All Rights Reserved. 腾讯云 版权所有 深圳市腾讯计算机系统有限公司 ICP备案/许可证号:粤B2-20090059 深公网安备号 44030502008569腾讯云计算(北京)有限责任公司 京ICP证150476号 |  京ICP备11018762号 | 京公网安备号11010802020287问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档Copyright © 2013 - 2024 Tencent Cloud.All Rights Reserved. 腾讯云 版权所有登录 后参与评论00

37张图详解MAC地址、以太网、二层转发、VLAN - 知乎

37张图详解MAC地址、以太网、二层转发、VLAN - 知乎首发于图解网络切换模式写文章登录/注册37张图详解MAC地址、以太网、二层转发、VLAN网工FoxMAC 地址每个网卡或三层网口都有一个 MAC 地址, MAC 地址是烧录到硬件上,因此也称为硬件地址。MAC 地址作为数据链路设备的地址标识符,需要保证网络中的每个 MAC 地址都是唯一的,才能正确识别到数据链路上的设备。MAC 地址由 6 个字节组成。前 3 个字节表示厂商识别码,每个网卡厂商都有特定唯一的识别数字。后 3 个字节由厂商给每个网卡进行分配。厂商可以保证生产出来的网卡不会有相同 MAC 地址的网卡。现在可以通过软件修改 MAC 地址,虚拟机使用物理机网卡的 MAC 地址,并不能保证 MAC 地址是唯一的。但是只要 MAC 地址相同的设备不在同一个数据链路上就没问题。为了查看方便, 6 个字节的 MAC 地址使用十六进制来表示。每个字节的 8 位二进制数分别用 2 个十六进制数来表示,例如我的网卡 MAC 地址是 E0-06-E6-39-86-31。 什么是字节?什么是比特? 比特,英文名 bit ,也叫位。二进制中最小单位,一个比特的值要么是 0 要么是 1 。字节,英文名 Byte 。一个字节由八个比特构成。 MAC 地址怎么使用? 最常用的以太网和无线局域网,都是使用 MAC 地址作为地址标识符进行通信的。以太网有线局域网中普遍使用以太网,以太网标准简单,传输速率高。常见的网络拓扑结构如下图。 什么是网络拓扑? 网络的连接和构成的形态称为网络拓扑。它不仅可以直观的看到网络物理连接方式,还可以表示网络的逻辑结构。以太网数据格式当今最常用的以太网协议标准是 ETHERNET II 标准。 ETHERNET II 标准定义的数据帧格式如下图。前导码( Preamble )前导码由 7 个字节组成,每个字节固定为 10101010 。之后的 1 个字节称为帧起始定界符,这个字节固定为 10101011 。这 8 个字节表示以太网帧的开始,也是对端网卡能够确保与其同步的标志。帧起始定界符的最后两位比特被定义为 11 ,之后就是以太网数据帧的本体。目的地址( Destination Address )目的地址由 6 个字节组成,用来标识数据帧的目的设备,类似于快递的收件人地址。源地址( Source Address )源地址由 6 个字节组成,用来标识数据帧的始发设备,类似于快递的发件人地址。类型( Type )类型字段由 2 个字节组成。类型字段是表明上一层(即网络层)的协议类型,可以让接收方使用相同的协议进行数据帧的解封装。数据( Data )帧头后就是数据。一个数据帧所能容纳的最大数据范围是 46 ~ 1500 个字节。如果数据部分不足 46 个字节,则填充这个数据帧,让它的长度可以满足最小长度的要求。FCS( Frame Check Sequence )FCS 由 4 个字节组成,位于数据帧的尾部,用来检查帧是否有所损坏。通过检查 FCS 字段的值将受到噪声干扰的错误帧丢弃。 最小的数据帧是多少字节? 数据帧的各字段加起来一共是 64 字节,其中数据是 46 字节。再加上前导码就是 72 字节。因此最小的数据帧是 72 字节。在传输过程中,每个数据帧还有 12 字节的数据帧间隙,所以最小的可传输数据帧长度是 84 字节,即 672 比特。交换机二层转发原理交换机有多个网络端口,它通过识别数据帧的目标 MAC 地址,根据 MAC 地址表决定从哪个端口发送数据。MAC 地址表不需要在交换机上手工设置,而是可以自动生成的。 交换机是如何添加、更新、删除 MAC 地址表条目的? 在初始状态下,交换机的 MAC 地址表是空的,不包含任何条目。当交换机的某个端口接收到一个数据帧时,它就会将这个数据帧的源 MAC 地址、接收数据帧的端口号作为一个条目保存在自己的 MAC 地址表中,同时在接收到这个数据帧时重置这个条目的老化计时器时间。这就是交换机自动添加 MAC 地址表条目的方式。在新增这一条 MAC 地址条目后,如果交换机再次从同一个端口收到相同 MAC 地址为源 MAC 地址的数据帧时,交换机就会更新这个条目的老化计时器,确保活跃的的条目不会老化。但是如果在老化时间内都没收到匹配这个条目的数据帧,交换机就会将这个老化的条目从自己的 MAC 地址表中删除。还可以手动在交换机的 MAC 地址表中添加静态条目。静态添加的 MAC 地址条目优先动态学习的条目进行转发,而且静态条目没有老化时间,会一直保存在交换机的 MAC 地址表中。 如何使用 MAC 地址表条目进行转发? 当交换机的某个端口收到一个单播数据帧时,它会查看这个数据帧的二层头部信息,并进行两个操作。一个操作是根据源 MAC 地址和端口信息添加或更新 MAC 地址表。另一个操作是查看数据帧的目的 MAC 地址,并根据数据帧的目的 MAC 地址查找自己的 MAC 地址表。在查找 MAC 地址表后,交换机会根据查找结果对数据帧进行处理,这里有 3 中情况:交换机没有在 MAC 地址表中找到这个数据帧的目的 MAC 地址,因此交换机不知道自己的端口是否有连接这个 MAC 地址的设备。于是,交换机将这个数据帧从除了接收端口之外的所有端口泛洪出去。交换机的 MAC 地址表中有这个数据帧的目的 MAC 地址,且对应端口不是接收到这个数据帧的端口,交换机知道目的设备连接在哪个端口上,因此交换机会根据 MAC 地址表中的条目将数据帧从对应端口单播转发出去,而其它与交换机相连的设备则不会收到这个数据帧。交换机的 MAC 地址表中有这个数据帧的目的 MAC 地址,且对应端口就是接收到这个数据帧的端口。这种情况下,交换机会认为数据帧的目的地址就在这个端口所连接的范围内,因此目的设备应该已经收到数据帧。这个数据帧与其它端口的设备无关,不会将数据帧从其它端口转发出去。于是,交换机会丢弃数据帧。单播:主机一对一的发送数据。单播地址是主机的 MAC 地址。 广播:向局域网内所有设备发送数据。只有全 1 的 MAC 地址为广播 MAC 地址,即 FF-FF-FF-FF-FF-FF 。 泛洪:将某个端口收到的数据从除该端口之外的所有端口发送出去。泛洪操作广播的是普通数据帧而不是广播帧。VLAN广播域是广播帧可以到达的区域。换句话说,由多个交换机和主机组成的网络就是一个广播域。网络规模越大,广播域就越大,泛洪流量也越来越大,降低通信效率。在一个广播域内的任意两台主机之间可以任意通信,通信数据有被窃取的风险。为了解决广播域扩大带来的性能问题和安全性降低问题, VLAN 技术应运而生。 VLAN 技术能够在逻辑上把一个物理局域网分隔为多个广播域,每个广播域称为一个虚拟局域网(即 VLAN )。每台主机只能属于一个 VLAN ,同属一个 VLAN 的主机通过二层直接通信,属于不同 VLAN 的主机只能通过 IP 路由功能才能实现通信。通过划分多个 VLAN ,从而减小广播域传播的范围,过滤多余的包,提高网络的传输效率,同时提高了网络的安全性。VLAN 原理VLAN 技术通过给数据帧插入 VLAN 标签(又叫 VLAN TAG)的方式,让交换机能够分辨出各个数据帧所属的 VLAN 。VLAN 标签是用来区分数据帧所属 VLAN 的,是 4 个字节长度的字段,插入到以太网帧头部上。 VLAN 标签会插入到源 MAC 地址后面, IEEE 802.1Q 标准有这个格式定义和字段构成说明。TPID (标签协议标识符): 长度 2 个字节,值为 0x8100 ,用来表示这个数据帧携带了 802.1Q 标签。不支持 802.1Q 标准的设备收到这类数据帧,会把它丢弃。TCI (标签控制信息): 长度 2 个字节,又分为三个子字段,用来表示数据帧的控制信息:优先级( Priority ):长度为 3 比特,取值范围 0 ~ 7 ,用来表示数据帧的优先级。取值越大,优先级越高。当交换机发送拥塞是,优先转发优先级高的数据帧。CFI (规范格式指示器):长度为 1 比特,取值非 0 即 1 。VLAN ID ( VLAN 标识符):长度为 12 比特,用来表示 VLAN 标签的数值。取值范围是 1 ~ 4094 。 划分 VLAN 后,交换机如何处理广播报文? 交换机上划分了多个 VLAN 时,在交换机接收到广播数据帧时,只会将这个数据帧在相同 VLAN 的端口进行广播。 划分 VLAN 后,交换机如何处理目的 MAC 地址不在 MAC 地址表中的单播数据帧? 交换机上划分了多个 VLAN 时,当交换机接收到一个目的 MAC 地址不存在于自己 MAC 地址表中的单播数据帧时,只会将这个数据帧在相同 VLAN 的端口进行泛洪。 划分 VLAN 后,不同 VLAN 的主机能否通信? 划分多 VLAN 的环境中,即使交换机 MAC 地址表里保存了某个数据帧的目的 MAC 地址条目,若这个目的 MAC 地址所对应的端口与数据帧的入端口在不同的 VLAN 中,交换机也不会通过 MAC 地址表中的端口发送数据帧。小结:在不使用路由转发的前提下,交换机不会从一个 VLAN 的端口中接收到的数据帧,转发给其它 VLAN 的端口。 怎么区分不同的 VLAN ? 通过 VLAN ID 进行区分,例如 VLAN 10 和 VLAN 20 就是不同的 VLAN 。 VLAN 技术有哪些好处? 增加了广播域的数量,减小了每个广播域的规模,也减少了每个广播域中终端设备的数量;增强了网络安全性,保障网络安全的方法增加了;提高了网络设计的逻辑性,可以规避地理、物理等因素对于网络设计的限制。划分 VLAN我们可以使用不同的方法,把交换机上的每个端口划分到某个 VLAN 中,以此在逻辑上分隔广播域。交换机通常会使用基于端口划分 VLAN 的方法。在交换机上手动配置,绑定交换机端口和 VLAN ID 的关系。优点:配置简单。想要把某个端口划分到某个 VLAN 中,只需要把端口的 PVID (端口 VLAN ID )配置到相应的 VLAN ID 即可。缺点:当终端设备移动位置是,可能需要为终端设备连接的新端口重新划分 VLAN 。除了这种方法外,还可以使用基于 MAC 地址划分 VLAN 、基于 IP 地址划分 VLAN 、基于协议划分 VLAN 、基于策略划分 VLAN 等方法来划分 VLAN。PVID :接口默认 VLAN ID ,是交换机端口配置的参数,默认值是 1 。跨交换机 VLAN 原理终端设备不会生成带 VLAN 标签的数据帧,它们发出的数据帧叫做无标记帧( Untagged )。它们连接的交换机会给无标记帧打上 VLAN 标签。交换机通过每个端口的 PVID ,判断从这个接口收到的无标记帧属于哪个 VLAN ,并在转发时,插入相应的 VLAN 标签,从而将无标记帧变为标记帧( Tagged )。当两台交换机通过端口连接时,收到的数据帧是标记帧还是无标记帧?交换机端口会如何处理呢?交换机根据连接的设备类型,判断各个接口收到的数据帧是否打标,来配置交换机接口的类型。如果交换机接口收到无标记帧,由交换机根据这个接口所在 VLAN 为数据帧打上 VLAN 标签;同时接口发送数据帧时,也不携带 VLAN 标签。应该把这类接口配置为 Access (接入)接口, Access 接口连接的链路称为 Access 链路。 如果交换机接口收到多个 VLAN 的流量,也就是收到了标记帧;同时为了让对端设备能够区分不同 VLAN 的流量,通过接口发出的流量会打上 VLAN 标签。应该把这类接口配置为 Trunk (干道)接口,相应的链路称为 Trunk 链路。 跨交换机发送数据 主机 A 以主机 F 的 MAC 地址作为目的 MAC 地址封装了一个数据帧,从网卡发送出去。交换机 A 在 Access 接口收到数据帧。查询 MAC 地址表,发现数据帧的目的地址是与交换机 B 相连的 Trunk 接口。于是交换机给数据帧打上 Access 接口的 PVID 配置,即给数据帧打上 VLAN 10 的标签,并从 Trunk 接口转发给交换机 B 。交换机 B 在 trunk 接口收到数据帧。查看 MAC 地址表,发现是 VLAN 10 的数据帧,目的地址设备是连接在 VLAN 10 的一个 Access 接口上。于是去掉数据帧的 VLAN 标签,并从这个 Access 接口转发给主机 F 。 模拟实验 Access 接口和 Trunk 接口的配置 实验拓扑图实验要求将 SW 1 (即交换机 1)和 SW 2 (即交换机 2)相连的接口配置为 Trunk 接口,允许传输 VLAN 5 的数据;将 PC (即主机) 与 SW 相连接口配置为 Access 接口,接口的 PVID 配置为 VLAN 5 。实验步骤SW 1 上的配置如下:检查 SW 1 的接口配置,使用命令 display vlan 查看接口 VLAN 情况。 Hybrid 接口的配置 三种接口类型特点:Access 接口:这种接口只能属于一个 VLAN,只能接收和发送一个 VLAN 的数据。通常用于连接终端设备,比如主机或服务器等。Trunk 接口:这种接口能够接收和发送多个 VLAN 的数据,通常用于连接交换机。Hybrid 接口:这种接口能够接收和发送多个 VLAN 的数据,可用于交换机的链路,也可用于终端设备。与 Trunk 接口的区别是,发送数据时 Trunk 接口只会摘掉 PVID 标签,而 Hybrid 接口能够不携带 VLAN 标签发送多个 VLAN 数据。实验拓扑图实验要求新建 3 个 VLAN ,PC 1 属于 VLAN 2 ,PC 2 属于 VLAN 3 ,Server 1 (即服务器 1)属于 VLAN 10 ;通过 Hybrid 接口实现 VLAN 2 和 VLAN 3 不能互通,但 VLAN 2 和 VLAN 3 都能与 VLAN 10 进行通信。实验步骤SW 1 的 E0/0/2 接口,只允许通过 VLAN 2 , PC 1 又需要访问 VLAN 10 ,但是无法识别 VLAN 标签信息,因此配置 Hybrid 的 PVID 为 VLAN 2 ,同时放通 VLAN 2 和 VLAN 10 。 E0/0/3 接口配置同理。 E0/0/1 接口需要放通 VLAN 2 、 VLAN 3 和 VLAN 10 的流量,对端交换机又需要识别 VLAN 标签,因此以带 VLAN 标签的形式放通 VLAN 2 、 VLAN 3 和 VLAN 10 的流量。 SW 1 上的配置如下:SW 2 的 E0/0/1 接口配置和 SW 1 的 E0/0/1 接口同理。SW 2 的 E0/0/10 接口,只允许通过 VLAN 10 , Server 1 又需要放通 VLAN 2 和 VLAN 3 的流量,因此配置 Hybrid 的 PVID 为 VLAN 10 ,同时放通 VLAN 2 、 VLAN 3 和 VLAN 10 。 SW2 上的配置如下:检查 VLAN 10 信息,分别在 SW 1 和 SW 2 上使用命令 display vlan 10 查看配置是否正确。结尾Access 接口接收数据帧处理过程Access 接口发送数据帧处理过程Trunk 接口接收数据帧处理过程Trunk 接口发送数据帧处理过程参考资料:图解TCP/IP - 竹下隆史网络基础 - 田果路由与交换技术 - 刘丹宁编辑于 2022-03-22 08:35局域网VLANMAC地址​赞同 942​​38 条评论​分享​喜欢​收藏​申请转载​文章被以下专栏收录图解网络看图学网络更简单程序员架构进阶公众号 程序员架构进阶,分享多年项目实践和架构经验小七好物生活工作的好物,一起发现,一起

秒懂以太网的 MAC 硬件地址-腾讯云开发者社区-腾讯云

网的 MAC 硬件地址-腾讯云开发者社区-腾讯云wsuo秒懂以太网的 MAC 硬件地址关注作者腾讯云开发者社区文档建议反馈控制台首页学习活动专区工具TVP最新优惠活动文章/答案/技术大牛搜索搜索关闭发布登录/注册首页学习活动专区工具TVP最新优惠活动返回腾讯云官网wsuo首页学习活动专区工具TVP最新优惠活动返回腾讯云官网社区首页 >专栏 >秒懂以太网的 MAC 硬件地址秒懂以太网的 MAC 硬件地址wsuo关注发布于 2020-07-30 19:30:061.6K0发布于 2020-07-30 19:30:06举报文章被收录于专栏:技术进阶之路技术进阶之路MAC 层的硬件地址在局域网中,以下几个称呼是一样的: 硬件地址 物理地址 MAC 地址48 位的 MAC 地址 ✅ IEEE 的注册管理机构 RA 负责向厂家分配地址字段 6 个字节中的前三个字节 (即高位 24 位),称为组织唯一标识符。

✅ 所以就只有 3 个字节能支配了,这 3 个字节由厂家支配,称为扩展唯一标识符,必须保证生产出的适配器没有重复地址。

❗ 生产适配器时,6 字节的 MAC 地址已被固化在适配器的 ROM,因此,MAC 地址也叫做硬件地址 (hardware address) 或物理地址。所以无论你把它带到哪里去,或者把它砸了,烧了?,它的硬件地址还是不会变。下面介绍一下 IEEE 组织的一些规定:IEEE 规定地址字段的 第一字节的最低位 为 I/GI/GI/G 位。I/GI/GI/G 表示 Individual/GroupIndividual / GroupIndividual/Group。当 I/GI/GI/G 位 =0= 0=0 时,地址字段表示一个单站地址。当 I/GI/GI/G 位 =1= 1=1 时,表示组地址,用来进行多播。所以对于前三个字节,既然第一个字节的最后一位被占用了,就只能支配其余的 232323 位了。 ❗所有 48 位都为 1 时,为广播地址。只能作为目的地址使用。

IEEE 又规定了!IEEE 把地址字段第一字节的倒数第 222 位规定为 G/LG/LG/L 位,表示 Global/LocalGlobal / LocalGlobal/Local 。当 G/LG/LG/L 位 =0= 0=0 时,是全球管理。当 G/LG/LG/L 位 =1= 1=1 时, 是本地管理。❓ 那么有啥区别呢 ? 全球管理需要购买,本地管理用户自定义,不过以太网几乎不会去理会这个用户自定义的。

适配器检查 MAC 地址适配器从网络上每收到一个 MAC 帧就首先用硬件检查 MAC 帧中的 MAC 地址,然后检查这个帧是否是下面的其中一种,如果不是就丢弃,如果是就收下然后转发。1️⃣ 单播 (unicast) 帧(一对一)2️⃣ 广播 (broadcast) 帧(一对全体)3️⃣ 多播 (multicast) 帧(一对多)MAC 帧的格式常用的以太网 MAC 帧格式有两种标准 :✅ DIX Ethernet V2DIX \space Ethernet \space V2DIX Ethernet V2 标准✅ IEEE的802.3IEEE 的 802.3IEEE的802.3 标准最常用的 MACMACMAC 帧是以太网 V2V2V2 的格式。

我们来放大看一下:

1️⃣ 首先是目的地址字段,占 6 个字节。

2️⃣ 然后是源地址字段,也是 6 字节。

3️⃣ 类型字段用来标志上一层使用的是什么协议,以便把收到的 MACMACMAC 帧的数据上交给上一层的这个协议。

4️⃣ 数据字段的正式名称是 MAC 客户数据字段。

最小长度 64字节−18字节64 字节 - 18 字节64字节−18字节 的首部和尾部 === 数据字段的最小长度( 464646 字节

5️⃣ FSC 用于差错检测

❓ 其实你会发现从 MACMACMAC 层到物理层还会多出 888 个字节,那么这 888 个字节是啥呢? 在帧的前面插入(硬件生成)的 8 字节中,第一个字段共 7 个字节,是前同步码,用来迅速实现 MACMACMAC 帧的比特同步。第二个字段 1 个字节是帧开始定界符,表示后面的信息就是 MAC 帧。

最后提一下与 IEEE 802.3 MAC帧IEEE \space802.3\space MAC 帧IEEE 802.3 MAC帧 的区别:IEEE 802.3 规定的 MAC 帧的第三个字段是“长度 / 类型”。当 长度/类型长度 / 类型长度/类型 字段值小于 0x06000x06000x0600 时,数据字段必须装入上面的逻辑链路控制 LLC 子层的 LLC 帧。 帧间最小间隔为 9.6μs9.6 \mu s9.6μs,相当于 96bit96 bit96bit 的发送时间。

一个站在检测到总线开始空闲后,还要等待 9.6μs9.6 \mu s9.6μs 才能再次发送数据。

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。 原始发表:2020-04-21 ,如有侵权请联系 cloudcommunity@tencent.com 删除前往查看ethernetglobalspace本文分享自 作者个人站点/博客 前往查看如有侵权,请联系 cloudcommunity@tencent.com 删除。本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!ethernetglobalspace评论登录后参与评论0 条评论热度最新登录 后参与评论推荐阅读LV.关注文章0获赞0目录MAC 层的硬件地址MAC 帧的格式领券社区专栏文章阅读清单互动问答技术沙龙技术视频团队主页腾讯云TI平台活动自媒体分享计划邀请作者入驻自荐上首页技术竞赛资源技术周刊社区标签开发者手册开发者实验室关于社区规范免责声明联系我们友情链接腾讯云开发者扫码关注腾讯云开发者领取腾讯云代金券热门产品域名注册云服务器区块链服务消息队列网络加速云数据库域名解析云存储视频直播热门推荐人脸识别腾讯会议企业云CDN加速视频通话图像分析MySQL 数据库SSL 证书语音识别更多推荐数据安全负载均衡短信文字识别云点播商标注册小程序开发网站监控数据迁移Copyright © 2013 - 2024 Tencent Cloud. All Rights Reserved. 腾讯云 版权所有 深圳市腾讯计算机系统有限公司 ICP备案/许可证号:粤B2-20090059 深公网安备号 44030502008569腾讯云计算(北京)有限责任公司 京ICP证150476号 |  京ICP备11018762号 | 京公网安备号11010802020287问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档Copyright © 2013 - 2024 Tencent Cloud.All Rights Reserved. 腾讯云 版权所有登录 后参与评论00

以太网中,为什么要区分802.3帧和EthernetII帧? - 知乎

以太网中,为什么要区分802.3帧和EthernetII帧? - 知乎首页知乎知学堂发现等你来答​切换模式登录/注册以太网(Ethernet)802.11SDH以太网中,为什么要区分802.3帧和EthernetII帧?802.3感觉完全可以用Ethernet II帧结构来替代,那为什么需要?我的想法是历史遗留问题? 还有哪些协议是承载在802.3帧之上的?(STP、…显示全部 ​关注者14被浏览33,486关注问题​写回答​邀请回答​好问题​添加评论​分享​6 个回答默认排序微思网络​已认证账号​ 关注以太网的帧结构分两种:第一种是Ethernet_II的帧第二种是IEEE802.3的帧帧样式之间的差异很小。两种标准之间最大的差异是 802.3 中增加了帧首定界符 (SFD),并且“类型”字段变为“长度”字段。前导码和帧首定界符字段:前导码(7 个字节)和帧首定界符 (SFD)(也称为帧首)(1 个字节)字段用于发送设备与接收设备之间的信号同步。帧的这前八个字节用于引起接收节点的注意。前几个字节的实质作用是告诉接收方准备接收新帧。目的MAC地址字段:该 6 字节字段是预期接收方的标识符。此地址被第 2 层用来协助设备确定帧是否发送到目的地。帧中的地址将会与设备中的 MAC 地址进行比对。如果匹配,设备就接受该帧。源MAC地址字段:该 6 字节字段标识发出帧的网卡或接口。长度字段:在 1997 年以前的所有 IEEE 802.3 标准中,“长度”字段定义帧的数据字段的准确长度。此字段后来被用作 FCS 的一部分,用来确认是否正确收到报文。否则,该字段将用于描述存在哪个上层协议。如果两个二进制八位数值等于或大于 0x0600 十六进制值或 1536 十进制值,则数据字段的内容将根据指定的 EtherType 协议进行解码。而如果值等于或小于 0x05DC 十六进制值或 1500 十进制值,则使用“长度”字段指定使用 IEEE 802.3 帧格式。这就是以太网 II 帧和 802.3 帧的区别。数据字段:该字段(46 - 1500 个字节)包含来自较高层的封装数据(一般是第 3 层 PDU 或更常见的 IPv4 数据包)。所有帧至少必须有 64 个字节。如果封装的是小数据包,则帧使用填充位增大到最小值。帧校验序列字段:“帧校验序列 (FCS)”字段(4 个字节)用于检测帧中的错误。它使用的是循环冗余校验 (CRC)。发送设备在帧的 FCS 字段中包含 CRC 的结果。接收设备接收帧并生成 CRC 以查找错误。如果计算匹配,就不会发生错误。计算不匹配则表明数据已经改变;因此帧会被丢弃。数据改变可能是由于代表比特的电信号中断所致。网络里面通常存在两种流量:业务流量和协议信令流量EthernetII通常用于封装业务流量:(以下报文是ICMP报文)IEEE 802.3通常用于封装协议信令流量:(以下报文是生成树BPDU报文)发布于 2023-03-13 15:08​赞同 5​​1 条评论​分享​收藏​喜欢收起​塞鸿北度​汽车电子嵌入式软件工程师​ 关注我感觉这个确实属于历史遗留问题,在1980年的时候,DEC,Intel 和 Xerox 定义了 Ethernet II, 在1983年的时候,IEEE定义了 802.3 的 Ethernet. 之后再定义的协议,有的是基于 Ethernet II,有的是基于 802.3. 使用 802.3 时,需要配置 802.3 帧中的 DSAP/SSAP,来确定 802.3 帧的 data field 里是什么类型的数据。同样的,使用 Ethernet II 时需要配置 Ethernet II 中的 EtherType,来确定 Ethernet II 帧的 data field 里是什么类型的数据。802.3 规定了一些可供用户选择的用来设置 DSAP/SSAP 的值,同样的,Ethernet II 也规定了一些可供用户选择的用来设置 EtherType 的值。但两个协议所规定的这些值,或者说是可以配置的 data field 的数据类型并不相同,所以这两个协议并不能互相替换,只能根据具体情况,选择使用。IEEE定义的 STP、RSTP 以及MSTP 是基于 802.3 帧的。发布于 2021-12-31 19:03​赞同 6​​添加评论​分享​收藏​喜欢

以太网帧大小到底多大? - 知乎

以太网帧大小到底多大? - 知乎首页知乎知学堂发现等你来答​切换模式登录/注册互联网工程任务小组(IETF)以太网(Ethernet)网络工程IEEEIEEE 802.3以太网帧大小到底多大?不是说以太网帧最大1518字节吗?为什么有2000多字节的以太网帧?而且最常见的以太网帧居然不是1518,而是1506,请问这又是怎么回事?都快懵逼了…显示全部 ​关注者69被浏览80,205关注问题​写回答​邀请回答​好问题 5​添加评论​分享​9 个回答默认排序知乎用户以太帧的格式如下所示(图片来源于Wikipedia):通常以太帧的长度指的是从目的地址到冗余校验。在802.3标准里,规定了一个以太帧的数据部分(Payload)的最大长度是1500个字节,这个数也是你经常在网络设备里看到的MTU。在这个限制之下,最长的以太帧包括6字节的目的地址(DMAC)、6字节的源地址(SMAC)、2字节的以太类型(EtherType)、1500字节的数据(Payload)、4字节的校验(FCS),总共是1518字节。在802.1Q中,又定义了以太帧中可选的QTag,位于SMAC和EtherType之间,占4个字节。在这种情况下,一个以太帧如果有QTag,它的最大长度就变成了1522字节。后来人们又觉得一个QTag不够用,在802.1ad又定义了Q in Q,也就是说一个以太帧可以有多个QTag,每增加一个QTag,以太帧的最大长度就增加4个字节。上面说的基本都是十兆/百兆以太网的年代,但到了千兆以太网出现以后,发现如果payload被限制在1500字节,传输效率不够高,所以又提出了Jumbo Frame的概念。在一个Jumbo Frame中,Payload的长度是可以超过1500字节的,通常来说最高可以到9000字节,但并没有一个统一的标准。就目前来看,大部分商用的网络服务提供商都还不支持Jumbo Frame。从上面可以看出,一个以太帧的最大长度不一定是1518字节,根据不同的标准,这个最大长度会变化。看题主的截图应该是用Wireshark抓取TCP/IP包。一个IP数据包的长度是可以超过1500字节的,定义中最大是65535个字节(在IP Header里长度定义占16位)。在数据传输的时候,IP数据包作为Payload部分,网络设备会检查Payload长度有没有超过设备的MTU设置。通常来说,MTU的默认设置是1500字节。如果超过MTU,就进行分片处理,分成多个以太帧传输,每个以太帧的Payload长度不超过MTU,然后到了终端设备再进行重组。题主在Wireshark里看到的抓包应该是已经重组过的,所以会看到有超过1500字节Payload的“以太帧”。其实在传输过程中,以太帧的Payload长度都不会超过所经过网络设备的MTU值。发布于 2017-04-25 12:52​赞同 45​​2 条评论​分享​收藏​喜欢收起​运维法拉令​武汉誉天互联科技有限责任公司 运营​ 关注以太网协议以太网是当今现有局域网(Local Area Network, LAN)采用的最通用的通信协议标准,该标准定义了在局域网中采用的电缆类型和信号处理方法。以太网是建立在CSMA/CD (Carrier Sense Multiple Access/Collision Detection,载波监听多路访问/冲突检测)机制上的广播型网络。冲突域o 冲突域是指连接在同一共享介质上的所有节点的集合,冲突域内所有节点竞争同一带宽,一个节点发出的报文(无论是单播、组播、广播),其余节点都可以收到。广播域o 广播报文所能到达的整个访问范围称为二层广播域,简称广播域,同一广播域内的主机都能收到广播报文。以太网卡o 网络接口卡 (Network Interface Card, NIC)也称为“网卡”,是计算机、交换机、路由器等网络设备与外部网络世界相连的关键部件。以太网帧格式以太网技术所使用的帧称为以太网帧 (Ethernet Frame),或简称以太帧。以太帧的格式有两个标准:Ethernet_II格式和IEEE 802.3格式。MAC地址:o MAC (Medium Access Control)地址在网络中唯一标识一个网卡,每个网卡都需要并拥有有唯一的一个MAC地址。o 一块网卡的MAC地址是具有全球唯一性的。o IP地址vsMAC地址:· IP地址特点:§ IP地址是唯一的§ IP地址是可变的§ 基于网络拓扑进行IP地址分配· MAC地址特点:§ MAC地址是唯一的§ MAC地址是不可变的§ 基于制造商进行MAC地址分配o MAC地址的表示:· 一个MAC地址有48 bit,6 Byte。· MAC地址通常采用“十六进制”+“-”表示。· 每两个十六进制为一组,每个十六进制占4比特,共有六组,共有12个十六进制,共48比特o MAC地址的构成及分类:· OUI (Organizationally Unique Identifier):厂商代码,由IEEE分配,3 Byte,24 bit。· MAC地址的前三组(每两个十六进制为一组)为OUI厂商代码· MAC地址的分类:§ 单播以太帧,第一组的最后一位为0§ 广播以太帧,每一组的二进制都为1§ 组播以太帧,第一组的最后一位为1以太网通信原理&过程当终端第一次和某个陌生主机进行通信时,会发送arp请求报文o 在发送数据前,设备会先查找ARP缓存表。o 若缓存表中存在对方设备的MAC地址,才能采用该MAC地址来封装帧,然后将帧发送出去。o 如果缓存表中不存在相应信息,则通过ARP来获取。o 因为数据帧是在源主机内生成的,所以需要知道目标主机的IP和MAC地址才能打包成帧o 主机1发送ARP Request报文来获取主机2的MAC地址。o 由于不知道目的MAC地址,因此ARP Request报文内的目的端MAC地址为0。o ARP Request是广播数据帧,因此交换机收到后,会对该帧执行泛洪操作。o 所有的主机接收到该ARP Request报文后,都会检查它的目的端IP地址字段与自身的IP地址是否匹配。o 主机2发现IP地址匹配,则会将ARP报文中的发送端MAC地址和发送端IP地址信息记录到自己的ARP缓存表中。o 主机2通过发送ARP Reply报文来响应主机1的请求。o 此时主机2已知主机1的MAC地址,因此ARP Reply是单播数据帧。o 交换机收到该单播数据帧后,会对该帧执行转发操作。o 主机1收到ARP Reply以后,会检查ARP报文中目的端IP地址字段是否与自己的IP地址匹配。o 如果匹配,会将ARP报文中的发送端MAC地址和发送端IP地址信息记录到自己的ARP缓存表中。终端生成数据段o 应用层生成原始数据Data,传输给传输层· Datao 传输层收到应用层的原始数据Data,根据相对于的协议,将其打包,传输给网络层· Sport1341 Dport80 .. Datao 网络层收到传输层的原始数据段Segment,打上IP头部标签,传输给数据链路层· SIP1.1.1.1 DIP2.2.2.2 .. Sport1341 Dport80 .. Datao 数据链路层收到网络层的原始数据包Packet,打上以太网帧头部和尾部,然后发送到通信介质中· SMAC A-B-C DMAC F-F-F SIP1.1.1.1 DIP2.2.2.2 .. Sport1341 Dport80 .. Data数据传输o 终端—终端· 此线路既简单又单一,直接将数据传到对方端口中即可,将比特流反向解析即可o 终端—交换机—终端· 终端能请求到广播域内所有终端的MAC地址· 此结构能让终端和多个终端通行· 交换机对于从传输介质进入某一端口的帧的3种处理行为:§ 泛洪:除了接收到帧的那个端口,向其他所有端口进行转发· 如果收到的是未知单播帧:· 交换机在MAC地址表中查不到这个帧的目的MAC地址,则交换机对该单播帧执行泛洪操作。· 如果收到的是广播帧:· 交换机不会去查MAC地址表,直接对该广播帧执行泛洪操作。§ 转发:将帧发送到指定端口· 如果收到的单播帧:· 交换机在MAC地址表中查到了这个帧的目的MAC地址,并且表中对应的端口编号不是这个帧从传输介质进入交换机的那个端口编号,则交换机对该单播帧执行转发操作。§ 丢弃:对传入的帧不做任何处理· 如果收到的单播帧:· 丢弃的操作实际上就是不转发o 终端—路由器—终端· 当要实现跨网段通行的时候,就需要用到路由器· 终端只会存放路由器的MAC地址,不会存放与路由器相连的其他终端MAC地址· 终端的网段必须和与之相连路由器端口的网段相同发布于 2022-07-09 15:06​赞同 2​​添加评论​分享​收藏​喜欢