计算机网络 —— 数据链路层
一、 基本概念
链路(link):物理链路,一条无源的点到点的物理线路段,中间没有其他交换结点。一条链路只是一条通路的一个组成部分。
数据链路(data link):逻辑链路,= 物理链路 + 通信协议(控制数据传输)。现在最常用的方法是使用 适配器(网卡) 来实现协议(硬件+软件)。一般的适配器都包括了数据链路层和物理层这两层的功能。
帧(frame):数据链路层的协议数据单元
二、 基本问题
- 封装成帧:在一段数据的前后分别添加首部和尾部,这样就构成了一个帧。
首部和尾部:为帧定界,并含有一些控制信息。
数据部分:网络层的IP数据报。
为了提高帧的传输效率,应当使帧的数据部分长度尽可能地大于首部和尾部的长度。
但是,帧的数据部分长度也存在上限,即最大传送单元 MTU(Maximum Transfer Unit)。
- 透明传输:无论什么样的比特组合的数据,都能够按照原样没有差错地通过这个数据链路层。
- 差错控制:使用循环冗余检验CRC(Cyclic Redundancy Check)实现无比特差错(01错误)传输,而非可靠传输。
三、 使用点对点信道的数据链路层
PPP(Point-to-Point Protocol)
点对点协议,是点对点链路上使用最广泛的数据链路层协议。用户使用拨号电话线接入因特网时,一般都是使用 PPP 协议。
应实现目标 | 不需要的功能 |
---|---|
简单 | 纠错 |
封装成帧 | 流量控制 |
透明性 | 序号 |
多种网络层协议 | 多点线路 |
多种类型链路 | 半双工或单工链路 |
差错检测 | |
检测连接状态 | |
最大传送单元 | |
网络层地址协商 | |
数据压缩协商 |
协议组成:
- 一个将 IP 数据报封装到链路的方法。
- 链路控制协议 LCP(Link Control Protocol)。
- 网络控制协议 NCP(Network Control Protocol)。
帧格式:
F:标志字段,表示帧的开始或结束。连续两帧间只需要一个标志字段。
A:地址字段,不包含信息。
C:控制字段,不包含信息。
协议字段:为0x0021,信息字段为IP数据报;为0xC021,信息字段为链路控制数据;为0x8021时,信息字段为网络控制数据。
信息字段:长度可变,不超过 1500字节。
FCS:帧检验序列,使用CRC算法得出。
透明传输实现方式:
PPP 用在同步传输链路(一连串比特连续传送)时,协议规定采用硬件来完成零比特填充。
- 在发送端,只要发现有 5 个连续 1,则立即填入一个 0。
- 接收端对帧中的比特流进行扫描。每当发现 5 个连续1时,就把这 5 个连续 1 后的一个 0 删除。
PPP 用在异步传输(逐个字符传送)时,就使用一种特殊的字符填充法。
- 信息字段中的每个 0x7E 字节转变成为 2 字节序列 (0x7D, 0x5E)。
- 信息字段中的每个 0x7D 的字节, 转变成为 2 字节序列 (0x7D, 0x5D)。
- 信息字段中的每个 ASCII 码的控制字符(小于0x20 的字符),在该字符前面加入 0x7D 字节,并将该字节改为异或0x20。
不提供可靠传输原因:
- 在数据链路层出现差错的概率不大时,使用比较简单的 PPP 协议较为合理。
- 在因特网环境下,PPP 的信息字段放入的数据是 IP 数据报。数据链路层的可靠传输并不能够保证网络层的传输也是可靠的。
- 帧检验序列 FCS 字段可保证无差错接收。
工作状态:
- 当用户拨号接入 ISP 时,路由器的调制解调器对拨号做出确认,并建立一条物理连接。
- PC 机向路由器发送一系列的 LCP 分组(封装成多个 PPP 帧)。
- 这些分组及其响应选择一些 PPP 参数,和进行网络层配置,NCP 给新接入的 PC机分配一个临时的 IP 地址,使 PC 机成为因特网上的一个主机。
- 通信完毕时,NCP 释放网络层连接,收回原来分配出去的 IP 地址。接着,LCP 释放数据链路层连接。最后释放的是物理层的连接。
四、 使用广播信道的数据链路层
广播信道可以进行一对多的通信。局域网使用的就是广播信道。
局域网
特点:网络为一个单位所拥有,且地理范围和站点数目均有限。
- 具有广播功能,从一个站点可很方便地访问全网。局域网上的主机可共享连接在局域网上的各种硬件和软件资源。
- 便于系统的扩展和逐渐演变,各设备的位置可灵活调整和改变。
- 提高了系统的可靠性(reliability)、可用性(availability)和生存性(survivability)。
按网络拓扑分类:
以太网 属于总线网,在局域网市场中占据绝对优势,几乎成为局域网的代名词。
媒体共享技术:
- 静态划分信道:频分 时分 波分 码分等
- 动态媒体接入控制:或多点接入
- 随机接入:所有用户可随机发送消息,可能产生碰撞,需要解决碰撞的协议。以太网使用这种方式。
- 受控接入:用户服从一定的控制,如分散控制的令牌环局域网,集中控制的轮询。
数据链路层的两个子层:
- LLC(Logical Link Control) 逻辑链路控制子层
- MAC(Medium Access Control) 媒体接入控制子层
在 TCP/IP 体系中,LLC子层的作用不大,几乎消失。
适配器(adapter):
适配器,或网络接口卡NIC,或网卡,装有处理器和存储器(RAM+ROM)。实现以下功能:
- 进行串行/并行转换。
- 对数据进行缓存。
- 在计算机的操作系统安装设备驱动程序。
- 实现以太网协议。
CSMA/CD 协议
Carrier Sense Multiple Access with Collision Detection,载波监听多点接入/碰撞检测
载波监听:检测信道,检测总线上是否有其他计算机在发送。若空闲,等待帧间最小间隔,仍空闲则发送。
多点接入:说明是总线型网络。
碰撞检测:边发送边监听,发现碰撞后,立即停止发送,等待一段随机时间后,再次发送。
\(\tau\) 为总线上单程端到端传播时延,最多经过 \(2\tau\) 时间得知自己发送的数据产生碰撞。即在每个站发送数据后的一小段时间内,存在遭遇碰撞的可能,这一小段时间最大为 \(2\tau\),\(2\tau\) 被称为 争用期 或 碰撞窗口。经过争用期后还没有检测到碰撞,那么这次发送肯定不会发生碰撞。
电磁波在 \(1 km\) 电缆的传播时延约为 \(5 \mu s\)
使用 CSMA/CD 协议时,主机边发送边监听,但不能同时发送和接收,使用半双工信道。
发生碰撞的站在停止发送数据后,要推迟一个随机时间才能再发送数据,使用 二进制指数类型退避算法(truncated binary exponential type)。
- 基本退避时间为争用期 \(2\tau=51.2 \mu s\)。
- 定义重传次数 \(k\) ,\(k \leq 10\),即 \(k = min(重传次数, 10)\)
- 从整数集合 \([0, 1, 2, 3,..., (2^k-1)]\) 中随机地取出一个数,记为 \(r\)。重传所需的时延就是 \(r\) 倍的基本退避时间。
- 当重传达 16 次仍不能成功时即丢弃该帧,并向高层报告。
最短帧长为 64 字节(512bit,10Mbit/s的以太网在争用期发送的bit数)。
因此长度小于 64 字节的帧都是由于冲突而异常终止的无效帧。
帧间最小间隔为 \(9.6 \mu s\),相当于 \(96bit\) 的发送时间。即检测到总线开始空闲后,再等待 \(9.6 \mu s\),才能再次发送。
这样做是为了使刚刚收到数据帧的站的接收缓存来得及清理,做好接收下一帧的准备。
强化碰撞:当发送数据的站一旦发现发生了碰撞时,立即停止发送数据,并继续发送若干比特(32bit或48bit)的人为干扰信号(jamming signal),以便让所有用户都知道现在已经发生了碰撞。
信号利用率:
理想情况下,极限信道利用率:\(S = T_0 / (T_0+\tau) = 1 / (1+\alpha)\)
MAC 层
在局域网中,硬件地址又称为物理地址或 MAC 地址,共48位,6个字节。
IEEE 的注册管理机构 RA 负责向厂家分配地址字段的前三个字节(即高位 24 位)。
地址字段中的后三个字节(即低位 24 位)由厂家自行指派,称为扩展标识符,必须保证生产出的适配器没有重复地址。
适配器从网络上每收到一个 MAC 帧就首先用硬件检查 MAC 帧中的 MAC 地址:
- 如果是发往本站的帧则收下,然后再进行其他的处理。
- 单播(unicast)帧(一对一)
- 广播(broadcast)帧(一对全体)
- 多播(multicast)帧(一对多)
- 否则就将此帧丢弃,不再进行其他的处理。
MAC 帧格式:
以太网v2的MAC帧格式
目的地址:6 字节
源地址:6 字节
类型字段:2 字节 标志上一层使用协议 如:0x0800,表示上层使用 IP 协议
数据字段:46-1500 字节 (帧最小长度64-6-6-2-4=46) 数据长度小于46时填充字段
帧检验序列:使用CRC生成FCS
以太网上传送数据是以帧为单位传送的,各帧之间有一定的间隙。因此,接收端只要找到帧开始定界符,其后面的连续到达的比特流就都属于同一个MAC帧。
因此以太网不需要使用帧结束定界符,也不需要使用字节插入来保证透明传输。
无效MAC帧:
- 帧的长度不是整数个字节;
- 用收到的帧检验序列 FCS 查出有差错;
- 数据字段的长度不在 46 ~ 1500 字节之间。
对于检查出的无效 MAC 帧就简单地丢弃。以太网不负责重传丢弃的帧。
以太网的扩展
扩展的以太网在网络层上仍属于一个网络。
- 在物理层扩展:主机使用光纤和一对光纤调制解调器连接到集线器,使用多个集线器连接成更大的局域网。
- 使原来属于不同碰撞域的局域网上的计算机能够进行跨碰撞域的通信。
- 扩大了局域网覆盖的地理范围。
- 碰撞域(冲突域)增大了,但总的吞吐量并未提高。
- 如果不同的碰撞域使用不同的数据率,那么就不能用集线器将它们互连起来。
- 在数据链路层扩展:使用网桥(bridge)或交换机(sitch 多接口的网桥)对收到的MAC帧进行转发和过滤。不改变帧的源地址。
- 过滤通信量。
- 扩大了物理范围。
- 提高了可靠性。
- 可互连不同物理层、不同 MAC 子层和不同速率(如10 Mb/s 和 100 Mb/s 以太网)的局域网。
- 存储转发增加了时延。
- 在MAC 子层并没有流量控制功能。
- 具有不同 MAC 子层的网段桥接在一起时时延更大。
- 只适合于用户数不太多(不超过几百个)和通信量不太大的局域网,否则可能会因传播过多的广播信息而产生网络拥塞。
网桥的自学习算法:
- 若从 A 发出的帧从接口 x 进入了网桥,那么从这个接口出发沿相反方向一定可把帧传送到 A。
- 收到帧时,记下其源地址和进入网桥的接口,添加到转发表中。
- 转发帧时,查找转发表中与收到帧的目的地址有无相匹配的项目。
- 没有,则通过所有其他接口(进入网桥的接口除外)进行转发。
- 有,则按转发表中给出的接口进行转发。
- 若转发表中给出的接口就是该帧进入网桥的接口,则应丢弃这个帧(不需要网桥转发)。
转发表记录:地址,接口,时间
生成树协议:不改变网络的实际拓扑,在逻辑上切断某些链路,保证从一台主机到所有其他主机的路径是无环路的树状结构,避免帧在网络中不断兜圈子。
虚拟局域网
虚拟局域网 VLAN 是由一些局域网网段构成的与物理位置无关的逻辑组,而这些网段具有某些共同的需求。每一个 VLAN 的帧都有一个明确的标识符,指明发送这个帧的计算机是属于哪一个 VLAN。
虚拟局域网其实只是局域网给用户提供的一种服务,而并不是一种新型局域网。
虚拟局域网限制了接收广播信息的工作站数,使得网络不会因传播过多的广播信息 (广播风暴)而引起性能恶化。
五、 无线局域网(WLAN)
IEEE 802.11 是无线局域网的协议标准。使用星型拓扑,其中心为 接入点 (AP,Access Point)。在MAC层使用 CSMA/CA 协议。凡使用该协议的局域网又叫做 Wi-FI。
无线局域网的最小构件是 基本服务集BSS (Basic Service Set),一个BSS包括一个基站和若干个移动站。接入点 AP 即为基站,其作用与网桥相似。
当网络管理员安装 AP 时,必须为该 AP 分配一个不超过 32 字节的服务集标识符 SSID 和一个信道。SSID 即为使用该 AP 的无线局域网的名字。
一个基本服务集可以是孤立的,也可通过接入点 AP 连接到一个主干分配系统 DS(Distribution System),然后再接入到另一个基本服务集,构成扩展的服务集ESS(Extended
Service Set)。分配系统可以使用以太网,点对点链路或其他无线网络。
一个移动站若要加入到一个基本服务集 BSS,就必须先选择一个接入点 AP,并与此接入点建立关联。
建立关联就表示这个移动站加入了选定的 AP 所属的子网,并和这个 AP 之间创建了一个虚拟线路。
只有关联的 AP 才向这个移动站发送数据帧,而这个移动站也只有通过关联的 AP 才能向其他站点发送数据帧。
建立关联的方法:
- 被动扫描,即移动站等待接收接入站周期性发出的信标帧(beacon frame)。
信标帧中包含有若干系统参数(如服务集标识符 SSID 以及支持的速率等)。 - 主动扫描,即移动站主动发出探测请求帧(probe request frame),然后等待从 AP 发回的探测响应帧(probe response frame)。
MAC 层
通过协调功能(Coordination Function)来确定在基本服务集BSS中的移动站,在什么时间能发送数据或接收数据。包含两个子层:
- DCF:分布协调功能(必有),使用 CSMA 机制的分布式接入算法,让各个站通过争用信道来获取发送权。
- PCF:点协调功能(选项),使用 AP 集中控制,把发送数据权轮流交给各个站从而避免了碰撞的产生 。
所有的站在完成发送后,必须等待 帧间间隔IFS (InterFrame Space)后才能发送下一帧。
IFS长度取决于该站欲发送的帧的类型。高优先级帧需要等待的时间较短。
- SIFS,即 short IFS,使用 SIFS 的帧类型有:ACK帧、CTS帧、由过长
的MAC帧分片后的数据帧,以及回答AP探询的帧和在PCF方式中接入点
AP发送的任何帧。 - PIFS,即点协调功能帧间间隔,是为了在开始使用 PCF 方式时优先获得接入到媒体中。PIFS 的长度是 SIFS 加一个时隙长度。
- DIFS,即分布协调功能帧间间隔,在 DCF 方式中用来发送数据帧和管理帧。DIFS 的长度比 PIFS 再增加一个时隙长度。
时隙(slot)长度:在一个基本服务集 BSS 内当某个站在一个时隙开始时接入到媒体时,那么在下一个时隙开始时,其他站就都能检测出信道已转变为忙态。
链路层确认(ACK):
目的站点收到一个通过 CRC 校验的帧后,等待 SIFS 时间,发回一个确认帧。
如果发送站点在给定的时间内未收到确认帧,则重传。
CSMA/CA 协议
虽然CSMA/CD协议成功地应用于使用有线连接的局域网,但 CD(碰撞检测)在无线环境下却不能使用。理由如下:
- 无线局域网,接收信号的强度往往小于发送信号的强度,因此若要实现碰撞检测,硬件上的花费过大
- 无线局域网中,并非所有的站点都能听见对方(隐蔽站与暴露站问题)
CA:Collision Avoidance 碰撞避免
CSMA/CA 协议:
- 若站点最初有数据要发送,且检测到信道空闲,在等待时间 DIFS 后,发送
- 否则,站点执行退避算法。一旦检测到信道忙,冻结退避计时器。只要信道空闲,退避计时器开始计时
- 当退避计时器时间减少到零时(信道肯定是空闲状态),发送
- 发送站若收到确认,则发送成功。如果要发送第二帧,从步骤2开始
802.11 同样使用 二进制指数退避算法 ,但具体做法略有不同。
- 第 i 次退避是在时隙 \([0, 1, 2, 3,..., 2^{2 + i} -1 ]\) 中随机地选择一个。当编号达到255(i=6)时,不再增加。
- 站点每经历一个时隙的时间就检测一次信道。这可能发生两种情况。
- 若检测到信道空闲,退避计时器就继续倒计时。
- 若检测到信道忙,就冻结退避计时器的剩余时间,重新等待信道变为空闲并再经过时间 DIFS 后,从剩余时间开始继续倒计时。如果退避计时器的时间减小到零时,就开始发送整个数据帧。
仅在下面的情况下才不使用退避算法:检测到信道是空闲的,并且这个数据帧是要发送的第一个数据帧。
除此以外的所有情况,都必须使用退避算法。即:
- 在发送第一个帧之前检测到信道处于忙态。
- 在每一次的重传后。
- 在每一次的成功发送后。
预约信道:
- A 在向 B 发送数据帧之前,先发送一个短的控制帧,请求发送 RTS(Request To Send),包括源地址、目的地址和这次通信(SIFS+CTS+SIFS+数据帧+SIFS+ACK)所需的持续时间。
- 若 B 正确收到 A 发来的 RTS 帧,且媒体空闲,则等待 SIFS 后,向 A 发送允许发送控制帧 CTS(Clear To Send),包括这次通信(SIFS+数据帧+SIFS+ACK)所需的持续时间。
- A 收到 CTS 帧后,再等待 SIFS 后,就可发送数据帧。
上述两个持续时间即 A 和 B 的 网络分配向量NAV (Network Allocation Vector)。
NAV 指出了必须经过多少时间才能完成数据帧的这次传输,才能使信道转入到空闲状态。
MAC 帧
802.11 帧共有三种类型,即控制帧、数据帧和管理帧。
地址字段:地址4用于自组网络
序号控制字段:占 16 位,其中序号子字段占 12 位,分片子字段占 4 位。
持续段字段:占 16 位。
帧控制字段:共分为 11 个子字段。
- 协议版本字段现在是 0。
- 类型字段和子类型字段用来区分帧的功能。
- 更多分片字段置为 1 时表明这个帧属于一个帧的多个分片之一。
- 有线等效保密字段 WEP 占 1 位。若 WEP = 1,就表明采用了 WEP 加密算法。
分片的发送:
参考资料:《计算机网络》 谢希仁 著
原文地址:https://www.cnblogs.com/JL916/p/12079948.html