当前位置:网站首页>用示波器揭示以太网传输机制
用示波器揭示以太网传输机制
2022-08-10 20:30:00 【李肖遥】
关注、星标公众号,直达精彩内容
作者:硬件十万个为什么
文章摘要
本文以双绞线以太网为分析对象,以混合信号示波器为分析工具,深入探秘了两类常见的双绞线以太网的编码,且实地查看并验证了以太网在物理层的信号传输情况。最后,通过一个实战例子对比了实际网络中软件接收的数据和示波器捕获信号之间的一致性。
本文打通软硬件之间的隔阂,从物理层揭示了以太网数据传输的机制,也充分发挥了现代化混合信号示波器的总线解码能力。
本文目录:
■ 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通过切换电压来实现跳变,顺序遵循两个规则:一是,如果跳变前电压是-1或+1,则跳变后电压是0;二是,如果跳变前电压是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
示例
综合前面三个关键词,可以简单概括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、总结
软件和硬件总是存在一些隔阂。例如在以太网分析上,传统的计算机网络领域主要从软件层面介绍逻辑链路层及更高层的设计和实现,对于物理层的介绍比较简单。而传统的硬件领域对于数字信号往往只介绍简单的串行总线,并不会拿比较复杂的以太网作为例子。
本文深入分析了两类常见的双绞线以太网的编码,并利用混合信号示波器的总线解码功能,查看并验证了以太网在物理层的信号传输情况。最后,通过一个实战例子对比了实际网络中软件接收的数据和示波器捕获信号之间的一致性,从物理层揭示了以太网数据传输的机制。
参考文献
[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
版权声明:本文来源网络,免费传达知识,版权归原作者所有。如涉及作品版权问题,请联系我进行删除。
‧‧‧‧‧‧‧‧‧‧‧‧‧‧‧‧ END ‧‧‧‧‧‧‧‧‧‧‧‧‧‧‧
关注我的微信公众号,回复“加群”按规则加入技术交流群。点击“阅读原文”查看更多分享,欢迎点分享、收藏、点赞、在看。边栏推荐
- TortoiseSVN小乌龟的使用
- Implementation of graceful exit in Golang
- 参天生长大模型:昇腾AI如何强壮模型开发与创新之根?
- 双 TL431 级联振荡器
- 血红素-金纳米颗粒(Heme-AuNP)复合纳米酶|金纳米颗粒核多孔空心碳纳米球壳([email protected])纳米酶
- 第五届“强网杯”全国网络安全挑战赛(线上赛)
- Apache DolphinScheduler 3.0.0 正式版发布!
- “蔚来杯“2022牛客暑期多校训练营7 F
- Detailed explanation and use of each module of ansible
- 实施MES管理系统前,这三个问题要考虑好
猜你喜欢

XML小讲

日期选择器组件(限制年份 设定仅展示的月份)

【CMU博士论文】视频多模态学习:探索模型和任务复杂性,152页pdf

npm‘ 不是内部或外部命令,也不是可运行的程序 或批处理文件

Heme - gold nanoparticles (Heme - AuNP) composite nanometer enzyme | gold nanoparticles nuclear porous hollow carbon nanometer spherical shell (Au @ HCNs) nano enzyme

Iridium Ruthenium Alloy/Iridium Oxide Biomimetic Nanozyme | Palladium Nanozyme | GMP-Pd Nanozyme | Gold-Palladium Composite Nanozyme | Ternary Metal Pd-M-Ir Nanozyme |shell nanozyme

The 2021 ICPC Asia Shanghai Regional Programming Contest D、E

《分布式微服务电商》专题(一)-项目简介

svg+元素js实现在图片上描点成框,并获取相对图片的坐标位置

UE4 - 河流流体插件Fluid Flux
随机推荐
PostgreSQL — Installation and Common Commands
Detailed explanation and use of each module of ansible
@Autowired注解 --required a single bean, but 2 were found出现的原因以及解决方法
多功能纳米酶Ag/PANI|柔性衬底纳米ZnO酶|铑片纳米酶|Ag-Rh合金纳米颗粒纳米酶|铱钌合金/氧化铱仿生纳米酶
Transferrin-modified vincristine-tetrandrine liposomes | transferrin-modified co-loaded paclitaxel and genistein liposomes (reagents)
The servlet mapping path matching resolution
Apache DolphinScheduler 3.0.0 正式版发布!
实施MES管理系统前,这三个问题要考虑好
三子棋的设计和代码
验证码倒计时自定义hooks
Floating window in Auto.js
PostgreSQL 介绍
2019河北省大学生程序设计竞赛部分题题解
TortoiseSVN小乌龟的使用
servlet映射路径匹配解析
win10 xbox录屏功能不能录声音怎么办
关于 NFT 版权保护的争议
转铁蛋白(Tf)修饰去氢骆驼蓬碱磁纳米脂质体/香豆素-6脂质体/多柔比星脂质体
2021 CybricsCTF
Web3中值得关注的基础设施
