fpga_feixiang 发表于 2017-4-20 15:49:10

以太网协议

历史上以太网帧格式有五种:
1 Ethernet V1:这是最原始的一种格式,是由Xerox PARC提出的3Mbps CSMA/CD以太网标准的封装格式,后来在1980年由DEC,Intel和Xerox标准化形成Ethernet V1标准;
2 Ethernet II即DIX 2.0:Xerox与DEC、Intel在1982年制定的以太网标准帧格式。Cisco名称为:ARPA。

这是最常见的一种以太网帧格式,也是今天以太网的事实标准,由DEC,Intel和Xerox在1982年公布其标准,主要更改了Ethernet V1的电气特性和物理接口,在帧格式上并无变化;Ethernet V2出现后迅速取代Ethernet V1成为以太网事实标准;Ethernet V2帧头结构为6bytes的源地址+6bytes的目标地址+2Bytes的协议类型字段+数据。
常见协议类型如下:
0800       IP
0806       ARP
0835       RARP
8137       Novell IPX
809b       Apple Talk
如果协议类型字段取值为0000-05dc(十进制的0-1500),则该帧就不是Ethernet V2(ARPA)类型了,而是下面讲到的三种802.3帧类型之一;Ethernet可以支持TCP/IP,Novell IPX/SPX,Apple Talk Phase I等协议;RFC 894定义了IP报文在Ethernet V2上的封装格式;

PR        SD        DA        SA        TYPE        DATA        PAD        FCS
56位        8位        48位        48位        16位        不超过1500字节        不够填充        32位
在每种格式的以太网帧的开始处都有64比特(8字节)的前导字符,如图所示。其中,前7个字节称为前同步码(Preamble),内容是16进制数0xAA,最后1字节为帧起始标志符0xAB,它标识着以太网帧的开始。前导字符的作用是使接收节点进行同步并做好接收数据帧的准备。

——PR:同步位,用于收发双方的时钟同步,同时也指明了传输的速率(10M和100M的时钟频率不一样,所以100M网卡可以兼容10M网卡),是56位的二进制数101010101010.....

——SD: 分隔位,表示下面跟着的是真正的数据,而不是同步时钟,为8位的10101011,跟同步位不同的是最后2位是11而不是10.

——DA:目的地址,以太网的地址为48位(6个字节)二进制地址,表明该帧传输给哪个网卡.如果为FFFFFFFFFFFF,则是广播地址,广播地址的数据可以被任何网卡接收到.

——SA:源地址,48位,表明该帧的数据是哪个网卡发的,即发送端的网卡地址,同样是6个字节.

----TYPE:类型字段,表明该帧的数据是什么类型的数据,不同的协议的类型字段不同。如:0800H 表示数据为IP包,0806H 表示数据为ARP包,814CH是SNMP包,8137H为IPX/SPX包,(小于0600H的值是用于IEEE802的,表示数据包的长度。)

----DATA:数据段 ,该段数据不能超过1500字节。因为以太网规定整个传输包的最大长度不能超过1514字节。(14字节为DA,SA,TYPE)

----PAD:填充位。由于以太网帧传输的数据包最小不能小于60字节, 除去(DA,SA,TYPE 14字节),还必须传输46字节的数据,当数据段的数据不足46字节时,后面补000000.....(当然也可以补其它值)

----FCS:32位数据校验位.为32位的CRC校验,该校验由网卡自动计算,自动生成,自动校验,自动在数据段后面填入.对于数据的校验算法,我们无需了解.

----事实上,PR,SD,PAD,FCS这几个数据段我们不用理它 ,它是由网卡自动产生的,我们要理的是DA,SA,TYPE,DATA四个段的内容.

----所有数据位的传输由低位开始(但传输的位流是用曼彻斯特编码的)

----以太网的冲突退避算法就不介绍了,它是由硬件自动执行的.

DA+SA+TYPE+DATA+PAD最小为60字节,最大为1514字节.

----以太网卡可以接收三种地址的数据,一个是广播地位,一个是多播地址(我们用不上),一个是它自已的地址.但网卡也可以设置为接收任何数据包(用于网络分析和监控).

----任何两个网卡的物理地址都是不一样的,是世界上唯一的,网卡地址由专门机构分配.不同厂家使用不同地址段,同一厂家的任何两个网卡的地址也是唯一的.根据网卡的地址段(网卡地址的前三个字节),可以知道网卡的生产厂家.有些网卡的地址也可以由用户去设定,但一般不需要.

3 Ethernet 802.3 raw帧格式

  

  如图5所示,是Ethernet 802.3 raw类型以太网帧格式。

    

                          图5  Ethernet 802.3 raw帧格式

  

  在Ethernet 802.3 raw类型以太网帧中,原来Ethernet II类型以太网帧中的类型字段被"总长度"字段所取代,它指明其后数据域的长度,其取值范围为:46-1500。

  

  接下来的2个字节是固定不变的16进制数0xFFFF,它标识此帧为Novell以太类型数据帧。

  

  4 Ethernet 802.3 SAP帧格式

  如图6所示,是Ethernet 802. 3 SAP类型以太网帧格式。

    

                                             图6  Ethernet 802. 3 SAP帧格式

  

  从图中可以看出,在Ethernet 802.3 SAP帧中,将原Ethernet 802.3 raw帧中2个字节的0xFFFF变为各1个字节的DSAP和SSAP,同时增加了1个字节的"控制"字段,构成了802.2逻辑链路控制(LLC)的首部。LLC提供了无连接(LLC类型1)和面向连接(LLC类型2)的网络服务。LLC1是应用于以太网中,而LLC2应用在IBM SNA网络环境中。

  

  新增的802.2 LLC首部包括两个服务访问点:源服务访问点(SSAP)和目标服务访问点(DSAP)。它们用于标识以太网帧所携带的上层数据类型,如16进制数0x06代表IP协议数据,16进制数0xE0代表Novell类型协议数据,16进制数0xF0代表IBM NetBIOS类型协议数据等。

常见SAP值:
0                                    Null LSAP                  
4                                    SNA Path Control         
6                                    DOD IP                     
AA                                    SNAP                        
FE                                     ISO DIS 8473            
FF                                     Global DSAP               
SAP值用以标志上层应用,但是每个SAP字段只有8bits长,而且其中仅保留了6比特用于标识上层协议,因此所能标识的协议数有限(不超过32种);并且IEEE拒绝为某些重要的协议比如ARP协议定义SAP值(奇怪的是同时他们却定义了IP的SAP值);因此802.3/802.2 LLC的使用有很大局限性;

  至于1个字节的"控制"字段,则基本不使用(一般被设为0x03,指明采用无连接服务的802.2无编号数据格式)。

  

  5 Ethernet 802.3 SNAP帧格式

  如图7所示,是Ethernet 802. 3 SNAP类型以太网帧格式。

  

                                      图7  Ethernet 802. 3 SNAP帧格式

  

  Ethernet 802. 3 SNAP类型以太网帧格式和Ethernet 802. 3 SAP类型以太网帧格式的主要区别在于:

  

  ●2个字节的DSAP和SSAP字段内容被固定下来,其值为16进制数0xAA。

  

  ●1个字节的"控制"字段内容被固定下来,其值为16进制数0x03。

  

  ●增加了SNAP字段,由下面两项组成:

  

  ◆新增了3个字节的组织唯一标识符(Organizationally Unique Identifier,OUI ID)字段,其值通常等于MAC地址的前3字节,

◆ 增加了表示上层协议的类型

这是IEEE为保证在802.2 LLC上支持更多的上层协议同时更好的支持IP协议而发布的标准,与802.3/802.2 LLC一样802.3/802.2 SNAP也带有LLC头,但是扩展了LLC属性,新添加了一个2Bytes的协议类型域(同时将SAP的值置为AA),从而使其可以标识更多的上层协议类型;另外添加了一个3Bytes的OUI字段用于代表不同的组织,RFC 1042定义了IP报文在802.2网络中的封装方法和ARP协议在802.2 SANP中的实现;

不同厂商对这几种帧格式通常有不同的叫法,比如:
Frame Type                            Novel                           Cisco
Ethernet Version 2               Ethernet_II                  arpa
802.3 Raw                           Ethernet_802.3            novell_ether
IEEE 802.3/802.2                   Ethernet_802.2            sap
IEEE 802.3/802.2 SNAP         ETHERNET_SNAP      snap

星宇 发表于 2017-4-20 17:23:56

以太网协议

fpga_feixiang 发表于 2017-4-26 16:03:02

"""学好FPGA,海阔天空,人生能有几回从事FPGA,天高菜鸟飞,电路任我构,把电路用语言描述出来,综合成逻辑关系,然后在芯片中利用已有的触发器和LUT构成实际电路, 目前来说半定制FPGA芯片主要应用在军工领域较多,一些尖端科技领域,航天航空,以及日常通讯与图像处理算法,复杂工控FPGA也能得到很好应用,这就是FPGA的的本质。
钢铁石油在国家经济发展到一定程度,量就会减少,然后集成电路使用永远都在增加,随着中国的发展,集成电路将越来越发挥巨大作用,FPGA的前景一片大好。
学习技术的过程就是把脑海中的思想用语言表达出来,好的创意是编出好的程序的基石,多多扩大几自己专业知识背景,学习别人好的创意,这是如何学好FPGA的要领。
---札记(飞翔)""      
      
      
      
      
"

zhiweiqiang33 发表于 2017-5-11 10:53:07

感谢寇老湿的热心文章;;
页: [1]
查看完整版本: 以太网协议