累积确认计算机网络,「计算机网络笔记」第三章 网络层

3.1 概述

负责

差错检测和控制

流量控制

基于速率

基于反馈

成帧

字符计数法

每帧的第一个字段,标识帧的长度

一旦出错,后续的都出错

字节填充的标志字节法

用帧界,特殊的一个字节,标记帧的开始和结束

传输的数据中若是出现帧界,则在帧界前加上转义符

帧,按字节为单位传递,任意比特数的帧不适用,必须是8位整数倍

比特填充的标志比特法

以01111110为帧标记

如果帧的内容中也出现了与帧标记相同的位串,则在传输中变成011111010

5个1以后一定会插入一个0

物理层编码违例法

帧界:冗余信号

作用

DataLink Layer 位于物理层之上,网络层之下

提供有效的、可靠的帧传输

错误的处理

纠错:恢复出正确的数据

检错:仅仅检查出错误,往往伴随重传

错误的种类

单个错误:分散在各个数据块

突发错误:整个块都是错误

纠错码

前向纠错技术

有线网中极少采用,主要用于无线网

检错码

局域网中主要采用

码字

包含数据位、检验位的 n 位单元(模式)

海明距离

两个码字之间,不同位的数目

可用异或计算,运算结果中1的个数

如果海明距离为d,则一个码字需要发生d个1位错误才能变成另一个码字

一组码字的海明距离:任意两个码字的海明距离中的最小值

海明距离为d+1的编码能检测出d位的差错

海明距离为2d+1的编码能纠正d位的差错

海明距离越大,纠错能力越强,合法码字减少,传输效率降低

冗余位和数据位的关系

冗余位:r

数据位:m

传输:n=m+r

(m+r+1) ≤ 2r

海明纠错码

n从左到右编号

校验位:编号位为2的次幂

数据位:剩下的位

校验位的依据为包括自身在内的一些位的集合的奇偶值(采用奇校验/偶校验)

校验位的决定

将某一位数据位的编号展开成2的乘幂的和,则每一位所对应的位即为该数据位的校验位

如:m = 7,r = 4

B1

B2

B3

B4

B5

B6

B7

B8

B9

B10

B11

P1

P2

D1

P3

D2

D3

D4

P4

D5

D6

D7

1=20

2=21

4=20

8=23

编码

原数据:1001000,m = 7,r = 4,n = 11

使用偶校验

72ee5cbe784b

原数据:1001000

P3 = 只有一个1,校验码为1

B1

B2

B3

B4

B5

B6

B7

B8

B9

B10

B11

P1

P2

D1

P3

D2

D3

D4

P4

D5

D6

D7

信息码

-

-

1

-

0

0

1

-

0

0

0

检验位

0

0

-

1

-

-

-

0

-

-

-

海明码

0

0

1

1

0

0

1

0

0

0

0

纠错

对每一位校验位进行校验

出错的数据位 = 出错的校验位的和

3.4 检错码

分类

奇偶校验

互联网校验

循环冗余校验

循环冗余检错码CRC

k位的帧 = k-1次的多项式,最末端视作0次

例:1011001 => X6+X4+X3+X0

生成多项式:G(x),r阶

m位帧的生成多项式:m > r,M(x) > G(x)

发方

XrM(x)/G(x) = Q(x)+R(x)

(XrM(x)-R(x))/G(x) = Q(x)

编码后的码字:XrM(x)-R(x)

收方

(XrM(x)-R(x))%G(x)

整除,说明接收正确

无限制的单工协议

假设

数据单向传送

收发双方的网络层都处于就绪状态

处理时间忽略不计

无限空间

完美通道:信道不损坏、不丢帧

乌托邦协议

单工停/等协议

半双工的协议

取消了收方无限空间的假设

收方收到数据后,如果有能力处理,回发一个哑帧给发方

发方收到哑帧,可以再次发送下一帧数据

有噪声信道的单工协议

肯定确认重传 PAR

取消了完美信道、收方无限空间的假设

特点:确认帧,定时器

收方收到的帧通过校验,向发方发送确认帧

发方收到了确认帧,才会发送下一帧

发方在发送数据以后,启动一个定时器,期望在超期前,收到确认帧

发方在定时器超期以后,重传帧

区别帧和重传帧:帧的序号

提高效率

全双工:不再区别收方、发方,可以互发数据

捎带确认:确认帧可以稍带到发送给对方的数据里

外发的数据帧(s.ack)

捎带确认的定时器,超期则单独发送确认帧

批量发送:利用停/等的空闲时间

两个窗口

发送窗口:已经发送,未确认

接收窗口:期望被接收的帧的序列号

滑窗技术的原理

窗口数:1

帧的序号seq:只用一个比特,0/1,交替出现

确认帧ack:指对面发送的seq

窗口滑动的条件

接收方

收到帧的序列号,是期待接收的帧号

frame_expected+1

发送方

ack(收到的确认帧) = next_frame_to_send(曾经发出的帧号)

next_frame_to_send+1

重复帧的问题

在接收到确认帧之前,定时器超时,重新发送帧给对面,对面发现帧重复,再次发送确认帧回来。导致重复帧很多,但是正常工作。

合适的窗口数 W

信道容量:一帧发出到目的期间,信道上能够容纳的帧的数量

带宽-延迟积:B×D

窗口值:2DB+1

连续的发送好多数据帧,其中一个帧出错,则丢弃错帧及后续的帧,后续全部重传

需要发送方付出更多的缓存代价

适合出错率较少的高速信道

发送方的重传策略

出错帧以及所有的后续帧,缓存在发送窗口中

发送方连续发送至发送窗口满

对帧编号,未被确认的帧缓存

收到确认,释放确认帧所占用的缓冲区,滑动发送窗口

定时器超时,回退到超时的帧,顺序重传最后被确认帧以后 的缓存区中缓存的帧

接收方

每收到期望的正确帧,上交网络层,回送确认

收到出错帧,丢弃,回送对接受的最后正确帧的确认(无法使用捎带确认)

累计确认

发送seq = 0~7,回发ack = 7

暗含着对第7帧,及其之前所有的帧的确认

发送窗口

W ≤ MAX_SEQ

防止出错时,无法区分ack是哪一个窗口的

即每次发送的窗口的seq不能顺序排列相同,如:07,07,应为07,86,7~5

接收窗口:W = 1

适用于通信环境质量糟糕,出错率较大的情况

接收方

正常接收:上交网络层,回送确认ack,滑动接收窗口

丢弃出错帧,如果后续帧正确,缓存下来,回送对接收的最后正确帧的确认

收到重传帧:将缓存帧排序上交,回送确认ack,滑动接收窗口

避免等待发送方的出错帧超时,接收方在遇到出错帧时,使用nak(Negative-Acknowledgment)

发送方

正常发送:对帧编号,等待确认的帧缓存

收到确认:释放确认帧所占缓冲区,滑动发送窗口

出错/超时:重传缓存的最后被确认帧的后面那一帧

滑动窗口长度 W 的选择

发送窗口:W = (MAX_SEQ + 1)/2

避免前后两个窗口里的序列号出现重复

第一次回送的确认帧,如果丢失,发送方超时重新发送,此时如果接收方期待的帧里的序列号(后一个窗口)和发送方重发的帧里的序列号(前一个窗口)重复,则会出错

即:重传帧被当作新帧被接收

三种协议的窗口大小

协议4:滑动窗口

协议5:回退N帧

协议6:选择性重传

发送窗口SWnd

(0,1]

(0,MAX_SEQ]

[0,RWnd]

接收窗口RWnd

1

1

(MAX_SEQ + 1)/2

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值