协议森林1——小喇叭开始广播:以太网与WiFi

本文介绍了连接层的以太网和WiFi,包括以太网帧的格式,如序言、头部、数据和尾部,以及MAC地址、CRC校验和集线器与交换器的区别。同时讨论了WiFi的工作原理和安全问题,如WEP、WPA及WPA2加密。
摘要由CSDN通过智能技术生成

“小喇叭开始广播啦”,如果你知道这个,你一定是老一辈的人。“小喇叭”是五十年代到八十年代的儿童广播节目。在节目一开始,都会有一段这样的播音:“小朋友,小喇叭开始广播了!” 听到这里,收音机前的小朋友就兴奋起来,准备好听节目了:这一期的内容是连接层的以太网和 WiFi。它们分别是最常见的有线和无线通信方式。
在这里插入图片描述
小喇叭开始广播啦
帧的格式
在连接层,信息以帧(frame)为单位传输。帧像信封一样将数据(payload)包裹起来,并注明收信地址和送信地址。连接层实现了“本地社区”的通信。我们先来看看以太网的帧。帧是一段有限的 0/1 序列。它可以分为头部、数据(Payload)和尾部三部分:

 Preamble | SFD | DST | SRC | Type | Payload (Data) | Pad | FCS | Extension

帧按照上面的顺序从头到尾依次被发送/接收。其中,头部和尾部就是我们所谓的信封,把真正的数据包裹在中间。尽管头部和尾部并不是我们真正想要传输的数据,但它们是完成通信所必须的。
头部
帧的最初 7 个 byte 被称为序言(preamble)。它的每个字节(byte)都是 0xAA(这里是十六进制,也就是二进制的 10101010)。通常,我们都会预定好以一定的频率发送 0/1 序列(比如每秒 10bit)。如果接收设备以其他频率接收(比如每秒 5bit),那么就会错漏掉应该接收的 0/1 信息。但是,由于网卡的不同,发送方和接收方即使预订的频率相同,两者也可能由于物理原因发生偏差。这就好像两个人约好的 10 点见,结果一个人表快,一个人表慢一样。序言是为了让接收设备调整接收频率,以便与发送设备的频率一致,这个过程就叫做时钟复原(recover the clock)。这就像在收听广播之前,调整转钮,直到声音清晰。网卡会在接收序言的过程中不断微调自己的接收频率,直到自己“听到”是…1010…。
时钟调整好之后,我们等待帧的起始信号(SFD, start frame delimiter)。SFD 是固定的值 0xAB,也就是“10101011”这个二进制序列。这个 0xAB 就好像“小喇叭开始广播啦”一样,提醒我们好节目就要上演了。帧的格式是固定的,每个部分有固定的字节数。所以一旦设备识别出起始信号后,就能分辨出数据的各个部分。
紧随 SFD 之后的是 6 个字节的目的地(DST, destination)和 6 个字节的发出地(SRC, source)。这就像是信封上写的目的地和发出地。这里写在信封上的是本地人描述的地址,其实也就是 MAC 地址。每个物理设备都有一个 MAC 地址,作为设备的序号。按照以太网的工作方式,MAC 地址只能在同一个以太网中被识别。 所以一个帧也只能在局域网内传输。
头部的最后一个区域是类型(Type),用以说明数据部分的类型。由于数据部分通常还包含有更高层的协议,所以所谓的类型实际上是更高层协议的种类,比如 0x0800 为 IPv4,0x0806 为 ARP。如果接收设备能理解该类型的网络协议,可以进一步解读数据部分内容。
数据
正如我刚才提到的,数据一般包含有符合更高层协议的数据,比如 IP 包。连接层协议本身并不在乎数据是什么,它只负责传输。注意,数据尾部可能填充有一串 0(PAD 区域)。原因是数据需要超过一定的最小长度。
尾部
跟随在数据之后的是校验序列(FCS, Frame Check Sequence)。校验序列是为了检验数据的传输是否发生错误。在物理层,我们通过一些物理信号来表示 0/1 序列,比如高压/低压,高频率/低频率等。但这些物理信号可能在传输过程中受到影响,以致于接收到的二进制序列和发出的不一样。如何来发现我们的数据是正确的呢?
一个方法是将数据发送两遍,然后对比一下是否一样。理论上,两次犯相同错误的几率很低。如果两次的数据不一样,那就是在传输过程中出错了。但发送两遍的方法降低了网络的效率。而且逐一对比序列的每个字节的话,也需要耗费不少时间。以太网采用了更加聪明的方法。帧的 FCS 区域利用了 CRC(Cyclic Redundancy Check)算法。在传输之前,发送方基于要传输的数据生成一个对应的校验码。接收方收到数据后,对比数据和校验码,看它们是否还符合对应关系,就能确定数据传输中是否发生错误。
简单的说,这就好像是一家饭店的老板雇佣了一个收银员。老板担心收银员黑钱。可每天营业额很大,老板即使坐在旁边看,也不能用记住收到的总数。所以他采取了一个聪明的办法:只记住收到钱的最后一位,比如收到 19 元,老板记住 9。当有新的进账,比如 13,尾数为 3,他就将新的尾数和旧的尾数相加,再记住和的尾数——也就是 2。当收银员交给老板钱的时候,老板只用看总额的最后一位是否和自己记的最后一位相同,就可以知道收银员是否诚实了。如果说我们的数据是收银的总额的话,我们的 FCS 就是老板记录的尾数。如果两者不相符,我们就知道数据在传输的过程中出现错误,不能使用。
 FCS 在盯着
FCS 在盯着
上面的比喻实际上是用营业总额不断的除以 10,获得最终的尾数。CRC 算法也相类似。n 位 CRC 算法取一个 n bit 的因子,比如下面的 1011。数据序列结尾增加 n-1 个 0。因子与数据序列的不断进行 XOR 运算,直到得到 n-1 位的余数,也就是 100。该余数各位取反(011),然后存储在 FCS 的位置。

 11010011101100 000 <--- 数据序列末尾增加 3 位 0
 1011 <--- 因子
 01100011101100 000 <--- XOR 结果
  1011 <--- 因子
 00111011101100 000
   1011
 00010111101100 000
    1011
 00000001101100 000
        1011
 00000000110100 000
         1011
 00000000011000 000
          1011
 00000000001110 000
           1011
 00000000000101 000
            101 1
 -----------------
 00000000000000 100 <--- 3 位余数

上面例子用的是 4 位 CRC。在 Ethernet 中使用的因子为 32 位的,以达到更好的检测效果。
以太网的集线器和交换器
上面我们都在围绕着单一的帧来说明它的格式。我们现在要看看以太网是如何在多设备的网络中工作的。以太网是现在最普遍的构成局域网的方式。我们经常用一根网线把设备接入局域网。以太网使用集线器或者交换器将帧从发出地传送到目的地。一台集线器或交换器上有多个端口,每个端口都可以用网线连接一台计算机或其他设备。集线器和交换器是相互竞争的设备。设计更加合理的交换器正在取代老一代的集线器,成为以太网的主流枢纽工具。
我们先来看比较古老的集线器。集线器上连有多个设备,每个设备都可以向集线器发送信息。想要发起通信的设备将数据封装到帧中,再发送往集线器。集线器自己比较“懒”,只是简单的把帧转发到所有其他的端口。每台计算机检查自己的 MAC 地址是不是符合 DST。如果是,则处理帧。如果不是,则保持沉默。总的来说,集线器像一个失物招领的电台。所有人都能听到电台的播报,然后失主可以认领。
集线器有明显的缺陷:

  1. 任意两台电脑的通信在同一个以太网上是公开的。所有连接在同一个集线器上的设备都能收听到别人在传输什么,这样很不安全。针对这个问题,通信双方可以对信息加密。这样,数据在其他人眼中就是难以解读的乱码。网络的安全性能因此提高。
  2. 不允许多路同时通信。电台只有一根电话线接进来,所以每个时间只能有一个热心听众打进来。如果两台电脑同时向集线器发信,集线器会向所有设备发出“冲突”信息,提醒发生冲突。可以在设备上增加冲突检测算法(collision detection):一旦设备发现有冲突,则随机等待一段时间再重新发送。
    交换器能克服集线器的缺陷。交换器也连接有多个设备。但集线器懒到只是随手转发,交换器却勤快的记录下各个设备的 MAC 地址。当帧发送到交换器时,交换器会检查帧的目的地,然后将帧只发送到对应端口。此外,交换器允许多路同时通信。总之,交换器的工作方式更加主动,也更加聪明。由于交换器的优越性,交换器基本上取代了集线器。但比较老的以太网还有可能在使用集线器。

WiFi
如今我们去一个餐厅,或者去一个咖啡馆,总会习惯性的连接上本地的 WiFi。毕竟,通讯公司所提供的 3G/4G 无线通信收费太高,大量使用可能意味着天价账单。WiFi 构成的无线局域网能连接入有线网络,允许我们能以廉价的方式上网。WiFi 也因此成为使用最广泛的无线通信方式。
WiFi 的最终实现是由多种技术合成的。这其中包含了好莱坞艳星海蒂·拉玛的跳频扩频技术。但真正成功专利的,是隶属于澳大利亚政府的研究机构 CSIRO。严格的说,CSIRO 只是把已有的多项技术整合调优,最终提出最佳的通信方案。CSIRO 注册专利的时间,甚至晚于 IEEE 出台的关于无线网络通信的 802.11 标准。无论如何,CSIRO 的技术被后来的 802.11a 采纳。时至今日,CSIRO 依然会向每台 WiFi 设备收取专利费。
在这里插入图片描述
海蒂·拉玛
WiFi 的工作方式与集线器连接下的以太网类似。一个 WiFi 设备会向所有的 WiFi 设备发送帧,其它的 WiFi 设备检查自己是否是目的地。我们已经分析了这种通信方式的缺陷,特别是信息安全性的问题。由于每一台设备都能接受到帧,所以 WiFi 传输的信息很容易被窃听。但 WiFi 不能像以太网一样更新换代成交换器的工作方式。毕竟,WiFi 采取无线电信号,难以像交换器一样定向发送。WiFi 的安全性最终要通过加密的方法来弥补。
早期的有线等效加密(WEP)加密方法非常脆弱。美国联邦调查局为了提高公众安全意识,曾在电视上示范如何破解 WEP 密码。结果短短几分钟,WEP 密码就被攻破。后来的 WPA (WiFi Protected Access)和 WPA2 (第二代的 WPA)加密一步步的提高了加密的安全性。但黑客依然有办法攻破这些加密保护,例如通过 Wi-Fi 保护设置(WPS)。WiFi 通信的安全性依然是现在计算机安全的一个热点问题。
总结
我们深入了连接层协议的一些细节。连接层是物理与逻辑的接口,它的设计兼顾了物理需求(比如时钟复原,CRC)和逻辑需求(比如地址、数据)。由于连接层处于网络逻辑的底层,有许多基于连接层的攻击手法,这需要我们对连接层的工作方式有一定的了解,以设计出更好的网络安全策略。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值