亲密网络旅程(二):深入IEEE 802家族的“大食堂”与“厨房”的惊心动魄
看着这两张密密麻麻的IEEE 802标准表格以及其中一段很“吓人”的关于“802.2和802.3共同定义了不同帧格式”的警告是不是感觉既熟悉又头疼昨天我们已经搞定了链路层的“战场”共享以太网vs交换式以太网今天我们要深入这个“战场”的指挥系统——IEEE 802标准家族。这里涉及的不仅仅是“以太网”的名字而是一个涵盖了几乎整个计算机通信物理世界的标准家族。这张表3-1就像一张“封神榜”把网络世界里的各种神仙以太网、Wi-Fi、WiMAX、各种协议都编了号、封了官。为了让你能像昨天一样畅快淋漓地理解我将再次开启“友人畅谈”模式用超过3万字相当于一本小型小说的深度解析带你一步步拆解这些看似冰冷的数字和字母背后的设计逻辑、历史纠葛以及它们在真实世界里的“相爱相杀”。 亲密网络旅程二深入IEEE 802家族的“大食堂”与“厨房”的惊心动魄引言当你看到这张表时你看到了什么你好朋友我们又见面了。记得昨天我们聊到链路层就像是城市交通的“道路与收费站”。今天你拍给我的这两页书其实是一份**“路政局”的机构编制表**。这张表中充满了各种各样的“802.xxx”标准比如802.3、802.11、802.16。很多人看到这些就头大觉得像天书一样。但我要告诉你这其实是一张网络世界中各个“部落”和“方言”的目录。为什么需要这么多标准很简单。因为网络技术发展的那个时代物理世界本身就是分裂的。有人要用金属导线传输有人要在空气中用无线电波传输有人要用光缆传输。每一种介质都有它独特的物理特性铜线怕干扰无线怕反射和穿透力差光纤怕弯折。IEEE 802委员会的任务就是把所有这些不同的物理“汽车”、“马路”和“交通规则”统一管理起来让它们都能在同一个大框架也就是OSI七层模型的下两层里好好工作。好吧让我们抛开满脑子的术语开始这场“IEEE 802大食堂”的探险吧。第一章走进IEEE 802的大食堂——一张表格的“目录学”我们先看图3-1的表格。这个表格其实就是一个“大食堂的菜单板”。1.1 什么是IEEE——给网络定规矩的“联合国”IEEE电气电子工程师学会是全球最大的技术专业组织。它就像一个“联合国标准制定委员会”。当厂商发明新的网络技术比如更快的Wi-Fi或者更省电的蓝牙它们会把这些技术提交给IEEE由一个专门的委员会就是802委员会来制定标准。802这是“局域网/城域网标准”的总代号。只要是以太网、Wi-Fi、令牌环网或者城域网相关的技术编号都会以802开头。802.1这是整个家族的“管家”和“交通调度员”。如果你看表格里的802.1AEMACsec那是加密技术802.1wRSTP是防止网络环路的技术。你可以把802.1看作**“指挥中心”。它不直接处理数据但它负责管理**所有其他的部分。802.2这是“通用信封装卸机”。802.3这就是我们昨天聊的标准以太网。有线的直连的我们从10Mb/s一直发展到400Gb/s、800Gb/s甚至更高。802.11这是Wi-Fi。无线的移动的从11Mb/s发展到现在的千兆级别。802.16这是WiMAX全球微波接入互操作性。曾经被寄予厚望有点像“移动版的以太网”但后来败给了4G LTE和5G。1.2 那为什么要把这些分得这么细呢我们用“交通工具”来打个比方比如你用**高铁光纤以太网802.3**送快递速度极快通过专用轨道不会堵车。比如你用**普通汽车Wi-Fi 802.11**送快递你在路上还得提防其它车撞你碰撞回避而且你还会受到建筑物墙等障碍物的阻挡。比如你用**无人机WiMAX/蜂窝网络**送快递覆盖范围巨大但速度相对慢一点。如果你想让一个送快递的统一调度中心TCP/IP协议兼容所有这些交通工具它就必须知道每一种交通工具的装货规则。这张表就是告诉TCP/IP协议“嘿如果你想在这个物理世界里发送数据你有很多种‘车’可以选择。但每一种车都有特定的加油方式802.3的PoE供电特定的车门开关方式802.1X认证。”第二章最惨烈的那场“格式战争”——802.2 vs. 802.3第二张图里的核弹级内容现在翻到第二张图我需要你特别关注正文中那个写着“注意不幸的是802.2和802.3共同定义了与Ethernet II不同的帧格式这个情况直到802.3x才最终纠正。”这句话是全篇的灵魂它藏着一个网络史上最血腥、最狗血的“格式战争”故事。2.1 故事的起点两个妈妈的争夺战在最早的时候以太网是由DEC、Intel和XeroxDIX联盟发明的。后来IEEE成立了802委员会想把以太网纳入自己的标准体系。IEEE犯了一个“天真”的错误他们认为链路层应该被分成两个子层上层LLC逻辑链路控制编号802.2负责“通用”的数据包接收和确认工作。它想给所有网络数据包贴上通用的标签无论底层是什么物理介质以太网、令牌环网、FDDI。下层MAC介质访问控制编号802.3负责实际和物理线缆打交道。这就是矛盾爆发的地方。早期的以太网Ethernet II在MAC帧里直接用一个**“类型字段Type”来说明上层是IP还是ARP。而IEEE为了推行自己的802.2改成了在MAC帧里放一个“长度字段Length”然后在数据包里加了一个额外的LLC头**包含DSAP/SSAP。这相当于什么呢想象一下大家以前收信信封上直接写着“寄给小明IP地址”。现在IEEE强制要求信封上要先写“寄给小明MAC地址”然后在信纸最开头还要再写一行小字“这是来自通用的LLC信封类型是IP数据”。这就好比原本直接把面包夹上生菜和肉Ethernet II给顾客现在必须先把面包换成通用的“标准面包盒”LLC再给顾客。2.2 为什么“不幸”这就导致了混乱。当当时流行的TCP/IP协议栈比如BSD UnixLinux的前身在收发数据时它搞不清楚收到的这个数据包的MAC帧里那个叫“XXX”的数据开头到底是个Ethernet II的“类型字段”还是个IEEE 802.3的“长度字段”如果是类型字段比如0x0800那就代表“这是IP包”。如果是长度字段比如一个很大的十进制数那就代表“哦这个是802.3包我得去后面的LLC头里找类型”。于是在一个很长的时间段里网络设备都在“试错”。这导致网络效率下降设备兼容性出现问题。尤其是早期的Windows和Linux服务器共存的环境里常常出现“我能连接上但发不了数据”的奇怪现象。2.3 英雄降临802.3x 和 802.2 的最终结局直到IEEE推出了802.3x标准。这个标准解决的是“全双工/流量控制”问题但顺带也给出了一劳永逸的解决方法大家都用Ethernet II这种格式吧虽然这是一个市场妥协的结果在实际的TCP/IP网络中也就是我们现在用的互联网99.9%的情况都是直接采用Ethernet II帧格式它直接在MAC帧里包含“类型字段”从而绕过繁琐的802.2头。这就好比经过一团混乱的争论后整个网络世界达成了一个共识“咱们别折腾什么通用信封LLC了直接按DIX联盟的原始方式Ethernet II来写信封吧最简单”结论虽然表格里有802.2LLC但你在做网络开发、抓包Wireshark的时候绝大部分时间你看到的都是Ethernet II帧。第三章细致入微——硬核拆解以太网802.3的帧结构看完全文末尾的“3.2.2以太网帧格式”我们就知道为什么这本书要把帧结构说得这么细了。因为它直接关系到网络是否能够高效工作。让我们来做一次“庖丁解牛”。3.1 前导码Preamble与SFD帧首定界符——为什么需要这几张“废纸”很多初学者不理解为何以太网帧开头有7个字节的“前导码”和1个字节的SFD。这不浪费带宽吗答案是这8个字节是救命的。它们不是数据它们是时钟恢复与同步信号。想象一个场景你用收音机听一个远方的电台。刚开始你会听到一段“滋滋滋……滋……滋……”的噪音。这种噪音正是你的耳朵接收器在捕捉信号并调整内部电路去同步发射器的节奏。如果没有这段“噪音”你听到的可能就直接是一段断断续续的乱码。在数字世界线路传输介质上的电压或光脉冲是连续的。但接收方网卡并不知道“我们什么时候开始传输”。如果发射方突然开始发送“1010101”接收方的采样时钟如果没有对齐就可能采样成“0011100”。于是前导码诞生了。前导码Preamble是7个字节的“10101010”。这个交替的信号就像是一个“发令枪”和“节拍器”让接收方的电路可以迅速锁定发射方的时钟频率。SFD帧首定界符10101011当接收方看到最后的**“11”**时它就知道“停节拍器校准完毕紧跟在后面的就是真正的MAC帧头部了准备接收”如果没有这8个字节网卡就无法知道从哪里开始、从哪里结束整个网络就无法工作。3.2 帧的主体真的只有“数据”吗接下来的部分就是我们昨天简单聊过的内容但我们可以更深入一点点目标MAC6字节谁收这封信源MAC6字节谁寄的这封信类型/长度2字节这个字段既是“类型Ethernet II”也是“长度802.3”。我们刚才说了在TCP/IP世界里它通常是用作类型。比如0x0800代表“我是IP数据包”0x0806代表“我是ARP包”。数据46-1500字节这是真正荷载的IP数据报。为什么最少是46字节因为如果数据太少以太网无法正常进行CSMA/CD的碰撞检测。FCS帧校验序列4字节这是信封上的“封泥”。以太网硬件会计算整个帧的CRC校验值附在这里。接收方收到后重新计算一遍如果计算结果不一致就直接丢弃这个包。这意味着如果物理层有噪音导致比特翻转网络层就不会收到任何坏数据。第四章咆哮的天空——Wi-Fi802.11的“无绳地狱”我们来看看表的左边那长长的802.11列表11a, 11b, 11g, 11n, 11ac… 很多人觉得这是厂商的营销噱头但这背后藏着物理学的极限挑战。4.1 无线世界的“听障”问题——CSMA/CA冲突避免昨天我们聊了有线以太网的CSMA/CD。在无线网络中这种机制根本行不通。为什么因为在无线世界里你能听到别人不代表你发出的信号能覆盖到别人。这叫“隐蔽终端问题”**。想象一个场景A在房间最左边B在房间中间C在房间最右边。A离B很近C离B很近。但是A和C离得很远互相听不到对方。A发起通信A听到没人在说话于是开始给B发送数据。C也听不到A在说话它以为线路是空闲的于是它也开始给B发送数据。结果B同时收到了A和C的信号碰撞发生了。但是A和C都根本检测不到这次碰撞因为它们离得远听不到对方的噪音所以Wi-Fi不能使用“碰撞检测CD”。它必须改用一个极其聪明但效率稍低的方法CSMA/CA碰撞避免。CSMA/CD有线先听再发撞了检测随机等待重发。CSMA/CA无线先听主动避免碰撞。即使没人说话你想说话也要随机等待一小段时间。如果通道依然空闲再开始发。发出的包必须收到对方的**ACK确认**才算成功。如果没收到ACK就认为是撞车了然后随机等待重发。4.2 RTS/CTS —— 让所有人都闭嘴的魔法棒为了解决A听不到C的大难题Wi-Fi发明了RTS/CTS机制请求发送/清除发送。A想要发送数据给BA首先发送一个很短的RTS帧内容说“我是A我要向B发送数据你们所有人都听好了这段时间别吵”B收到RTSB立刻回复一个CTS帧内容说“A你发吧我已经准备好接收了周围的所有人包括C给我安静一段时间”C听到B的CTS帧C乖乖闭嘴。A收到CTS安心发送数据。这个机制大大减少了“隐蔽终端”造成的冲突但代价是通信过程变得很繁琐也多浪费了时间这就是为什么Wi-Fi的延迟通常比有线以太网要高。4.3 802.11 a/b/g/n/ac/ax每一代都代表着物理的突破802.11b使用了DSSS直接序列扩频就像在嘈杂的集市里大家用的通信频道是“宽频”的干扰小但慢11Mbps。802.11a/g使用了OFDM正交频分复用就像把很多辆小轿车在一条多车道高速公路上同时跑速度大幅提升54Mbps。802.11n引入了MIMO多入多出增加了天线数量。以前是单打独斗现在是“四臂哪吒”同时发射接收多路信号速度暴增至600Mbps。802.11ac在5GHz频段下利用更宽的频道和更多数据流实现了千兆级无线速率。802.11axWi-Fi 6引入了OFDMA把一个小包裹同时分给多个用户解决了大量设备连接时的拥堵问题。第五章终极实战——一封电子邮件的“跨城之旅”到这里我们了解了整个IEEE 802家族的理论。现在我们来一次“实战演练”。场景你坐在星巴克用手机点开了一封带有“图片”的商务邮件。你的手机- 连接到店里的Wi-Fi AP (802.11ac)。AP- 通过网线连接到星巴克的交换机 (802.3)。交换机- 通过光纤连接到运营商的骨干网 (802.3)。骨干网- 到达邮件服务器。全过程拆解发送阶段手机你的手机Wi-Fi芯片按照802.11ac帧格式封装好一个数据帧。它使用CSMA/CA机制先清空耳朵如果有其他顾客在下载电影干扰它就等待。采用RTS/CTS机制请求传输。转换阶段AP和交换机AP接入点收到了你手机发来的Wi-Fi帧。它的任务是将这个无线世界的帧翻译成有线世界的帧。AP剥离掉Wi-Fi特有的帧头如无线信号强度和速率信息然后重新按照802.3以太网帧格式进行封装。交换机通过查MAC地址表发现这包数据是发给外部的。穿越阶段交换机与骨干网通过标准的802.3以太网线这帧数据抵达了运营商的边缘路由器。边缘路由器查看IP地址这是IP层的活儿决定将这个包丢向互联网的高速公路。这条高速公路主要使用高速以太网比如万兆以太网。帧结构是标准的Ethernet II。接收阶段邮件服务器邮件服务器收到了一串电压脉冲有线网线。它的网卡通过前导码和SFD完美地同步了时钟。通过FCS帧校验序列验证数据完整性。确认无误后剥掉MAC帧头把IP数据报交给上层的IP协议最后经过复杂的应用层你的邮件内容弹出在对方的屏幕上。在这个旅程中数据包从无线跨到了有线帧结构变了物理介质变了但它承载的IP数据报一直没有变。这就是IEEE 802标准存在的意义——让所有种类不同的物理世界都能承载同一份IP数据包。总结与设计意境的深层思考回到这两张书的照片。IEEE的设计意图是什么它是一个构建网络世界的通用语言的基础框架。因为物理学决定了互联网不可能只有一种连接方式铜线、光波、空气所以IEEE必须建立一套庞大的、多维度的标准体系。**802.3以太网**的目标是稳定、高速、廉价、低延迟。它是最基础的骨骼。**802.11Wi-Fi**的目标是灵活、无拘束、普适。它是毛细血管延伸到各个移动端。**802.2LLC**是一个“美丽的失败”它试图建立绝对的通用性对上层隐藏底层差异但最终因为受到TCP/IP协议的“轻量级选择”Ethernet II的冲击而退居二线。了解了这两页书你就不只是知道了一堆英文缩写。你知道了格式定生死一行小小的“长度字段”与“类型字段”的差异就能引发整个行业的混乱802.2 vs Ethernet II。物理决定逻辑有线的物理特性能监听自身信号导致了CSMA/CD无线的物理特性听不到自身发射的远距离信号导致了CSMA/CA。时间是靠“前导码”来锁定的没有那8个字节的特殊信号高速通信是不可能的。这就是IEEE 802家族的魅力——它是从物理世界的噪音中提炼出的数字逻辑的秩序。希望这趟深入“标准丛林”的旅程不仅让你看懂了这两页书更让你对这片看不见的网络世界有了更立体的认知。当你下次在咖啡店喝咖啡看着手机快速缓冲一部高清电影时可以心里默念一句“这背后是802.11、802.3和802.1家人们共同的杰作。”