OSI七层模型中的MAC和PHY

news/2024/10/19 0:23:17/

最近做服务器项目在学习MAC和PHY,总结了一些知识点,拿来分享一下

说到MAC和PHY首先要提到OSI七层模型

OSI七层模型

TCP/IP四层模型

对应网络协议

应用层(Application)

应用层

HTTP、TFTP, FTP, NFS, WAIS、SMTP

表示层(Presentation)

Telnet, Rlogin, SNMP, Gopher

会话层(Session)

SMTP, DNS

传输层(Transport)

传输层

TCP, UDP

网络层(Network)

网络层

IP, ICMP, ARP, RARP, AKP, UUCP

数据链路层(Data Link)

数据链路层

FDDI, Ethernet, Arpanet, PDN, SLIP, PPP

物理层(Physical)

IEEE 802.1A, IEEE 802.2到IEEE 802.11

 在OSI七层模型中,最下面两层是硬件层面,上面五层是软件层面,由于博主是硬件,主要关注硬件的这两层。

数据链路层:

MAC即Media Access Control,即媒体访问控制子层协议.该协议位于OSI七层协议中数据链路层的下半部分,主要负责控制与连接物理层的物理介质.在发送数据的时候,MAC协议可以事先判断是否可以发送数据,如果可以发送将给数据加上一些控制信息,最终将数据以及控制信息以规定的格式发送到物理层;在接收数据的时候,MAC协议首先判断输入的信息并是否发生传输错误,如果没有错误,则去掉控制信息发送至LLC层.该层协议是以太网MAC由IEEE-802.3以太网标准定义.最新的MAC同时支持10Mbps和100Mbps两种速率.

以前,每个公司会定义自己的电路信号分组方式,后来出现了以太网。一组电信号就是一个数据包,也就是帧(frame),它分为两部分,标头(head)和数据(data),标头里一般会放一些说明的东西,比如发送者、接收者和数据类型等等。

那么数据包中是如何确定发送者位置的呢?

以太网规定每个网卡必须包含一个mac地址,mac地址就是这个网卡的身份证。接入网络的所有设备都得有网卡,数据包中就是通过mac地址进行网卡定位的。每块网卡出厂时就有一个唯一的mac地址。48位的二进制,但是一般用12个16进制数字表示,前6个16进制是厂商编号,后6个16进制是网卡流水号。

那么以太网的数据包是怎么从一个mac地址发送到另一个mac地址的呢?这个其实不是点对点的,而是会广播给局域网内的所有网卡,然后每个网卡会从数据包中获取接收者的mac地址进行比对,如果相同就说明是给自己的数据包。

以太网数据链路层其实包含MAC(介质访问控制)子层和LLC(逻辑链路控制)子层.一块以太网卡MAC芯片的作用不但要实现MAC子层和LLC子层的功能,还要提供符合规范的PCI界面以实现和主机的数据交换.

 物理层PHY

物理层协议定义电气信号、线的状态、时钟要求、数据编码和数据传输用的连接器

物理层负责用网线、WiFi、光纤等方式把电脑连接起来,形成一个网络。它传输的是计算机最底层的0 1信号

网线上传输的是模拟信号.因为它传出和接收是采用的模拟的技术.虽然它传送的信息是数字的(并不是传送的信息是数字的信号就可以叫做数字信号).

CPU<---PCIe Bus-->MAC<----MII&SMI Bus--->PHY<----MDI Bus--->AC Coupling/LAN Transformer<--RJ45网口-->网线

在这里插入图片描述

在这里插入图片描述

MII(Media Independent Interface)即媒体独立接口,MII接口是MAC与PHY连接的标准接口。它是IEEE-802.3定义的以太网行业标准。

"媒体独立"表明在不对MAC硬件重新设计或替换的情况下,任何类型的PHY设备都可以正常工作.它包括一个数据接口,以及一个MAC和PHY之间的管理接口.

通过管理接口,上层能监视和控制PHY.其管理是使用SMI(Serial Management Interface)总线通过读写PHY的寄存器来完成的.PHY里面的部分寄存器是IEEE定义的,这样PHY把自己的目前的状态反映到寄存器里面,MAC通过SMI总线不断的读取PHY的状态寄存器以得知目前PHY的状态,例如连接速度,双工的能力等.当然也可以通过SMI设置PHY的寄存器达到控制的目的, 

LAN Transformer

把PHY送出来的差分信号用差模耦合的线圈耦合滤波以增强信号,并且通过电磁场的转换耦合到连接网线的另外一端.这样不但使网线和PHY之间没有物理上的连接而换传递了信号,隔断了信号中的直流分量,还可以在不同0V电平的设备中传送数据.

隔离变压器本身就是设计为耐2KV~3KV的电压的.也起到了防雷感应保护的作用

一张网卡的传输最大距离和与对端设备连接的兼容性主要是PHY决定的.但是可以将信号送的超过100米的PHY其输出的功率也比较大,更容易产生EMI的问题.这时候就需要合适的Transformer与之配合.作PHY的老大公司Marvell的PHY,常常可以传送180~200米的距离,远远超过IEEE的100米的标准.

             

RJ-45的接头实现了网卡和网线的连接.它里面有8个铜片可以和网线中的4对双绞(8根)线对应连接.其中100M的网络中1,2是传送数据的,3,6是接收数据的.1,2之间是一对差分信号,也就是说它们的波形一样,但是相位相差180度,同一时刻的电压幅度互为正负.这样的信号可以传递的更远,抗干扰能力强.同样的,3,6也一样是差分信号.
————————————————

本文参考了以下大佬的文章:

MAC和PHY的关系_mac phy_王哥来了快跑的博客-CSDN博客

大白话聊OSI七层模型和TCP/IP四层模型-腾讯云开发者社区-腾讯云 (tencent.com)


http://www.ppmy.cn/news/64532.html

相关文章

第10章:数据处理增删改

一、插入数据 CREATE TABLE emp1 (id int(11) ,name varchar(15) ,hire_date date ,salary double(10,2) )1.添加一条数据 ①没有指明添加的字段&#xff0c;一定按照顺序添加 insert into emp1 values(1,wang,2000-4-4,5900)②指明添加的字段&#xff08;推荐&#xff09;…

Flowable+React+bpmn-js实现工作流

由于新东家使用的是React&#xff0c;不是Vue&#xff0c;而自己一直想做一个关于工作流的应用出来&#xff0c;断断续续&#xff0c;花了几个月的时间&#xff0c;开发了工作流的功能&#xff0c;后面会继续完善。 技术栈 前端 前端是基于React开发的&#xff0c;使用了ant…

Java EE企业级应用开发(SSM)第9章

第9章MyBatis入门 一.预习笔记 1.MyBatis框架的特点 1-1.简单易学 1-2.灵活 1-3.提供映射标签 2.MyBatis核心类 2-1.Configuration 2-2.SqlSessionFactory 2-3.SqlSession 2-4.Exector 2-5.MappedStatement 3.MyBatis工作流程 4.Mybatis入门程序 4-0&#xff1a;导…

本原数据:回归数据库技术本原,做难而正确的事

数据库技术是信息科技领域的最为重要的技术之一。随着科技的不断进步&#xff0c;数据库技术得到了迅速的发展&#xff0c;应用范围也越来越广泛。 与此同时&#xff0c;在数据量持续高速增长的情况下&#xff0c;企业对数据库也提出了更高的要求&#xff0c;例如数据存储越来…

【MYSQL】聚合函数和单表/多表查询练习、子查询、内外连接

目录 1.聚合函数 1.1.group by子句 1.2.having语句 2.单表查询 2.2单表查询 3.多表查询 3.2.子查询 5.内链接 6.外连接 1.聚合函数 函数说明count返回查询到的数据的数量sum返回查询到的数据的总和avg返回查询到的数据的平均值max返回查询到的数据的最大值min返回查询…

如何理解面向对象和面向过程?

面向对象编程&#xff08;Object-Oriented Programming&#xff0c;OOP&#xff09;是一种编程范式&#xff0c;其中程序被视为对象&#xff0c;并通过类和对象之间的关系来组织和管理数据和控制流程。相比之下&#xff0c;面向过程编程&#xff08;Process-Oriented Programmi…

Spring中的Bean和Bean的生命周期

在Spring中&#xff0c;Bean是被管理的对象&#xff0c;是应用程序的基本组件。Bean的生命周期包括Bean的创建、初始化、使用和销毁。在本文中&#xff0c;我们将介绍Spring中Bean的概念&#xff0c;如何创建和管理Bean以及Bean的生命周期。 Bean的概念 在Spring中&#xff0…

Redis了解

Redis 源码大概做了哪些事情&#xff1f; 设置默认参数创建对象、持久化定时器回调加载文件参数 (使用配置文件替代部分默认参数)加载文件数据写入字典创建client connect事件handler&#xff08;accept后&#xff0c;写入读写事件select()&#xff0c;最新的版本用epoll&…