数据链路层
基本概念
数据链路层使用的信道主要有以下两种类型:
- 点对点信道:一对一的点对点通信方式
- 广播信道一对多的广播通信方式
这两种信道使用的协议为PPP协议和CSMA/CD协议
数据链路层三个功能:封装成帧、透明传输、差错检测
当主机$H_1$向主机$H_2$发送数据时,我们可以想象数据就是再数据链路层从左向右沿左向右水平方向传送的:
$H_ 1$的链路层 -> $R_ 1$的链路层 -> $R_2$的链路层 -> $R_3$的链路层 -> $H_1$的链路层
点对点信道
数据链路和帧
链路(link):从一个结点到相邻节点的一段物理线路(有线或无线),而中间没有任何其他的交换节点
数据链路(data link):链路加上一些必要的通信协议(控制数据的传输)
- 现在最常用的是使用网络适配器(既有硬件也有软件)来实现这些协议,一般的适配器都包括了数据链路层和物理层的功能
数据链路层的协议数据单元——帧
- 数据链路层把网络层交下来的数据构成帧发送到链路上,以及把接受到的帧中的数据取出并上交给网络层
点对点信道的数据链路层在进行通信时的主要步骤如下:
- 结点A的数据链路层要把网络层交下来的IP数据报添加首部
- 结点A把封装好的帧发送给结点B的数据链路层
- 若结点B的数据链路层收到的帧无差错,则从收到的帧中提取出IP数据报交给上面的网络层,否则丢弃这个帧
基本问题
封装成帧:
封装成帧就是在一段数据的前后分别添加首部和尾部,这样就构成了一个帧。网络层的IP数据报传到数据链路层就成为帧的数据部分
一个帧的帧长等于数据部分长度加上帧首部和帧尾部的长度首部和尾部的一个重要功能就是帧定界(确定帧的界限)
首部和尾部还包括许多必要的控制信息每一种链路层协议都规定了所能传送的帧的数据部分长度上限——最大传送单元MTU(Maximum Transfer Unit)
帧定界可以使用特殊的帧定界符
- 控制字符SOH(Start Of Header)放在帧的最前面,表示帧的首部开始,十六进制编码为01(二进制是00000001)
- 控制字符EOT(End Of Transmission)表示帧的结束,十六进制编码为04(二进制是00000100)
透明传输
当传送的帧是用文本文件组成的帧时(文本文件中的字符都是从键盘上输入的),其数据部分显然不会出现SOH或EOT这样的帧定界控制字符,可见不管从键盘上输入什么字符都可以放在这样的帧中传输过去,因此这样的传输就是透明传输非ASCII码的文本文件如果某个字节的二进制代码恰好和SOH或EOT这种控制字符一样,数据链路层就会错误地找到帧的边界,把部分帧收下,把剩下的部分丢弃,这就不是透明传输
透明:某一个实际存在的事物看起来却好像不存在一样(比如玻璃)
在“数据链路层透明传输数据”表示无论什么样的比特组合地数据,都能按照原样没有差错地通过
字节填充(byte stuffing)/字符填充(character stuffing):发送端的数据链路层在数据部分出现控制字符SOH或EOT时,会在前面插入转义字符”ESC“(十六进制编码是1B,二进制是00011011),接收端发送往网络层时再删除
差错检测
比特差错:比特在传输过程发生差错,如1变为0,0变为1
误码率BER(Bit Error Rate):在一段时间内,传输错误的比特占所传输比特总数的比率
数据链路层广泛使用了循环冗余检测CRC(Cyclic Redundancy Check)的检错技术
模2运算:进行加法和减法都不进位
循环冗余检测CRC计算:假定数据M有k个比特,CRC运算就是在数据M后面添加供差错检测用的n位冗余码,然后构成一个帧发出去,一共发送(k + n)位
n位冗余码获得方式:在M后面加上n个0,得到的(n + k)位的数初一事先商定的(n + 1)位除数P,得出商是Q而余数是R(n位),这个余数R就作为冗余码拼接在数据M后面发送出去,也就是发送(k + n)位的CRC码
这种冗余码称作帧检验序列FCS(Frame Check Sequence)
接收端把收到的数据进行CRC检验:把收到的每一个帧除以相同的除数P(模2运算),然后检查得到的余数R
- R = 0则判定没有差错,接收
R $\ne$ 0则出现差错(无法确定具体位置),丢弃
我们并没有要求数据链路层提供可靠传输的服务,也就是说,数据链路层只能做到凡是在接收端数据链路层接受的帧均无差错
可靠传输:发送端发送什么,在接收端就收到什么
除了比特差错,传输差错还有一类更加复杂的情况,那就是出现了帧丢失、帧重复、帧失序
点对点协议PPP
我们知道,互联网用户通常要连接到某个ISP才能接入互联网,PPP协议就是用户计算机与ISP进行通信时所使用的数据链路层协议
点对点协议PPP(Point-to-Point Protocol)是目前使用的最广泛的数据链路层协议
PPP协议应满足的需求:
- 简单:对于数据链路层的帧,不需要纠错,不需要序号,也不要流量控制。简单的设计可以使协议在实现时不容易出错,从而使不同厂商在协议的不同实现上的互操作性提高了
- 协议标准化的一个主要目的就是提高协议的互操作性
- 封装成帧:必须规定特殊的字符作为帧界定符
- 透明性:必须保证数据传输的透明性
- 多种网络层协议:必须能够在同一条物理链路上同时支持多种网络层协议
- 多种类型链路:比如串行的或并行的,同步的或异步的
- 差错检测:必须能够对接收端收到的帧进行检测,并立即丢弃有差错的帧
- 检测连接状态:必须有一种机制能够及时自动检测出链路是否处于正常工作状态
- 最大传输单元:必须对每一种类型的点对点链路设置最大传送单元MTU的默认值
- 网络层地址协商:必须提供一种机制使通信的两个网络层的实体能够通过协商知道或者能够配置彼此的网络层地址
- 数据压缩协商:必须提供一种方法来协商使用数据压缩算法
PPP协议不支持多点线路,支支持点对点的链路通信
PPP协议只支持全双工链路
PPP协议的帧格式
PPP帧的首部和尾部分别为四个字段和两个字段
- 首部第一个字段和尾部第二个字段都是标志字符F(Flag),规定为0x7E,表示一个帧的开始或结束,即PPP帧的定界符
连续两帧之间只需要一个标识字段,如果出现连续两个标志字段,就表示这是一个空帧,应当丢弃
首部中的地址字符A(0xFF)和控制字符C(0x03)实际上并没有携带PPP帧的信息
首部的第四个字段是2字节的协议字段
- 当协议字段为0x0021时,PPP帧的信息字段就是IP数据报
- 当协议字段为0xC021时,信息字段是PPP链路控制协议LCP的数据
- 当协议字段是0x8021时,表示这是网络层的控制数据
MTU的默认值是1500字节,在RFC 1661中,MTU叫做最大接收单元MRU(Maximum Recieve Unit)
信息字段的长度是可变的,不超过1500字节
尾部第一个字段是使用CRC帧检验序列的FCS
当PPP使用异步传输时,它把转义字符定义为0x7D,并使用字节填充
- 把信息字段中出现的每一个0x7E字节转变成为2字节序列(0x7D,0x5E)
- 若信息字段中出现一个0x7D的字节,则把0x7D转变为2字节序列(0x7D,0x5E)
- 若信息字段中出现ASCII码的控制字符,则在该字符前面要加入一个0x7D字节,同时将该字符的编码加以改变
PPP协议用在SONET/SOH链路时,使用同步传输(一连串的比特连续传送)而不是异步传输(逐个字符地发送)
- 在这种情况况下,PPP协议采用零比特填充方法来实现透明传输
零比特填充法:在发送端先扫面整个信息字段,发现5个连续的1就立即填入一个0
PPP协议的工作状态
PPP链路的其实和终止状态永远是“链路禁止”(Link Dead)状态
- 这时在用户个人电脑和ISP的路由器之间并不存在物理层的连接
在双方建立了物理层连接后,PPP就进入“链路建立”(Link Establish
其目的是建立链路层LCP连接
LCP开始协商一些配置选项,即发送LCP的配置请求帧(Configure-Request)
这是一个PPP帧,其协议字段为LCP对应的代码,而信息字段包含特定的配置请求
- 配置确认帧(Configure-Ack):所有选项都能接受
- 配置否认帧(Configure-Nak):所有选项都理解但是不能接受
- 配置拒绝帧(Configure-Reject):选项有的无法识别或不能接受,需要协商
LCP配置选项包括链路上的最大帧长、所使用的鉴别协议(authentication protocol)的规约,以及不使用PPP帧中的地址和控制字段
协商完之后双方就建立了LCP链路,接着就进入鉴别(Authenticate)状态,这一状态只允许传送LCP协议的分组、鉴别协议的分组以及监测链路质量的分组
- 口令鉴别协议PAP(Passward Authentication Protocol):需要发起通信的乙方发送身份标识符和口令,允许用户重试若干次
- 口令握手鉴别协议CHAP(Challenge-Handshake Authentication Protocol):更加复杂,更有安全性
鉴别身份失败则到链路终止(Link Terminate)状态,鉴别成功则进入网络层协议(Network-Layer Protocol)状态
在网络层协议状态,PPP链路的两端的网络控制协议NCP根据网络层的不同协议互相交换网络层特定的网络控制分组。总之,PPP协议两端的网络层可以运行不同的网络层协议,但仍可以使用同一个PPP协议进行通信
如果在PPP链路上运行的是IP协议,则对PPP链路的每一端配置IP协议模块时就要使用NCP中支持IP的协议——IP控制协议IPCP(IP Control Protocol)
- IPCP分组也封装成PPP帧(其中协议字段为0x8021)在PPP链路上传送
当网络层配置完毕后,链路进入链路打开(Link Open)状态,链路的两个PPP端点可以彼此向对方发送分组
- 两个PPP端点还可以发送回送请求LCP分组(Echo-Request)和回送回答LCP分组(Echo-Reply),以检查链路的状态
数据传输结束后,可以由链路的一端发来终止请求LCP分组(Terminate-Request)请求链路连接,在收到对方发来的终止确认LCP分组(Terminate-Ack)后,转到链路终止状态
- 如果链路出现故障,也会转到链路终止状态
- 当调制解调器的载波停止后,则回到链路终止状态
广播信道
局域网
局域网最主要的特点:网络为一个单位所拥有,且地理范围和站点数目均有限
局域网的主要优点:
- 具有广播功能:从一个站点可很方便地访问全网
- 便于系统的扩展和逐渐演变:各设备的位置可灵活调整改变
- 提高系统的可靠性(reliability)、可用性(availability)和生存性(survivability)
局域网按照网络拓扑进行分类,可分为星形网(Star)、环形网(Ring)、总线网(Bus)
共享信道要着重考虑的一个问题是如何使众多用户能够合理而方便地共享通信媒体资源,这在技术上有两种方法:
- 静态划分信道:用户只要分配到了信道就不会和其他用户发生冲突
- 代价较高,不适合局域网
- 动态媒体接入控制:又称为多点接入(multiple access),其特点是信道并非在用户通信时固定分配给用户,这分为两类:
- 随机接入:所有的用户可随机地发送信息,但如果恰巧有两个或更多的用户在同一时刻发送信息,那么在共享媒体上就要发生碰撞,使得这些用户的发送都失败
- 受控接入:用户不能随机发送信息而必须服从一定的控制,典型代表有分散控制的令牌环局域网和集中控制的多点线路探询(polling),或称为轮询
以太网的两个标准DIX Ethernet V2与IEEE的802.3标准只有很小的差别,因此很多人常把802.3局域网简称为“以太网”
- 数据率都为10Mbit/s
局域网的数据链路层可以拆分为两个子层,即逻辑链路控制LLC(Logical Link Control)子层和介质访问控制MAC(Medium Access Control)子层
- 与接入到传输媒体有关的内容都放在MAC子层
- 不管采用何种传输媒体和MAC子层的局域网对LLC子层来说都是透明的
计算机与外界局域网的连接是通过通信适配器(adapter)进行的。适配器本来是在主机箱内插入的一块网络接口板,这种接口板又称为网络接口卡NIC(Network Interface Card),简称网卡
适配器和局域网之间的通过电缆或双绞线以串行传输方式进行的
适配器和计算机之间的通信是通过计算机主板上的I/O总线以并行传输方式进行的
适配器的一个重要功能就是进行数据串行传输和并行传输的转换
适配器在接收和发送各种帧时,不适用计算机的CPU。当适配器收到有差错的帧时,就把这个帧丢弃。当适配器收到正确的帧时,他就使用中断来通知计算机,并交付协议栈中的网络层。当计算机要发送IP数据报时,就由协议栈把IP数据报向下交给适配器,组装成帧后发送到局域网
常见局域网中的介质访问控制MAC:
- 以太网Ethernet:逻辑上是总线拓扑,物理上是星形或拓展星形拓扑
- 令牌环网Token Ring:逻辑上是环形拓扑,物理上是星形拓扑
- 光线分布式数据接口FDDI:逻辑上是环形拓扑,物理上是双环拓扑
介质访问控制方法(Access Methods):
- 确定性轮流(Deterministic—taking turns:令牌环网和FDDI
- 争用式(Non-deterministic(probabilistic):先到先得
- 纯ALOHA协议(Pure ALOHA):主机任何时候都可以发送数据,如果发生冲突,延迟一段时间再发送
- 分段ALOHA协议(Slotted ALOHA):把信道在时间上分段,主机任何时候都发送数据,但必须等待下一个时间分段的开始才开始发送
确定性MAC协议(Deterministic MAC Protocols):
- 特殊数据令牌在环中循环
- 当主机收到令牌时,它可以传送数据而不是令牌,这被称作夺取(seizing)令牌
- 当发送(transmitted)的帧返回到发送器时,站点将发送新令牌;框架已从环上卸下或脱落(stripped)
非确定性MAC协议(Non-Deterministic MAC Protocols):
- 此 MAC 协议称为带冲突检测的载波侦听多路访问(CSMA/CD,Carrier Sense Multiple Access with Collision Detection)
- 为了使用这种共享介质(shared-medium)技术,以太网允许网络设备为传输权进行仲裁(arbitrate)
- 适用于总线结构的以太网
局域网数据传输(Transmitison)方式:三种
- 单播(unicast):将单个数据包从源发送到网络上的单个目标
- 多播(multicast):由发送到网络上特定节点子集的单个数据包组成,这些节点都有同样的进程进行响应
- 广播(broadcast):由单个数据包组成,该数据包传输到网络上的所有节点。(广播的目的地址是 0x11111111)
CSMA/CD协议
多点接入说明这是总线型网络,协议的实质是载波侦听和碰撞检测
载波侦听就是检测信道
- 无论在发送前还是发送中,每个站都必须不停地检测信道
碰撞检测:也就是边发送边监听,也称为冲突检测
如图是传播时延对载波侦听的影响
- T为总时间,$t_0$为发生碰撞的时间,则发送端在发送数据帧用最多经过2$t_0$就可以知道是否发生了碰撞
- 2$t_0$称为争用期(contention period),也称为碰撞窗口(collision window)
因此在使用CSMA/CD协议时,一个站不可能同时进行发送和接受,但必须边发送边侦听信道,也就是半双工通信
以太网使用截断二进制指数退避(truncated binary exponential backoff)算法来确定碰撞后的重传时机
- 为了方便可以直接使用比特作为争用期的单位
- 从离散的集合[0, 1, 2, …, $2^k - 1$]中随机取出一个数,记作r,重传应推后的时间就是r倍的争用期
- k = Min[重传次数, 10]
- 当重传达16次仍不成功,则丢弃该帧并向高层报告
凡是长度小于64字节的都是由于冲突而异常终止的无效帧
以太网信道利用率
以太网信道利用率总不能达到100%
- 我们注意到成功发送一个帧需要占用信道的时间是$T_0 + r$,这是因为当发送完最后一个比特时,这个比特还要在一台网上传播,而最坏情况是需要时间为r
- 以太网单程端到端时延r与帧的发送时间$T_0$之比为:$a = \frac{r}{T_0}$
- a越大则争用期比例越大,信道利用率越低
以太网的MAC层
硬件地址又称为物理地址或者MAC地址 ,实际上就是适配器地址或适配器标识符EUI-48
IEEE规定地址字段的第一字节的最低位为I/G位(Individual/Group)
- I/G = 0则地址字段表示一个单个站地址
- I/G = 1则地址字段表示一个组地址,用来进行多播(组播)
IEEE规定地址字段的第一字节的最低第二位为G/L位(Gloup/Local)
- G/L = 0则是全球管理
- G/L = 1则是本地管理
适配器从网络上收到一个MAC帧就先用硬件检查MAC帧中的目的地址,这里的帧包括以下三种:
- 单播(unicast)帧(一对一):收到的帧的MAC地址与本站的硬件地址相同
- 广播(broadcast)帧(一对全体):发送给本局域网上所有站点的帧(全1地址)
- 多播(multicast)帧(一对多):发送给笨局域网上一部分站点的帧
MAC帧的格式
存在802.3标准和Ethernet V2标准
前文:从 1 和 0 的交替(alternating)模式开始,称为前同步码(preamble)
- 告诉接收方,要来数据了,因为不是预约发数据的模式,这个码就是为了保证对方有相应准备时间,前面 7 个是前同步码(0b10101010),最后一个是帧开始定界符(0x10101011)
- 使用曼彻斯特编码的方案,无传输的时候是 0 电平的,前同步码告诉接收站一帧即将到来,前同步码不是 MAC 帧的内容
- 目标和源物理地址字段
- 源地址始终是单播地址
- 目的地址可以是单播地址、组播地址或广播地址
- MAC地址:6个字节为目的地址(Dest.add),6个字节为源地址(Source.add)
- 先看目的地址的好处:交换机等看到目的地址就可以进行判断,提高效率
长度字段:长度字段指示在该字段之后且在帧检查序列字段之前的数据字节数
- 2 个字节长,早期规范放的是长度,指定数据长度,以太网-2 标准下则是使用 type 来完成这部分内容,指定后面的 DATA 是 IP 还是 IPX 的报文数据
- 没有长度也可以计算出来长度,通过有电平长度就可以计算出数据的长度
- 数据长度的限制(46-1500 字节),以太网的帧长度不能长于 1518 字节
- 为了避免歧义,只要保证 Length 的数据大于数据报的最大长度即可保证是表示 type,保证和之前兼容
数据字段:数据字段包含要发送的信息
- 数据的长度为 46(18 + 46 = 64 字节)-1500 字节,帧的大小至少是 64 个字节,如果数据太短需要补充 0 才能生成 data,前引导码不算帧长度
- 以太网规定,小于 64 字节的帧是由于冲突而终止的无效帧
- 最前面8个字段不算帧的内容
- 4 个 64 字节大小帧同时发送才能保证占据全部的链路,100m 链路,用 512us,就是 512bit
- FCS字段:包含循环冗余校验码
最小帧长问题:
MAC子层上的介质访问控制
MAC地址采用十六进制数,为48位,表示为12个十六进制数字
- IEEE管理前6个十六进制数字表示制造商或供应商,并包括组织唯一标识符(OUI)
- 其余6个十六进制数字包括接口序列号,由特定供应商管理
广播:
- 地址
- 目标MAC:全1(FFFF,FFFF,FFFF)
- 保证所有设备都能收到这个地址
- 会导致非目的主机进行地址解析
- 广播会不必要地打断电台,从而严重影响电台性能
- 只有目的地的MAC地址未知或目的地是全部主机才能使用广播
以太网是广播网络,也就是说每个站都可以看到所有帧,不管是不是目的地,因此可以通过MAC地址判断站点是否为目的地,目标站在OSI层上发送数据,其他节点丢弃帧
广播操作步骤:
- 听然后传送
- 广播 jam 信号
- 是一个 32bit 的全 1 的数据帧表示出现了冲突
- 所有侦听的设备都会发送
- 发生碰撞(Collision)
- 两个设备同时使用链路发送电信号,则会出错。
- 如果有冲突,则会一直侦听总线,等到空闲则可以组织数据帧发送
- 多台主机同时进行组织数据帧进行发送
- 如果出现冲突,则会发出 jam 信号,只要有 0 或者 1 传输,有电平则会表示使用
- 设备退回适当的时间,然后重新传输
无线局域网
无线局域网:
- 基于单元的通信
- 电台发送的信号只能被附近的电台接收
- 短距离传输
无线局域网标准:
协议名称 | 带宽 | 频率 | 描述 |
---|---|---|---|
802.11 | 1-2Mbps | ||
802.11b | 11Mbps | 2.4GHz | 使用与802.11不同的编码技术来实现,向后兼容 |
802.11a | 54Mbps | 5GHz | |
802.11g | 可提供与802.11a相同的功能,具有802.11b的向后兼容性 | ||
802.11n | 108Mbps |
802.11:
- 关键技术:直接序列扩频DSSS(Direct Sequence Spread Spectrum)
- DSSS 适用于在 1 到 2 Mbps 范围内运行的无线设备,上面的这个速率在实际生活场景中要除以 2(一来一回才有一次通信)
- DSSS可以高达11Mbps的速度运行,在 2 Mbps 以上时将不被视为兼容
- 也称为 Wi-Fi™,无线保证度,是星型拓扑,基站作为中心
IEEE 802.11b(Wi-Fi)
- 传输能力提高到 11Mbps
- 所有 802.11b 系统都向后兼容(backward compliant),因为它们还仅针对 DSSS 支持 1 和 2Mbps 数据速率的 802.11
- 通过使用与 802.11 不同的编码技术来实现更高的数据吞吐率
- 在 2.4 GHz 内运行,解决了 802.11 中出现的部分问题
- 使用的是高速直连方案
IEEE 802.11a
- 涵盖在 5GHz 传输频带中运行的 WLAN 设备
- 802.11a 能够提供 54 Mbps 的数据吞吐量,并且采用称为“速率加倍”的专有技术已达到 108 Mbps。
- 实际上,更标准的等级是 20-26 Mbps。
- 传播距离相比 802.11 和 802.11b 短(衰减强),但是对于多用户上网的支持更好了
- 使用正交频分复用技术
IEEE 802.11g:
- 可以提供与 802.11a(54Mbps)相同的功能,但具有 802.11b 的向后兼容性
- 使用正交频分复用技术
- IEEE 802.11n(下一代WLAN):
- 提供的带宽是 802.11g 的两倍,即 108Mbps,理论上可达 500-600Mbps。实际上是 100M 左右
- 目前使用比较多的方案
无线局域网分为两类:
- 有基础设施拓扑网络(Infrastructure mode)
- 无基础设施拓扑网络(ad-hoc mode)
基础设施指的是提前建设好的基站
虚拟载波监听
- 源站把它要占用信道的时间(包括目的站发回确认帧所需的时间)写入到所发送的数据帧中(即在首部中的持续时间中写入需要占用信道的时间,以微秒为单位,一直到目的站把确认帧发送完为止),以便使其他所有站在这一段时间都不要发送数据
- 当站点检测到正在信道中传送的帧中的持续时间时,就调整自己的网络分配向量NAV(Network Allocation Vector)
- NAV 指出了信道处于忙状态的持续时间。
- 为什么信道空闲还要再等待呢?就是考虑可能有其他站点有高优先级的帧要发送。如有,就让高优先级帧先发迭。等待的时间就是 帧间间隔IFS(Inter-Frame Space)
- SIFS(Short Inter-Frame Space,短帧间间隔)最短
- PIFS(Point Inter-Frame Space,点协调功能帧间间隔)其次
- DIFS(Distributed Inter-Frame Space,分布协调功能帧间间隔)最长
实际吞吐量由于源站点发出帧后,接收节点需要返回确定帧(ACK),这会导致吞吐量降到带宽的一半,也会收到信号强度的影响
无线网络拓扑
基本服务集BSS包括一个基站BS和几个无线主机
- 所有主机都可以在本地 BSS 中直接相互通信
- 基站中两个主机之间是不直接互相通信的。
- 同一个 BSS 中的主机间直接通信
接入点AP充当基础架构模式的基站 - AP 硬连线到有线局域网,以提供 Internet 访问和与有线网络的连接
- 安装 AP 后,将分配服务集标识符(SSID)和通道
一个 BSS 可以通过分发系统(DS)连接到另一个 BSS,并构造一个扩展服务集(ESS)
家里的路由器既有 AP 的功能又有路由器功能,但是理论上只应该是 AP 的功能,一般我们认为家用路由器是一个 AP
访问过程:在 WLAN 中激活客户端时,它将开始侦听与之关联的兼容设备,这被称为扫描
- 主动扫描:导致从寻求加入网络的无线节点发送探测请求,探测请求将包含它希望加入的网络的服务集标识符,当找到具有相同 SSID 的 AP 时,该 AP 将发出探测响应,当身份验证和关联步骤已完成后,移动端发出请求帧,但是 AP 不发送自己的信息
- AP 比较安全。不用发送出自己的 SSID
- 被动扫描:侦听由 AP或对等节点传输的信标管理帧,包含自己的 SSID 信息,当节点接收到包含要尝试加入的网络的 SSID 的信标时,将尝试加入该网络
- 被动扫描是一个连续的过程,并且随着信号强度的变化,节点可能会与 AP 关联或分离,也是因为强度变化,所以连接状态需要维持
需要和 AP 连接,才能向 AP 发送数据帧
无线局域网的帧结构
WLAN不使用标准的802.3帧,具体框架有三种:
- 控制帧(Control Frames)
- 管理帧(Management frames)
- 数据帧(仅数据帧类似于802.3帧)
无线数据帧和802.3帧的有效载荷为 1500 字节
- 以太帧不能超过 1518 字节,而无线帧则可能高达2346 字节
- 无线网络帧的大小也不会太大,尽量避免转换成有线帧的时候出现帧的拆分,也就是说大小一般在 1500 字节以下,通常,WLAN 帧大小将被限制为 1518 字节,因为它最常连接到有线以太网
数据帧结构(802.11无线网)
- 去往 AP 和来自 AP 是我们需要重点确认
- WEP 规格,Wired Equivalent Privacy(有线等效保密)
- 持续期:参数很重要,CSMA/CA 需要这个信息
- 有时间窗口,如果超时没收到信号,则进行重传
数据帧地址分类:
- ad hoc用地址4
- 有基础设施用地址1、2、3
这是拓展星型拓扑,而两个AP之间通过有线进行通信,因此不能全是1
避免冲突的载波侦听多路访问CSMA/CA
Q: 为什么我们需要CSMA/CA?
A: 冲突(Collisions)可能发生在 WLAN 中,但是站点只能知道附近的传输,因此 CSMA/CD 不是一个好的选择
- 隐藏站问题:当 A 将数据传输到 B 时,C 无法检测到 A 和 B 之间的传输,因此 C 可能会决定将数据传输到 B 并导致 B 发生冲突
- 暴露站问题:当 B 将数据传输到 A 时,C 可以检测到传输,因此 C 不会将数据传输到 D。但这是一个错误(听到不应该听到的信号)
多路复用机制
- 以太网
- 信号被传输到电缆上的所有站。
- 发送站检测到冲突。
- 一次只能在信道上发送一个有效帧。
- WLAN 无线网络
- 信号通过电缆传输到发送站附近的站(相邻,不可以跨越有效距离发送)
- MAC协议必须尽最大努力确保仅发送站靠近接收站,发送方只能发送一路信号给接受方,不能有多个发送方发送信号给一个接受点
- 接收方检测确定冲突
- 一次可以在通道上传输多个有效帧,不可以产生冲突
CSMA/CA:发送站点在发送数据前,以控制短帧刺激接收站点发送应答短帧,使接收站点周围的站点监听到该帧,从而在一定时间内避免数据发送
基本过程:
- A 向 B 发送请求发送RTS(Request To Send)帧,A 周围的站点在一定时间内不发送数据,以保证 CTS 帧返回给 A
- B 向 A 回答清除发送CTS(Clear To Send)帧,B周围的站点在一定时间内不发送数据,以保证A发送完数据
- A 开始发送
- 若控制帧RTS或CTS发生冲突,采用二进制指数后退算法等待随机时间,再重新开始(A 和 C 同时发送 RTS)
退避时间短的设备先传输
发现冲突所有设备同时退避
- 为避免冲突,802.11 所有站点在完成一个事务后必须等待一段时间才能进行下一个动作,这个时间被称为 IFS,具体取决于帧的类型。
- SIFS(Short interframe space):短帧间间隔 28us,用于本设备接受发送状态转换,不足够源站接受 CTS
- DIFS(Distributed Inter-frame Spacing):分布协调功能帧间间隔 128us(多个节点进行协调)
- 应答 CTS(Clear to Send),等待 SIFS(Short interframe space)后发送数据
- 过程中的时间写入时间数据标记位
- NAV(网络分配向量):网络协调时间,时间长度:NAV 计算方式在后面,NAV 是一开始就进行预估了,别的节点抢到了节点时,我们会减掉别人正常通信的时间,不是一直累积下去的情况。
- 下一次经过争用窗口来抢
- 源站需要收到确认信息 CTS 才能接着发送信息
- 多个源站向目的站发 RTS 给目的站,目的站发现冲突,告诉各自站点,PPT 处理的是 RTS
实际数据传输率
- 当源节点发送帧时,接收节点将返回ACK
- 这可能导致消耗50%的可用带宽
- 在额定为 11 Mbps 的 802.11b 无线局域网上,这会将实际数据吞吐量降低到最大 5.0 到 5.5Mbps
- 网络性能也会受到信号强度的影响
- 随着信号变弱,可以调用自适应速率选择(ARS)
- 信号会受到距离影响,越远信号越弱,功率越低,带宽不能稳定到初始带宽
- 传输单元会将数据速率从 11 Mbps 降低到 5.5Mbps,从 5.5 Mbps 降低到 2 Mbps 或 2 Mbps 到 1 Mbps
Ethernet | WLAN |
---|---|
信号被传输到连接在线缆上的所有站点上 | 信号只被传输到接近发送站点的站点 |
接受站点检测冲突 | |
只会有一个有效帧在信道上传播 | 会有多个有效帧同时在信道上传播 |
MAC协议必须尽可能保证只有发送站点接近接收站点 |
设备
网卡NICs:
- 逻辑链接控制——与计算机上层通信
- 媒体访问控制——提供对共享访问媒体的结构化访问
- 命名——提供唯一的 MAC 地址标识符
- 成帧——封装过程的一部分,打包比特以进行传输
- 信号——使用内置收发器创建信号并与媒体接口
网桥Bridge:连接两个相同结构的局域网,并对流经网桥的数据进行转发
- 目的是过滤局域网上的流量(根据MAC地址而不是协议),使流量保持在本地,同时允许连接到局域网的其他部分以获取指向那里的流量
- 跟踪网桥两侧的MAC地址,并根据该MAC地址列表做出决策
- 在网段之间收集和发送数据报
- 创建冲突域
- 减少较大的冲突域,碰撞减少
- 延迟提高
- 维护地址表
- 储存转发设备,因为它必须接受整个帧并在转发前检验CRC
透明网桥原理
MAC表放到缓存的位置,刚启动时是空表,之后逐渐学习
- 地址表具有生命周期
- 透明指的是局域网中的站点并不知道所发送的帧将经过哪几个网桥
- 即插即用
当网络上的设备要发送数据但不知道目标地址时,会向网络上的所有设备发送广播,网桥始终会转发这些广播
- 广播过多会导致广播风暴
源路由网桥:发送帧时将详细的路由信息放在帧的首部中,从而使每个经过的网桥都了解帧的路径,在令牌环网中广泛使用
- 源站以广播方式向目的站发送一个发现帧,每个发现帧都记录所经过的路由。发现帧到达目的站时就沿各自的路由返回源站。源站在得知这些路由后,从所有可能的路由中选择出一个最佳路由。凡从该源站向该目的站发送的帧的首部,都必须携带源站所确定的这一路由信息
交换机Switch:识别数据包中的MAC地址信息,然后根据MAC地址进行转发,并将这些MAC地址与对应的端口记录在自己内部的一个地址表中
- 执行两个基本操作:
- 切换数据帧:在输入介质上接收帧,然后将其传输到输出介质
- 维护交换操作:交换器建立和维护交换表并搜索循环。,路由器构建并维护路由表和交换表
- 交换是一项通过减少流量来缓解以太网 LAN 拥塞的技术
- 交换机创建专用的网段或点对点连接,并将这些网段连接到交换机内的虚拟网络中
- 之所以称为虚拟电路,是因为它仅在两个节点需要通信时才存在,并且在交换机内建立
- 每个交换机端口将介质的全部带宽提供给每个主机
- 连接到交换机的所有主机仍位于同一广播域中(路由器可以创建广播域)
通过添加中继器和集线器来扩展冲突域
- 不会分割
可以通过添加网桥、交换机和路由器等智能设备对网络进行分割