北工大计算机网络95分复习——【第三章 数据链路层】

本文详细介绍了数据链路层的功能,包括数据帧的管理、服务类型、成帧、差错控制和流量控制。重点讲解了停-等协议、滑动窗口协议及其在有错信道上的应用,以及数据链路协议如PPP和ADSL的实际应用。
摘要由CSDN通过智能技术生成

两台机器之间可靠有效的完整信息块(帧)通信算法。

协议需要考虑——出错、延迟。

3.1数据链路层设计问题

数据链路层使用物理层提供的服务通信信道发送和接收比特

功能:

      Provide service interface to the network layer

      1.向网络层提供一个定义良好的服务接口

      Transmit frames of information over a single link

      通过单个链路传输信息帧

      ·Handle errors occurred during transmission

      2.处理传输错误

      ·Regulate the flow of data

             Slow receivers don’t get swamped by fast senders

      3.调节数据流,确保慢速的接收方不会被快速的发送方所淹没

3.1.1数据帧

数据链路层从网络层获取到数据包,然后将其封装成frame 以便传输。

数据链路层工作的核心帧的管理

Frame 帧头 header、有效荷载 payload field、帧尾 trailer

传输过程:

Link layer accepts packets from the network layer and encapsulates(封装) them into frames before sending them using the physical layer. Reception is the opposite process.

Relationship between packets and frames 数据包和帧的关系:

·A packet from the network layer becomes the payload (pure data) of the link layer

·Link layer turns a packet into a frame by adding the control fields (header and trailer)

3.1.2提供给网络层的服务

数据链路层最主要的服务是将数据从源机器的网络层传输到目标机器的网络层

网络层的实体——进程,将比特交给数据链路层。

 

虚拟通信                         实际通信

Placement of the data link protocol

提供的3种服务:

      ·无确认的无连接服务

      ·有确认的无连接服务

      ·有确认的有连接服务

Unacknowledged connectionless service 无确认的无连接服务:

      ·Frame is sent without connection/error recovery

             无帧的确认 无逻辑连接 不检测丢帧 不尝试恢复丢失的帧

      ·Example: Ethernet

      ·应用场景:错误率低、恢复交给上一层;实时通信、语音传输

Acknowledged connectionless service 有确认的无连接服务:

      ·Frame is sent with retransmissions if necessary

             每一帧要单独确认 无逻辑连接 检测丢帧重发

      ·Example: 802.11 (WiFi)

      ·应用场景:不可靠的信道、无线系统

Ps:可靠信道上,重量级数据链路协议开销大,效率低;不可靠信道上值得。

Acknowledged connection-oriented service 有确认的有连接服务:

      ·A connection is set up before frames are sent

             在传输任何数据之前要建立一个连接,每一帧被编号,确保正确顺序接收,且只接受一次

      ·Example: 卫星信道或长途电话(长距离、不可靠信道)

3.1.3成帧

将比特流拆分成多个离散的帧,为每一帧计算一个称为校验和短令牌,放在帧中一起传输。到达目标机器后,重新计算帧的校验和。若前后校验和不同则出错。

Framing methods 成帧方法:

      ·Byte count                                                              字节计数法

      ·Flag bytes with byte stuffing                                字节填充的标志字节法

      ·Flag bits with bit stuffing                                     比特填充的标志比特法

      ·Physical layer coding violations                                 物理层编码违禁法

             Use non-data symbol to indicate frame 使用非数据符号表示帧

字节计数法:

      Frame begins with a count of the number of bytes in it 帧开头是传输字符数byte

      Simple, but difficult to resynchronize after an error occurs 可能发生错误后失去同步,无法知道下一帧的起始位置

Point-to-Point Protocol PPP协议

标志字节法:

      Special FLAG bytes delimit frames 特殊的标志字节(flag byte

      Occurrences of flags in the data must be stuffed (escaped) 当传输二进制数据时会产生标志字节的干扰,需要插入转义字节(ESC,将标志字节与数据分隔开。

      Byte stuffing 字节填充——发送方在标志字节前填充转移字节,接收方的数据链路层将数据传递给网络层之前删除转义字节。

      Longer, but easy to resynchronize after error 更容易同步位置

标志比特法:

      Bit stuffing 比特流填充——Stuffing done at the bit level 在位级别完成划分,只是用8比特的字节。

      Frame flag has six consecutive “1”s (not shown) 帧标志有六个连续的“1”

      On transmit, after five “1”s in the data, a “0” is added 传输时,在数据中的五个“1”后,添加一个“0”

      On receive, a “0” after five “1”s is deleted 接收时,删除五个“1”后的“0”

      失去帧,扫描比特流找到标志序列,标志序列只会出现在帧的边界。

物理层编码违禁法:

      走物理层捷径,冗余比特;信号要有足够的跳变。

3.1.4差错控制

Error control 差错控制:确保可靠的、面向连接的服务接收到正确的帧。

How

      协议要求接收方发回一些特殊的控制帧,进行肯定或否定的确认

      肯定确认安全到达。

      否定确认传输有错误,需要重传。

      当丢失某帧,引入计时器等待足够长时间,在无确认情况警告潜在问题。

      又可能多次接收到同一帧,于是还要分配序号

Repair frames that are received in error 修复错误接收的帧:

      Require that errors be detected at the receiver 要求在接收器检测错误

      Typically retransmit the unacknowledged frames by the sender 通常由发送方重新传输未确认的帧

      Protect against lost acknowledgements by using a timer 使用计时器防止丢失确认

3.1.5流量控制

Flow Control 流量控制:使发送方处理如下情况,当发送帧的速度大于接收方接收帧的速度。To prevent a faster sender from out-pacing a slower receiver

How

      Feedback-based flow control 基于反馈的流量控制

             接收方给发送方回信息,是否允许发送更多数据。Receiver provides a feedback on the data that it can accept.

      Rate-based flow control 基于速率的流量控制

             协议内部机制,限制发送方的速率,无需接收方的反馈信息。

Rare in the Link layer as NICs run at the “wire speed”. 网络接口卡(NIC, Network Interface Cards)有时能以线速运行,意味着过载不是因为链路层的处理速度达不到真的速度,而需要高层处理。

3.2差错检测和纠正

针对错误处理,2种基本策略——在发送的数据中加入冗余信息

Error-correcting code 纠错码在发送的数据中加入足够多的冗余信息,以便接收方能据此推断发送之前使什么数据。

      Forward error correction 前向纠错 FEC

Error-detecting code 检错码发送数据中包含一些冗余信息,只能让接收方推断出是否发生了错误,然后请求重传。

3种检错码

      ·Parity                                         奇偶

      ·Checksums                                 校验和

      ·Cyclic redundancy codes          循环冗余校验(CRC

3.3基本数据链路协议

物理层、数据链路层、网络层的实现—— Driver 驱动器 NIC网络接口卡

Network Interface Cards 网络接口卡:运行物理层进程、某些数据链路层进程

主CPU:运行链路层其他部分、网络层进程作为操作系统的一部分

设备驱动器:运行链路层进程的软件

Commonly implemented as NICs and OS drivers.

Network layer (IP) is often OS software.

一些C语言种的定义——Protocol Definitions

一些定义:

1、单工通信——单工通信只有一根数据线,通信只在一个方向上进行;监视器、打印机、电视机等。

2、半双工通信——半双工通信也只有一根数据线,它也单工的区别是这根数据线既可作发送又可作发接收;虽然数据可在两个方向上传送,但通信双方不能同时收发数据。

3、全双工通信——数据的发送和接收用两根不同的数据线,通信双方在同一时刻都能进行发送和接收。在这种方式下,通信双方都有发送器和接收器,发送和接收可同时进行,没有时间延迟。

3.3.1一个乌托邦式的单工协议

Utopia 乌托邦数据单向传输不考虑出错,发送方和接收方总处于就绪状态,接收方速率快于发送方,数据处理时间不计,有足够缓存空间,数据链路层通信信道永远不会损坏帧和丢失帧

协议由两个单独的过程组成——运行在源、目标机器的数据链路层上:

      发送过程——快速把数据放到线路上,循环从网络层获取数据包、利用变量构造出境帧、通过物理层发送帧。

      接受过程——等待未损坏的帧到达,返回参数,从硬件缓冲区删除,传递给网络层,挂起直到下一帧到来。

An ideal protocol

·No errors, and receiver runs as fast as sender

·Only one-way data transfer

Neither error nor flow control … 没有差错和流量控制

3.3.2无错信道上的单工停-等式协议

Stop-and-Wait Protocol for Error-free Channel 无错信道上的单工停-等式协议发送方发送一帧,等待对方确认后才能继续发送

数据流量是单工的,通信信道不出错,但是需要发送方发送并等接收方接收到一帧后才能发送,帧可以在两个方向上传送,两个数据链路层之间的通信信道必须具有双向传输信息的能力,协议限制了流量的严格交替关系。

Protocol ensures that sender never outpaces receiver 发送方不超过接收方

·Receiver returns a dummy frame (ack) when ready 接收方返回ACK虚拟帧

·Only one frame outstanding at a time, thus called stop-and-wait 停止等待

Flow control is added 增加了流量控制

3.3.3有错信道上的单工停-等式协议

Stop-and-Wait Protocol for Noisy Channel 有错信道上的单工停-等式协议帧可能在通信信道中损坏或者完全丢失的情况。

帧出现损坏用校验和能检测,但是像延迟重传等情况就很复杂了,需要——解决方法:

      区分新老帧(因为各种原因出现重复)——检查帧的序号,是否为重复帧;由以为序号(0/1)解决,模2增1,接收方只期待正确序号的帧,最后一个有效的确认要被重复

      考虑帧的到达时间——每发送一帧则启动计时器,保证帧在完整的时间间隔到达接收方。

Automatic Repeat request 自动请求重复协议 ARQ发送方在移到下一个数据之前必须等待一个肯定确认

ARQ (Automatic Repeat reQuest) adds error control

ARQ(自动重复请求)添加错误控制

·Receiver replies with an “ack” frame for the frame that has been correctly received

      接收器对已正确接收的帧回复“ack”帧

·Sender sets timer and retransmits a frame if the expected “ack” is not received

      如果未收到预期的“ack”,则发送方设置计时器并重新传输帧

To ensure correctness, frames and acks must be numbered

为确保正确性,必须对帧和确认进行编号

·Receiver needs to distinguish between retransmitted (due to lost ack or early timer) and new frames

      接收者需要区分重传(由于丢失 ack 或早期定时器)和新帧

·For stop-and-wait, 2 numbers (using 1 bit) are sufficient

      对于停止和等待,2个数字(使用1位)就足够了

发送和接收方状态,具体算法:

3.4滑动窗口协议

For实现全双工数据传输,or半双工分辨数据帧或者确认帧!

Piggybacking 捎带确认:确认信息被附加在向外发送的数据帧上(ACK字段)。但是等待时间需要固定一个毫秒数,否则返回一个单独的确认帧。

3.4.1滑动窗口的概念

Sliding window 滑动窗口:帧包含序号从0~2n-1,可以填入n位的字段中。

Sending window 发送窗口:任何时刻发送方维护着一组序号,分别对应于允许它发送的帧。

Receiving window 接收窗口:接收方也维持一个接收窗口,对应于它允许接受的帧。

概念:

Sender maintains window of frames that it can send

发送方维护它能发送的帧的窗口

·It needs to buffer the frames for possible retransmission

      它需要为可能的重传缓冲帧

·Window advances with next acknowledgements

      收到下一个确认信息后才将窗口向前推进

Receiver maintains window of frames it can receive

接收方维护它能接收的帧的窗口

·It needs to keep buffer space for arrivals

      它需要为到达者保留缓冲空间

·Window advances with in-order arrivals

      按顺序到达的窗口会提前

A sliding window of size 1 with a 3-bit sequence number         1窗口 3比特序号

图的解释:

发送方的窗口内序号代表了可以被发送的帧,或者那些已经被发送但还没有被确认的帧。任何时候有新的数据包从网络层来的时候,它被赋予窗口中下一个最高序号,并且窗口上边界向前移动一格。当收到一个确认时,窗口的下边界也往前移一格。按照这种方法,窗口持续地维持一系列未被确认的帧。

由于发送方发送的帧可能在传输中丢失或损坏,所以发送方必须保留这些帧以满足可能的重传需要。所以需要n个缓冲区来放未被确认的帧。若超过了窗口的最大尺寸,则发送方强行关闭网络层,直到有一个缓冲区空闲出来。

Larger windows would enable pipelining for efficient use of the link

更大的窗口使流水线能够有效的使用链路

·Stop-and-wait (w=1) is inefficient for long links

      停-等1对长链路是低效的,

·Best window (w) depends on bandwidth-delay (BD)

      最佳窗口大小w取决于带宽延迟BD

·Make w≥2BD+1 to achieve high link utilization

      当w≥2BD+1时链路的利用率高

Pipelining leads to different choices of design for errors/buffering

面对流水线不同的缓冲区设计

·Go-Back-N                  回退N协议

·Selective Repeat         选择重传协议

3.4.2 1位滑动窗口协议

发送方发出一帧后,必须等待前一阵的确认到来才能发送下一帧,使用了停等协议。

Transfer data in both directions with stop-and-wait

传输的数据在两个方向上都遵循停等协议

·Piggyback acks on reverse data frames for efficiency

      使用捎带确认的ACK提高效率

·Handle transmission errors, flow control, early timers

      处理传输错误、流量控制、早超时

  • Simultaneous start [right] causes correct but slow operation compared to normal [left] due to duplicate transmissions

      同步启动[右]与正常启动[左]相比,由于重复传输,启动正确但缓慢

Two scenarios of the protocol 协议的两个场景

记号表示(序号,确认,包号),星号表示网络层接受了一个包

同步启动为啥慢?

因为使用了捎带确认,同步启动两方同步发送信息,必须要等下一轮发送时捎带确认消息。至少重复一半的帧,可能发生早超时,浪费宽带。

3.4.3管道化——提高效率,传送多帧

Bandwidth-delay product 宽带-延迟乘积链路上最大的比特数,等于B*D

      Eg:50kbps(50*1000bit/s)*250ms(250*1/1000s)=12.5kb或12.5个长度为1000位的帧。

      滑动窗口w=2BD+1=26帧。当t=250时,已经发了26帧,且0号帧的确认刚好返回,而后每隔20毫秒返回一个确认。发送方最大窗口是26。

为啥说停-等1效率低?

一个具有1毫秒延迟的1Gbps链路能容纳1MB;停-等w=1,效率低于50%。

Pipelining 管道化:保证多个帧同时传输的技术。

      出现错误:某一个数据流中间一帧损坏或丢失,发送方发现问题前发出了大量帧,帧需要被丢弃还是如何处理?

两种策略:

 a)接收方窗口为1时出错的影响 b)接收方窗口很大时出错的影响

第一种情况是回退N,第二种情况是选择重传。

3.4.4回退N协议

Explanation当接收方窗口大小为1时,发送方后续发送会被拒收。当接收方窗口比较大时,发送方会继续发送后续的帧,直至2号帧计时器超时,然后退回到2号帧,从这里重新发送2、3、4等。

Go-Back-N 回退N

·Receiver only accepts/acks frames that arrive in order

      接收器只接受/确认按顺序到达的帧

·Receiver discards frames that follow a missing/error frame

      接收器丢弃丢失/错误帧之后的帧

·Sender times out and resends all outstanding frames

      发送器超时并重新发送所有未完成的帧

模拟计时器

3.4.5选择重传

Explanation当接收方2号帧丢失了,返回一个NAK,但是还将第3、4、5号帧缓存起来,等2号帧来了,就顺序递交网络层。

Selective repeat 选择重传:接收方将坏帧丢弃,但接收并缓存帧后面所有的好帧。当发送方超时,它只重传那个最早的未被确认的帧。数据链路层内存需求大。

      ·Receiver accepts frames anywhere in receive window

             接收器在接收窗口中的任何位置接受帧

      ·Cumulative ack indicates highest in-order frame

             累积 ack 表示最高的有序帧

      ·NAK (negative ack) causes sender retransmission of a missing frame before a timeout resends window

             NAK(否定确认)导致发送方在超时重发窗口之前重传丢失的帧

Negative acknowledgement 否定确认 NAK:接收方检测到错误(帧的校验和错误或序号不正确),他就发送一个否定确认,触发帧的重传操作,不需要等到计时器超时。

Cumulative acknowledgement 累计确认:当n号帧的确认到达,n-1、n-2号帧等都会被自动确认。

Tradeoff for Selective Repeat

选择重传的权衡,优劣的比较:

·More complex than Go-Back-N due to buffering at receiver and multiple timers at sender由于在接收器处缓冲和在发送器处有多个计时器,因此比 Go-Back-N 更复杂

·More efficient use of link bandwidth since only the lost frames are retransmitted (with low error rates)更有效地使用链路带宽,因为只重传丢失的帧(错误率低)

For correctness, we require:

·Sequence numbers(s) at least twice the window(w)

      序列号至少是窗口的两倍(w

 

序列号少                                                                   序列号足够

新的接收窗口与旧的重叠-重传不明确                      新旧接收窗口不重叠-无歧义

!接收方的缓冲区个数计时器的个数等于窗口的大小,而不是序号的范围。

3.5数据链路协议实例

3.5.1SONET上的数据包

光纤链路发送数据包

3.5.2ADSL链路

PPP协议(点到点协议)——面向字节

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

秋千的千秋

希望你喜欢

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值