以太网通信简介_以太网通讯-程序员宅基地

技术标签: fpga开发  高云(GoWin)FPGA  FPGA  安路FPGA  

一、以太网简介

        以太网(Ethernet)是当今最通用的通信协议标准,他规定了包括物理层的连线、电子信号、介质访问协议的内容。

        优点:成本低、通信速率高、抗干扰性强

  •         标准以太网:10Mbit/S
  •         快速以太网:100Mbit/S
  •         千兆以太网:1000Mbit/S

1.1、以太网接口 

引脚编号 引脚名称 说明
Pin1 TX+ 发送数据+                (发送差分信号:+)
Pin2 TX- 发送数据-                 (发送差分信号:-)
Pin3 RX+ 接收信号+                (接收差分信号:+)
Pin4 NC 未使用
Pin5 NC 未使用
Pin6 RX- 接收信号-                (接收差分信号:-)
Pin7 NC 未使用
Pin8 NC 未使用

 1.2、PHY芯片

         PHY芯片在发送数据时,首先将MAC(主机:单片机或者FPGA)发送过来的并行数据转化成串行数据,按照物理层的编码规则把数据编码转换为模拟信号,通过网口发送出去。

         PHY芯片在接收数据时,首先将网络上(RJ45接口)发送过来的模拟信号转化成数据,再通过通信协议(MII、RMII、SMI)发送给MAC(主机单片机或者FPGA)。

        当网卡接入网线时,PHY芯片不断发出脉冲信号来检测对端是否有设备,他们互相协商并确定连接速度、双工模式、是否采用流控制等,这个过程叫做“自动协商”。

        总结:PHY芯片在网络通信中的作用是:主芯片 和网络设备 之间的 模拟信号 与 数字信号 的相互转换。

1.3、MII接口

        MII即媒体独立接口,也叫介质无关接口。它是IEEE-802.3定义的以太网行业标准。它包括一个数据接口,以及一个MAC和PHY之间的管理接口。

名称 说明
ETH_RXC 该信号提供进行RX(主芯片接收)数据传输时的参考时序
ETH_RXDV RX(主芯片接收)数据有效信号
ETH_RXD[3:0]

数据接收信号。该信号是 4 个一组的数据信号,由 PHY 同步驱动,在MII_RXDV 信号有效时才为有效信号(有效数据)。MII_RXD[0] 为最低有效位,

MII_RXD[3] 为最高有效位。

当 MII_RX_DV 禁止、MII_RX_ER 使能时,特定的MII_RXD[3:0] 值用于传输来自 PHY 的特定信息。

ETH_TXC 该信号由主芯片提供,是主芯片TX发送数据传输时的参考时序
ETH_TXEN 发送数据使能信号
ETH_RXD[3:0]

数据发送信号。该信号是 4 个一组的数据信号,由 MAC 子层同步驱动,在MII_TXEN 信号有效时才为有效信号(有效数据)

MII_TXD[0] 为最低有效位

MII_TXD[3] 为最高有效位。

禁止MII_TXEN 时,发送数据不会对 PHY 产生任何影响

ETH_RESET PHY芯片复位信号
ETH _MDC

数据线,数据输入/输出比特流,用于通过MDC 时钟信号向/从PHY 设备同步传输状态信息。

(主芯片访问PHY芯片寄存器的接口)

ETH _MDIO

时钟线,周期性时钟,提供以最大频率2.5 MHz 传输数据时的参考时序。

MDC的最短高电平时间和最短低电平时间必须均为160 ns。MDC的最小周期必须为400 ns。在空闲状态下,SMI管理接口将 MDC时钟信号驱动为低电平。

(主芯片访问PHY芯片寄存器的接口)

1.4、其他接口简介

        精简介质独立接口:RMII  范降低了 10/100 Mbit/s 下微控制器以太网外设与外部 PHY 间的
引脚数。根据 IEEE 802.3u 标准。

        站管理接口:SMI  允许应用程序通过 2 线时钟和数据线访问任意 PHY 寄存器。该接口支持
访问多达 32 个 PHY。

二、以太网通信协议

 2.1、以太网数据包格式(UDP为例)       

 以太网数据包分为几个部分:

  1.         前导码+帧起始定界符
  2.         以太网帧头(包含:目的MAC地址 + 源MAC地址 + 长度/类型)
  3.         以太网数据(IP首部+数据段(UDP首部、数据段、用户数据))
  4.         校验

        

  •         前导码(Preamble):为了实现底层数据的正确阐述,物理层使用7个字节同步码(0和1交替(55-55-55-55-55-55-55))实现数据的同步。

  •          帧起始界定符(SFD,Start Frame Delimiter):使用1个字节的SFD(固定值为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地址:即发送端(本机)物理MAC地址,占用6个字节。

  •         长度/类型   :长度/类型具有两个意义,当这两个字节的值小于1536(0x0600)时,代表该以太网中数据段的长度;如果这两个字节的值大于1536,则表示该以太网中的数据属于哪个上层协议,例如0x0800代表IP协议(网际协议)、0x0806代表ARP协议(地址解析协议)等。

  •         数据:以太网中的数据段长度最小46个字节,最大1500个字节。最大值1500称为以太网的最大传输单元(MTU,Maximum Transmission Unit),之所以限制最大传输单元是因为在多个计算机的数据帧排队等待传输时,如果某个数据帧太大的话,那么其它数据帧等待的时间就会加长,导致体验变差,这就像一个十字路口的红绿灯,你可以让绿灯持续亮一小时,但是等红灯的人一定不愿意的。另外还要考虑网络I/O控制器缓存区资源以及网络最大的承载能力等因素,因此最大传输单元是由各种综合因素决定的。为了避免增加额外的配置,通常以太网的有效数据字段小于1500个字节。

  • 帧检验序列(FCS,Frame Check Sequence):为了确保数据的正确传输,在数据的尾部加入了4个字节的循环冗余校验码(CRC校验)来检测数据是否传输错误。CRC数据校验从以太网帧头开始即不包含前导码和帧起始界定符。通用的CRC标准有CRC-8、CRC-16、CRC-32、CRC-CCIT,其中在网络通信系统中应用最广泛的是CRC-32标准。

        在这里还有一个要注意的地方就是以太网相邻两帧之间的时间间隔,即帧间隙(IFG,
Interpacket Gap)。帧间隙的时间就是网络设备和组件在接收一帧之后,需要短暂的时间来
恢复并为接收下一帧做准备的时间,IFG的最小值是96 bit time,即在媒介中发送96位原始数
据所需要的时间,在不同媒介中IFG的最小值是不一样的。不管10M/100M/1000M的以太网,两
帧之间最少要有96bit time

  • 10Mbit/s最小时间为:96*100ns = 9600ns;
  • 100Mbit/s最小时间为:96*10ns = 960ns;
  • 1000Mbit/s最小时间为:96*1ns = 96ns。

 2.1.1 IP协议(太网数据帧中的数据段部分

        IP协议是TCP/IP协议簇中的核心协议,也是TCP/IP协议的载体,IP协议规定了数据传输时
的基本单元和格式。 IP协议在以太网数据帧中的数据段部分

         

         前20个字节和紧跟其后的可选字段是IP数据报的首部,前20个字节是固定的,后面可选字
段是可有可无的,首部的每一行以32位(4个字节)为单位。

  •         版本:4位IP版本号(Version),这个值设置为二进制的0100时表示IPv4,设置为0110时表示IPv6,目前使用比较多的IP协议版本号是4。

  •         首部长度:4位首部长度(IHL,Internet Header Length),表示IP首部一共有多少个32位(4个字节)。在没有可选字段时,IP首部长度为20个字节,因此首部长度的值为5。

  •         服务类型:8位服务类型(TOS,Type of service),该字段被划分成两个子字段:3位优先级字段(现在已经基本忽略掉了)和4位TOS字段,最后一位固定为0。服务类型为0时表示一般服务。

  •         总长度:16位IP数据报总长度(Total Length),包括IP首部和IP数据部分,以字节为单位。我们利用IP首部长度和IP数据报总长度,就可以知道IP数据报中数据内容的起始位置和长度。由于该字段长16bit,所以IP数据报最长可达65535字节。尽管理论上可以传输长达65535字节的IP数据报,但实际上还要考虑网络的最大承载能力等因素。

  •         标识字段:16位标识(Identification)字段,用来标识主机发送的每一份数据报。通常每发送一份报文它的值就会加1。包序

  •         标志字段:3位标志(Flags)字段,第1位为保留位;第2位表示禁止分片(1表示不分片 0:允许分片);第3位标识更多分片(除了数据报的最后一个分片外,其它分片都为1)。

  •         片偏移:13位片偏移(Fragment Offset),在接收方进行数据报重组时用来标识分片的顺序。

  •        生存时间:8位生存时间字段,TTL(Time To Live)域防止丢失的数据包在无休止的传播,一般被设置为64或者128。(每转发一次-1)

  •        协议:8位协议(Protocol)类型,表示此数据报所携带上层数据使用的协议类型,ICMP为1,TCP为6,UDP为17。

  •         首部校验和:16位首部校验和(Header Checksum),该字段只校验数据报的首部,不包含数据部分;校验IP数据报头部是否被破坏、篡改和丢失等。

  •         源IP地址:32位源IP地址(Source Address),即发送端的IP地址,如192.168.1.123

  •         目的IP地址:32位目的IP地址(Destination Address),即接收端的IP地址,如192.168.1.102。

  •         可选字段:是数据报中的一个可变长度的可选信息,选项字段以32bit为界,不足时插入值为0的填充字节,保证IP首部始终是32bit的整数倍。

 2.1.2   UDP协议(太网数据帧中的数据段部分,跟在IP首部后面)

        UPD与TCP相比是:无连接、不可靠、高速率的传输方式,格式如下:        

源端口号(16bit) 目的端口号(16bit)
UDP长度 (16bit) UDP校验和(16bit)
        UDP数据

        UDP首部共8个字节,同IP首部一样,也是一行以32位(4个字节)为单位。

  •         源端口号:16位发送端端口号,用于区分不同服务的端口,端口号的范围从0到65535。
  •         目的端口号:16位接收端端口号。
  •         UDP长度:16位UDP长度,包含UDP首部长度+数据长度,单位是字节(byte)。
  •         UDP校验和:16位UDP校验和。UDP计算校验和的方法和计算IP数据报首部校验和的方法相似,但不同的是IP数据报的校验和只检验IP数据报的首部,而UDP校验和包含三个部分:UDP伪首部,UDP首部和UDP的数据部分。伪首部的数据是从IP数据报头和UDP数据报头获取的,包括源IP地址,目的IP地址,协议类型和UDP长度,其目的是让UDP两次检查数据是否已经正确到达目的地,只是单纯为了做校验用的。在大多数使用场景中接收端并不检测UDP校验和。

</article>
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/bxlover007/article/details/127733235

智能推荐

Google V8 编程入门(一) - V8对象概览_google v8 介绍-程序员宅基地

文章浏览阅读2.7k次。1, v8的类结构 图一: 句柄,用于垃圾对象回收图二:原始类型图三:对象类型图四:模板类型图五:总的类图_google v8 介绍

verilog 自动售货机状态机实现_答辩-基于Verilog HDL的自动售货机的设计.ppt-程序员宅基地

文章浏览阅读589次。基于Verilog HDL语言的自动售货机的设计 PPT模板下载:/moban/ 行业PPT模板:/hangye/ 节日PPT模板:/jieri/ PPT素材下载:/sucai/ PPT背景图片:/beijing/ PPT图表下载:/tubiao/ 优秀PPT下载:/xiazai/ PPT教程: /powerpoint/ ..._自动售货机控制电路verilog设计ppt

医学图像了解_医学影像 rescale_slope-程序员宅基地

文章浏览阅读3.3k次。医学图像了解医学图像了解医学图像医学图像是反映解剖区域内部结构或内部功能的图像,它是由一组图像元素——像素(2D)或立体像素(3D)组成的。医学图像是由采样或重建产生的离散性图像表征,它能将数值映射到不同的空间位置上。像素的数量是用来描述某一成像设备下的医学成像的,同时也是描述解剖及其功能细节的一种表达方式。像素所表达的具体数值是由成像设备、成像协议、影像重建以及后期加工所决定的医..._医学影像 rescale_slope

Redash可视化开放接口_metabase hide_parameters-程序员宅基地

文章浏览阅读1.3k次,点赞2次,收藏2次。前言:近来越来越多的朋友关心Redash中文版的可视化开放接口问题,视图和报表能在其它应用的网页里吗?当然能,作为开源平台Redash的可视化接口做到相当到位。一、视图的开放接口:Redash的视图本身就是支持开放接口,点视图左下角的折叠菜单,选“嵌入到其它应用程序”就可生成该视图的外部调用API:形如http://localhost:5000/embed/query/9/visualization/18?api_key=jW3MmyT5Gnx6HSG3H9AJJpWb2wPUhS0rKoKub_metabase hide_parameters

Listener,Filter ,Intercept_filter和intercept-程序员宅基地

文章浏览阅读371次。由于最近两个月工作比较清闲,个人也比较“上进”,利用工作空余时间,也继续学习了一下,某天突然想起struts2和struts1的区别的时候,发现为什么struts1要用servlet,而struts2要用filter呢?一时又发现,servlet和filter有什么区别呢?于是看了看web.xml,一时又发现,咦,servlet、filter、listener?还有个interceptor?对于这_filter和intercept

Guava Cache三种被动更新机制与过期监听器removalListener_expireafterwrite-程序员宅基地

文章浏览阅读1.2k次。Guava Cache三种被动更新机制:expireAfterWrite与refreshAfterWrite的不同_expireafterwrite

随便推点

在vue中使用unity3D实现webGL将要呈现的效果_unity webgl vue-程序员宅基地

文章浏览阅读1.3w次,点赞7次,收藏55次。文章目录Vue + webGL + unity3D1. 什么是webGL?1.1 兼容性2. 什么是unity3D?2.1 unity3D 的发展史3. 如何在vue中使用unity3D和webGL?3.1 新建一个挂载unity3d加载器的vue组件3.2 使用新建的vue-unity-webgl组件4. 演示效果Vue + webGL + unity3D1. 什么是webGL?WebGL(Web图形库)是一个JavaScript API,可在任何兼容的Web浏览器中渲染高性能的交互式3D和2D图形_unity webgl vue

java invoke 泛型_java中的泛型-程序员宅基地

文章浏览阅读297次。本文将详细介绍java泛型的用法以及泛型的原理java泛型泛型是在J2 SE1.5中引入的一个特性 可以将类型抽象为一个参数 从而简化代码和实现类型安全如何使用泛型泛型可以用于方法 类和接口通过尖括号加标识符的方式声明class GenericityClass{T t;publicGenericityClass(T t){this.t =t;}publicT getT(){returnt;}}i..._java 泛型 执行方法invok

php fpm xcache,php扩展xcache-程序员宅基地

文章浏览阅读57次。xcache模块可以缓存php运行时编译生成的opcode可以加速php程序的效率安装xcache和安装memcache方法类似,都是以扩展的方式安装1、安装xcache扩展tar -xvf xcache-3.2.0.tar.gzcdxcache-3.2.0./configure --with-php-config=/usr/local/php/bin/php-config --enable-..._php xcache扩展

linux解压war包的命令-程序员宅基地

文章浏览阅读203次。网上很多人说用jar包解压,但jar命令解压时不能指定目录,推荐使用unzip解压war包。unzip -d 指定目录[root@oracle upload]# unzip -oq common.war -d common命令名: unzip功 能说明:解压缩zip文 件语  法:unzip [-cflptuvz][-agCjLMnoqsVX][-P &..._linux解压war包命令到指定目录

RTSP基本概念_rtcp alg-程序员宅基地

文章浏览阅读693次。流媒体指的是在网络中使用流技术传输的连续时基媒体,其特点是在播放前不需要下载整个文件,而是采用边下载边播放的方式,它是视频会议、IP电话等应用场合的技术基础。RTP是进行实时流媒体传输的标准协议和关键技术,本文介绍如何在Linux下利用JRTPLIB进行实时流媒体编程。一、流媒体简介 随着Internet的日益普及,在网络上传输的数据已经不再局限于文字和图形,而是逐渐向声音和视频等_rtcp alg

Java 比较两个字符串的相似度算法(Levenshtein Distance)_java中文字符串相似度算法-程序员宅基地

文章浏览阅读9.8k次,点赞10次,收藏35次。Levenshtein 距离,又称编辑距离,指的是两个字符串之间,由一个转换成另一个所需的最少编辑操作次数。许可的编辑操作包括将一个字符替换成另一个字符,插入一个字符,删除一个字符。编辑距离的算法是首先由俄国科学家Levenshtein提出的,故又叫Levenshtein Distance。算法实现原理图解:a.首先是有两个字符串,这里写一个简单的 abc 和 abeb.将..._java中文字符串相似度算法

推荐文章

热门文章

相关标签