一、以太网的分类
1.标准以太网:10Mbit/S
2.快速以太网:100Mbit/S
3.千兆以太网:1000Mbit/S
常用的芯片RTL8201,这个芯片通讯速率支持10M/100Mbit两种速度。以太网的接口类型有RJ45接口(电脑的网口),RJ11接口(电话线接口),SC光纤接口等。
以太网传输数据时按照上面的顺序从头到尾依次被发送和接收。
- 前导码:为了实现底层数据的正确阐述,物理层使用7个字节同步码(0和1)交替(55-55-55-55-55-55-55)实现数据的同步。
- 帧起始界定符SFD:使用1个字节的SDFD(固定值为0xd5)来表示一帧数据的开始,及后面紧接着传输的时以太网的帧头。
- 目的MAC地址:即接收端物理MAC地址,占用6个字节。MAC地址从应用上分为单播地址、组播地址和广播地址。单播地址:第一个字节的最低位为0,比如00-00-00-11-11-11,一般用于标志唯一的设备;组播地址:第一个字节的最低位为1,比如01-00-00-11-11-11,一般用于标志同属一组的多个设备;广播地址:所有48bit全为1,即ff-ff-ff-ff-ff-ff,它用于标志统一网段的所有设备。
- 源MAC地址:即发送端物理地址,占用字节6个。
- 长度/类型:上图钟的长度/类型具有两个意义,当这两个字节的值小于1536(十六进制为0x0600)时,代表该以太网中数据段的长度;如果这两个字节的值大于1536,则代表该以太网中的数据属于哪个上层协议,例如0x0800代表IP协议(网际协议)、0x0806代表ARP协议(地址解析协议)等。
- 数据:以太网中的数据长度最小46个字节,最大1500个字节。最大值1500称为以太网的最大传输单元(MTU),之所以限制最大传输单元是因为在多个计算机的数据帧排队等待传送时,如果需要某个数据帧太大的话,那么其他数据帧等待的时间就会加长
- 帧检验序列FCS:为了确保数据的正确传送,在数据的尾部加入4个字节的循环冗余校验码(CRC校验)来检测数据是否传送错误
需要注意的是:网络设备和组件在接收一帧数据之后需要一段短暂的时间来恢复,为接收下一帧做好准备,这个时间段就叫做帧间隙,这个值通常被认为96bit time,也就是发送96为数据所需要的时间。对于10Mbit/s的通讯速率的话最小时间应该为:96100ns=9600ns;对于100Mbit/s的通讯速率的话最小时间应该为:9610ns=960ns:对于1000Mbit/s的通讯速率的话最小时间应该为:96*1ns=96ns。
二、IP协议
ip协议(互联网协议/国际协议):ip协议规定了数据传输时的基本单元和格式。IP协议位于以太网MAC帧格式的数据段,IP协议内容由IP首部和数据字段组成。所有的TCP、UDP和ICMP数据都以IP数据报格式传输的。
IP首部校验和计算方法
- 将16位校验和字段置为0,然后将ip首部按照16位分成多个单元;
- 对各个单元采用反码加法运算(即高位溢出位会加到低位,通常的补码运算是直接丢掉溢出的高位);
- 此时仍然可能出现进位的情况,将得到的和再次分成高16位和低16位进行累加;
- 最后将得到的和的反码填入校验和字段
UDP协议
- 源端口号:16位发送端口号,用于区分不同服务的端口,端口号的范围从0到65535;
- 目的端口号:16位接收端端口号;
- UDP长度:16位UDP长度,包含UDP首部长度+数据长度,单位是字节(byte)。
- UDP校验和:16位UDP校验和。UDP计算校验和的方法和计算IP数据报首部校验和的方法相似,但不同的是IP数据报的校验和只检验IP数据报的首部,而UDP校验和包含三个部分:UDP伪首部,UDP首部和UDP的数据部分
用户数据打包再UDP协议中,UDP协议又是基于IP协议之上的,IP协议又是走MAC层发送的,即从包含关系来说:MAC帧中的数据段为IP数据报,IP报文中的数据段为UDP报文,UDP报文中的数据段为用户希望传输的数据内容。
三、以太网实验
本次实验是上位机通过网口调试助手发送数据给FPGA,FPGA开发板通过以太网口接收数据并讲接收到的数据发送给上位机,完成以太网的环回。以太网是通过包的格式传输数据,串口是通过字节的方式传输数据。下图是系统框图。数据的发送时钟和接收时钟(RXC和TXC)全部由以太网芯片PHY提供,无需外部晶振
netsh i i show in //查看网卡的ID号
arp -a //查看本地连接的IP地址
netsh -c i i add neighbors 12 192.168.1.123 00-11-22-33-44-55 //将开发板的IP地址邦到电脑的网卡
执行netsh -c i i add neighbors 12 192.168.1.123 00-11-22-33-44-55
网络调试助手发送不了数据道FPGA的原因:
第一就是因为ip地址没有绑定对,192.168.1.123是开发板的IP地址,
第二就是绑定了多个ip,需要解除不需要绑定的IP。解绑的方法【连接】
---晓凡 2022年7月于桂林书