|
网卡如何识别10M/100M,如何检测网线插入
[复制链接]
对网卡的工作机制缺乏理论基础,遇到问题无从下手,请赐教
本人对网卡的基本了解
处理器——MAC控制器——pyh芯片——RJ45——网线
|<------ 网卡范围 ----------------->|
linux下做网卡驱动,偶尔启动后看起来网口的LED灯也闪烁了,但网口的状态不对,正常情况表现如下:
carrier为1表示检测到载波--------------------状态2
duplex为full表示通信方式全双工
speed位1000,具体含义我不太清除
出现问题的状态:-------------状态1
carrier=0
duplex=half
speed=100
网卡从状态1到状态2需要经历什么,我用winshark抓包,插拔网线过程没有任何数据包,我猜测:
这个过程本就没什么数据,应该只是电频检测,网线对端频率检测等,整个过程更本就不存在任何与“上层”关系的数据包,phy自然不会传递给MAC控制器,winshark也就抓不到数据包。大致流程猜测:
- 状态1应该是phy芯片的休眠状态,当插入网线后,由于电平关系激活了phy,从而phy检测到载波,carrier为1;
- phy用最低的速率100与对端发送预定义的信号,此时是半双工的(half),当接收端在收到后,也以100的速率发送相同的信号,本地收到后变成全双工(full);
- 本地网卡用100通信速率问对方,你还能支持更高的1000速率吗?对方回答,没问题,之后speed为1000;
出现问题的原因除了软件驱动之外,不排除网卡外围电路硬件缺陷,我手上有250M采样率的四通道示波器,用它怎么测试网卡外围电路,需要测量什么参数。
- 检测网线插入是不是通过电平状态???
- 网卡识别10M/100M的依据是不是载波频率???
|
|