以太网通讯协议小结--持续更新中
一、以太网介绍
以太网是一种产生较早,使用相当广泛的局域网技术,局域网就是一个区域的网络互联,可以使办公室也可以是学校等等,大小规模不一。
目前以太网根据速度等级分类大概分为:标准以太网(10Mbit/s),快速以太网(100Mbit/s),千兆以太网(1000Mbit/s),以及更快的万兆以太网(10Gbit/s)。但在平常使用中,快速以太网和千兆以太网已经足够了。
以太网通信是以数据包的形式传输, 其单包数据量达到几十, 甚至成百上千个字节。
以太网接口类型有RJ45接口,RJ11接口(电话线接口),SC光纤接口。其中RJ45接口使我们最常用的以太网接口(电脑接口)。
RJ45接口也称为水晶头,由插头和插座组成
可以看到,RJ45接口和HDMI等接口一样,也是采用差分数据传输,这种传输有抗干扰能力强的特性(这在高速数据传输中很重要)。
RH45接口对应的网线分为4芯网线和8芯网线。
4芯包含两个差分对(Tx+、Tx-\Rx+、Rx-),1、2芯用于发送数据,3、6芯用于接受数据,4、5、7、8线为备用线没有使用(起抗电磁干扰的作用),通常应用于百兆网络传输;8芯包含四个差分对,1、2、3、4芯用于发送数据,5、6、7、8芯用于接受数据,1对3,2对6,3对1,4对7,5对8,6对2,7对4,8对5,通常应用于千兆及以上网络传输。
4芯网线为直通网线时,连接方式如下:
Hub/Switch Host
1 <------------>1
2 <------------>2
3 <------------>3
6 <------------>6
4芯网线为交叉网线时,连接方式如下:
Hub/Switch Hub/Switch
1 <------------>3
2 <------------>6
3 <------------>1
6 <------------>2
这里补充下主机串口的线序(一般也用RJ45接口),它的线序是全反网线,做法就是一端的顺序是1-8,另一端则是8-1 的顺序:
Host Router/Switch
1 <------------>8
2 <------------>7
3 <------------>6
4 <------------>5
5 <------------>4
6 <------------>3
7 <------------>2
8 <------------>1
二、以太网数据包格式
可以看到,我们一帧能发送的真正的数据内容为:18-1472 Byte;然后将用户数据添加UDP首部,形成UDP层;再加上IP首部,形成IP层;最后加上前导码、SFD(帧起始界定符)、以太网帧头、以及FCS(帧检验序列),构成了MAC层(物理层,包括源MAC地址和目的MAC地址),也就是最终需要在通信线路上传输的数据。
在设计物理层时,只需要计算得到各个首部、前导码、起始界定符、以及校验,就可以得到物理层,然后进行传输。
三、TCP/IP协议簇
TCP( 传输控制协议) /IP(网际协议)协议簇,虽然看上去TCP/IP协议簇只有两个协议,其实TCP/IP协议簇包含了上百种协议,最常用的有TCP、IP、UDP等。其中TCP协议和UDP协议应用最广泛。
1、IP协议
IP协议是TCP/IP协议簇中的核心协议,所有的TCP、 UDP及ICMP数据都以IP数据报格式传输。
从以太网数据包格式中可以看出,IP数据报 包括IP首部和数据段。
IP数据报内容
版本:4位版本号,IPv4(0100),IPv6(0110),目前在以太网使用IPv4多,但是在计算机系统中,IPv6也已经流行起来,因为IPv4仅用32个bit来表示地址,IPv4 地址的总数为 4294967296,到现在,已经快用光了;而IPv6使用128bit来表示地址,理论来说根本用不完。
首部长度:4位,表示IP首部一共有多少个32位(4Byte),假设无可选字段(一般来说没有),IP首部有20个Byte,则首部长度为5;最大为15,即60个Byte。
服务类型:8位,普通服务的话,设置为0。可以参考:IP首部中的服务类型(TOS)
总长度:16位,包括IP首部和IP数据部分,以字节为单位。我们利用IP首部长度和IP数据报总长度,就可以计算出IP数据报中数据内容的起始位置和长度。
标识:16位,通常每发一份报文,就加1。
标志:3位,用来表示分片还是不分片,第一位(最高位)保留,第二位(1-不分片,0-允许分片),第三位为1即表示后面“还有分片”的数据报。为0表示这已是若干数据报片中的最后一个。
叶偏移:13位,在接收方进行数据报重组时用来标识分片的顺序。
生存时间:8位,防止丢失的数据包在无休止的传播,一般被设置为64或者128。IPv6 地址有两个生存期:首选生存期和有效生存期,而首选的生存期总是小于等于有效的生存期。具体可以参考官方文档。
协议:8位,表示此数据报所携带上层数据使用的协议类型,TCP为6, UDP为17。可以参考:IP协议号 IP首部中有8位协议号,用于指明IP的上层协议
首部校验和:这部分需要自己计算,用来校验IP数据报头部是否被破坏、篡改和丢失等,不校验数据。
源MAC地址,目的MAC地址:就是发送和接收IP地址。
可选字段:是数据报中的一个可变长度的可选信息,选项字段以32bit为界,不足时插入值为0的填充字节,保证IP首部始终是32bit的整数倍。
2、UDP协议
在以太网数据包中,我们可以看到,TCP协议(IP层)比UDP层复杂,更为可靠,但是UDP运用场景也非常多。
那为什么不所有传输都用更可靠的TCP协议呢,这就像卖手机,不可能都上最好的配置,毕竟有人不需要这么好的配置,我只需要打电话,一个骁龙835就够了,如果你叫我多花2000块,买一个865,那我没必要。所以这就是需求不同,所以UDP也常用。
TCP与UDP的区别:TCP为可靠传输协议,而UDP为不可靠传输协议;TCP协议可以保证数据的完整和有序,而UDP不能保证;UDP由于不需要连接,故传输速度比TCP快,且占用资源比TCP少;
应用场景:TCP适用于对数据完整性要求很高的场合,比如文件传输;而UDP适用于对数据完整性要求不高的场合,比如说视频直播,毕竟直播的时候少传输几个像素点,影响也不大,而且视频直播要求数据传输很快。而文件数据要是少一个byte或者更多,可能会造成很大的问题。
UDP格式数据
四、以太网电路
一般一个嵌入式终端系统的以太网部分如下图
主要有MAC控制器、PHY芯片、网络变压器和RJ45接头组成,有的系统会有DMA控制。一般的系统中CPU和MAC以及DMA控制器都是集成在一块芯片上的,为了节省空间简化设计,很多时候网口的变压器和RJ45的接头集成在一起。
1、MAC
MAC即Media Access Control,即媒体访问控制子层协议。该协议位于OSI七层协议中数据链路层的下半部分,主要负责控制与连接物理层的物理介质。在发送数据的时候,MAC协议可以事先判断是否可以发送数据,如果可以发送将给数据加上一些控制信息,最终将数据以及控制信息以规定的格式发送到物理层;在接收数据的时候,MAC协议首先判断输入的信息并是否发生传输错误,如果没有错误,则去掉控制信息发送至LLC(逻辑链路控制)层。该层协议是以太网MAC由IEEE-802.3以太网标准定义,最新的MAC同时支持10Mbps和100Mbps两种。
2、PHY
PHY是物理接口收发器,它实现物理层。IEEE-802.3标准定义了以太网PHY。包括MII/GMII(介质独立接口)子层,PCS(物理编码子层),PMA(物理介质附加)子层,PMD(物理介质相关)子层,MDI子层。它符合IEEE-802.3k中用于10BaseT(第14条)和100BaseTX(第24条和第25条)的规范。
PHY在发送数据的时候,收到MAC过来的数据(对PHY来说,没有帧的概念,对它来说都是数据),把并行数据转化为串行流数据,再按照物理层的编码规则把数据编码为模拟信号送出去。收数据时的流程反之。
3、示例图片
网卡部件
①RJ-45接口
②Transformer(隔离变压器)
③PHY芯片
④MAC芯片
⑤EEPROM
⑥BOOTROM插槽
⑦WOL接头
⑧晶振
⑨电压转换芯片
⑩LED指示灯
4、网络变压器
网络变压器作用是:
耦合差分信号,抗干扰能力更强
变压器隔离网线端不同设备的不同电平,隔离直流信号
网络变压器一般是由差模线圈,变压器以及中心抽头组成。如下示意:
其中初级中心抽头的接法需要根据PHY芯片来决定,电流驱动的就要接电源,电压驱动直接接个电容到地即可,是具体还要参看芯片的datasheet和参考设计了。 还需要注意的是有的变压器中间抽头是独立的有的是收发合并在一起的,设计的时候需要注意,为了防止初版硬件设计错误,可以兼容设计,如下所示:
变压器次级中心抽头使用Bob Smith电路来抑制共模噪音,利用75Ω和电容接地吸收共模能量,如上图原理图所示。
5、Bob Smith电路的作用
(1)浪涌防护
(2)降低EMC测试辐射
可以参考链接: 网口浪涌防护电路-Bob Smith电路
五、以太网设计布局布线
1、优先绘制Rx±、Tx±差分对,尽量保持差分对平行、等长、短距,避免过孔、交叉。由于管脚分布、过孔、以及走线空间等因素存在使得差分线长易不匹配,时序会发生偏移,还会引入共模干扰,降低信号质量。所以,相应的要对差分对不匹配的情况作出补偿,使其线长匹配,长度差通常控制在5mil以内,补偿原则是哪里出现长度差补偿哪里;
2、当速度要求高时需对Rx±、Tx±差分对进行阻抗控制,通常阻抗控制在100Ω±10%;
3、差分信号端接电阻(49.9Ω,有的PHY层芯片可能没有)必须靠近PHY层芯片的Rx±、Tx±管脚放置,这样能更好的消除通信电缆中的信号反射;
4、差分线对上的滤波电容必须对称放置,否则差模可能转成共模,带来共模噪声,且其走线时不能有stub ,这样才能对高频噪声有良好的抑制能力。
5、RJ45未集成变压器的布局布线
上图是变压器没有集成在网口连接器的电路PCB布局、布线参考,需要注意以下几点
a)RJ45和变压器之间的距离尽可能的短,晶振远离接口、PCB边缘和其他的高频设备、走线或磁性元件周围,PHY层芯片和变压器之间的距离尽可能短,但有时为了顾全整体布局,这一点可能比较难满足,但他们之间的距离最大约10~12cm,器件布局的原则是通常按照信号流向放置,切不可绕来绕去;
b)PHY层芯片的电源滤波按照要芯片要求设计,通常每个电源端都需放置一个退耦电容,他们可以为信号提供一个低阻抗通路,减小电源和地平面间的谐振,为了让电容起到去耦和旁路的作用,故要保证退耦和旁路电容由电容、走线、过孔、焊盘组成的环路面积尽量小,保证引线电感尽量小;
c)网口变压器PHY层芯片侧中心抽头对地的滤波电容要尽量靠近变压器管脚,保证引线最短,分布电感最小;
d)网口变压器接口侧的共模电阻和高压电容靠近中心抽头放置,走线短而粗(≥15mil);
e)变压器的两边需要割地:即RJ45连接座和变压器的次级线圈用单独的隔离地,隔离区域100mil以上,且在这个隔离区域下没有电源和地层存在。这样做分割处理,就是为了达到初、次级的隔离,控制源端的干扰通过参考平面耦合到次级;
f)指示灯的电源线和驱动信号线相邻走线,尽量减小环路面积。指示灯和差分线要进行必要的隔离,两者要保证足够的距离,如有空间可用GND隔开;
g)用于连接GND和PGND的电阻及电容需放置地分割区域。
6、RJ45集成变压器的布局布线
变压器集成在连接器的以太网电路的PCB布局、布线较不集成的相对简单很多,下图 3是采用一体化连接器的网口电路的PCB布局、布线参考图:
六、参考链接
1、以太网芯片MAC和PHY的关系
2、网口设计时布局布线
3、以太网(Ethernet)学习(一):协议
4、以太网PHY自学笔记