新进化论

道生一,一生二,二生三,三生万物。

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::

see also:http://course.cc.shu.edu.cn/safe/tcpip/start.htm 

很详细的介绍物理层:http://www.highteck.net/EN/Physical/OSI_Physical_Layer.html 
 

什么是4B/5B编码?

 

      4B/5B编码是百兆以太网中线路层编码类型之一,就是用5bit的二进制数来表示4bit二进制数,映射方式如下表所示:

   

 

 

    为什么要进行4B/5B编码?

 

在通信网络中,接收端需要从接收数据中恢复时钟信息来保证同步,这就需要线路中所传输的二进制码流有足够多的跳变,即不能有过多连续的高电平或低电平,否则无法提取时钟信息。

Manchester编码可以保证线路中码流有充分的跳变,因为它是用电平从“-1到“+1的跳变来表示“1,用电平从“+1到“-1的跳变来表示“0,但是这种编码方式的效率太低,只有50%,相当于用线路的有效带宽来换取信号的跳变,十兆以太网就是使用Manchester编码,虽然线路的有效带宽只有10Mbps,但实际带宽却是20Mbps

百兆以太网用的4B/5B编码与MLT-3编码组合方式,发送码流先进行4B/5B编码,再进行MLT-3编码,最后再上线路传输;千兆以太网用的是8B/10B编码与NRZ编码组合方式;万兆以太网用的是64B/66B编码;PCIE 3.0用的是128B/130B编码。

 

4B/5B编码规则有哪些?

 

4B/5B编码其实就是用5bit的二进制码来代表4bit二进制码。此编码的效率是80%,比Manchester码高。4B/5B编码的目的在前面已经说过了,就是让码流产生足够多的跳变。4位二进制共有16种组合,5位二进制共有32种组合,如何从32种组合种选取16种来使用呢?这里需要满足两个规则:

 

1). 每个5比特码组中不含多于3个“0

2). 或者5比特码组中包含不少于2个“1

 

此规则是怎么来的?这就要从MLT-3的特点来解释了。MLT-3的特点简单的说就是:逢“1”跳变,逢“0”不跳变。为了让4B/5B编码后的码流中有足够多的跳变就需要编码后的码流中有尽量多的“1”和尽量少的“0”。

关于线路编码类型,如NRZNRZIHDB3B3ZSB8ZSAMICMIMLT-3Manchester等。

问:如何实现单片以太网微控制器? 
答:诀窍是将微控制器、以太网媒体接入控制器(MAC)和物理接口收发器(PHY)整合进同一芯片,这样能去掉许多外接元器件。这种方案可使MAC和PHY实现很好的匹配,同时还可减小引脚数、缩小芯片面积。单片以太网微控制器还降低了功耗,特别是在采用掉电模式的情况下。
问:以太网MAC是什么?
答:MAC就是媒体接入控制器。以太网MAC由IEEE-802.3以太网标准定义。它实现了一个数据链路层。最新的MAC同时支持10Mbps和100Mbps两种速率。通常情况下,它实现MII接口。
问:什么是MII?
答:MII即媒体独立接口,它是IEEE-802.3定义的以太网行业标准。它包括一个数据接口,以及一个MAC和PHY之间的管理接口(图1)。数据接口包括分别用于发送器和接收器的两条独立信道。每条信道都有自己的数据、时钟和控制信号。MII数据接口总共需要16个信号。管理接口是个双信号接口:一个是时钟信号,另一个是数据信号。通过管理接口,上层能监视和控制PHY。


问:以太网PHY是什么?
答:PHY是物理接口收发器,它实现物理层。IEEE-802.3标准定义了以太网PHY。它符合IEEE-802.3k中用于10BaseT(第14条)和100BaseTX(第24条和第25条)的规范。
问:造成以太网MAC和PHY单片整合难度高的原因是什么?
答:PHY整合了大量模拟硬件,而MAC是典型的全数字器件。芯片面积及模拟/数字混合架构是为什么先将MAC集成到微控制器而将PHY留在片外的原因。更灵活、密度更高的芯片技术已经可以实现MAC和PHY的单芯片整合。
问: 除RJ-45接口外,还需要其它元件吗?
答:需要其它元件。虽然PHY提供绝大多数模拟支持,但在一个典型的实现中,仍需外接6、7只分立元件及一个局域网绝缘模块。绝缘模块一般采用一个1:1的变压器。这些部件的主要功能是为了保护PHY免遭由于电气失误而引起的损坏。
问:10BaseT和100BaseTX PHY实现方式不同的原因何在?
答:两种实现的分组描述本质上是一样的,但两者的信令机制完全不同。其目的是阻止一种硬件实现容易地处理两种速度。10BaseT采用曼彻斯特编码,100BaseTX采用4B/5B编码。
问:什么是曼彻斯特编码?
答:曼彻斯特编码又称曼彻斯特相位编码,它通过相位变化来实现每个位(图2)。通常,用一个时钟周期中部的上升沿表示“1”,下降沿表示“0”。周期末端的相位变化可忽略不计,但有时又可能需要将这种相位变化计算在内,这取决于前一位的值。
[url=http://blog.sina.com.cn/main/html/showpic.html#url=http://static7.photo.sina.com.cn/orignal/4899b874dd086780c791e]



问:什么是4B/5B编码?
答:4B/5B编码是一种块编码方式。它将一个4位的块编码成一个5位的块。这就使5位块内永远至少包含2个“1”转换,所以在一个5位块内总能进行时钟同步。该方法需要25%的额外开销。  

 

100BASE-T技术规范 

 

 

 6.2.2. 100BASE-T

协议

    采用802.3标准、CSMA/CO访问方式,又称快速以太网。

传输介质


1 标准
100Base-TX

    • Cable: 两对5类UTP(非屏蔽双绞线),或两对1型STP(屏蔽双绞线)
    • 编码: 4B/5B码
    • Connector: RJ45(有1-8根Pin)
    • 连线与100Base-T相同
      Pin 1, 2 : 发送; 
      Pin 3, 6 : 接收; 
      其余未用
    • 工作站与HUB之间最长距离为100米,故它不适用于大型网

100Base-FX

    • Cable: 2根多模光纤
    • 编码: 4B/5B码
    • Connector: SC, MIC(Media Interface Connector), ST
    • 最长距离400米

100Base-T4

    • Cable: 4对3, 4, 5类UTP
    • 编码: 8B6T码
    • Connector: RJ45
    • Pin 1, 2 TX-D1 : 发送
      Pin 3, 6 RX-D2 : 接收
      Pin 4, 5 BI-D3 : 双向传送
      Pin 7, 8 BI-D4 : 双向传送
    • 最长距离100米

2 编码

    NRZ(Nonreturn to Zero)

  •     NRZ-L(-level)

sdf.gif (1868 bytes)

图 1

             这种编码最简单,也最常用

  •     NRZI    Nonreturn to Zero,invert on ones

        属于查分编码

          “1”有变化,“0”无变化

sdf2.GIF (15058 bytes)

图 2

        其优点是:减少噪声和失真的影响

(1)4B/5B码

    每四位二进制代码由5位编码表示,这5位编码称为编码组(code group),并且由NRZI方式传输。

    4B/5B码举例:

        每个code group中“0”的个数不超过3个。

    实用4B/5B码的最大优点是能够在很大程度上降低线路传输中的调制速率,从而降低了对线路的要求。

    所谓调制速率是指单位时间内线路状态变化的数目,以波特(baud)为单位。

我们一般所说的数据信号传送速率是指单位时间内传送的信息量,以每秒多少比特(位)为单位,即bps(bit per second)。

注意:不要将数据传送速率与调制速率相混淆,如果1个调制时间间隔和1个代码相对应,则两者在数值上相等。如是多相调制,那么它们在数值上不同,例如曼彻斯特编码,它在每个调制时间间隔内跳动两次,故其波特率将是数据传送速率的两倍。

在快速以太网中,数据传输速率为100Mbps,如果采用曼彻斯特编码,波特率将达200Mbps,对传输介质和设备的技术要求都将提高,也增大了传输成本。

使用4B/5B编码后,在传输速率为100Mbps的情况下,其调制速率为:

100M×(5/4)=125M(baud)

即波特率仅为125M baud,大大低于曼彻斯特编码时的200M baud,这样就在快速以太网中使用非屏蔽双绞线成为可能。

(2)8B6T码

8B6T码将8位二进制代码由六位三重信号的编码来表示,从下式计算可知,8B6T码对100Mbps的信号传输率来说,使其调制速率进一步降低为25M baud。

100M×(6/8)×(1/3)=25M(baud)

8B6T码采用三重信号(ternary sianaling)即:正电压值,负电压值和零电压值。具体编码如下:

Data Octet6T code group
Data Octet6T code group
Data Octet6T code group
Data Octet6T code group
00+-00+-
010+-+-0
02+-0+-0
03-0++-0
04-0+0+-
050+--0+
06+-0-0+
07-0+-0+
08-+00+-
090-++-0
0A-+0+-0
0B+0-+-0
0C+0-0+-
0D0-+-0+
0E-+0-0+
0F+0--0+
10+0+--0
11++0-0-
12+0+-0-
130++-0-
140++--0
15++00--
16+0+0--
170++0--
180+-0+-
190+-0-+
1A0+-++-
1B0+-00+
1C0-+00+
1D0-+++-
1E0-+0-+
1F0-+0+-
2000-++-
21--+00+
22++-0+-
23++-0-+
2400+0-+
2500+0+-
2600-00+
27--+++-
28-0-++0
29--0+0+
2A-0-+0+
2B0--+0+
2C0--++0
2D--00++
2E-0-0++
2F0--0++
30+-00-+
310+--+0
32+-0-+0
33-0+-+0
34-0+0-+
350+-+0-
36+-0+0-
37-0++0-
38-+00-+
390-+-+0
3A-+0-+0
3B+0--+0
3C+0-0-+
3D0-++0-
3E-+0+0-
3F+0-+0-

图 3

从8位代码转换成6位三重信号的过程见下图所示:

8b6t.jpg (16501 bytes)

因为6B6T码的调制速率仅是25M baud,所以100BASE-T4可以使用传输质量最低的3类双绞线。

 =====================================================================================

根据RFC894的说明,以太网封装IP数据包的最大长度是1500字节,也就是说以太网最大帧长应该是以太网首部加上1500,再加上7字节的前导同步码和1字节的帧开始定界符,具体就是:7字节前导同步吗+1字节帧开始定界符+6字节的目的MAC+6字节的源MAC+2字节的帧类型+1500+4字节的FCS。

        按照上述,最大帧应该是1526字节,但是实际上我们抓包得到的最大帧是1514字节,为什么不是1526字节呢?原因是当数据帧到达网卡时,在物理层上网卡要先去掉前导同步码和帧开始定界符,然后对帧进行CRC检验,如果帧校验和错,就丢弃此帧。如果校验和正确,就判断帧的目的硬件地址是否符合自己的接收条件(目的地址是自己的物理硬件地址、广播地址、可接收的多播硬件地址等),如果符合,就将帧交“设备驱动程序”做进一步处理。这时我们的抓包软件才能抓到数据,因此,抓包软件抓到的是去掉前导同步码、帧开始分界符、FCS之外的数据,其最大值是6+6+2+1500=1514。

        以太网规定,以太网帧数据域部分最小为46字节,也就是以太网帧最小是6+6+2+46+4=64。除去4个字节的FCS,因此,抓包时就是60字节。当数据字段的长度小于46字节时,MAC子层就会在数据字段的后面填充以满足数据帧长不小于64字节。由于填充数据是由MAC子层负责,也就是设备驱动程序。不同的抓包程序和设备驱动程序所处的优先层次可能不同,抓包程序的优先级可能比设备驱动程序更高,也就是说,我们的抓包程序可能在设备驱动程序还没有填充不到64字节的帧的时候,抓包程序已经捕获了数据。因此不同的抓包工具抓到的数据帧的大小可能不同。下列是本人分别用wireshark和sniffer抓包的结果,对于TCP 的ACK确认帧的大小一个是54字节,一个是60字节,wireshark抓取时没有填充数据段,sniffer抓取时有填充数据段。

【原创】以太网最大帧和最小帧、MTU - 大河§晕王 - 大河Blog

wireshark抓包结果,帧是54字节,帧数据部分没有填充数据段

 

【原创】以太网最大帧和最小帧、MTU - 大河§晕王 - 大河Blog

sniffer抓包结果,帧是60字节,帧数据部分后有6字节的填充数据

查看网络接口MTU的方法:

WINDOWS下,在命令提示符下输入netstat -e -v

FreeBSD下输入netstat -i

常见网络的MTU(RFC1191):

   Plateau    MTU    Comments                      Reference
   ------     ---    --------                      ---------
              65535  Official maximum MTU          RFC 791
              65535  Hyperchannel                  RFC 1044
   65535
   32000             Just in case
              17914  16Mb IBM Token Ring           ref. [6]
   17914
              8166   IEEE 802.4                    RFC 1042
   8166
              4464   IEEE 802.5 (4Mb max)          RFC 1042
              4352   FDDI (Revised)                RFC 1188
   4352 (1%)
              2048   Wideband Network              RFC 907
              2002   IEEE 802.5 (4Mb recommended)  RFC 1042
   2002 (2%)
              1536   Exp. Ethernet Nets            RFC 895
              1500   Ethernet Networks             RFC 894
              1500   Point-to-Point (default)      RFC 1134
              1492   IEEE 802.3                    RFC 1042
   1492 (3%)
              1006   SLIP                          RFC 1055
              1006   ARPANET                       BBN 1822
   1006
              576    X.25 Networks                 RFC 877
              544    DEC IP Portal                 ref. [10]
              512    NETBIOS                       RFC 1088
              508    IEEE 802/Source-Rt Bridge     RFC 1042
              508    ARCNET                        RFC 1051
   508 (13%)
              296    Point-to-Point (low delay)    RFC 1144
   296

   68                Official minimum MTU          RFC 791 

posted on 2012-05-10 14:51  岌岌可危  阅读(4063)  评论(0编辑  收藏  举报