计算机网络 —— 数据链路层

计算机网络 —— 数据链路层

一、 基本概念

链路(link):物理链路,一条无源的点到点的物理线路段,中间没有其他交换结点。一条链路只是一条通路的一个组成部分。
数据链路(data link):逻辑链路,= 物理链路 + 通信协议(控制数据传输)。现在最常用的方法是使用 适配器(网卡) 来实现协议(硬件+软件)。一般的适配器都包括了数据链路层和物理层这两层的功能。

帧(frame):数据链路层的协议数据单元

二、 基本问题

  1. 封装成帧:在一段数据的前后分别添加首部和尾部,这样就构成了一个帧。
    首部和尾部:为帧定界,并含有一些控制信息。
    数据部分:网络层的IP数据报。
    为了提高帧的传输效率,应当使帧的数据部分长度尽可能地大于首部和尾部的长度。
    但是,帧的数据部分长度也存在上限,即最大传送单元 MTU(Maximum Transfer Unit)。
  2. 透明传输:无论什么样的比特组合的数据,都能够按照原样没有差错地通过这个数据链路层。
  3. 差错控制:使用循环冗余检验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 字段可保证无差错接收。

工作状态

  1. 当用户拨号接入 ISP 时,路由器的调制解调器对拨号做出确认,并建立一条物理连接。
  2. PC 机向路由器发送一系列的 LCP 分组(封装成多个 PPP 帧)。
  3. 这些分组及其响应选择一些 PPP 参数,和进行网络层配置,NCP 给新接入的 PC机分配一个临时的 IP 地址,使 PC 机成为因特网上的一个主机。
  4. 通信完毕时,NCP 释放网络层连接,收回原来分配出去的 IP 地址。接着,LCP 释放数据链路层连接。最后释放的是物理层的连接。

四、 使用广播信道的数据链路层

广播信道可以进行一对多的通信。局域网使用的就是广播信道。

局域网

特点:网络为一个单位所拥有,且地理范围和站点数目均有限。

  1. 具有广播功能,从一个站点可很方便地访问全网。局域网上的主机可共享连接在局域网上的各种硬件和软件资源。
  2. 便于系统的扩展和逐渐演变,各设备的位置可灵活调整和改变。
  3. 提高了系统的可靠性(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 帧就简单地丢弃。以太网不负责重传丢弃的帧。

以太网的扩展

扩展的以太网在网络层上仍属于一个网络。

  1. 在物理层扩展:主机使用光纤和一对光纤调制解调器连接到集线器,使用多个集线器连接成更大的局域网。

    • 使原来属于不同碰撞域的局域网上的计算机能够进行跨碰撞域的通信。
    • 扩大了局域网覆盖的地理范围。
    • 碰撞域(冲突域)增大了,但总的吞吐量并未提高。
    • 如果不同的碰撞域使用不同的数据率,那么就不能用集线器将它们互连起来。
  2. 在数据链路层扩展:使用网桥(bridge)或交换机(sitch 多接口的网桥)对收到的MAC帧进行转发和过滤。不改变帧的源地址
    • 过滤通信量。
    • 扩大了物理范围。
    • 提高了可靠性。
    • 可互连不同物理层、不同 MAC 子层和不同速率(如10 Mb/s 和 100 Mb/s 以太网)的局域网。
    • 存储转发增加了时延。
    • 在MAC 子层并没有流量控制功能。
    • 具有不同 MAC 子层的网段桥接在一起时时延更大。
    • 只适合于用户数不太多(不超过几百个)和通信量不太大的局域网,否则可能会因传播过多的广播信息而产生网络拥塞。

网桥的自学习算法

  1. 若从 A 发出的帧从接口 x 进入了网桥,那么从这个接口出发沿相反方向一定可把帧传送到 A。
  2. 收到帧时,记下其源地址和进入网桥的接口,添加到转发表中。
  3. 转发帧时,查找转发表中与收到帧的目的地址有无相匹配的项目。
    • 没有,则通过所有其他接口(进入网桥的接口除外)进行转发。
    • 有,则按转发表中给出的接口进行转发。
    • 若转发表中给出的接口就是该帧进入网桥的接口,则应丢弃这个帧(不需要网桥转发)。

转发表记录:地址,接口,时间

生成树协议:不改变网络的实际拓扑,在逻辑上切断某些链路,保证从一台主机到所有其他主机的路径是无环路的树状结构,避免帧在网络中不断兜圈子。

虚拟局域网

虚拟局域网 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 协议

  1. 若站点最初有数据要发送,且检测到信道空闲,在等待时间 DIFS 后,发送
  2. 否则,站点执行退避算法。一旦检测到信道忙,冻结退避计时器。只要信道空闲,退避计时器开始计时
  3. 当退避计时器时间减少到零时(信道肯定是空闲状态),发送
  4. 发送站若收到确认,则发送成功。如果要发送第二帧,从步骤2开始

802.11 同样使用 二进制指数退避算法 ,但具体做法略有不同。

  • 第 i 次退避是在时隙 \([0, 1, 2, 3,..., 2^{2 + i} -1 ]\) 中随机地选择一个。当编号达到255(i=6)时,不再增加。
  • 站点每经历一个时隙的时间就检测一次信道。这可能发生两种情况。
    • 若检测到信道空闲,退避计时器就继续倒计时。
    • 若检测到信道忙,就冻结退避计时器的剩余时间,重新等待信道变为空闲并再经过时间 DIFS 后,从剩余时间开始继续倒计时。如果退避计时器的时间减小到零时,就开始发送整个数据帧。

仅在下面的情况下才不使用退避算法:检测到信道是空闲的,并且这个数据帧是要发送的第一个数据帧。
除此以外的所有情况,都必须使用退避算法。即:

  • 在发送第一个帧之前检测到信道处于忙态。
  • 在每一次的重传后。
  • 在每一次的成功发送后。

预约信道

  1. A 在向 B 发送数据帧之前,先发送一个短的控制帧,请求发送 RTS(Request To Send),包括源地址、目的地址和这次通信(SIFS+CTS+SIFS+数据帧+SIFS+ACK)所需的持续时间。
  2. 若 B 正确收到 A 发来的 RTS 帧,且媒体空闲,则等待 SIFS 后,向 A 发送允许发送控制帧 CTS(Clear To Send),包括这次通信(SIFS+数据帧+SIFS+ACK)所需的持续时间。
  3. 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

时间: 2024-11-10 11:14:10

计算机网络 —— 数据链路层的相关文章

计算机网络数据链路层

1.数据链路层使用的信道类型: 点对点信道(1对1) 广播信道(1对多),如:集线器.交换机 2.链路与数据链路: 链路:点对点的物理线路段,中间无任何其他交换结点 数据链路:通信协议 + 软件 + 硬件(一般用适配器即网卡来实现这些协议的软硬件,一般的适配器都包含了链路层和物理层这两层的功能) 3.数据链路层要解决的3个基本问题: 封装成帧:帧头尾用于界定帧 透明传输:发送前用转义字符(ESC)插入到数据包中包含的帧头.尾相同字符 差错检测:接收端用循环冗余检测(CRC)技术计算无余数时,才接

计算机网络--数据链路层

物理层 数据链路层:研究怎么从一个主机传送到另一个主机(在一个局域网内) 使用点对点信道 桢--点对点信道数据链路层的协议数据单元 IP数据报(PDU)--网络层的协议数据单元网络层 传送方式:见下图 三个基本问题 封装成桢:在一段数据前后添加首部和尾部7 首部和尾部作用就是:帧定界 最大传送单元MTU--帧的数据部分小于这个值 帧定界符:SOH和EOT(他们是二进制代码:分别为1和4).(这个东西在传输出现差错的时候作用明显,传送不完全的时候,我们可以通过帧定界符判断这个帧是否完全. 透明传输

计算机网络——数据链路层(PPP)

数据链路层使用的信道主要有以下两种类型: (1)点对点信道 (2)广播信道 使用点对点信道的数据链路层 首先明确一下"链路"和"数据链路"并不是一回事. 所谓链路,指的是从一个结点到相邻结点的一段物理线路,而中间没有任何其他的交换结点. 数据链路除了必须有一条物理线路以外,还必须有一些必要的通信协议来控制这些数据的传输.若把视线这些协议的硬件和软件加到链路上,就构成了数据链路. 点对点信道的数据链路层的协议数据单元为帧 点对点信道的数据链路层在进行通信时的主要步骤:

[技术栈]CRC校验原理及C#代码实现CRC16、CRC32计算FCS校验码

1.CRC.FCS是什么 CRC,全称Cyclic Redundancy Check,中文名称为循环冗余校验,是一种根据网络数据包或计算机文件等数据产生简短固定位数校验码的一种信道编码技术,主要用来检测或校验数据传输或者保存后可能出现的错误.它是利用除法及余数的原理来作错误侦测的. FCS,全称Frame Check Sequence,中文名称为帧校验序列,俗称帧尾,即计算机网络数据链路层的协议数据单元(帧)的尾部字段,是一段4个字节的循环冗余校验码. 注:CRC循环冗余校验和FCS帧校验序列是

计算机网络读书笔记-----数据链路层的可靠性

此篇是为了引出TCP的可靠机制. 停止等待协议: 在计算机网络发展的初期,通信网的传输质量普遍不是很好,所以数据传输的差错率较大.所以数据链路层就必须解决可靠传输的问题. 停止等待是最简单也是最基本的数据链路层协议 工作原理如下: 发送端每发送完一帧后就停止发送,等待接收端的确认,如果收到了接收端发来的确认帧,就继续发送下一帧. 在接收端,每收到一个无差错的帧,就将其交付给上层,并给发送端返回一个确认帧. 接收端如果收到有差错的帧,就悄悄的丢弃这个帧,其余什么也不做.发送端长时间没有收到接收端发

计算机网络 第三章 数据链路层

1.数据链路层基本概念及基本问题:                 2)基本问题:             ① 封装成帧:帧头+数据+帧尾+校验和                 封装成帧(framing)就是在一段数据的前后分别添加首部和尾部,然后就构成了一个帧,确定帧的界限.                 首部和尾部的一个重要的作用就是进行帧定界. 用控制字符进行帧定界的方法举例: ② 透明传输:加转义字符,后再去掉转义字符,就跟没加一样.                 若传输的数据是A

计算机网络01:数据链路层-基本介绍

1. 总体认识 如今TCP/IP协议簇已是计算机网络的主流协议框架,它是一个四层协议,依下往上分为网络接口层.网络层.传输层.应用层.有很多人将网络接口层分为物理层和数据链路层,因此也称为五层协议.物理层考虑的是如何连接不同主机的传输媒体设备,以便完成网络通信,主要是一些硬件的规范:数据链路层则是考虑在一个局域网内,如何将网络数据从一个主机传输到另一个主机.本文将从数据链路层开始,探索计算机网络基本原理. 数据链路层在五层协议中的位置如下图所示,我们只需关注它与网络层和物理层的交互.当网络层的I

计算机网络读书笔记-----数据链路层

首先区分链路与数据链路的概念 链路只是从一个节点到相邻节点的一段物理线路,中间没有任何其他的交换节点.所以说链路只是一条路径的组成部分. 数据链路:是必要的物理线路和必要的通信协议构成数据链路. 数据链路层的协议数据单元---帧 类似在网络层协议数据单元是IP数据报 路由器的协议栈只有三层:网络层,链路层,物理层 数据链路层的任务是:把网络层交下来的数据发送到链路上,以及把接收到的帧中的数据取出并上交给网络层. 当两个主机进行通信时:应用进程将数据从应用层逐层往下传,经过传输层再到网络层,网络层

计算机网络基础---数据链路层

数据链路层知识梳理 在数据链路层传输的数据单位为:帧 链路和数据链路 链路:一条点到点的物理线路. 数据链路:除了物理线路外,还必须有通信协议来控制这些数据的传输. 若把实现这些协议的硬件和软件加到链路上,就构成了数据链路.(用网卡来实现这些协议的硬件和软件) 数据发送的模型 数据链路层主要使用的通道: 广播讯道: 一对多通信,一个节点发送的数据能够被广播信道上所有的节点接收到. 所有的节点都在同一个广播信道上发送数据,因此需要有专门的控制方法进行协调,避免发生冲突(冲突也叫碰撞). 主要有两种