简介:依托 TCP/IP 分层体系,深入剖析物理层工作机制,面向网络初学者与嵌入式开发人员,帮助理解数据从应用层到网线的封装与解封装全流程。资源以电路交换、报文交换、分组交换三种数据交换方式的差异为主线,结合标识、分片与固定发送长度等细节,澄清共享型网络中冲突域的产生原因;并重点讲解同轴电缆、双绞线、光纤等常见传输介质的特性,以及 CSMA/CD、10BASE5 等以太网基础标准,适合系统夯实网络底层知识。全部内容集中在 1 个 docx 文档,压缩包大小约 3.46MB,便于移动阅读或打印研习。已有 104 人学习,文档按章节展开,穿插快递包裹封装、逻辑电路占用等直观比喻,还有冲突退避算法、双绞线分类等实例分析,能帮助读者快速建立物理层整体认知,为后续深入学习 TCP/IP 与嵌入式网络应用打下扎实基础。
1. 为什么嵌入式开发容易卡在物理层:一次 ping 不通的排查换来的教训
前几天同事把一块嵌入式开发板接到交换机上,ping 网关一直丢包,应用层换了几版都没解决。最后拆开水晶头才发现,网线只压了四根芯,千兆链路协商成了百兆,实际信号质量又卡在临界值,造成间歇性通断。这类问题属于网络最底层的物理层,也是很多人最容易把它当“玄学”的部分。这份《网络基础物理层详细讲解.docx》把数据交换形式、数据封装与解封装、同轴电缆与双绞线、CSMA/CD 冲突检测机制讲得很细,适合做嵌入式、TCP/IP 协议栈或刚开始补网络基础的从业者通读一遍。它不涉及复杂的路由协议,重点在于把“010101 到底怎么上线路”这件事讲清楚。读的时候建议准备一根网线和两台设备边看边试,只靠眼睛看书记不住。
2. 数据交换形式:从独占线路到分组转发,为什么分组交换最终胜出
很多人一开始背“电路交换、报文交换、分组交换”的定义,背完就忘。原文档给了更好的切入角度:多台设备想共用同一条链路,怎样保证数据不互相串?这三个词其实是三个阶段的解法。先想清楚这个场景,再看每一种交换方式为此付出了什么代价,后面所有关于物理层共享介质的讨论才有了落点。
2.1 电路交换:独占逻辑电路与空闲占用带来的连锁成本
电路交换是三者里最直观的:通信前,双方先建立一条逻辑电路,这条线路只为你这一对通信方服务,别人的数据不能插进来。原文档强调“这条线路只传递与你的数据”,这意味着哪怕你只是偶尔发几个字节,链路资源也已经被预约了。这样做的好处是传输时延非常稳定,没有中间存储转发的排队,适合语音这类对连续实时性要求高的业务;代价就是信道利用率低,不通信时资源也被占着,别人想用也用不了。
从参数角度看,电路交换的工作过程可以拆成建立链路、传输数据、释放链路三个阶段。建立链路的时间在传统电话网里通常是秒级,通信期间数据按固定速率顺序到达,基本不引入抖动。问题是网络规模扩大后,逐段建立连接的开销会明显上升,所以它没有成为现代数据网络的主力。这里可以做一个判断实验:找两台电脑直连,中间不挂其他设备,先让一条大流量传输占住链路,再让第二对设备尝试通信。在电路交换模型下,后来者要么被拒绝,要么必须等待释放,但现实中的以太网并不会这样。这个实验说明,电路交换的“独占”本身不是坏事,问题是它没有考虑空闲时段的资源复用,代价偏高。
2.2 报文交换与分组交换:加标识、分片与固定上限的公平性设计
报文交换的动机是为了让多路通信共享同一条物理链路。每个发送者把数据包打上一个标识,标明从哪来、到哪去,接收端根据标识把不同用户的数据分开。原文档特别提到,当两者以上同时使用同一条线路时,加标识可以防止数据在传输过程中混乱。但报文交换保留的是“整包转发”,一个完整的大报文进入线路后,其他用户只能等着,直到它离开;如果大报文频繁出现,小报文很难插入,整体时延波动很大,这就是明显的不公平性。
分组交换在报文交换的基础上做了两个关键改动。第一,把数据切成多个小组,也就是分片;第二,给每个组设定一个大小上限,超过上限就拆到下个组。所有发送方都以固定尺寸为单位参与链路占用,大文件被拆成很多等长的分组,小文件也能在间隙里插进去。这样既保留了标识机制,又用分片和固定上限解决了“谁占住链路谁说了算”的问题。当前互联网 TCP/IP 网络的转发层,采用的思路就是分组交换。物理层最终关心的是这些分组在传输介质上变成一串串 010101 的比特流,而不是整段文件作为一个连续电压块被送出去。
这里有一个很容易混淆的点:报文交换和分组交换都有“存储转发”,但报文交换的存储单位是一整条报文,分组交换的存储单位是固定大小的分组。分组交换的额外开销是每个分组都要带一个报头,报头里包含源设备地址、目的设备地址、分片序号等信息。原文档里说的“报头”就是这个东西。可以记成一句话:分组交换 = 报文交换的思路 + 分片机制 + 固定大小上限。
| 交换方式 | 核心思想 | 优点 | 缺点 | 典型场景 |
|---|---|---|---|---|
| 电路交换 | 预先建立独占逻辑电路 | 时延稳定、实时性好 | 利用率低、建链慢、资源被空闲占用 | 传统电话网 |
| 报文交换 | 整包加标识后逐站转发 | 链路可共享、无需预建链路 | 大报文阻塞,时延波动大 | 早期电报网络 |
| 分组交换 | 分片到固定上限,每片带报头 | 公平、利用率高、可动态转发 | 组包解包有开销,分组可能乱序 | 现代以太网与互联网 |
表格里的“缺点”不要孤立看。以分组交换为例,它引入了报头,每个分组多带几十个字节,对短报文来说开销占比很高。所以小数据量、低功耗的嵌入式场景里,如果能把多个小数据合并成一帧发送,往往能明显降低协议开销。这就是为什么不少嵌入式协议会做“数据聚合”再交给物理层。
2.3 验证公平性:两个传输任务同时跑,观察谁在等待
把交换方式学完,最有效的自查办法是做一个简单实验。准备三台设备 A、B、C,让 A 和 B 同时向 C 发数据,A 传一个大文件,B 传一个小文件。过程可以这样记:
- 先把三台设备放到同一个局域网,保证三层互通;
- A 开始传 1GB 数据,同时 B 开始传 10MB 数据;
- 观察两个任务的完成时间和 C 的接收速率;
- 如果 B 的小任务几乎不受影响,说明链路是按分组粒度调度的;
- 如果 B 长时间等在大任务后面,说明链路或接口存在类似报文交换的整包排队现象。
参数上要注意:测试文件大小差异最好在 10 倍以上,否则看不出公平性差异;如果中间经过交换机,交换机有缓冲队列,排队策略会影响结果,但总体仍然能看出分组穿插。这个实验不需要额外软件,用系统自带的文件传输和任务管理器就能观察。做完以后再看原文档里“数据大小不一致时出现不公平性”这句话,会理解得更扎实。
3. 数据封装与解封装:从应用层到比特流的完整旅程
原文档用快递包裹解释封装:包装盒里塞了很多东西,对方最终想要的是里面的小物件,这个小物件就是应用层数据。封装是从上层到下层一层层加头,解封装是从下层到上层一层层拆头。物理层处在最底部,负责把已经封好的帧转换成比特流送上线路。很多人把 MAC 地址、IP 地址的职责误记到物理层头上,这一章用一条完整路径把边界划清楚。
3.1 封装顺序:每层加什么头,物理层最终只做两件事
以一个应用请求为例。应用层先产生数据;传输层加上源端口和目的端口,形成段;网络层加上源 IP 和目的 IP,形成包;链路层加上源 MAC 和目的 MAC,形成帧。原文档强调的“报头”指的就是这些附加信息。到了物理层,数据不再以“帧”的概念往外发,而是被转换成电平高低或光信号,按 bit 串行送到传输介质上。物理层不关心帧里是 HTTP 还是其他协议,它只负责“把 0 和 1 送过去,并且稳定地收进来”。
这里有一个容易被忽略的顺序:封装时每一层都认为下一层是“黑匣子”,上层不需要知道下层怎么把数据变成电压。因此物理层的工作可以概括成两件事:编码和收发。编码把二进制的 0/1 变成适合介质传输的信号,收发负责与网卡接口、传输介质的电平或光脉冲对接。文档里那句“通过网卡口传输,走传输介质,未来数据都是 010101”说的就是这个阶段。
| 层级 | 封装动作 | 新增信息 | 最终产物 |
|---|---|---|---|
| 应用层 | 产生原始数据 | 业务数据本身 | 数据流 |
| 传输层 | 加端口信息 | 源端口、目的端口 | 段 |
| 网络层 | 加 IP 信息 | 源 IP、目的 IP | 包 |
| 链路层 | 加 MAC 信息 | 源 MAC、目的 MAC | 帧 |
| 物理层 | 编码并发送 | 不新增头,只做信号变换 | 比特流 |
封装过程中每加一层头,数据包体积都会变大,所以网络层对单次能传输的数据长度有上限,也就是 MTU。常见以太网 MTU 是 1500 字节,应用层一次写入超过这个上限,协议栈会自动分片。嵌入式开发里如果缓冲区设置得太小,数据在封到物理层之前就可能被丢在协议栈里,表现是应用层收发异常而 ping 正常,这类问题也有必要回头检查 MTU 和缓冲区。
3.2 解封装顺序:逐层拆头,最小网络三要素缺一不可
接收端拿到比特流后,过程与发送端相反:物理层先把电信号恢复成比特序列,链路层检查帧头和目的 MAC,确认是发给自己的再拆掉帧头尾;网络层检查目的 IP 是否与本机匹配,匹配就继续往上;传输层根据端口号把数据交给对应进程;应用层终于拿到原始数据。这里并不是单纯的逆序操作,中间还穿插错误校验、分片重组、丢包判断,所以叫解封装而不是简单拆除。
原文档提出完成最小网络需要三要素:网线、网卡、协议栈。网线上跑的是比特流;网卡负责比特流和帧之间的转换,同时处理电气信号的收发;协议栈负责把数据组织成符合规则的帧和包。现代设备基本出厂就带 TCP/IP 协议栈,所以常规网络设备都能直接入网。嵌入式定制板则要注意,协议栈可能没有完整实现,或者网卡驱动只有收发中断、没有缓存管理,这时候物理层是否先跑通,直接决定上层调试难度。
3.3 抓包验证封装链路:顺序不能乱
通用做法是准备两台设备 A 和 B,A 向 B 发一个测试包,B 侧使用抓包工具观察收到的帧。实际步骤可以这样拆:
- 配置 A 和 B 到同一网段,例如 A 为 192.168.1.10,B 为 192.168.1.20;
- 在 B 侧启动抓包,过滤条件只保留 A 的 MAC 或 IP;
- 从 A 发出一个测试请求;
- 抓包结果里应能看到完整的帧头、IP 头和端口信息;
- 如果 MAC 和 IP 都对得上,但应用层收不到数据,问题基本在传输层以上。
抓包时先看链路层,再看网络层,最后看传输层,这个顺序和解封装一致。物理层本身能不能工作,不能靠抓包直接判断,要看网卡连接状态和误码统计。抓包软件能看到的数据已经是经过物理层恢复之后的比特流,它不能还原电缆上的信号质量。所以第 3 步能看到完整封装,只代表物理层“通”,不代表它“好”。
4. 传输介质与以太网标准:同轴、双绞线、光纤怎么选
物理层的介质选型直接决定速率上限、传输距离和抗干扰能力。原文档从同轴电缆讲到双绞线、光纤,看起来偏历史,但很多排查经验都是从这些老标准里来的。比如“冲突域”“共享型网络”这些词,不回到同轴电缆的年代理解,后面看现代以太网就总觉得少一环。
4.1 同轴电缆与共享型网络:10BASE5 参数背后的历史约束
同轴电缆早期用于有线电视和 10M 以太网。10BASE5 是其中很有代表性的标准:10 表示 10Mbps,BASE 表示基带传输,5 表示最大传输距离约 500 米。原文档提到它采用曼彻斯特编码在同轴电缆上传输。所有设备通过耦合器接到同一根主干电缆上,形成共享型网络,数据会向整条电缆广播,所有设备都能收到。这样做的直接后果是:没有私密性,一台设备发数据时,其他设备必须等;设备越多,冲突越频繁,有效吞吐越低。
| 项目 | 10BASE5 参数 |
|---|---|
| 速率 | 10Mbps |
| 传输方式 | 基带传输,曼彻斯特编码 |
| 最大距离 | 约 500 米 |
| 拓扑结构 | 总线型 |
| 接入方式 | 耦合器分接 |
| 典型问题 | 成本高、共享冲突、无私密性 |
同轴电缆构成的网络里,所有设备共享一根线,形成的就是冲突域。可以理解为:在这根电缆上任意两台设备同时发数据,数据一旦碰撞,双方都要停下来重传。共享型网络在设备数量很少时还能工作,设备一多,碰撞和重传会占据大部分带宽。原文档里“设备越多,传输越慢,冲突域越大”说的就是这个机制。现在新工程基本不用同轴做数据网络,但它帮助理解了为什么后来要引入交换机和全双工链路。
4.2 双绞线:UTP/STP、五类六类与千兆八根线的实际影响
双绞线是目前最常用的介质。UTP 是非屏蔽双绞线,STP 是屏蔽双绞线;五类、六类指的是传输性能等级。一般场景里,五类支撑百兆,超五类可以跑千兆,六类在千兆基础上余量更足,短距离也能支撑万兆。关键一点:千兆以太网要用满 8 根线,四对双绞线全部参与收发。很多人为了省事只压 4 根线,结果链路协商不到千兆,或者出现丢包和频繁重传。原文档明确写了“千兆就八根线都用了”,这是物理层最容易被忽视的一句话。
屏蔽线 STP 的屏蔽层需要接地才能发挥抗干扰作用,接不好反而会成为“天线”,把外部噪声引进来。常规办公环境 UTP 足够;靠近电机、变频器、工业电源这类强干扰源时,优先用 STP 并做好接地。接线线序上,常见做法是两端都按 T568B 标准压接:白橙、橙、白绿、蓝、白蓝、绿、白棕、棕。直连线、交叉线的问题在现代网卡上基本被自动协商解决了,但真正要跑千兆时,线序不稳会让协商结果掉到百兆甚至不通。
双绞线的传输距离上限一般是 100 米,这不是线材本身只能传 100 米,而是标准规定在百兆/千兆速率下保证可靠信号的最大距离。超过 100 米,信号衰减和延迟抖动会明显上升,可能出现“时通时不通”。工程里如果确实需要拉更远,一般会加中继设备或改用光纤,而不是靠换更贵的六类线硬撑。
4.3 光纤:单模多模的匹配与施工边界
光纤抗干扰强、传输距离远,但选型时最容易混淆单模和多模。常见做法是:多模光纤配多模光模块,用在几百米以内的机房或楼宇互联;单模光纤配单模光模块,用在几公里到几十公里的长距离传输。简单通过颜色和接口可以初步判断,但最可靠的是看光模块上印的型号,以及光纤外皮上的类型标识。
光纤链路里出现丢包,不一定是交换机配置问题。常见原因是光模块类型和光纤类型不匹配,或者接头端面脏污。插拔光纤前要盖防尘帽,清洁端面要用专用工具,不能用水或者嘴吹。原文档对光纤只给了两个字,但实际项目里光纤的坑远比双绞线隐蔽,因为它一旦通了,速率和延迟都很好看;一旦有问题,排查工具和手段都更复杂。所以用光纤时,建议先确认链路预算和模块波长再下单,不要只看接口形状是否能插上。
5. 避坑与排查:物理层三个高频故障的现象、原因、解法
物理层的坑大多不复杂,但经常伪装成上层问题。这一章把实际维护和教学里见过最多的几个现象写出来,每一条都按现象、原因、解决展开,可以直接对照排查。
5.1 现象一:千兆链路协商成百兆,传输速度上不去
现象:设备连接状态显示 100Mbps,传大文件速度只有 11MB/s 左右,偶尔还会断;换了一根成品网线后恢复正常。
原因:网线只用了 1、2、3、6 四根芯。百兆以太网只需要这四根,千兆必须四对线全部参与收发。水晶头压接不良、线序错误也会造成同样问题。
解决:重新按 T568B 线序压接八根线,压好后用测线仪确认八芯全部通过;如果用的是老线缆,检查线缆标称等级是否支持千兆。排查时先看链路协商速率,再决定是否重压,不要一上来就调协议栈参数。
5.2 现象二:设备越多网越慢,碰撞相关错误计数持续增加
现象:用集线器或总线型结构组网时,节点从五台增加到二十台,吞吐明显下降,抓包能看到大量错误帧或冲突计数;单独跑两台设备时又正常。
原因:所有设备在同一个冲突域里,CSMA/CD 机制先听后发、冲突停发、随机延迟重发。设备越多,碰撞概率越高,重传占用了大量带宽。原文档里那段“先听后发,发现线是静止的就开始发送;边听边发,两台同时听到静止就可能冲突”的流程,描述的就是这个现象。
解决:把共享型设备替换为交换机,让每个端口独立冲突域。物理层上减少级联长度,关闭无用广播源,也可以降低无效流量。这里要记住,交换机隔离的是冲突域,不一定隔离广播域,两者不要混用。
5.3 现象三:光纤链路能通但持续丢包,收发光功率异常
现象:两端光模块指示灯正常,链路协议能起来,但 ping 测试丢包率在百分之几到几十之间波动,流量大时更严重。
原因:光模块类型和光纤类型不匹配,比如多模光模块接到单模光纤,或者相反;接头端面脏污造成反射损耗;弯曲半径过小导致光信号泄漏。
解决:先看光纤外皮上的类型标识,再确认光模块型号,选型不匹配直接更换;插拔前做端面清洁。检查链路时除了看接口灯,也要看接收光功率是否在模块灵敏度范围内。物理层的“通”不代表“好”,能通但丢包,多数要从信号质量层面找原因。
5.4 学完最容易被误用的几个结论
第一,冲突域不等于广播域。冲突域是共享介质上可能发生碰撞的范围,广播域是广播帧能到达的范围。交换机能隔离冲突域,但广播域不会自动缩到每个端口。第二,物理层不负责纠错。错误检测在链路层和传输层,物理层只保证比特流发送和接收的电气/光特性。第三,屏蔽双绞线不是接上就抗干扰,屏蔽层必须接地,否则可能引入更多噪声。第四,曼彻斯特编码是 10M 以太网的编码方式,不要把它当成现代千兆以太网的编码代表。这些结论看起来小,但很多中层工程师也容易说反。
6. 最后给一个技巧:物理层“三步定位法”实验流程
许多时候我们不是不懂物理层,而是不会验证物理层。这里给出一个值得亲手跑一次的三步定位流程,用两台设备就能完成。
第一步,检查物理链路状态。先不看系统配置,直接观察网卡指示灯,能正常亮起说明网线和网卡至少完成了电平握手;灯不亮就换线、换网口。第二步,做连通性测试,确认帧能不能到达对方。不通时先看网卡是否启动,再看 IP 是否同网段,不要急着查上层协议。第三步,抓包看错误帧,判断问题落在物理层还是数据链路层。如果链路速率降级,回到第 4 章检查线缆类别和线序;如果光口有误码,回到光纤施工和光模块匹配。
这个流程的核心是顺序:先物理,再链路,最后协议。哪怕只是换一根成品网线,也应该从第一步重新验一遍。很多嵌入式网络调试里遇到的“诡异”丢包,最后都落在水晶头压接、四芯只通八芯、光纤端面脏污这几件事上。从那以后,我每次遇到设备时通时不通,都会强制自己先走完这三步,而不是直接改协议栈。希望这个习惯能帮你省掉几晚上的排查时间,也希望这份讲解文档能陪你从“能通”走到“知道为什么能通”。
本文还有配套的精品资源,点击获取