一,网络装备总体布局
1.1 总体架构
SOC即主控芯片,现在大部门内部集成MAC模块,通过RMII和PHY芯片毗连,RMII接口举行的是网络数据的传输,MDIO总线,设置PHY芯片寄存器。
1.2 NAPI数据处理处罚机制
比如现在有网络数据输入,不大概一有数据传输过来,就实验克制,那么会不绝占据克制,斲丧CPU处理处罚时间,如果接纳轮询的方式,每隔肯定时间查询一下是不是有数据了,如许处理处罚就不实时。因此出现NAPI(New API)技能,将克制和轮询联合,接纳克制叫醒数据吸收服务步调,在克制吸收服务步调中接纳轮询的方式处理处罚数据,进步数据包吸收服从,镌汰克制处理处罚时间。
二,RMII和MDIO
2.1 RMII接口
RMII(Reduced Media Independent Interface),是MII接口的精简版本,相对于MII少了9跟线,方便板子布线。
TX_EN:发送使能信号。
TXD[1:0]:发送数据信号线,两根。
RXD[1:0]:吸收数据信号线,两根。
CRS_DV:吸收数据有用和载波侦听信号联合。
REF_CLK:参考时钟,由外部时钟源提供,频率为50MHZ。
2.2 MDIO接口
MDIO(Management Data Input/Output),即管理数据输入输出接口,两线串行接口,一根MDIO数据线,一根MDC时钟线。PHY驱动通过这两根线,访问PHY上面的恣意寄存器,PHY驱动也可以通过这两根线,毗连最多32个PHY,包管每个PHY器件地点差别,同一时候只能对一个PHY芯片举行利用,雷同于I2C,由下面的读写利用,和I2C读写不一样的,不外大要上相似。
数据帧(32位):| 前导码(32位) | ST(2) | OP(2) | PHYAD(5) | REGAD(5) | TA(2) | DATA(16) |
ST(Start):01表现帧开始。
OP(Operation):10表现写,01表现读。
PHYAD:PHY地点(0-31),由于是5位,因此有32种结果,十进制的话就是0到31。
REGAD:寄存器地点(0-31)。
TA(Turnaround):读利用时MDIO方向切换周期。
DATA:16位读写数据。
写利用:①拉高MDIO,天生MDC时钟②发送32位全为1的前导码③发送起始位01④发送利用码,10表现写⑤发送PHY地点⑥发送寄存器地点⑦发送两位10TA,表现不消切换方向⑧发送16位数据⑨MDIO开释总线
读利用:①发送前导码和起始位②发送利用码01,表现读③发送PHY地点④发送寄存器地点⑤发送TA,切换数据传输方向⑥PHY装备MDIO返回两位TA(00)+16位数据⑦开释总线
三,MAC和PHY模块
3.1 MAC模块
即底层网络数据处理处罚的驱动步调,团体围绕net_device这个具体网络装备,接纳的是platform 驱动框架,创建出fec_driver布局体,包罗probe函数和remove函数,probe函数告急是注册和初始化的相干工作,具体对数据的处理处罚在ops利用函数内里,当打开网卡时,fec_enet_open函数实验,申请数据缓冲区,包罗发送队列和吸收队列缓冲区,探测并毗连对应的PHY装备,使能NAPI调理,开启PHY装备,激活发送队列等工作。应用层有数据要发送,即sk_buff,会触发克制,克制函数中对NAPI举行调理,使能NAPI的poll轮询函数,雷同于克制的上半部和下半部处理处罚机制,在轮询函数中,真正的对数据举行处理处罚,sk_buff一样平常会被网卡大概协议栈举行分段处理处罚(数据包较大)。
3.2 PHY模块
接纳的是装备,总线,驱动框架,即PHY装备驱动,MDIO总线,PHY具体装备。phy_driver表现驱动,接纳phy_device表现PHY装备,函数get_phy_device获取PHY装备,具体内容包罗:获取PHY ID,对phy_device布局体中的成员举行初始化,总线有相应的文件。
四,网络模子
4.1 网络的OSI和TCP/IP分层模子
4.1.1 传输层:TCP和UDP
4.1.1.1 TCP
Source Port:源端口,标识哪个应用步调发送,16bit。
Destination Port:目的端口,标识哪个应用步调吸收,16bit。
比如欣赏网页**,客户端网页欣赏器向服务器网站**哀求下载网页,客户端向服务器发了一个哀求报文,这个报文的源端口就是客户网页欣赏器的端口,目的端口就是网站服务器端口(HTTP应用)。
Sequence Number:序列号字段,每个TCP报文都有序列号,32bit。
Acknowledgment Number:确认号,对收到的报文举行确认,序列号和确认号,是为了包管每个发送已往的包,对方都能收到,我发出一个带有序列号的包,对方就要回一个带有确认号的包,这俩号是有肯定关系的。
Header Length:头部长度,TCP报文头部长度,不是数据长度。
Control bits:控制位,有FIN,ACK,SYN标志位。
Window:窗口值,表现当前吸收端可以或许吸收的最大数据总数,以字节为单元,就是吸收方告诉发送方,能吸收的本领
Checksum:校验字段。
① 三次握手
三次握手是创建毗连用的,SYN,ACK是控制位①PC1发送握手哀求,SYN置位为1,序列号Seq为a,Ack为0,发送给PC2。②PC2吸收到信号,要给PC1反馈个信息,让PC1知道PC2准备好了,而且PC2也想知道PC1是不是准备好了,发送一个序列号为b(恣意),Ack信号为a+1(表现PC2准备好了)此时的控制位SYN和ACK置位。③PC1想让PC2知道,他也准备好了,于是会再反馈一个信号,序列号Seq为a+1(PC1的第一个信号a,因此下一个信号a+1),Ack信号为b+1(表现准备好了)。PC1准备好,PC2也准备好,就创建其毗连。
② 确认机制
确认机制就是判断每个TCP的数据包,发送已往以后,对方是否能吸收到。在三次握手创建毗连后,PC1发送一个数据包,Seq为a+1,Ack为b+1,载荷长度为12,当PC2吸收到这个数据包后,会给PC1反馈一个Seq为b+1,Ack为PC1的Seq(a+1)+载荷(12),即a+1+12,PC2的载荷为0,此数据包发送给PC1,表现PC2吸收到PC1发送的数据包了。
③ 四次挥手
四次挥手是在发送竣事时间用的,通讯时双向的,当PC1发送竣事,会给PC2发送一个数据包,控制位的FIN置位,ACK置位,序列号Seq=101,Ack=301,PC2吸收到PC1这个数据竣事的数据包,会给PC1发送一个Seq=PC1的Ack,即301,Ack为PC1的Seq(101)+1=102,此时控制位ACK置位。同样PC2发送完数据,也会和PC1这个过程雷同。四次挥手后,TCP毗连断开。
4.1.1.2 UDP
Source Port:源端口,标识哪个应用步调发送,16bit。
Destination Port:目的端口,标识哪个应用步调吸收,16bit。
Length:报文总长度。
UDP模式加上端标语后,直接发送即可,不消在乎目的地点信息是否有反馈。
4.1.2 网络层
网络层吸收到传输层发来的数据,会封装一个IP报文头部,把源IP地点和目的IP地点放到头部中,中央颠末网络装备,比如路由器,路由器内部有路由表,读取IP数据包的目的IP地点,转发这个数据包。
4.1.3 物理链路层
传输层(网线,光纤)→网络层(路由器)→物理链路层(互换机)。在物理链路层,会给IP数据包,加上MAC地点,在互换机中,根据这个MAC地点,将数据包发送到具体装备,比如主机上。具体怎么获取MAC地点,是通过ARP哀求,源Host A会给Host B发送一个ARP哀求,带有Host B这个目的IP,Host B吸收到这个ARP哀求后,会反馈带有Host A的IP地点和Host B的MAC地点的数据包。
上述网络模子图,来自B站:网络工程师学长,https://www.bilibili.com/video/BV1P3411M7zF?p=13&vd_source=a11372469703158c2d89e1da0b799875
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
|