|
點(diǎn)擊左上方藍(lán)色“一口Linux”,選擇“設(shè)為星標(biāo)”
第一時(shí)間看干貨文章
?【干貨】嵌入式驅(qū)動(dòng)工程師學(xué)習(xí)路線?【干貨】Linux嵌入式知識(shí)點(diǎn)-思維導(dǎo)圖-免費(fèi)獲取?【就業(yè)】一個(gè)可以寫到簡(jiǎn)歷的基于Linux物聯(lián)網(wǎng)綜合項(xiàng)目?【就業(yè)】找工作簡(jiǎn)歷模版
xcsi1ez1bat6403414821.gif (555.24 KB, 下載次數(shù): 0)
下載附件
保存到相冊(cè)
xcsi1ez1bat6403414821.gif
2024-9-3 18:50 上傳
作者:硬件十萬個(gè)為什么
1、文章概要
本文以雙絞線以太網(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)示波器的總線解碼能力。
本文目錄:
■ 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 實(shí)戰(zhàn)
■ 4. 總結(jié)
■ 參考文獻(xiàn)
2、以太網(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ù)。通常?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ù)摹?br />
以太網(wǎng)(10 Base-T)和快速以太網(wǎng)(100 Base-TX)可以使用同一種雙絞線進(jìn)行數(shù)據(jù)傳輸,其引腳定義如圖1所示。
vlotl11olyr6403414921.png (215.12 KB, 下載次數(shù): 0)
下載附件
保存到相冊(cè)
vlotl11olyr6403414921.png
2024-9-3 18:50 上傳
圖1. 網(wǎng)線的引腳定義 [1]
以T568B為例,其中用到了4根線,構(gòu)成2個(gè)差分對(duì)(TX和RX)。不失一般性,我們?nèi)∑渲幸粚?duì)(TX)作為分析對(duì)象。因此需要引出Pin 1和Pin 2,用于連接示波器探頭來抓取信號(hào)。這里剪開一根網(wǎng)線,在Pin 1和2上分別引出一根導(dǎo)線,做成分析用的專用跳線,如圖2所示。
vbr11pv5ckf6403415021.png (231.24 KB, 下載次數(shù): 0)
下載附件
保存到相冊(cè)
vbr11pv5ckf6403415021.png
2024-9-3 18:50 上傳
圖2. 在雙絞線的Pin 1和2上分別引出一根導(dǎo)線
這一對(duì)線上傳輸?shù)氖遣罘中盘?hào),因此最好用差分探頭(例如TDP1500)。當(dāng)然這里用到的跳線比較短,用普通的無源探頭也可以,只是信號(hào)質(zhì)量會(huì)受到一定的影響。
3、10base-T以太網(wǎng)
10 Base-T的傳輸速率是10Mbps,使用曼徹斯特編碼(相位編碼)數(shù)據(jù)。“0”用下降沿表示,“1”用上升沿表示。如圖3所示,這是一段由示波器抓取到的差分波形。在確認(rèn)最小脈寬后,可以通過判斷周期性的邊沿方向來辨識(shí)“0”或“1”。
tpfbsutdfkn6403415121.png (164.35 KB, 下載次數(shù): 0)
下載附件
保存到相冊(cè)
tpfbsutdfkn6403415121.png
2024-9-3 18:50 上傳
圖3. 10 Base-T的曼徹斯特編碼解析
接下來,需要將二進(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)就可以了。
beoemcj4vzr6403415221.png (53.12 KB, 下載次數(shù): 0)
下載附件
保存到相冊(cè)
beoemcj4vzr6403415221.png
2024-9-3 18:50 上傳
圖4. 10 Base-T解碼設(shè)置
解碼結(jié)果如圖5所示,可以看到這是一個(gè)IPv4的數(shù)據(jù)幀,放大后可以看到MAC地址等數(shù)據(jù)包內(nèi)的具體內(nèi)容。
3kp4w3dk5m36403415322.png (179.84 KB, 下載次數(shù): 0)
下載附件
保存到相冊(cè)
3kp4w3dk5m36403415322.png
2024-9-3 18:50 上傳
圖5. 10 Base-T解碼結(jié)果
4、100base-TX以太網(wǎng)
相比10 Base-T,100 Base-TX帶來了10倍的速度提升,達(dá)到100Mbps。它的編碼協(xié)議也變得復(fù)雜得多,主要涉及3個(gè)關(guān)鍵詞:4B5B、MLT-3和NRZ-I。
3.1
4B5B
4B5B表示使用5位二進(jìn)制編碼來表示1組4 bits數(shù)據(jù) [4]。這樣做的原因是使得傳輸線上有足夠多的跳變用來恢復(fù)時(shí)鐘。4B5B的編碼規(guī)則是預(yù)先定義的,如果僅僅用來解碼,只需要查表即可,如圖6所示。
舉例:“0000”或“1111”如果直接傳輸,會(huì)帶來4個(gè)一樣的編碼,很有可能引入較強(qiáng)的直流分量,但經(jīng)過4B5B編碼后,分別變成了“11110”和“11101”,就緩解這個(gè)問題了。4B5B的缺點(diǎn)是,需要增加額外的25%傳輸帶寬,因此100 Base-TX雖然數(shù)據(jù)傳輸率是100MBps,卻需要125Mhz的時(shí)鐘頻率。
1vpd4lxovli6403415422.png (56.78 KB, 下載次數(shù): 0)
下載附件
保存到相冊(cè)
1vpd4lxovli6403415422.png
2024-9-3 18:50 上傳
圖6. 4B5B對(duì)應(yīng)關(guān)系表
3.2
MLT-3
MLT-3表示“Multi-Level Transmit”,即使用多個(gè)電壓級(jí)別來傳輸數(shù)據(jù) [5]。MLT-3使用3個(gè)電壓,在差分傳輸線上,3個(gè)電壓可以歸一化記為“-1”、“0”和“+1”。
MLT-3通過切換電壓來實(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í)。接下來,找到解擾碼(scrambler key)序列。
擾碼不是加密,只是用來改善電磁特性。因此,加擾和解擾都只需做異或(XOR)操作,使用同一個(gè)序列。100 Base-TX使用一個(gè)11位的線性反饋移位寄存器(LFSR)來生成2047位長(zhǎng)的偽隨機(jī)數(shù)序列。這對(duì)于手動(dòng)找到同步的位置帶來了非常大的困難,但是如果是程序自動(dòng)同步,就非常容易了。解擾后的數(shù)據(jù)是5 bits一組,反查4B5B的編碼表,就可以得到4 bits一組的數(shù)據(jù)。圖7中展示了3個(gè)字節(jié)的編碼分析結(jié)果。
tvddp0o1qus6403415522.png (145.53 KB, 下載次數(shù): 0)
下載附件
保存到相冊(cè)
tvddp0o1qus6403415522.png
2024-9-3 18:50 上傳
圖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)就可以了。
gz4mmvwojd06403415622.png (34.31 KB, 下載次數(shù): 0)
下載附件
保存到相冊(cè)
gz4mmvwojd06403415622.png
2024-9-3 18:50 上傳
圖8. 100 Base-TX解碼設(shè)置
解碼結(jié)果,如圖9所示。
gcavun1otvk6403415722.png (144.59 KB, 下載次數(shù): 0)
下載附件
保存到相冊(cè)
gcavun1otvk6403415722.png
2024-9-3 18:50 上傳
圖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ù)相一致。
t3rb1jjy0316403415822.jpg (132.24 KB, 下載次數(shù): 0)
下載附件
保存到相冊(cè)
t3rb1jjy0316403415822.jpg
2024-9-3 18:50 上傳
圖10. Wireshark捕獲的ping request和reply數(shù)據(jù)包
d0xouzjfmm46403415922.png (149.51 KB, 下載次數(shù): 0)
下載附件
保存到相冊(cè)
d0xouzjfmm46403415922.png
2024-9-3 18:50 上傳
圖11. 觸發(fā)設(shè)置為指定IP
jxu1rzgm5b06403416022.png (257.99 KB, 下載次數(shù): 0)
下載附件
保存到相冊(cè)
jxu1rzgm5b06403416022.png
2024-9-3 18:50 上傳
圖12. 示波器捕獲并解碼的ping request數(shù)據(jù)包
4、總結(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ū)τ跀?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ī)制。
參考文獻(xiàn)
[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
版權(quán)聲明:本文來源網(wǎng)絡(luò),免費(fèi)傳達(dá)知識(shí),版權(quán)歸原作者所有。如涉及作品版權(quán)問題,請(qǐng)聯(lián)系我進(jìn)行刪除。
end
一口Linux
關(guān)注,回復(fù)【1024】海量Linux資料贈(zèng)送
精彩文章合集
文章推薦
?【專輯】ARM?【專輯】粉絲問答?【專輯】所有原創(chuàng)?【專輯】linux入門?【專輯】計(jì)算機(jī)網(wǎng)絡(luò)?【專輯】Linux驅(qū)動(dòng)?【干貨】嵌入式驅(qū)動(dòng)工程師學(xué)習(xí)路線?【干貨】Linux嵌入式所有知識(shí)點(diǎn)-思維導(dǎo)圖
點(diǎn)擊“閱讀原文”查看更多分享,歡迎點(diǎn)分享、收藏、點(diǎn)贊、在看 |
|