计网L6
Summary
- Learn 6 elementary DLL protocol
- Learn & master sliding-window
- Learn & master ARQ(自动重复请求)/PAR
- Learn & master piggybacking(捎带确认)
- Learn pipeline
- Go back n & selective repeat
基本DLL协议
假设
- 物理层、数据链路层和网络层是独立的进程 -- independent processes
- 机器 A 想要使用可靠的、面向连接的服务向机器 B 发送长数据流 -- reliable, connection-oriented
- A的数据链路层请求数据,网络层总是能够立即遵守 -- always able
- 这些协议处理通信错误,但不处理由计算机崩溃和重新启动引起的问题 -- errors, but not the problems caused by computers
- 就数据链路层而言,从网络层通过接口传递给它的数据包是纯数据 -- pure data
3 simplex(单工) protocol--三个单工的协议
- An unrestricted simplex protocol
- 无限制的单工协议
- A simplex stop-and-wait protocol
- 单工的停—等协议
- A simplex protocol for a noisy channel
- 有噪声信道的单工协议
Protocol Declaration -- 协议定义
- 所有常见的数据类型、函数都定义为(protocol.h)
- NL、PL之间的数据传输

- Wait_for_event(&event):等待某事发生
- fram_arrive,
- cksum_err,
- timeout
- Timer
- start_timer, stop_timer
- start_ack_timer,stop_ack_timer
- 帧的结构

unrestricted simplex protocol 无限制的单工协议
协议一(乌托邦,乌托邦)
数据只在一个方向传输 -- in one direction only
发送网络层和接收网络层都时刻准备着(随时待命)-- are always ready
处理时间可以忽略(瞬间完成)-- Processing time can be ignored
提供无限缓冲空间(无限空间)-- spaces is available
数据链路层之间的通信通道永不损坏或丢帧(完美通道) -- never damages or loses of frames
发送端和接收端处于一个无限的while循环中

Simplex Stop-and-Wait Protocol 单工停--等协议
- Protocol2 :放弃不切实际的限制
- 接收器的处理能力是有限的:接收器只有有限的缓冲容量和有限的处理速度。
- a finite buffer capacity and a finite processing speed
- 如何防止发送方用数据淹没接收方?
- 只需在协议 1 中插入延迟 -- delay
- 接收者向发送者提供反馈 -- feedback
- 发送方发送一帧然后在继续之前等待确认的协议称为停止等待 stop and wait
注意
- 数据流量是单工的,但帧是双向传输的。
- 两个数据链路层之间的通信通道需要能够进行双向信息传输。
- 一个半双工(半双工)物理通道就足够了 -- half-duplex
- 数据流
- 首先发送方发送一个帧,然后接收方发送一个帧,然后发送方发送另一个帧,然后接收方发送另一个帧,依此类推。
Simplex Protocol for a Noisy Channel 有噪声信道的单工协议
让我们考虑正常情况:通信通道可能会出错。
使用定时器和确认的方案: (timer and ackonwledgement)
发送方在发送一个帧后启动一个定时器 -- starts a timer after sending
只有在正确接收到传入帧时,接收器才会发回确认 -- sends back an ackonwledgement
如果定时器超时,发送方将重传该帧 -- retransmit the frame
主动确认重传 -- Positive Ackonwledgement with Retrasmission
自动重复请求 -- Automatic Repeat Request
PAR(主动确认重传)
- 上述方案的致命缺陷是什么?
- 丢失确认 -- Loss of an ackonwledgement
- 复制帧 -- duplicated frame
- 如何区分第一次看到的帧和重传?
- 在每个帧的标题中使用序列号 -- sequence number

改进
- Improve efficiency of transmission
- full-duplex (全双工)
- piggybacking (捎带确认)
- sliding window (滑动窗口)(flow control)
- Sliding window protocol
- Protocol 4:n=1——basic idea of sliding window
- Protocol 5: Go Back n (回退n帧)
- Protocol 6: Select Repeat (选择性重传)
full-duplex (全双工)
- 如何实现全双工数据传输?
- 两个独立的单工数据通道
- 双向数据的一个电路
- 捎带(捎带确认)Piggybacking
- 暂时延迟传出确认,以便他们可以免费乘坐下一个传出数据帧
- 接收者应该等待捎带多长时间?
- 一个特别的方案:等待固定的毫秒数。 (ACK-TIMER)
序列号
- 序列号与每个传输的帧相关联。 序列号的范围从 0 到某个最大值 (\(2^n - 1\)) 循环。
- 一个窗口是一个序列号列表 -- window
- 发送方维护一个发送窗口(sending
window),其序列号对应于已发送但尚未确认或可以发送的帧 (been sent but are
as yet not acknowledged, or can be sent)
- 每当一个新的数据包从网络层到达时,它就会被赋予下一个最高的序列号,并且上边界提前一个。
- 当确认(ackonwledge)进来时,下边界前进一个。
- 接收器维护一个接收窗口(receiving
window),其序列号与允许接收的帧相对应。
- 当接收到序列号等于窗口下边缘的帧时,将其传递到网络层,生成确认,并将窗口旋转一。

- Receiver:接收帧后,检查序列号是否为frame_expected(期望帧号),如果是,接收并且frame_expected+1,即滑动接收窗口(接收窗口)。
- Sender:收到确认帧时,检查ack_number是否为next_frame_to_send,如果是,从network_layer取包,next_frame_to_send+1,即滑动singing_window
w=1 sliding window

Principle of protocol 4 -- 1位传输的滑动窗口
- 1-bit sliding window protocol (w=1)
- Window setting 窗口设置
- Sliding window maximum:MAX_SEQ = 1
- Initial value:seq =0, ack=1(期待接收seq=0)
- Window sliding scheme 窗口滑动模式
- A send frame firstly A发送帧
- (seq=0, ack=1, A0)
- B receive A0,send back piggyback-acknowledge B接收帧,发送捎带确认
- (seq=0, ack=0, B0)
- A receive acknowledge (to A0),sliding window,send next frame
接收捎带确认,滑动窗口,发送下一帧
- (seq=1, ack=0, A1)
- A send frame firstly A发送帧
- characteristic
- 序列号seq和确认值ack“0”“1”交替
- 滑动窗口长度W=1,收到确认才移动窗口
- 保证按顺序将接收到的正确帧只一次上交网络层
正常情况

不正常情况
duplicated 重复的

error control 差错控制

Line utilization rate of protocol4(信道利用率)
- 协议 4 中的一个假设:时间可以忽略不计。
- 向前或向后传输时间
- 接收器处理传入帧的处理时间
- 事实上,在低速率信道中,往返时间可以非常大,发送方在此期间被阻塞。
- 线路利用率:
- 信道容量为 b bps
- 帧大小 k 位
- 往返传播时间 R 秒

- 例子

代入公式:\(\frac{k}{k+ bR}=\frac{1000}{1000+50000\times0.5}=3.85\%\)


improve line utilization 提高利用率
- 增加最大滑动窗口尺寸 W:
- 线路利用率 = \(W\times T_f \ \div \ (T_f+R) = W \times k \ \div \ (k + bR)\)
- 乌托邦案例:线路利用率达到100%,那么最大滑动窗口大小为:
- W = $ (T_f+R) T_f $ = 520 / 20 =26

Pipeline 管道化
- 允许发送方在阻塞前最多传输 w 帧 -- w frames
- 每当带宽和往返延迟的乘积很大时,发送端就需要一个大窗口。
- bandwidth and round-trip-delay is large
- 长流中间的帧损坏或丢失怎么办?
- Go back n -- 回退n个
- Selective repeat -- 选择性重复
Protocol 5:go back n

- 接收方的窗口大小为1,即接收方只按顺序接受帧。
- 接收器丢弃发生错误后的所有帧,不发送确认。
- 超时后,发送方按顺序重传所有未确认的帧,从损坏或丢失的帧开始。

- 数据帧


- 工作原理分析

Protocol 6:selective repeat

- 协议 6 接受无序的帧,但按顺序将数据包传递到网络层。
- accepts frames out of order
- 接收序列号在接收窗口内的所有帧
- 在所有编号较低的帧都以正确的顺序传送到网络层之前,不会将帧传递到网络层。

- 例子
接收方收到非期望的正确帧-缓存

发送方选择帧seq2重传

接收方收到重传帧seq2-排序上交

Function of NAK
- Negative acknowledgement (否定确认)
- 比协议 5 更有效
- 向发送方发送错误帧的 NAK,强制发送方立即重新发送帧而不是超时
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 Yeの博客!