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