本文以雙絞線以太網(wǎng)為分析對象,以混合信號示波器為分析工具,深入探秘了2類常見的雙絞線以太網(wǎng)的編碼,且實地查看并驗證了以太網(wǎng)在物理層的信號傳輸情況,通過一個實戰(zhàn)例子來對比了實際網(wǎng)絡(luò)中軟件接收到的數(shù)據(jù)和示波器捕獲信號之間的一致性。本文打通軟硬件之間的隔閡,從物理層揭示了以太網(wǎng)數(shù)據(jù)傳輸?shù)臋C(jī)制,也充分發(fā)揮了現(xiàn)代化混合信號示波器的總線解碼能力。
本文內(nèi)容主要包括:
■ 1. 以太網(wǎng)概述
■ 2. 10 Base-T以太網(wǎng)
■ 3. 100 Base-TX以太網(wǎng)
3.1 4B5B
3.2 MLT-3
3.3 NRZ-I
3.4 示例
3.5 實戰(zhàn)
■ 4. 總結(jié)
■ 參考文獻(xiàn)
1. 以太網(wǎng)概述
以太網(wǎng)(Ethernet)是一種常見的計算機(jī)組網(wǎng)技術(shù),其技術(shù)標(biāo)準(zhǔn)在IEEE 802.3中規(guī)定 [1]。目前廣泛使用的以太網(wǎng)通過雙絞線(俗稱網(wǎng)線)交換信息,其技術(shù)標(biāo)準(zhǔn)主要在TIA/EIA-568中規(guī)定 [2]。
本文以常見的以太網(wǎng)標(biāo)準(zhǔn)為例,利用混合信號示波器的協(xié)議解碼功能,揭秘以太網(wǎng)上的信號是如何傳輸?shù)?。通常對于網(wǎng)絡(luò)數(shù)據(jù)的分析都在軟件上進(jìn)行,例如著名的Wireshark工具可以對指定網(wǎng)卡上傳輸?shù)臄?shù)據(jù)進(jìn)行捕獲并解析 [3]。但這樣的操作屏蔽了物理層的差異,本文將更進(jìn)一步,揭秘物理層上數(shù)據(jù)具體是如何轉(zhuǎn)變成電信號并傳輸?shù)摹?/p>
以太網(wǎng)(10 Base-T)和快速以太網(wǎng)(100 Base-TX)可以使用同一種雙絞線進(jìn)行數(shù)據(jù)傳輸,其引腳定義如圖1所示。
圖1. 網(wǎng)線的引腳定義 [1]
以T568B為例,其中用到了4根線,構(gòu)成2個差分對(TX和RX)。不失一般性,我們?nèi)∑渲幸粚Γ═X)作為分析對象。因此需要引出Pin 1和Pin 2,用于連接示波器探頭來抓取信號。這里剪開一根網(wǎng)線,在Pin 1和2上分別引出一根導(dǎo)線,做成分析用的專用跳線,如圖2所示。
圖2. 在雙絞線的Pin 1和2上分別引出一根導(dǎo)線
這一對線上傳輸?shù)氖遣罘中盘?,因此好用差分探頭(例如TDP1500)。當(dāng)然這里用到的跳線比較短,用普通的無源探頭也可以,只是信號質(zhì)量會受到一定的影響。
2. 10 Base-T以太網(wǎng)
10 Base-T的傳輸速率是10Mbps,使用曼徹斯特編碼(相位編碼)數(shù)據(jù)?!?”用下降沿表示,“1”用上升沿表示。如圖3所示的是一段由示波器抓取到的差分波形。在確認(rèn)小脈寬后,可以通過判斷周期性的邊沿方向來辨識“0”或“1”。
圖3. 10 Base-T的曼徹斯特編碼解析
接下來需要將二進(jìn)制序列組裝成數(shù)據(jù)幀,由于包含多個協(xié)議的堆疊(MAC、IP、TCP等),手動解碼會比較復(fù)雜,可以直接使用示波器的總線解碼工具進(jìn)行解碼并顯示。如圖4所示,將總線設(shè)為“Ethernet”,速度設(shè)為“10 Base-T”,信號類型設(shè)為“差分”,其它選項根據(jù)實際情況選擇或保持默認(rèn)就可以了。
圖4. 10 Base-T解碼設(shè)置
解碼結(jié)果如圖5所示,可以看到這是一個IPv4的數(shù)據(jù)幀,放大后可以看到MAC地址等數(shù)據(jù)包內(nèi)的具體內(nèi)容。
圖5. 10 Base-T解碼結(jié)果
3. 100 Base-TX以太網(wǎng)
相比10 Base-T,100 Base-TX帶來了10倍的速度提升,達(dá)到100Mbps。它的編碼協(xié)議也變得復(fù)雜得多,主要涉及3個關(guān)鍵詞:4B5B、MLT-3和NRZ-I。
3.1 4B5B
4B5B表示使用5位二進(jìn)制編碼來表示1組4 bits數(shù)據(jù) [4]。這樣做的原因是使得傳輸線上有足夠多的跳變用來恢復(fù)時鐘。4B5B的編碼規(guī)則是預(yù)先定義的,如果僅僅用來解碼,只需要查表即可,如圖6所示。舉例:“0000”或“1111”如果直接傳輸,會帶來4個一樣的編碼,很有可能引入較強(qiáng)的直流分量,但經(jīng)過4B5B編碼后,分別變成了“11110”和“11101”,就緩解這個問題了。4B5B的缺點是,需要增加額外的25%傳輸帶寬,因此100 Base-TX雖然數(shù)據(jù)傳輸率是100MBps,卻需要125Mhz的時鐘頻率。
圖6. 4B5B對應(yīng)關(guān)系表
3.2 MLT-3
MLT-3表示“Multi-Level Transmit”,即使用多個電壓級別來傳輸數(shù)據(jù) [5]。MLT-3使用3個電壓,在差分傳輸線上,3個電壓可以歸一化記為“-1”、“0”和“+1”。MLT-3通過切換電壓來實現(xiàn)跳變,順序遵循2個規(guī)則:
(1)如果跳變前電壓是-1或+1,則跳變后電壓是0;
(2)如果跳變前電壓是0,則跳變后電壓與上一個非0值的電壓相反。
因此可簡單總結(jié)跳變順序為:-1 → 0 → +1,或+1 → 0 → -1。
3.3 NRZ-I
MLT-3描述了電壓跳變的規(guī)則,但沒有說明電壓跳變與數(shù)據(jù)“0”、“1”的關(guān)系。NRZ-I為“Non-Return-to-Zero Inverted”的縮寫,即不歸零反轉(zhuǎn)碼。這種編碼規(guī)定數(shù)據(jù)“0”不跳變,數(shù)據(jù)“1”跳變。
3.4 示例
綜合前面3個關(guān)鍵詞,可以簡單概括100 Base-TX的電信號變化規(guī)律如下:
100 Base-TX首先通過4B5B編碼將每4位數(shù)據(jù)編碼成5位二進(jìn)制編碼;接著使用3種電壓傳輸數(shù)據(jù),如果數(shù)據(jù)為“0”,電壓不跳變,如果數(shù)據(jù)為“1”,電壓跳變1次,且總是往歷史電平相反的方向跳變,例如-1 → 0 → +1,或+1 → 0 → -1。
100 Base-TX并不直接傳輸信號本身,而是傳輸信號與擾碼的異或結(jié)果,如圖7所示。截取的信號首先通過MLT-3的規(guī)則解碼,每5位一組,用綠色字體標(biāo)識。接下來找到解擾碼(scrambler key)序列。擾碼不是加密,只是用來改善電磁特性,因此加擾和解擾都只需做異或(XOR)操作,使用同一個序列。100 Base-TX使用一個11位的線性反饋移位寄存器(LFSR)來生成2047位長的偽隨機(jī)數(shù)序列。這對于手動找到同步的位置帶來了非常大的困難,但是如果是程序自動同步,就非常容易了。解擾后的數(shù)據(jù)是5 bits一組,反查4B5B的編碼表,就可以得到4 bits一組的數(shù)據(jù)。圖7中展示了3個字節(jié)的編碼分析結(jié)果。
圖7. 100 Base-TX的編碼解析
雖然100 Base-TX手動解碼非常困難,但是借助示波器的總線解碼工具,可以非??焖俜奖愕赝瓿山獯a。示波器的設(shè)置如圖8所示。由于是標(biāo)準(zhǔn)協(xié)議,并沒有太多選項,將總線設(shè)為“Ethernet”,速度設(shè)為“100 Base-TX”,信號類型設(shè)為“差分”,其它選項根據(jù)實際情況選擇或保持默認(rèn)就可以了。
圖8. 100 Base-TX解碼設(shè)置
解碼結(jié)果如圖9所示。
圖9. 100 Base-TX解碼結(jié)果
100 Base -TX的解碼流程復(fù)雜,數(shù)據(jù)量大,檢索不方便,通常需要協(xié)議分析軟件輔助才可以進(jìn)一步分析。現(xiàn)在混合信號示波器中已經(jīng)集成了解碼和分析功能,只需要一根特制的網(wǎng)線,就可以完成全部分析工作,徹底將以太網(wǎng)的傳輸機(jī)制展示在屏幕上。
3.5 實戰(zhàn)
我們通過2臺計算機(jī)組成一個小局域網(wǎng),在局域網(wǎng)之間進(jìn)行ping操作的實戰(zhàn)驗證。通過Wireshark捕獲,我們可以看到在網(wǎng)口上已經(jīng)有了若干ping request和reply數(shù)據(jù)包,如圖10所示。在TX差分對上,我們理應(yīng)找到發(fā)出去的ping request數(shù)據(jù)包,源地址是192.168.0.2,目標(biāo)地址是192.168.0.1。
在示波器上,我們設(shè)置好Ethernet總線解碼,并將觸發(fā)設(shè)置為指定的IP。如圖11所示,觸發(fā)位置選為“IP標(biāo)頭”,源地址設(shè)為“192.168.0.2”,這樣當(dāng)出現(xiàn)指定源地址的數(shù)據(jù)包后,示波器就會被觸發(fā)。
如圖12所示,是通過上述設(shè)置后示波器捕獲并解碼的數(shù)據(jù)包,經(jīng)過對比,和Wireshark上軟件捕獲的數(shù)據(jù)相一致。
圖10. Wireshark捕獲的ping request和reply數(shù)據(jù)包
圖11. 觸發(fā)設(shè)置為指定IP
圖12. 示波器捕獲并解碼的ping request數(shù)據(jù)包
4. 總結(jié)
軟件和硬件總是存在一些隔閡。例如在以太網(wǎng)分析上,傳統(tǒng)的計算機(jī)網(wǎng)絡(luò)領(lǐng)域主要從軟件層面介紹邏輯鏈路層及更高層的設(shè)計和實現(xiàn),對于物理層的介紹比較簡單。而傳統(tǒng)的硬件領(lǐng)域?qū)τ跀?shù)字信號往往只介紹簡單的串行總線,并不會拿比較復(fù)雜的以太網(wǎng)作為例子。
本文深入分析了2類常見的雙絞線以太網(wǎng)的編碼,并利用混合信號示波器的總線解碼功能,查看并驗證了以太網(wǎng)在物理層的信號傳輸情況。通過一個實戰(zhàn)例子來對比了實際網(wǎng)絡(luò)中軟件接收到的數(shù)據(jù)和示波器捕獲信號之間的一致性,從物理層揭示了以太網(wǎng)數(shù)據(jù)傳輸?shù)臋C(jī)制。