计算机网络学习笔记——数据链路层(b站)

本文详细介绍了数据链路层的关键概念,包括帧的封装、错误检测(奇偶校验和CRC)、可靠传输服务的实现(如停止-等待、回退N帧和选择重传协议),以及在点对点和广播信道中使用的PPP、CSMA/CD、CSMA/CA协议,以及VLAN和MAC地址的相关知识。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

数据链路层

链路:从一个结点到相邻结点的一段物理线路,且中间没有其他任何交换结点

数据链路层的三个重要问题

①封装成帧(帧头+帧尾)

帧头帧尾的作用之一就是帧界定(开始、结束)

使用字节填充的方式实现透明传输

为了提高帧的传输速率,应当使帧的数据部分长度尽可能大些

最大传送单元MTU(Maximum Transfer Unit)规定了帧的数据部分的长度上限

②差错检测

奇偶校验:在待发送的数据后面添加1位奇偶校验位,使整个数据(包括所添加的校验位在内)中“1”的个数为奇数(奇校验)或偶数(偶校验)
如果有奇数个位发生误码则奇偶性发生变化,可以检查出误码,
如果有偶数个位发生误码,,则奇偶性不发生变化,不能检查出误码(漏检)

循环冗余校验CRC(Cyclic Redundancy Check)

收发双方约定好一个生成多项式G(x);
发送方基于待发送的数据和生成多项式计算出差错检测码将其添加到待传输数据的后面一起传输;(冗余码)

接收方通过生成多项式来计算收到的数据是否产生了误码:

③可靠传输:误码不可避免,但能实现发送方发送什么,接收方就能收到什么,就是可靠传输

数据链路层向上层提供的服务:

不可靠传输服务:丢弃有误码的帧

可靠传输服务:想办法实现发送端发送什么,接收端就收到什么

(一般有线线路误码率低,为减小开销,不要求数据链路层向上提供可靠传输服务,出现误码由上层处理;无线链路易受干扰,误码率高,要求数据链路层向上层提供可靠传输服务)

传输差错类型:比特差错、分组丢失、分组失序、分组重复

(分组丢失、分组失序、分组重复一般不在数据链路层,在其上层)

可靠传输服务不仅局限于数据链路层,IP向上层提供无连接、不可靠传输服务,TCP向上层提供有连接、可靠传输服务,UDP向上层提供无连接、不可靠传输服务)

下面介绍可靠传输的三种实现机制(不仅局限于数据链路层)

1)停止-等待协议(Stop and Wait)

接收端检测到数据分组有误码时,将其丢弃并等待发送方的超时重传。但对于误码率较高的点对点链路,为使发送方尽早重传,也可给发送方发送NAK分组

为了让接收方能够判断所收到的数据分组是否是重复的,需要给数据分组编号。由于停止-等待协议的停等特性,只需1个比特编号就够了,即编号0和1。

为了让发送方能够判断所收到的ACK分组是否是重复的,需要给ACK分组编号,所用比特数量与数据分组编号所用比特数量一样,数据链路层一般不会出现ACK分组迟到的情况,因此在数据链路层实现停止-等待协议可以不用给ACK分组编号
超时计时器设置的重传时间应仔细选择。一般可将重传时间选为略大于“从发送方到接收方的平均往返时间”

停止-等待协议信道利用率U=Td /( Td + RTT + Ta )

2)回退N帧协议CBN(Go-Back-N)

发送方

发送窗口尺寸Wτ的取值范围是1< Wτ≤ 2^n-1,其中,n是构成分组序号的比特数量。
(Wτ=1停止-等待协议,Wτ>2^n-1 接收方无法分辨新、旧数据分组)
发送方可在未收到接收方确认分组的情况下,将序号落在发送窗口内的多个数据分组全部发送出去;
发送方只有收到对已发送数据分组的确认时,发送窗口才能向前相应滑动;
发送方收到多个重复确认时,可在重传计时器超时前尽早开始重传,由具体实现决定。
发送方发送窗口内某个已发送的数据分组产生超时重发时,其后续在发送窗口内且己发送的数据分组也必须全部重传,这就是回退N帧协议名称的由来。

接收方

接收方的接收窗口尺寸为1,因此接收方只能按序接收数据分组。
接收方只接收序号落在接收窗口内且无误码的数据分组,并且将接收窗口向前滑动一个位置,与此同时给发送方发回相应的确认分组。为了减少开销,接收方不一定每收到一个按序到达且无误码的数据分组就给发送方发回一个确认分组,而是可以在连续收到好几个按序到达且无误码的数据分组后(由具体实现决定),才针对最后一个数据分组发送确认分组,这称为累积确认;或者可以在自己有数据分组要发送时才对之前按序接收且无误码的数据分组进行捎带确认;
接收方收到未按序到达的数据分组,除丢弃外,还要对最近按序接收的数据分组进行确认;

3)选择重传协议SR(Selective Request)

解决了回退N帧协议中一个数据分组的误码会导致其后续多个数据分组不能被接收方按序接收而丢弃(尽管它们无乱序和误码)

选择重传协议接收方不能再采用累积确认,而需要对每个正确接收到的数据分组进行逐一确认!

发送方

发送窗口尺寸W的取值范围是 1< Wτ≤ 2^n-1,其中,n是构成分组序号的比特数量。
(Wτ=1停止-等待协议,Wτ>2^n-1 接收方无法分辨新、旧数据分组)
发送方可在未收到接收方确认分组的情况下,将序号落在发送窗口内的多个数据分组全部发送出去;
发送方只有按序收到对已发送数据分组的确认时,发送窗口才能向前相应滑动;若收到未按序到达的确认分组时,对其进行记录,以防止其相应数据分组的超时重发,但发送窗口不能向前滑动

接收方

接收窗口尺寸Wr的取值范围是1<Wr<=Wt

(Wr=1停止-等待协议   Wr>Wt无意义)

接收方可接收未按序到达但没有误码并且席号落在接收窗口内的数据分组;
为了使发送方仅重传出现差错的分组,接收方不能再采用累积确认,而需要对每个正确接收到的数据分组进行逐一确认!
接收方只有在按序接收数据分组后,接收窗口才能向前相应滑动。

①使用点对点信道的数据链路层

点对点协议PPP(Point-to-Point Protocol)

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

a.共享式局域网(CSMA/CD)

b.交换式局域网(802.11 CSMA/CA)

媒体接入控制:共享信道要着重考虑的一个问题就是如何协调多个发送和接收站点对一个共享传输媒体的占用

信道复用:一条物理线路同时传输多路用户的信号

静态划分信道

a.频分复用FDM:多个用户同时占用不同的频带资源并行通信

b.时分复用TDM:多个用户在不同的时间占用同样的频带宽度

c.波分复用WDM

d.码分复用CDM(多址接入)

各用户使用经过特殊挑选的不同码型,因此各用户之间不会造成干扰

(使用CDMA的每一个站被指派一个唯一的m bit码片序列,一个站如果要发送比特1,则发送它自己的m bit码片序列;一个站如果要发送比特0,则发送它自己的m bit码片序列的二进制反码)

(如指派给CDMA系统中某个站点的码片序列为00011011,发送比特1:发送自己的码片序列00011011,发送比特0:发送自己的码片序列的二进制反码11100100)

(码片序列的挑选原则如下:
1.分配给每个站的码片序列必须各不相同实际常采用伪随机码序列。2.分配给每个站的码片序列必须相互正交(规格化内积为0)(将0写为-1,将1写为+1)。)

动态划分信道

载波监听多址接入/碰撞检测 CSMA/CD(Carrier Sense Multiple Access/Colision Detection)

多址接入MA:多个站连接在一条总线上,竟争使用总线。

载波监听CS:每一个站在发送帧之前先要检测.下总线上是否有其他站点在发送帧(“先听后说”):
若检测到总线空闲96比特时间则发送这个帧;若检测到总线忙,则继续检测并等待总线转为空闲96比特时间,然后趴譴鎵洞阌芍躕振萨琤柚送这个帧.

碰撞检测CD:每一个正在发送帧的站边发送边检测碰撞(“边说边听”)。一旦发现总线上出现碰撞,则立即停止发送,退避一段随机时间后再次发送(“一旦冲突,立即停说,等待时机,重新再说”)。

CSMA/CD协议—争用期(碰撞窗口):主机最多经过2T就可检测到本次发送是否遭受到了碰撞(T为以太网单程端到端传播延时)

CSMA/CD协议—最小帧长:64字节,即512比特(512比特时间即为争用期)

(最小帧长确保了主机可在帧发送完成之前就检测到该帧的发送过程中是否遭遇到了碰撞。如果在争用期(共发送64字节)没有检测到碰撞,那么后续发送的数据就一定不会发生碰撞;如果在争用期内检测到碰撞,就立即中止发送,这时已经发送出去的数据一定小于64字节,因此凡长度小于64字节的帧都是由于碰撞而异常中止的无效帧。)

CSMA/CD协议—最大帧长:限制最大帧长避免接收方缓冲区满;避免一个主机占用太久时间

CSMA/CD协议——截断二进制指数退避算法:退避时间=基本退避时间(2T)*随机数r(r从离散的整数集合{0,1,...,(2^k-1)}中随机选出一个数 (k=min[重传次数,10] )

(重传需要推迟的平均时间随重传次数增大而增大)

载波监听多址接入/碰撞避免 CSMA/CA(Carrier Sense Multiple Access/Collision Avoidance)

802.11无线局域网使用CSMA/CA协议,还使用数据链路层停止-等待协议

无线局域网不能使用碰撞检测①无线网卡上实现碰撞检测对硬件要求非常高②存在隐蔽站问题,进行碰撞检测的意义不大

隐蔽站问题

帧间间隔IFS(InterFrame Space):站点必须在持续检测到信道空闲一段指定时间后才能发送帧,这段时间间隔称为IFS

(高优先级帧的IFS短,等待时间短,在低优先级帧还没来得及发送时,高优先级帧已经发送了,此时低优先级帧只能推迟发送了)

常见帧间间隔:

短帧间间隔SIFS:用来分隔属于一次对话的各帧,一个站点应当能够从这段时间内从发送方式切换的接收方式

DCF帧间间隔DIFS:在DCF方式中用来发送数据帧和管理帧

CSMA/CA协议的退避算法
在执行退避算法时,站点为退避计时器设置一个随机的退避时间:
当退避计时器的时间减小到零时,就开始发送数据;
当退避计时器的时间还未减小到零时而信道又转变为忙状态,这时就冻结退避计时器的数值,重新等待信道变为空闲,再经过时间DIFS后,继续启动退避计时器。

源站为什么要在检测到信道空闲后还要等待一段时间DIFS?

考虑到可能有其他的站有高优先级的帧要发送,若有,就要让高优先级帧先发送

目的站为什么正确接收数据帧后还要等待一段时间SIFS才能发送ACK帧?

在这个时间间隔内,站点应当能从发送方式切换到接收方式

信道由忙转为空闲且经过DIFS时间后,还要退避一段随机事件才能使用信道?

防止多个站点同时发送数据而产生碰撞

当站点检测到信道是空闲的,并且所发送的数据帧不是成功发送完上一个数据帧之后立即连续发送的数据帧,则不使用退避算法。
以下情况必须使用退避算法:
①在发送数据帧之前检测到信道处于忙状态时:
②在每一次重传一个数据帧时;
③在每一次成功发送后要连续发送下一个帧时(这是为了避免一个站点长时间占用信道)

CSMA/CA协议的信道预约

为了尽可能减少碰撞的概率和降低碰撞的影响,802.11标准允许要发送数据的站点对信道进行预约。

(1)源站在发送数据帧之前先发送一个短的控制帧,称为请求发送RTS(ReqveslTosend),它包括源地址、目的地址以及这次通信(包括相应的确认帧)所需的持续时间。
(2)若目的站正确收到源站发来的RTS帧,且媒体空闲,就发送一个响应控制帧,称为允许发送CTS(Clear ToSen),它也包括这次通信所需的持续时间(从RTS帧中将此持续时间复制到CTS帧中)。
(3)源站收到CTS帧后,再等待一段时间SIFS后,就可发送其数据帧。
(4)若目的站正确收到了源站发来的数据帧,在等待时间SIFS后,就向源站发送确认帧ACK。
除源站和目的站以外的其他各站,在收到CTS帧(或数据帧)后就推迟接入到无线局域网中。这样就保证了源站和目的站之间的通信不会受到其他站的干扰
如果RTS帧发生碰撞,源站就收不到CTS帧,需执行退避算法重传RTS帧,由于RTS帧和CTS帧很短,发送碰撞的概率、碰撞产生的开销及本身的开销都很小。而对于一般的数据帧,其发送时延往往碰撞的概率很大,且一旦发生碰撞而导致数据帧重发,则浪费的时间就很多,因此用很大于传播时延(因为是局域网)小的代价对信道进行预约往往是值得的。

CSMA/CA协议的虚拟载波监听机制

除RTS帧和CTS帧会携带通信需要持续的时间,数据帧也能携带通信需要持续的时间,这称为802.11的虚拟载波监听机制。
由于利用虚拟载波监听机制,站点只要监听到RTS帧、CTS帧或数据帧中的任何一个,就能知道信道被占用的持续时间,而不需要真正监听到信道上的信号,因此虚拟载波监听机制能减少隐蔽站带来的碰撞问题

MAC地址/物理地址/硬件地址(数据链路层!而非物理层)

标识发送主机和接收主机的地址

表示方式:XX-XX-XX-XX-XX-XX或XX:XX:XX:XX:XX:XX或XXXX.XXXX.XXXX

地址解析协议ARP

将IP地址解析为MAC地址

集线器与交换机对比

集线器:使用集线器作为互连设备的以太网仍然属于共享总线式以太网。集线器互连起来的所有主机共享总线带宽,属于同一个碰撞域和广播域。【淘汰】

交换机:根据MAC地址对帧进行转发,隔离碰撞域但不隔离广播域(VLAN除外)【广泛使用】

以太网交换机自学习

以太网交换机的生成树协议STP

冗余链路可以提高以太网的可靠性,但也会带来问题

a.广播风暴:大量消耗网络资源,使得网络无法正常转发其他数据帧

b.主机收到重复的广播帧:大量消耗主机资源

c.交换机的帧交换表震荡

在增加冗余链路提高网络可靠性的同时又避免网络环路

以太网交换机使用生成树协议STP(Spanning Tree Protocol)可以在增加冗余链路来提高网络可靠性的同时又避免网络环路带来的各种问题

--不论交换机之间采用怎样的物理连接,交换机都能够自动计算并构建一个逻辑上没有环路的网络,其逻辑拓扑结构必须是树型的(无逻辑环路);
--最终生成的树型逻辑拓扑要确保连通整个网络
--当首次连接交换机或网络物理拓扑发生变化时(有可能是人为改变或故障),交换机都将进行生成树的重新计算。

虚拟局域网VLAN(Virtual Local Area Network)

是一种将局域网内的设备划分成与物理位置无关的逻辑组的技术,这些逻辑组具有某些共同的需求。

(解决广播风暴问题)

VLAN实现机制:

对以太网的MAC帧格式插入了4字节的VLAN标记

Access端口一般用于连接用户计算机

Access端口接收处理方法:
一般只接受“未打标签”的普通以太网MAC帧。根据接收帧的端口的PVID给帧“打标签”,即插入4字节VLAN标记字段,字段中的VID取值与端口的PVID取值相等。
Access端口发送处理方法:
若帧中的VID与端口的PVID相等,则“去标签并转发该帧;否则不转发。

Trunk端口一般用于交换机之间或交换机与路由器之间的互连

Trunk端口发送处理方法:对VID等于PVID的帧,“去标签”再转发对VID不等于PVID的帧,直接转发

Hybrid端口既可用于交换机之间或交换机与路由器之间的互连(同Trunk端口),也可用于交换机与用户计算机之间的互连(同Access端口)

Hybrid端口发送处理方法(与Trunk端口不同)查看帧的VID是否在端口的“去标签”列表中:若存在,则“去标签”后再转发,若不存在,则直接转发。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值