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