2. 3 数据发送过程
以太网发送数据过程大体上分为全双工和半双工两种模式。这两种模式发送过程不同。在半双工模式下,以太网MAC传送一帧要经过以下步骤:
1)传送前先侦听信道是否忙,如果侦听到信道中存在载波,此时不能发送数据。须等到载波消失时才发送,否则继续等待。载波侦听过程如图2.3所示。
图2.3 载波侦听框图
2)如果此时介质空闲,站点在等待一段帧间隔时间(IPG)后开始发送。帧间隔时间设为传送96比特所需的时间,即:10Mbps时,IPG为9.6us;100Mbps时,IPG为0.96us。如果介质忙碌,则要继续侦听,一旦信道空闲,站点就可以开始发送。如果站点要发送多帧,两个帧之间也必须等待一个帧间隔时间。
3)发送信息帧,还要侦听总线。一旦侦听到总线冲突发生,立即停止发送,并向总线发出一串阻塞信号JAM来加强冲突,以便通知总线上各个站点。这样,通道的容量不致因传送已损坏的帧而白白浪费。如果在发送前导序列/帧起始信号时发生冲突,站点继续发送前导序列/帧起始信号,然后再发送32比特的JAM序列。
4)如果发送冲突,重传前等待。如果数据传输过程中发生了冲突,冲突发生后重发之前应该随机地延迟一段时间,再去占用总线,这个过程叫做后退。此时,执行二进制指数退避算法,使得重发次数越多退避时间就越长,以免再次发生冲突。如图2.4所示。
图2.4 冲突检测框图
5)重传或夭折。若工作站在繁忙的电缆段上,即便其数据包在电缆段上没有产生冲突,也可能不能传输。工作站在必须夭折传输前最多可有16次重传机会。若工作站重传且没有表明数据包再次发生冲突,则认为传输成功。
对于全双工的数据发送过程与半双工不同,全双工数据的发送过程如下:
全双工模式下,没有共享介质竞争问题,所以不需要载波侦听多路访问/冲突检测算法(CSMA/CD)。该模式下,帧的发送只需要遵守以下两个规则即可实现数据传输:
1)站点每次操作一帧,一帧数据发送完毕才能发送下一帧。
2)发送时,在相邻两帧之间插入一个帧间隔时间。
在整个数据发送过程中,如果出现以下情况之一,则丢弃该数据帧:①检测到RESET信号;②发送延迟传输;③过多冲突;④发送数据帧过长或过短,即:超过1518个字节或少于64个字节。
2. 4 数据接收过程
在半双工和全双工模式下,帧的接收过程相同。在接收端,站点监视信道以获得帧到达的指示。发现信道变成非空闲状态时,站点开始从信道接收数据比特流,查找标识MAC帧起始的前导码preamble和帧起始界定符。站点连续接收数据比特流,直到收到底层信道发出的帧结束指示。接收过程分为如下四个步骤:
1)浏览收到的包,检验包是否为碎片
Ethernet局域网上,电缆段的所有工作站将浏览电缆上传输的每一个包,并不考虑其地址是否是本地工作站。如图2.5所示,接收站检查数据包,保证它有合适的长度,而不是冲突引起的碎片,包长度最小为64字节。
图2.5 帧长度判断框图
2)检验目的地址
如图2.6所示,接收站若判明接收到的数据包不是碎片,接下来则检验包的目标地址,看它是否在本地处理。如果包的地址是本地工作站地址或是广播地址或是被认可的多站地址,工作站将检验包的完整性。
图2.6 帧长和地址检测框图
3)包的完整性
这一步中,接收站已知道包不是碎片,目的地址是自身或是被认可的地址,但不知道包的格式是否正确。接收站必须对接收的数据包进行CRC效验,如下图2.7所示。 基于FPGA的网口数据传输和应用程序开发(7):http://www.751com.cn/tongxin/lunwen_8897.html