本日我们来理解网卡的事情事理,学习数据包的发送和吸收的处理过程。
网卡事情在OSI的末了两层:物理层和数据链路层,物理层定义了数据传送与吸收所须要的电与光旗子暗记、线路状态、时钟基准、数据编码和电路等,并向数据链路层设备供应标准接口。数据链路层则供应寻址机构、数据帧的构建、数据差错检讨、传送掌握、向网络层供应标准的数据接口等功能。以太网卡中数据链路层的芯片称之为MAC掌握器。很多网卡的这两个部分是做到一起的。他们之间的关系是PCI总线接MAC总线,MAC接PHY,PHY接网线(通过变压装置)。

下面连续让我们看一下PHY和MAC之间是如何传送数据和相互沟通的。通过IEEE定义的标准的MII界面连接MAC和PHY。这个界面是IEEE定义的。MII界面通报了网络的所有数据和数据的掌握。而MAC对PHY的事情状态的确定和对PHY的掌握则是利用SMI(Serial Management Interface)界面通过读写PHY的寄存器来完成的。PHY里面的部分寄存器也是IEEE定义的,这样PHY把自己目前的状态反响到寄存器里面,MAC通过SMI总线不断地读取PHY的状态寄存器以得知目前PHY的状态,例如连接速率、双工的能力等。当然也可以通过SMI设置PHY的寄存器达到掌握的目的,例如流控的打开关闭,自协商模式还是逼迫模式等。
以是,不论是物理连接的MII界面和SMI总线还是PHY的状态寄存器和掌握寄存器都是有IEEE的规范的,因此不同公司的MAC和PHY一样可以折衷事情。当然为了合营不同公司的PHY的自己特有的一些功能,驱动须要做相应的修正。
事情过程PHY在发送数据的时候,收到MAC过来的数据(对PHY来说,没有帧的观点,对它来说,都是数据而不管什么地址,数据还是CRC),每4bit就增加1bit的检错码,然后把并行数据转化为串行流数据,再按照物理层的编码规则(10Based-T的NRZ编码或100based-T的曼彻斯特编码)把数据编码再变为仿照旗子暗记把数据送出去。收数据时的流程反之。
现在来理解PHY的输出后面部分。
一颗CMOS制程的芯片事情的时候产生的旗子暗记电平总是大于0V的(这取决于芯片的制程和设计需求),但是这样的旗子暗记送到100米乃至更远的地方会有很大的直流分量的丢失。而且如果外部网线直接和芯片相连的话,电磁感应和静电,很随意马虎造成芯片的破坏。
再便是设备接地方法不同,电网环境不同会导致双方的0V电平不一致,这样旗子暗记从A传到B,由于A设备的0V电平和B点的0V电平不一样,这样会导致很大的电流从电势高的设备流向电势低的设备。这时就须要Transformer(隔离变压器)。它把PHY送出来的差分旗子暗记用差模耦合的线圈耦合滤波以增强旗子暗记,并且通过电磁场的转换耦合到连接网线的其余一端。这样不但使网线和PHY之间没有物理上的连接而换通报了旗子暗记,隔断了旗子暗记中的直流分量,还可以在不同0V电平的设备中传送数据。
隔离变压器本身便是为耐2KV~3KV的电压而设计的,同时起到防雷感应保护的浸染。有些用户的网络设备在雷雨景象时随意马虎被烧坏,大都是PCB设计不合理造成的,而且大都烧毁了设备的接口,很少有芯片被烧毁的,便是隔离变压器起到了保护浸染。
发送数据时,网卡首先侦听介质上是否有载波(载波由电压指示),如果有,则认为其他站点正在传送信息,连续侦听介质。一旦通信介质在一定韶光段内(称为帧间缝隙IFG=9.6微秒)是安静的,即没有被其他站点占用,则开始进行帧数据发送,同时连续侦听通信介质,以检测冲突。在发送数据期间,如果检测到冲突,则立即停滞该次发送,并向介质发送一个“壅塞”旗子暗记,奉告其他站点已经发生冲突,从而丢弃那些可能一贯在吸收的受到破坏的帧数据,并等待一段随机韶光(CSMA/CD确定等待韶光的算法是二进制指数退避算法)。在等待一段随机韶光后,再进行新的发送。如果重传多次后(大于16次)仍发生冲突,就放弃发送。
吸收时,网卡浏览介质上传输的每个帧,如果其长度小于64字节,则认为是冲突碎片。如果吸收到的帧不是冲突碎片且目的地址是本地地址,则对帧进行完全性校验,如果帧长度大于1518字节(称为超长帧,可能由缺点的LAN驱动程序或滋扰造成)或未能通过CRC校验,则认为该帧发生了畸变。通过校验的帧被认为是有效的,网卡将它吸收下来进行本地处理。
理解更多:https://www.ebyte.com/?&=nb






