|
點擊左上方藍色“一口Linux”,選擇“設為星標”
第一時間看干貨文章
?【干貨】嵌入式驅動工程師學習路線?【干貨】Linux嵌入式知識點-思維導圖-免費獲取?【就業(yè)】一個可以寫到簡歷的基于Linux物聯(lián)網(wǎng)綜合項目?【就業(yè)】找工作簡歷模版
xcsi1ez1bat6403414821.gif (555.24 KB, 下載次數(shù): 1)
下載附件
保存到相冊
xcsi1ez1bat6403414821.gif
2024-9-3 18:50 上傳
作者:硬件十萬個為什么
1、文章概要
本文以雙絞線以太網(wǎng)為分析對象,以混合信號示波器為分析工具,深入探秘了兩類常見的雙絞線以太網(wǎng)的編碼,且實地查看并驗證了以太網(wǎng)在物理層的信號傳輸情況。最后,通過一個實戰(zhàn)例子對比了實際網(wǎng)絡中軟件接收的數(shù)據(jù)和示波器捕獲信號之間的一致性。
本文打通軟硬件之間的隔閡,從物理層揭示了以太網(wǎng)數(shù)據(jù)傳輸?shù)臋C制,也充分發(fā)揮了現(xiàn)代化混合信號示波器的總線解碼能力。
本文目錄:
■ 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. 總結
■ 參考文獻
2、以太網(wǎng)概述
以太網(wǎng)(Ethernet)是一種常見的計算機組網(wǎng)技術,其技術標準在IEEE 802.3中規(guī)定 [1]。目前廣泛使用的以太網(wǎng)通過雙絞線(俗稱網(wǎng)線)交換信息,其技術標準主要在TIA/EIA-568中規(guī)定 [2]。
本文以最常見的以太網(wǎng)標準為例,利用混合信號示波器的協(xié)議解碼功能,揭秘以太網(wǎng)上的信號是如何傳輸?shù)。通常對于網(wǎng)絡數(shù)據(jù)的分析都在軟件上進行,例如著名的Wireshark工具可以對指定網(wǎng)卡上傳輸?shù)臄?shù)據(jù)進行捕獲并解析 [3]。但這樣的操作屏蔽了物理層的差異,本文將更進一步揭秘物理層上數(shù)據(jù)具體是如何轉變成電信號并傳輸?shù)摹?br />
以太網(wǎng)(10 Base-T)和快速以太網(wǎng)(100 Base-TX)可以使用同一種雙絞線進行數(shù)據(jù)傳輸,其引腳定義如圖1所示。
vlotl11olyr6403414921.png (215.12 KB, 下載次數(shù): 1)
下載附件
保存到相冊
vlotl11olyr6403414921.png
2024-9-3 18:50 上傳
圖1. 網(wǎng)線的引腳定義 [1]
以T568B為例,其中用到了4根線,構成2個差分對(TX和RX)。不失一般性,我們?nèi)∑渲幸粚Γ═X)作為分析對象。因此需要引出Pin 1和Pin 2,用于連接示波器探頭來抓取信號。這里剪開一根網(wǎng)線,在Pin 1和2上分別引出一根導線,做成分析用的專用跳線,如圖2所示。
vbr11pv5ckf6403415021.png (231.24 KB, 下載次數(shù): 0)
下載附件
保存到相冊
vbr11pv5ckf6403415021.png
2024-9-3 18:50 上傳
圖2. 在雙絞線的Pin 1和2上分別引出一根導線
這一對線上傳輸?shù)氖遣罘中盘枺虼俗詈糜貌罘痔筋^(例如TDP1500)。當然這里用到的跳線比較短,用普通的無源探頭也可以,只是信號質量會受到一定的影響。
3、10base-T以太網(wǎng)
10 Base-T的傳輸速率是10Mbps,使用曼徹斯特編碼(相位編碼)數(shù)據(jù)。“0”用下降沿表示,“1”用上升沿表示。如圖3所示,這是一段由示波器抓取到的差分波形。在確認最小脈寬后,可以通過判斷周期性的邊沿方向來辨識“0”或“1”。
tpfbsutdfkn6403415121.png (164.35 KB, 下載次數(shù): 1)
下載附件
保存到相冊
tpfbsutdfkn6403415121.png
2024-9-3 18:50 上傳
圖3. 10 Base-T的曼徹斯特編碼解析
接下來,需要將二進制序列組裝成數(shù)據(jù)幀,由于包含多個協(xié)議的堆疊(MAC、IP、TCP等),手動解碼會比較復雜,可以直接使用示波器的總線解碼工具進行解碼并顯示。如圖4所示,將總線設為“Ethernet”,速度設為“10 Base-T”,信號類型設為“差分”,其它選項根據(jù)實際情況選擇或保持默認就可以了。
beoemcj4vzr6403415221.png (53.12 KB, 下載次數(shù): 1)
下載附件
保存到相冊
beoemcj4vzr6403415221.png
2024-9-3 18:50 上傳
圖4. 10 Base-T解碼設置
解碼結果如圖5所示,可以看到這是一個IPv4的數(shù)據(jù)幀,放大后可以看到MAC地址等數(shù)據(jù)包內(nèi)的具體內(nèi)容。
3kp4w3dk5m36403415322.png (179.84 KB, 下載次數(shù): 1)
下載附件
保存到相冊
3kp4w3dk5m36403415322.png
2024-9-3 18:50 上傳
圖5. 10 Base-T解碼結果
4、100base-TX以太網(wǎng)
相比10 Base-T,100 Base-TX帶來了10倍的速度提升,達到100Mbps。它的編碼協(xié)議也變得復雜得多,主要涉及3個關鍵詞:4B5B、MLT-3和NRZ-I。
3.1
4B5B
4B5B表示使用5位二進制編碼來表示1組4 bits數(shù)據(jù) [4]。這樣做的原因是使得傳輸線上有足夠多的跳變用來恢復時鐘。4B5B的編碼規(guī)則是預先定義的,如果僅僅用來解碼,只需要查表即可,如圖6所示。
舉例:“0000”或“1111”如果直接傳輸,會帶來4個一樣的編碼,很有可能引入較強的直流分量,但經(jīng)過4B5B編碼后,分別變成了“11110”和“11101”,就緩解這個問題了。4B5B的缺點是,需要增加額外的25%傳輸帶寬,因此100 Base-TX雖然數(shù)據(jù)傳輸率是100MBps,卻需要125Mhz的時鐘頻率。
1vpd4lxovli6403415422.png (56.78 KB, 下載次數(shù): 0)
下載附件
保存到相冊
1vpd4lxovli6403415422.png
2024-9-3 18:50 上傳
圖6. 4B5B對應關系表
3.2
MLT-3
MLT-3表示“Multi-Level Transmit”,即使用多個電壓級別來傳輸數(shù)據(jù) [5]。MLT-3使用3個電壓,在差分傳輸線上,3個電壓可以歸一化記為“-1”、“0”和“+1”。
MLT-3通過切換電壓來實現(xiàn)跳變,順序遵循兩個規(guī)則:一是,如果跳變前電壓是-1或+1,則跳變后電壓是0;二是,如果跳變前電壓是0,則跳變后電壓與上一個非0值的電壓相反。
因此可簡單總結跳變順序為:-1 → 0 → +1,或+1 → 0 → -1。
3.3
NRZ-I
MLT-3描述了電壓跳變的規(guī)則,但沒有說明電壓跳變與數(shù)據(jù)“0”、“1”的關系。NRZ-I為“Non-Return-to-Zero Inverted”的縮寫,即不歸零反轉碼。這種編碼規(guī)定數(shù)據(jù)“0”不跳變,數(shù)據(jù)“1”跳變。
3.4
示例
綜合前面三個關鍵詞,可以簡單概括100 Base-TX的電信號變化規(guī)律如下:
100 Base-TX首先通過4B5B編碼將每4位數(shù)據(jù)編碼成5位二進制編碼;接著使用3種電壓傳輸數(shù)據(jù),如果數(shù)據(jù)為“0”,電壓不跳變,如果數(shù)據(jù)為“1”,電壓跳變1次,且總是往歷史電平相反的方向跳變,例如-1 → 0 → +1,或+1 → 0 → -1。
最后,100 Base-TX并不直接傳輸信號本身,而是傳輸信號與擾碼的異或結果,如圖7所示。截取的信號首先通過MLT-3的規(guī)則解碼,每5位一組,用綠色字體標識。接下來,找到解擾碼(scrambler key)序列。
擾碼不是加密,只是用來改善電磁特性。因此,加擾和解擾都只需做異或(XOR)操作,使用同一個序列。100 Base-TX使用一個11位的線性反饋移位寄存器(LFSR)來生成2047位長的偽隨機數(shù)序列。這對于手動找到同步的位置帶來了非常大的困難,但是如果是程序自動同步,就非常容易了。解擾后的數(shù)據(jù)是5 bits一組,反查4B5B的編碼表,就可以得到4 bits一組的數(shù)據(jù)。圖7中展示了3個字節(jié)的編碼分析結果。
tvddp0o1qus6403415522.png (145.53 KB, 下載次數(shù): 1)
下載附件
保存到相冊
tvddp0o1qus6403415522.png
2024-9-3 18:50 上傳
圖7. 100 Base-TX的編碼解析
雖然100 Base-TX手動解碼非常困難,但是借助示波器的總線解碼工具,可以非?焖俜奖愕赝瓿山獯a。示波器的設置,如圖8所示。由于是標準協(xié)議,并沒有太多選項,將總線設為“Ethernet”,速度設為“100 Base-TX”,信號類型設為“差分”,其它選項根據(jù)實際情況選擇或保持默認就可以了。
gz4mmvwojd06403415622.png (34.31 KB, 下載次數(shù): 0)
下載附件
保存到相冊
gz4mmvwojd06403415622.png
2024-9-3 18:50 上傳
圖8. 100 Base-TX解碼設置
解碼結果,如圖9所示。
gcavun1otvk6403415722.png (144.59 KB, 下載次數(shù): 0)
下載附件
保存到相冊
gcavun1otvk6403415722.png
2024-9-3 18:50 上傳
圖9. 100 Base-TX解碼結果
100 Base -TX的解碼流程復雜,數(shù)據(jù)量大,檢索不方便,通常需要協(xié)議分析軟件輔助才可以進一步分析,F(xiàn)在混合信號示波器中已經(jīng)集成了解碼和分析功能,只需要一根特制的網(wǎng)線,就可以完成全部分析工作,徹底將以太網(wǎng)的傳輸機制展示在屏幕上。
3.5
實戰(zhàn)
我們通過2臺計算機組成一個小局域網(wǎng),在局域網(wǎng)之間進行ping操作的實戰(zhàn)驗證。通過Wireshark捕獲,我們可以看到在網(wǎng)口上已經(jīng)有了若干ping request和reply數(shù)據(jù)包,如圖10所示。在TX差分對上,我們理應找到發(fā)出去的ping request數(shù)據(jù)包,源地址是192.168.0.2,目標地址是192.168.0.1。
在示波器上,我們設置好Ethernet總線解碼,并將觸發(fā)設置為指定的IP。如圖11所示,觸發(fā)位置選為“IP標頭”,源地址設為“192.168.0.2”,這樣當出現(xiàn)指定源地址的數(shù)據(jù)包后,示波器就會被觸發(fā)。
如圖12所示,是通過上述設置后示波器捕獲并解碼的數(shù)據(jù)包,經(jīng)過對比,和Wireshark上軟件捕獲的數(shù)據(jù)相一致。
t3rb1jjy0316403415822.jpg (132.24 KB, 下載次數(shù): 1)
下載附件
保存到相冊
t3rb1jjy0316403415822.jpg
2024-9-3 18:50 上傳
圖10. Wireshark捕獲的ping request和reply數(shù)據(jù)包
d0xouzjfmm46403415922.png (149.51 KB, 下載次數(shù): 1)
下載附件
保存到相冊
d0xouzjfmm46403415922.png
2024-9-3 18:50 上傳
圖11. 觸發(fā)設置為指定IP
jxu1rzgm5b06403416022.png (257.99 KB, 下載次數(shù): 1)
下載附件
保存到相冊
jxu1rzgm5b06403416022.png
2024-9-3 18:50 上傳
圖12. 示波器捕獲并解碼的ping request數(shù)據(jù)包
4、總結
軟件和硬件總是存在一些隔閡。例如在以太網(wǎng)分析上,傳統(tǒng)的計算機網(wǎng)絡領域主要從軟件層面介紹邏輯鏈路層及更高層的設計和實現(xiàn),對于物理層的介紹比較簡單。而傳統(tǒng)的硬件領域對于數(shù)字信號往往只介紹簡單的串行總線,并不會拿比較復雜的以太網(wǎng)作為例子。
本文深入分析了兩類常見的雙絞線以太網(wǎng)的編碼,并利用混合信號示波器的總線解碼功能,查看并驗證了以太網(wǎng)在物理層的信號傳輸情況。最后,通過一個實戰(zhàn)例子對比了實際網(wǎng)絡中軟件接收的數(shù)據(jù)和示波器捕獲信號之間的一致性,從物理層揭示了以太網(wǎng)數(shù)據(jù)傳輸?shù)臋C制。
參考文獻
[1] https://en.wikipedia.org/wiki/Ethernet
[2] https://en.wikipedia.org/wiki/ANSI/TIA-568
[3] https://www.wireshark.org
[4] https://en.wikipedia.org/wiki/4B5B
[5] https://en.wikipedia.org/wiki/MLT-3_encoding
版權聲明:本文來源網(wǎng)絡,免費傳達知識,版權歸原作者所有。如涉及作品版權問題,請聯(lián)系我進行刪除。
end
一口Linux
關注,回復【1024】海量Linux資料贈送
精彩文章合集
文章推薦
?【專輯】ARM?【專輯】粉絲問答?【專輯】所有原創(chuàng)?【專輯】linux入門?【專輯】計算機網(wǎng)絡?【專輯】Linux驅動?【干貨】嵌入式驅動工程師學習路線?【干貨】Linux嵌入式所有知識點-思維導圖
點擊“閱讀原文”查看更多分享,歡迎點分享、收藏、點贊、在看 |
|