Skip to content
jccjd edited this page Feb 4, 2021 · 1 revision

网卡

认识网卡

网卡 Network Interface Card, 网络适配器

一块网卡包括OSI模型的两个层, 物理层和数据链路层

  • 物理层定义了数据传送和接收所需要的电与关信号,线路状态, 时钟基准,数据编码和电路.
  • 数据链路层则提供寻址机构,数据帧的构建,数据差错检查,传送控制,向网络层提供标准的数据接口等功能

网卡的主要作用

  • 将电脑的数据封装成帧,并通过网线将数据发送到网络上去
  • 接收网络上其他设备传过来的帧,并将帧重新组合成数据,发送到所在电脑中

网卡能接收所有在网络上传输的信号,但正常情况下只接受发送到该电脑的帧和广播帧, 将其余的帧丢弃.然后,传送到系

当电脑发送数据时,网卡等待合适的时间将分组插入到数据流中. 接收系统通知电脑消息是否完整地到达, 如果出现问题,将要求对方重新发送

![批注 2020-12-30 193244](C:\Users\lyj0096\Desktop\批注 2020-12-30 193244.png)

网卡组成

最常见的PCI接口的网卡, 一块网卡主要由PCB线路板, 主芯片,数据泵, 金手指,BOOTROM, EEPROM 晶振, RJ45接口, 指示灯, 固定片等等

20160607111038155

  • 主芯片: 网卡的主控制芯片是网卡的核心元件, 一块网卡性能的好坏和功能的强弱多寡,主要看芯片的质量

20160607110944420

  • BOOTROM槽: BOOTROM插座也就是无盘启动ROM接口,主要通过远程服务构造无盘工作站

20160607111120342

  • 数据泵: 作用是传输数据, 隔离网线连接的不同网络设备间的不同电平, 还能防雷保护

tu2

  • 晶振即石英振荡器, 提供基准频率

tu3

网卡芯片也有软硬之分,特别是对与主板板载(LOM)的网卡芯片来说.以太网接口可分为协议层和物理层

  • 协议层是由一个叫MAC(Media Access Layer 媒体访问层)控制器的单一模块实现
  • 物理层由两部分,PHY(Physical Layer ) 和传输器

常见的网卡芯片都是把MACPHY集中在一个芯片中,但目前很多主板的南桥芯片包含了以太网MAC控制功能, 只是未提供物理层接口,因此,需要外接PHY芯片以提供以太网的接入通道, 这类PHY网络芯片就是俗称的软网卡芯片

数据链路层

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

LLC 子层

以太网LLC(Logical Links Control)子层处理上层与下层之间的通行, 这通常是在网络软件和设备硬件之间进行的, LLC子层获取网络协议数据并加入控制信息, 帮助将数据包传送到目的节点. LLC用于与应用层的上层进行通信

LLC在软件中实现, 并且不受硬件影响. 在计算机中可以将LLC视为网卡的驱动程序软件. 网卡驱动程序是一个直接与网卡中硬件交互,以在MAC子层和物理介质之间传递数据.在20世纪90年代后, 激烈竞争的局域网市场逐渐明朗. Ethernet 在局域网中取得了垄断的地位, 并且几乎成为了 局域网的代名词, 由于互联网发展的很快而TCP/IP体系经常使用的局域网只剩下DIX Ethernet V2而不是IEEE 802.3标准中的局域网, 因此现在IEEE 802 委员会制定的逻辑链路控制子层 LLC 的作用以及消失了, 很多厂商生产的适配器上仅装有MAC协议而没有LLC协议. MAC 从PCI总线收到IP数据包后,将之拆分并重新打包成最大1500byte, 最小64byte的帧,这个帧里包括了目标MAC地址, 自己的源MAC地址和数据包里面的协议类型. 最后还有一个DWORD(4byte)CRC码.

以太网协议

以太网规定,一组电信号构建一个数据包, 叫做帧 每个帧分成两个头部: HeadData 标头包含数据包的一些说明项, 比如 发送者,接收者, 数据类型.

image-20210104152221184

表头的长度,固定为18字节, 数据的长度最短为46字节, 最长为1500字节, 因此整个帧的最短为64 字节, 最长为 1518字节. 如果数据很长就要分割成多个帧进行发送.

字段 说明
DMAC DMAC( Destination MAC) 目标地址, DMAC确定帧的接收者
SMAC SMAC(Source MAC) 是源地址, SMAC字段标识发送帧的工作站
Type 两字节的类型字段用于标识数据字段中包含的高层协议, 该字段告诉字段告诉接收色被如何解析数据字段
在以太网中,多种协议可以在局域网中同时共存, 在Ethernet_II的类型字段中设置相应的十六位进行值提供了在局域网中支持多协议传输的机制
Type: 0800的帧代表IP协议
Type: 0806的帧代表ARP协议
Type: 8035的帧代表RARP协议
Type: 8137的帧代表IPX/SPX协议
Data 数据字段的最小长度必须为46字节以保证帧长至少为64字节
传输一字节信息也必须使用46字节的数据字段
如果填入该字段的信息少于46字节,该字段的其余部分也必须进行填充
数据字段的最大长度为1500字节
CRC CRC(Cyclic Redundancy Check) 循环冗余校验字段
提供了一种错误检测机制,每一个发送器都计算了一个包括了地址字段,类型字段和数据字段的CRC码,然后计算出的CRC码填入4字节的CRC字段

上面的帧结构是Ethernet II 还有一种帧是IEEE802.3

image-20210105100753732

字段 说明
Length length字段定义了Data 字段包含的字节数
LLC LLC(Logical Link Control ) 由目的服务访问点 DSAP ( Destination Service Access Point ), 源服务访问点SSAP ( Source Service Access Point )和 Control 字段组成
SNAP SNAP(Sub-network Access Protocol) 由机构( org code)和类型Type 字段组成. org code 三个字节都为0 Type 字段的含义和Ethernet V2 帧中的Type字段相同

IEEE 802.3帧根据DSAPSSAP字段的取值可以分为

  • DSAPSSAP都取特定值oxff时, 802.3帧就变为 Netware-Ethernet帧, 用来承载NetWare 类型的数据
  • DSAPSSAP都取特定值0xaa时, 802.3帧就变为Ethernet_SNAP
  • DSAPSSAP其他的取值均为纯IEEE 802.3 帧

Ethernet 帧的发展

1980 DEC Intel Xerorx 制定Ethernet I 的标准

1982 DEC Intel Xerorx 制定Ethernet II 的标准

1983 IEEE 开始研究Ethernet的国际标准 802.3

1985 IEEE 推出IEEE 802.3规范, 后来为了解决Ethernet II和802.3帧格式的兼容问题 推出了 Ethernet SNAP 格式

image-20210105094105811

两种格式的区别在于:Ethernet 格式包含了一个Type字段, 标识以太网帧处理完之后将被发送到哪个上层协议进行处理, IEEE 802.3格式中, 同样位置是长度字段

Ethernet II 格式相对使用广泛, 从Type/length字段值可以区分两种帧类型: 当Type字段小于1500(0x05DC)时, 帧使用的是 IEEE 802.3格式. 当Type字段值大于等于 1536 (0x0600)时, 帧使用的是Ethernet II格式

ARP协议

获取目标MAC地址,当两个主机在进行第一次通信的时候, 源主机会发一个ARP包, MAC的目标地址是广播地址FF:FF:FF:FF:FF:FF , 局域网的主机都受到这个ARP请求.

收到请求的主机会对比自己的IP, 找到目标主机后回复ARP相应, 以后的给这个IP地址的帧的目标MAC地址就被确定了, IP地址和MAC地址之间的关联关系保存在主机系统里,叫做ARP表 .

物理层PHY

PHY在发送数据的时候,收到MAC过来的数据(对PHY来说, 没有帧的概念, 对它来说,都是数据,不管什么地址, 数据还是CRC), 每4bit就增加1bit的检错码, 然后把并行数据转化为串行流数据,在按照物理层的编码规则(10Based -TNRZ编码或100base-T的曼彻斯特编码)把数据编码,在变为模拟信号把数据送出去(数字还是模拟) 收数据时的流程反之.

发送数据时, PHY还有个重要的功能就是实现CSMA/CD的部分功能, 它可以检测到网络上是否有数据在传送. 网卡首先侦听介质上是否有载波, 如果有则认为其他站点正在传送信息,继续侦听介质. 一旦通信介质在一定时间段内是安静的,即没有被其他站点占用,则开始进行帧数据发送,同时继续侦听通信介质,以检测冲突, 在发送数据期间, 如果检测到冲突, 则立即停止该次发送,并向介质返送一个阻塞信号,告知其他站点已经发生冲突,则立即停止该次发送,并向介质发送一个阻塞信号,告知其他站点已经发生冲突,从而丢弃那些可能一直在接收的受损的帧数据,并等待一段随机时间,(CSMA/CD 确定等待时间的算法是二进制指数退避算法).

在等待一端随机时间后,在进行新的发送, 如果重传多次后(大于16次) 仍然冲突, 就放弃发送,接收时,网卡浏览介质上传输的每个帧,如果其长度小于64字节, 则认为是冲突碎片, 如果接收到的帧不是冲突碎片且目的的地址是本地地址, 则对帧进行完整性校验, 如果帧长度 大于1518字节(超长帧, 可能由错误的LAN驱动程序干扰造成) 未能通过CRC校验,则认为该帧发生了畸变. 通过校验的帧被认定为是有效的, 网卡将它接收下来进行本地处理

关于网路间的冲突

PHY还提供了和对段设备连接 的重要功能并通过LED灯显示出自己目前的连接的状态和工作状态, 当给网卡接入网线时, PHY不断发出脉冲信号,检测到对端设备, 相互协商并确定连接速度,双工模式,是否采用流控, 通常情况下,协商的结果是两个设备中能同时支持的最大速度和最好的双工模式, 这个技术为Auto Negotiation NWAY自动协商

隔离变压器

一颗CMOS制程的芯片工作的时候产生的信号电平总是大于0V,但这样的信号送到100m或者更长的时候会有很大的直流分量的损失. 而且如果外部网线直接和芯片相连,电磁感应很容易造成芯片的损坏,再就是设备接地的方法不同, 电网环境不同会造成双方的0v电平不一致, 这样信号从A传到B, 由于A设备的0V电平和B点的0v电平不一样,这样会导致很大的电流从电视高的设备流向电施低的设备, Transformer隔离变压器, 将PHY送出的差分信号用差模耦合的线圈耦合滤波以增强信号,并且通过电磁场的转换耦合到连接直流分量, 还可以在不同0v电平的设备中传送数据, 隔离变压器本身就是设计耐2kv-3kv的电压. 也 起到防雷,感应 . 网络设备在雷雨天气时容易被烧坏,大多是PCB设计不合理造成的,

传输介质

隔离变压器本身是个被动元件, 只是把PHY的信号耦合到了网线上,并没有起到功率放大的作用, 一张网卡信号的传输的最长距离主要由PHY决定,

RJ-45的接口实现了网卡和网线的连接, 它里面由8个铜片可以和网线中的4个双绞线对应连接

100m的网路中1, 2 是传送数据的 3 6是接收数据的 1 2 之间是一对差分信号, 也就是说它们的波形一样, 但是相位相差180度 同一时刻的电压幅度互为正负, 这样的信号可以传递更远, 抗干扰能力强, 在制作网线时 要注意让1 2 在其中一对, 3 6 在一对否则长距离的情况下使用这根网线的时候会导致无法连接或连接很不稳定, 现在新的PHY支持AUTO MDI-X功能(也需要Transformer支持). 它可以实现RJ-45接口的1 2 上的传送信号线和3 6上的接收信号线的功能自动互相交换, 有的PHY甚至支持一对线中的正信号和负信号的功能自动交换, 这样就不必为了到底连接某个设备需要使用直通网线还是交叉网线而费心, 这种技术已经被广泛的应用在交换机和SOHO的路由器上, 在1000Basd-T网络中, 其中最普遍的一种传输方式是使用网线中所有的4对双绞线, 其中增加了4, 和7, 8 来共同传送接收数据, 由于1000based-T网络的规范包含了AUTO MDI-x功能, 因此不能严格确定它们的传出或接收的关系, 要看双方的具体协商结果

PHYMAC之间如何进行沟通

PHY和MAC之间是如何传送数据和相互沟通的. 通过IEEE定义的标准的MII/GigaMII( meida independed Interfade 介质独立界面) 界面连接MACPHY 这个界面是IEEE定义的. MII界面传递了网络的所有的数据和数据的控制. 而MACPHY的工作状态的确定和对PHY的控制则是使用SMI( serial Management Interface ) 界面通过读写PHY的寄存器来完成的, PHY里面的部分寄存器也是IEEE定义的, 这样PHY把自己的目前的状态反映到寄存器里面, MAC通过SMI总线不断的读取PHY的寄存器达到控制的目的, 列如流控的打开关闭, 自协商模式还是强制模式等. 无论物理连接的MII界面和SMI总线还是PHY的状态寄存器和控制寄存器都是IEEEE的规范, 因此不同公司的MAC和PHY一样可以协调工作, 当然为了配合不同,公司的PHY的自己特有的一些功能, 驱动需要做相应的修改

![批注 2020-12-30 200631](C:\Users\lyj0096\Desktop\批注 2020-12-30 200631.png)