计算机网络-可靠传输-停止等待协议
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了计算机网络-可靠传输-停止等待协议相关的知识,希望对你有一定的参考价值。
参考技术A 全双工通信的双方既是发送方也是接收方。下面为了讨论问题的方便,我们仅考虑A发送数据而B接收数据并发送确认。 因此A叫做发送方,而B叫做接收方 。因为这里是讨论可靠传输的原理,因此把传送的数据单元都称为分组,“停止等待”就是每发送完一个分组就停止发送,等待对方的确认。在收到确认后再发送下一个分组。图5-9(a)是最简单的无差错情况。A发送分组M1,发完就暂停发送,等待B的确认。B收到了M1就向A发送确认。A在收到了对M1的确认后,就再发送下一个分组M2。同样,在收到B对M2的确认后,再发送M3。
图5-9(b)是分组在传输过程中出现差错的情况,B接收M时检测出了差错,就丢弃M1,其他什么也不做(不通知A收到有差错的分组)①。也可能是M1在传输过程中丢失了,这时B当然什么都不知道。在这两种情况下,B都不会发送任何信息。可靠传输协议是这样设计的:A只要超过了一段时间仍然没有收到确认,就认为刚才发送的分组丢失了,因而重传前面发送过的分组。这就叫做 超时重传 。要实现超时重传,就要在每发送完一个分组时设置一个 超时计时器 。如果在超时计时器到期之前收到了对方的确认,就撤销已设置的超时计时器。其实在图5-9(a)中,A为每一个己发送的分组都设置了一个超时计时器。但A只要在超时计时器到期之前收到了相应的确认,就撤销该超时计时器。
这里应注意以下三点:
第一,A在发递完一个分组后,必须暂时保留已发送的分组的副本(在发生超时重传时使用)。只有在收到相应的确认后才能清除暂时保留的分组副本。
第二,分组和确认分组都必须进行编号②。这样才能明确是哪一个发送出去的分组收到了确认,而哪一个分组还没有收到确认。
①注:在可靠传输的协议中,也可以在检测出有差错时发送“否认报文”给对方。这样做的好处是能够让发送方及早如道出现了差错。不过由于这样处理会使协议复杂化,现在实用的可靠传输协议都不使用这种否认报文了。
②注:编号并不是一个非常简单的问题。分组编号使用的位数总是有限的,同一个号码会重复使用。例如,10位的编号范围是0~1023。当编号增加到1023时,再增加一个号就又回到0,然后重复使用这些号码。因此,在所发送的分组中,必须能够区分开哪些是新发送的,哪些是重传的。对于简单链路上传送的帧,如采用停止等待协议,只要用1位编号即可,也就是发送完0号帧,收到确认后,再发送1号帧,收到确认后,再发送0号帧。但是在运输层,这种编号方法有时并不能保证可靠传输。
第三,超时计时器设置的重传时间应当比数据在分组传输的平均往返时间更长一些。图5-9(b)中的一段虚线表示如果M正确到达B同时A也正确收到确认的过程。可见重传时间应设定为比平均往返时间更长一些。显然,如果重传时间设定得很长,那么通信的效率就会很低。但如果重传时间设定得太短,以致产生不必要的重传,就浪费了网络资源。然而,在运输层重传时间的准确设定是非常复杂的,这是因为已发送出的分组到底会经过哪些网络,以及这些网络将会产生多大的时延(这取决于这些网络当时的拥塞情况),这些都是不确定因素。图5-9中把往返时间当作固定的(这并不符合网络的实际情况),只是为了讲述原理的方便,关于重传时间应如何选择, 选择确认SACK 。
图5-10(b)说明的是另一种情况,B所发送的对M1的确认丢失了。A在设定的超时重传时间内没有收到确认,并无法知道是自己发送的分组出铝、丢失,或者是B发送的确认丢失了。因此A在超时计时器到期后就要重传M1,现在应注意B的动作,假定B又收到了重传的分组M1。这时应采取两个行动。第一,丢弃这个重复的分组M1,不向上层交付;第二,向A发送确认,不能认为已经发送过确认就不再发送,因为A之所以重传M1就表示A没有收到对M,的确认。
图5-10(b)也是一种可能出现的情况。传输过程中没有出现差错,但B对分组M1的确认迟到了。A会收到重复的确认。对重复的确认的处理很简单:收下后就丢弃。B仍然会收到重复的M1,并且同样要丢弃重复的M1,并重传确认分组。
通常A最终总是可以收到对所有发出的分组的确认。如果A不断重传分组但总是收不到确认,就说明通信线路太差,不能进行通信。
使用上述的确认和重传机制,我们就可以在不可靠的传输网络上实现可靠的通信。
这种可靠传输协议常称为 自动重传请求ARQ (Automatic Repeat reQuest)。意思是重传的请求是自动进行的。接收方不需要请求发送方重传某个出错的分组。
停止等待协议的优点是简单,但缺点是信道利用率太低。我们可以用图5-11来说明这个问题。为简单起见,假定在A和B之间有一条直通的信道来传送分组。
假定A发送分组需要的时间是TD。显然,TD等于分组长度除以数据率。再假定分组正确到达B后,B处理分组的时间可以忽略不计,同时立即发回确认。假定B发送 确认分组需要时间TA 。如果A处理确认分组的时间也可以忽略不计,那么A在经过时间(TD+RTT+TA)后就可以再发送下一个分组,这里的RTT是往返时间。因为仅仅是在时间TD内才用来传送有用的数据(包括分组的首部),因此信道的利用率U可用下式计算: U=TD/TD +RTT+TA (5-3)
请注意,更细致的计算还可以在上式分子的时间TD内扣除传送控制信息(如首部)所花费的时间。但在进行粗略计算时,用近似的式(5-3)就可以了。
我们知道,(5-3)式中的往返时间RTT取决于所使用的信道。例如,假定1200km的信道的往返时间RTT=20ms。分组长度是1200bit,发送速率是1Mbit/s。若忽略处理时间和TA(TA一般都远小于TD), TD=1200/1*10^6 ,信道的利用率U=5.66%。但若把发送速率提高到10Mbit/s,则U=5.96×10^(-4)。信道在绝大多数时间内都是空闲的。
从图5-11还可看出,当往返时间RTT远大于分组发送时间TD时,信道的利用率就会非常低。还应注意的是,图5-11并没有考虑出现差错后的分组重传。若出现重传,则对传送有用的数据信息来说,信道的利用率就还要降低。
为了提高传输效率,发送方可以不使用低效率的停止等待协议,而是采用流水线传输(如图5-12所示)。流水线传输就是发送方可连续发送多个分组,不必每发完一个分组就停顿下来等待对方的确认。这样可使信道上一真有数据不间断地在传送。显然,这种传输方式可以获得很高的信道利用率。
[Study]计算机网络
文章目录
一、概述
1.1 因特网概述
-
网络:网络由若干结点和链接这些结点的链路组成
-
互联网:多个网络间还可以通过路由器互连起来,这样就构成了一个范围更大的网络即互联网
-
因特网:Internet 因特网是世界上最大的互连网络(用户数以亿计,网络数数以百万计)
-
Internet
与internet
的区别:- Internet(因特网):是一个专有名词,它指全球最大的、开放的、由众多网络相互连接而成的特定计算机网络,采用
TCP/IP
协议族作为通信规则,其前身是美国的ARPANET
- internet(互联网或互连网):是一个通用名词,它泛指由多个计算机网络互相连接而成的网络,在这些网络之间的通信协议可以是任意的
- Internet(因特网):是一个专有名词,它指全球最大的、开放的、由众多网络相互连接而成的特定计算机网络,采用
-
因特网发展的三个阶段:
-
1969:从单个网络 ARPANET 向互联网发展
-
1985:逐步建成三级结构的因特网
-
1993:逐步形成了多层次 ISP (
Internet Service Provider
)结构的因特网
-
-
因特网的标准化:因特网协会
ISOC
是一个国际性组织。它负责对因特网进行全面管理,以及在世界范围内促进其发展和使用。制订因特网的正式标准需要经过以下4
个阶段:- 因特网草案
- 建议标准
- 草案标准
- 因特网标准
-
因特网的组成:
- 边缘部分:由所有连接在因特网上的主机组成,这部分是用户直接使用的,用来通信和资源共享
- 核心部分:由大量网络和连接这些网络的路由器组成,为边缘部分提供服务(提供连通性和交换)
1.2 定义和分类
-
定义:计算机网络的精确定义尚未统一,最简单的定义是:一些
互连的、自治的
计算机的集合 -
计算机网络的分类:
1.3 三种交换技术
-
电路交换(
Circuit Switching
):电路交换机接通电话线的方式称为电路交换。交换就是按照某种方式动态地分配传输线路的资源。电路交换的三个步骤:建立连接(分配通信资源)、通话(一直占用通信资源)、释放连接(释放资源)- 优点:通信时延小、有序传输、没有冲突、使用范围广、实时性强、控制简单
- 缺点:建立时间长、线路独占使用效率低、灵活性差、难以规格化
-
分组交换(
Packet Switching
):发送方:构造分组、发送分组;路由器:缓存分组、转发分组,简称存储转发
;接收方:接收分组、还原报文- 优点:无需建立连接、线路利用率高、简化了存储管理、加速传输、减少出错概率和重发的数据量
- 缺点:引起了转发时延、需要传输额外的信息量、对于数据报服务存在失序、丢失或分组重复的问题
-
报文交换(
Message Switching
):报文交换中的交换结点也采用存储转发的方式,但报文的大小没有限制,要求交换结点拥有较大的缓存空间。报文交换主要用于早期的电报通信网- 优点:无需建立连接、动态分配线路、提供多目标服务、提高线路可靠性、提高线路利用率
- 缺点:引起了转发时延、需要较大缓存空间、需要传输额外的信息量
1.4 网络性能指标
常用数据量单位 | 常用数据量单位 |
---|---|
1 Byte = 8 bit | 1 KB = 210 B |
1 MB = K * KB = 220 B | 1 GB = K * MB = 230 B |
1 TB = K * MB = 240 B | 1 GB = 109 B (厂商) |
-
速率:连接在计算机网络上的主机在数字信道上传送比特的速度,也称比特率或数据率。常用单位有:bit/s、b/s、bps(kb/s = 103 bps)
-
带宽:表示网络通信线路所能传送数据的能力,因此网络带宽表示网络中的 “
最高数据率
” -
吞吐量:表示单位之间内通过某个网络(或信道、接口)的数据量
-
时延:发送时延 + 传播时延 + 处理时延
- 发送时延 = 分组长度(b) / 发送速率(b/s)
- 传播时延:信道长度(m)/ 电磁波传播速率(m/s)
- 自由空间:3*108m/s
- 铜线:2.3*108m/s
- 光纤:2.0*108m/s
-
时延带宽积:传播时延 * 带宽,链路的时延带宽积又称为以
比特为单位的链路长度
-
往返时间 RTT(
Round-Trip Time
):双向交互一次所需的时间 -
利用率:
-
网络利用率:全网络信道利用率的加权平均
-
信道利用率:用来表示某信道有百分之几的时间是被利用的。根据
排队论
,当某信道的利用率增大时,该信道引起的时延也会迅速增加,因而信道利用率并非越高越好。由下图得出结论:一些拥有极大主干网的 ISP 通常会控制它们的网络利用率不超过 50%,如果超过了就准备扩容,增大线路的带宽- U:信道利用率
- D0:网络空闲时延
- D:网络当前时延
-
-
丢包率:也称分组丢失率,是指在一定的时间范围内,传输过程中丢失的分组数量与总分组数量的比率。可细分为:接口丢包率、结点丢包率、链路丢包率、路径丢包率、网络丢包率等。丢包率反应了网络的拥塞情况
1.5 常见网络体系结构
层(从下至上) | 开放系统互连参考模型(OSI) | TCP/IP 体系结构 | 原理体系结构 |
---|---|---|---|
1 | 物理层 | 网络接口层 | 物理层 |
2 | 数据链路层 | 网际层 | 数据链路层 |
3 | 网络层 | 运输层 | 网络层 |
4 | 运输层 | 应用层 | 运输层 |
5 | 会话层 | 应用层 | |
6 | 表示层 | ||
7 | 应用层 |
注:OSI 是法律上的国际标志;四层 TCP/IP 体系结构是事实上的国际标志;五层原理体系结构更适用于学习
- 物理层:解决使用何种信号来传输比特的问题
- 数据链路层:解决分组在一段网络(或一段链路)上传输的问题
- 网络层:解决分组在多个网络上传输(路由)问题
- 运输层:解决进程之间基于网络的通信问题
- 会话层:解决进程间的会话问题
- 表示层:解决通信双方交换信息的表示问题
- 应用层:解决通过应用进程的交互来实现特定网络应用的问题
1.6 体系结构分层的必要性
-
HTTP 请求报文:应用层
-
TCP 报文段:运输层给 HTTP 请求报文添加一个 TCP 首部使之成为 TCP 报文段
-
IP 数据报:网络层给 TCP 报文段添加一个 IP 首部使之成为 IP 数据报
-
帧:数据链路层给 IP 数据报添加一个帧首和一个帧尾使之成为 帧
-
比特流:物理层将帧视作比特流,并在比特流前添加
前导码
1.7 专用术语
- 实体:任何可发送或接收信息的硬件或软件进程
- 对等实体:收发双发相同层次中的实体
- 协议:控制两个
对等实体
进行逻辑通信的规则的集合。协议三要素:语法、语义、同步- 语法:定义所交换信息的格式
- 语义:定义收发双方所要完成的操作
- 同步:定义收发双方的时序关系
- 服务:在
协议
的控制下,两个对等实体
间的逻辑通信使得本层能向上一层提供服务。协议是水平的,而服务是垂直的 - 服务访问点:在同一系统中
相邻两层
的实体交换信息的逻辑接口,用于区分不同的服务类型- 数据链路层的服务访问点为帧的 “类型” 字段
- 网络层的服务访问点为 IP 数据报首部中的 ”协议字段“
- 运输层的服务访问点为 ”端口号“
- 服务原语:上层使用下层所提供的服务必须与下层交换一些命令,这些命令称为服务原语
- 协议数据单元 PDU:对等层次之间传送的数据包称为该层的协议数据单元
- 服务数据单元 SDU:同一系统内,层与层之间交换的数据包
二、物理层
2.1 物理层概述
- 物理层职责:物理层考虑的是怎样才能在连接各种计算机的传输媒体上传输数据比特流的问题
- 物理层协议需要包含的主要内容:
- 机械特性:指明接口所用接线器的形状和尺寸、引脚数目和排列方式、固定及锁定装置
- 电气特性:指明在接口电缆上的各条线上出现的电压范围
- 功能特性:指明某条线上出现的某一电平的电压表示何种意义
- 过程特性:指明对于不同功能的各种可能事件的出现顺序
2.2 物理层下的传输媒体
-
同轴电缆:同轴电缆价格较贵且布线不够灵活,随着集线器的出现,在局域网领域基本上都是采用双绞线作为传输媒体
- 基带同轴电缆(
50Ω
):数字传输,过去用于局域网 - 宽带同轴电路(
75Ω
):模拟传输,目前主要用于有线电视
- 基带同轴电缆(
-
双绞线:绞合的目的是为了抵御部分来自外界的电磁波干扰和较少相邻导线的电磁干扰
类别 带宽 特点 应用 3 16MHz 2 对 4 芯双绞线 模拟电话,曾用于传统以太网(10Mbps) 4 20MHz 4 对 8 芯双绞线 曾用于令牌局域网 5 100MHz 增加了绞合度 不超过 100Mbps 5E(超 5 类) 125MHz 衰减更小 不超过 1Gbps 6 250MHz 改善串扰性能 高于 1Gbps 7 600MHz 屏蔽类双绞线 高于 10Gbps -
光纤:通信容量大、传输损耗小、抗干扰能力强、无串音干扰、保密性好防窃听、体积小重量轻
-
原理:当光从高折射率的媒体(纤芯)射向低折射率的媒体(包层)时,其折射角将大于入射角
-
纤芯:非常透明的石英玻璃拉成的细丝(直径 8~100 微米)
-
包层:折射率比纤芯低的玻璃封套(直径 125 微米)
-
单模光纤和多模光纤:
-
2.3 传输方式
-
串行传输:比特依次逐个发送,通信双方只需要一条通信线路
-
并行传输:依次发送 n 个比特,发送端和接收端需要有 n 条传输线路,传输速度是串行传输的 n 倍,但成本高
-
同步传输:数据块以稳定比特流的方式传输,字节之间没有间隔,接收端在每个比特的中间进行检测,判断接收到的是比特 0 还是。收发双发需要做到时钟同步,具体有以下两种方法:
- 外同步:在收发双发之间额外添加一条单独的时钟信号线
- 内同步:发送端将时钟同步信号编码到发送数据中一起传输(如曼彻斯特编码)
-
异步传输:以字节为独立的传输单位,字节之间的时间间隔不固定,接收端仅在字节的起始处对字节的比特实现同步,因此需要在字节的前后分别加上起始位和结束位
- 字节之间异步(字节之间的时间间隔不固定)
- 字节中每个比特仍然需要同步(各比特的持续时间是相同的)
-
单工通信:传输双方只有一个数据传输方向(无线电广播),只需要一条信道
-
半双工通信:通信双方可以相互传输数据,但不能同时进行(对讲机),需要两条信道
-
全双工通信:通信双方可以同时发送和接收信息(有线电话),需要两条信道
2.4 编码与调制
-
基带信号的编码与调制:计算机中的网卡将比特 0 和 1 变换成相应的电信号发送到网线,信号是数据的电磁表现。由信源发出的原始电信号称为
基带信号
,基带信号又可分为数字基带信号
和模拟基带信号
。在计算机网络中,常见的是将数字基带信号通过编码或调制的方法在相应信道上进行传输-
编码:在不改变信号性质的前提下,仅对数字基带信号的波形进行变换,称为编码
-
调制:把数字基带信号的频率范围搬移到较高的频段并转换为模拟信号,称为调制
-
数字基带信号编码:编码后产生的信号仍为数字信号,可在数字信道中传输。如以太网使用曼彻斯特编码、4B/5B、8B/10B 等
-
数字基带信号调制:调制后产生的信号是模拟信号,可以在模拟信道中传输。如 WiFi 使用补码键控、直接序列扩频、正交频分复用等调制方法
-
模拟基带信号编码:对音频信号进行编码的脉码调制 PCM,也就是将模拟音频信号通过
采用、量化、编码
这三个步骤进行数字化 -
模拟基带信号调制:将语音数据加载到模拟的载波信号中传输,如传统电话、频分复用 FDM 技术
-
-
码元:在使用时间域的波形表示数字信号时,代表不同离散数值的基本波形
-
几种常用的编码方法:
- 不归零编码:在整个码元时间内,电平不会出现零电平。缺点是存在数据同步问题
- 归零编码:每个码元传输结束后都要进行信号归零。优点是实现自同步,但编码效率低
- 曼彻斯特编码:在每个码元时间的中间时刻,信号都会发生跳变。码元中间时刻的跳变既表示时钟,又表示数据。传统以太网(10 Mbps)使用的就是曼彻斯特编码
- 差分曼彻斯特编码:在每个码元时间的中间时刻,信号都会发生跳变。跳变仅表示时钟,而用码元开始处电平是否发生变换来表示数据。比曼彻斯特编码变化少,更适合较高的传输速率
-
基本调制方法:调幅、调频、调相。一个码元只能包含一个比特信息
-
混合调制方法:一个码元包含更多的比特信息。可以将相位和振幅结合起来一起调制,称为正交振幅调制 QAM。而频率是相位随时间的变化率,因而不能同时调制频率和相位。以下是混合调制方式的举例 -
正交振幅调制 QAM16
:-
QAM16 调制的波形可以有 12 种相位,每种相位有 1 或 2 种振幅可选。一共可以调制出 16 种码元(波形)
-
16 种码元中,每种码元可以包含 4(log216) 个比特信息。码元与 4 个比特的对应关系应采用
格雷码
,即任意两个相邻码元只有 1 个比特不同
-
2.5 奈氏准则与香农公式
- 信号失真的原因:码元传输速率、信号传输距离、噪声干扰、传输媒体质量
- 奈氏准则:在假定的理想条件下,为了避免码间串扰(信号波形失去了码元间的清晰界限),码元传输速率是有上限的
- 理想
低通信道
的最高码元传输速率 = 2W Baud = 2W 码元/秒- W:信道带宽(Hz)
- Baud:波特(码元/秒)
- 理想
带通信道
的最高码元传输速率 = W Baud = W 码元/秒
- 理想
- 码元传输速率:又称波特率、调制速率、波形速率或符号速率,它与比特率存在一定的关系:
- 1 码元携带 1 比特信息时,波特率(码元/秒)在数值上等于比特率(比特/秒)
- 1 码元携带 n 比特信息时,波特率(码元/秒)转换为比特率时,在数值上乘以 n
- 香农公式:带宽受限且有
高斯白噪声干扰
的信道的极限信息传输速率:c = W * log2(1 + S/N)- c:信道的极限信息传输速率(b/s)
- W:信道带宽(Hz)
- S:信道内所传信号的平均功率
- N:信道内的高斯噪声功率
- S/N:信噪比,使用分贝(dB)作为度量单位。dB = 10 * log10(S/N)
注:根据奈氏准则和香农公式,在信道带宽一定的情况下,要想提高信息的传输速率就必须采用多元制(更好的调制方法)和努力提高信道中的信噪比
三、数据链路层
3.1 数据链路层概述
-
链路(
Link
):从一个结点到相邻结点的一段物理线路,中间没有其它任何交换结点 -
数据链路(
Data Link
):把实现通信协议的硬件和软件加到链路上,数据链路层以帧为单位传输和处理数据 -
点对点数据链路层需要解决的三个重要问题:
-
封装成帧
-
差错检测
-
可靠传输
-
-
广播信道的数据链路层需要解决的五个问题:
- 封装成帧
- 差错检测
- 可靠传输
- 编址问题
- 碰撞问题:
- 共享式局域网:采用以太网的媒体接入控制协议
CSMA/CD
(载波监听多点接入/碰撞检测) - 无线局域网:801.11 局域网采用的媒体介入控制协议是
CSMA/CA
(载波监听多点接入/碰撞避免)
- 共享式局域网:采用以太网的媒体接入控制协议
3.2 封装称帧
-
封装成帧:数据链路层将上层交付的协议数据单元(来自网络层的 IP 数据报)添加帧头和帧尾使之成为帧
-
以太网 V2 版本 MAC 帧和 PPP 帧的格式:
-
物理层前导码:以太网 V2 版本的 MAC(
Media Access Control
)帧格式的帧头、帧尾中并没有包含帧定界标志
,故以太网的数据链路层封装好 MAC 帧后,将其交付给物理层。物理层会在 MAC 帧前面添加8
字节的前导码,然后再将比特流转换为电信号发送。另外,以太网还规定了帧间间隔时间为96
比特的发送时间,因而 MAC 帧并不需要帧结束定界符 -
最大传送单元:为了提高帧的传输效率,应当使帧的数据部分长度尽可能大,但考虑到差错控制等多种因素,每一种数据链路层协议都规定了帧的数据部分的长度上限,即最大传送单元 MTC(
Maximum Transfer Unit
)
3.3 差错检测
-
奇偶校验法
-
循环冗余校验 CRC(
Cyclic Redundancy Check
):循环冗余校验码 CRC 有很好的检错能力(漏检率非常低),虽然计算比较复杂,但易于硬件实现,因此被广泛应用于数据链路层中-
收发双发约定好一个生成多项式 G(x),CRC 算法要求生成多项式必须包含
最低次项
(常数项) -
发送方基于待发送的数据和 G(x) 计算机出差错检测码(冗余码),将其添加到待传输数据中一起传输
-
接收方通过 G(x) 来计算收到的数据是否产生了误码
-
CRC 常用的生成多项式:
CRC-16:G(x) = x16 + x15 + x2 + 1
CRC-CCITT:G(x) = x16 + x12 + x5 + 1
CRC-32:G(x) = x32 + x26 + x23 + x22 + x16 + x12 + x11 + x10 + x8 + x7 + x5 + x4 + x2 + x + 1
-
注:检错码只能检测出帧在传输过程中出现了差错,但并不能定位错误,因此无法纠正错误。要想纠正传输中的差错,可以使用冗余信息更多的 纠错码
进行前向纠正,但纠错码开销很大,在计算机网络中很少使用
3.4 可靠传输
- 误码率:在一段时间内,传输过程中错误的比特占所传输比特总数的比率称为误码率 BER(
Bit Error Rate
) - 有线链路:一般情况下,有线链路的误码率比较低,为了减小开销,并不要求数据链路层向上提供可靠传输服务。即使出现了误码,可靠传输的问题交由其上层处理
- 无线链路:无线链路易受干扰,误码率比较高,因此在无线链路中要求数据链路层必须向上层提供可靠传输服务
- 三种可靠传输实现机制:
- 停止 - 等待协议(SW)
- 回退 N 帧协议(GBN)
- 选择重传协议(SR)
3.5 可靠传输之停止 - 等待协议
-
分组丢失:接收方收不到数据分组就不会发送
ACK
(确认分组)和NAK
(否认分组),如果不采取适当措施,发送方就会一直处于等待接收方 ACK 或 NAK 的状态。采用超时重传机制解决此问题 -
超时重传:发送方在发送完一个数据分组后,启动一个超时计时器,若到了超时计时器设置的重传时间仍收不到接收方的 ACK 或 NAK,则重传原来的数据分组。一般可将重传时间选为略大于 “从发送方到接收方的平均往返时间”
-
分组重复:
- 发送方发送的分组在网络中滞留造成超时重传该分组,一段时间后两个分组均到达了接收方,导致接收方无法甄别收到的两个分组
- 为避免分组重复这种传输错误,必须给每个分组带上序号。对于停止 - 等待协议,由于每发送一个数据分组就停止等待,只要保证每发送一个新的数据分组,其序号与上次发送的数据分组的序号不同就可以了,因而只需使用一个比特进行编号
- 为了让发送方能够判断收到的确认分组 ACK 是否重复,也需要给 ACK 分组编号。所用比特数量与数据分组所用比特数量一样。数据链路层一般不会出现 ACK 分组迟到的情况,因此在数据链路层实现停止 - 等待协议可以不用给 ACK 分组编号
-
停止 - 等待协议(
Stop - and - Wait
)的信道利用率:U = TD / (TD + RTT + TA)- TD:数据分组发送时延
- RTT:往返时间
- TA:确认分组发送时延,一般情况下远小于 TD,可忽略
3.6 可靠传输之回退 N 帧协议
-
回退 N 帧协议(
GBN,Go - Back - N
):该协议在流水线传输的基础上,利用发送窗口来限制发送方可连续发送的数据分组的个数- 若采用 k 个比特给数据分组编号,则数据分组的序号范围为 0 ~ 2k - 1
- 发送窗口的尺寸 WT 的取值:1 < WT < 2k - 1
- 接收窗口的尺寸 WR 的取值:WR = 1
-
累计确认:接收方不一定要对收到的数据分组逐个发送 ACK,可以在收到几个分组后对按序到达的最后一个分组 ACK。ACKn 表示序号为 n 及其之前的所有数据分组均已被正确接收
-
传输存在差错的情况:如下图所示,尽管序号为
6,7,0,1
的数据分组已正确到达接收方,但由于 5 号数据分组存在误码不被接收方接受,它们也因此 “受到牵连” 而不被接受。发送方还需重传这些已发送且无差错的数据分组6,7,0,1
,这就是回退 N 帧协议名称的由来。可见,当通信线路质量不好时,回退 N 帧协议的信道利用率并不比停止 - 等待协议高 -
发送窗口 WT 取值不合理:若发送窗口尺寸 WT 的取值超过其上限,如例中 WT ∈ [0,7],故意取值 WT = 8,将导致接收方
无法分辨新、旧数据分组
这种传输差错
3.7 可靠传输之选择重传协议
-
回退 N 帧存在的问题:回退 N 帧协议的接收窗口 WR = 1,因此接收方只能接收按序正确到达的数据分组,一个数据分组的误码就会导致其后序多个数据分组不能被接受方按序接收而丢弃,造成了通信资源的浪费
-
选择重传协议(
Selective Request
):在回退 N 帧协议的基础上,为了进一步提高性能,可设法只重传出现误码的数据分组。因此接收窗口的尺寸 WR 不应恒等于 1,而应合理取值,以便接收方先收下失序到达但无误码并且序号落在接收接收窗口内的那些数据分组,等到所缺数据分组收齐后再一并送交上层处理,这就是选择重选协议 -
逐一确认:选择重传协议为了使发送方仅重传出现差错的分组,接收方不能再采用累计确认,而需对每个正确接收到的数据分组进行逐一确认
3.8 点对点协议 PPP
-
点对点协议(
Point - to - Point Protocol
):点对点协议是目前使用最广泛的点对点
数据链路层协议,使用 PPP 的数据链路层向上层不提供可靠传输服务。PPP 协议为在点对点链路中传输各种协议数据报提供了一个标准方法,主要由以下三部分构成:- 对各种协议数据报(来自网络层)的封装方法(封装成帧)
- 链路控制协议
LCP
,用于建立、配置以及测试数据链路的连接 - 一套网络控制协议
NCPs
,其中的每一个协议支持不同的网络层协议
-
PPP 点对点协议的帧格式:
- F(Flag):PPP 帧的定界符,取值为
0x7E
- A(Address):取值为
0xFF
,预留使用 - C(Control):取值为
0x03
,预留使用 - P(Protocol):指明帧的数据部分交给哪个协议处理:
- 0x0021:IP 数据报
- 0xC021:LCP 分组
- 0x8021:NCP 分组
- FCS(Frame Check Sequence):CRC 循环冗余校验码计算出的校验位
- F(Flag):PPP 帧的定界符,取值为
-
PPP 协议的透明传输:
-
面向字节的异步链路采用插入转义字符的字节填充法,以下是发送方的处理过程:
- 出现的每一个定界符(7E)字节转变为 2 字节序列(7D, 5E)
- 出现的每一个转义字符(7D)字节转变为 2 字节序列(7D, 5D)
- 出现的每一个 ASCII 码控制字符(数值小于 0x20 的字符)则在该字符前插入一个 7D 字节,同时将该字符的编码加上 0x20
-
面向比特的同步链路采用比特 0 的比特填充法:只要发现 5 个连续的比特 1,则立即填充 1 个比特 0
-
-
PPP 协议的工作状态:
3.9 媒体接入控制
-
媒体接入控制:共享信道着重需要考虑的一个问题就是如何协调多个发送和接收站点对同一个共享传输媒体的占用,即媒体接入控制 MAC(
Medium Access Control
) -
静态划分信道:预先分配好信道,这类方法非常不灵活,对于突发性数据传输信道利用率会很低。通常在
无线网络
的物理层中
使用,而不是在数据链路层
中使用 -
集中控制的多点轮询协议:一个主站以循环方式轮询每个站点有无数据发送,只有被轮询到的站点才能发送数据,最大的缺点就是存在
单点故障问题
-
分散控制的令牌传递协议:各站点是平等的,并连接成一个环形网络。令牌(一种特殊的控制帧)沿环逐站传递,接收到令牌的站点才有权发送数据,并在发送完数据后将令牌传递给下一个站点。典型网络有:
- IEEE 802.5 令牌环网
- IEEE 802.4 令牌总线网
- 光纤分布式数据接口 FDDI
-
受控接入:这种媒体接入控制方式已逐步退出历史舞台
-
随机接入:所有站点通过竞争,随机地在信道上发送数据。如果恰巧有两个或更多的站点在同一时刻发送数据,则信号在共享媒体上就要产生碰撞,将导致这些站点的数据发送都失败。因此,这类协议要解决的关键问题是如何
避免冲突
及在发送冲突后如何尽快恢复通信,著名的共享式以太网
采用的就是随机接入
注:随着技术的发展,交换技术的日益成熟和设备成本的逐步降低,具有更高性能的使用 点对点链路的链路层交换机
的交换式局域网在 有线领域
已完全取代了共享式局域网。但由于无线信道的广播天性,无线局域网
仍然使用的是 共享媒体技术
3.10 媒体接入控制之静态划分信道
-
频分复用(
FDM
):频分复用的所有用户占用不同的频带资源并行
通信。用于多址接入时称为频分多址(FDMA,Frequency Division Multiple Access
) -
时分复用(
TDM
):时分复用的所有用户在不同的时间占用同样的频带宽度。用于多址接入时称时分多址(TDMA,Time Division Multiple Access
) -
波分复用(
WDM
):波分复用其实就是光的频分复用 -
码分复用(
CDM
):CDM 是另一种共享信道的方法。实际上该技术主要用于多址接入,人们更常用的名词时码分多址(CDMA,Code Division Multiple Access
)。码分复用的每一个用户可以在同样的时间使用同样的频带进行通信。由于各用户使用经过特殊挑选的不同码型,因此各用户之间不会造成干扰。码分复用最初是用于军事通信,因为这种系统所发送的信号有很强的抗干扰能力,其频谱类似于白噪声,不易被敌人发现-
码片(
Chip
):在码分多址(CDMA)中,每一个比特时间再划分为 m 个短的间隔,称为码片(Chip)。通常 m 的值是 64 或 128,后续例子中取 m = 8 -
使用 CDMA 的每一个站被指派一个唯一的 m bit 码片序列。惯例写法常将码片序列中的
0 写为 -1,1 写为 +1
- 一个站如果要发送比特 1,则发送它自己的 m bit 码片序列
- 一个站如果要发送比特 0,则发送它自己的 m bit 码片序列的二进制反码
-
码片序列的挑选原则如下:
-
分配给每个站的码片序列必须各不相同,常采用
伪随机码序列
-
分配个每个站的码片序列必须
相互正交
(规格化内积为 0)
-
-
码分多址应用举例:假设所有站所发送的码片序列都是同步的,接收站 D 知道其它各占所持有的码片序列。D 可对接收到的叠加信号进行判断,从而得出各站是否发送了数据以及发送的是比特 0 还是 1
-
-
复用与多址:
- 复用:将单一媒体的频带资源划分为很多子信道,这些子信道之间相互独立,互不干扰。从媒体的整体频带资源上看,每个子信道只占用该媒体频带资源的一部分
- 多址:更确切地说应称为多点接入,处理的是动态分配信道给用户。某种程度上可看作是复用技术的应用
注:FDMA、TDMA、CDMA 是常见的物理层信道复用技术,属于静态划分信道,用于多用户共享信道,不会发生冲突
3.11 媒体接入控制之随机接入 - CSMA/CD 协议
-
载波监听多址接入/碰撞检测:早期的以太网采用 CSMA/CD(
Carrier Sense Multiple Access / Collision Detection
) 协议来解决共享信道的碰撞
问题- 载波监听(“
先听后说
”):每一个站在发送帧之前先要检测一下总线上是否有其它站点在发送帧- 若检测到总线空闲 96 比特时间,则发送这个帧
- 若检测到总线忙,则继续检测并等待总线转为空闲 96 比特时间(接收处理时间、站点公平竞争),而后发送这个帧
- 多址接入:多个站连接在一条总线上,竞争使用总线
- 碰撞检测:每一个正在发送帧的站边发送边检测碰撞(“
边说边听
”),一旦发现总线上出现碰撞,则立即停止发送,退避一段随机时间后再次发送(“一旦冲突,立即听说,等待时机,重新再说
”)
- 载波监听(“
-
强化碰撞:以太网还采取一种叫做强化碰撞的措施,即发送帧的站点一旦检测到碰撞,出了立即停止发送帧外,还要再继续发送 32 或 48 比特的人为干扰信号(
Jamming Singal
),以便有足够多的碰撞信号使所有站点都能检测出碰撞 -
争用期(碰撞窗口):主机最多经过 2t 的时长就可检测到本次发送是否遭受了碰撞,因而以太网的端到端的往返传播时间 2t 称为争用期或碰撞窗口
-
最大总线长度:显然,在以太网中发送帧的主机越多,端到端往返传播时延越大,发生碰撞的概率就越大。因此共享式以太网不能连接太多的主机,使用的总线也不能太长。10Mbps 的以太网把争用期定为
512 比特发送时间
,即 51.2 微秒,因此其总线长度不能超过 5120m,但考虑到一些其它因素,如信号衰减等,以太网规定总线长度不能超过 2500m
-
最小帧长:以太网的最小帧长确保了主机可在帧发送完成之前就检测到该帧的发送过程中是否遭遇了碰撞
- 以太网规定最小帧长为
64 字节
(不足则填充),即 512 比特。512 比特发送时间即为争用期 - 如果在争用期内没有检测到碰撞,那么后续发送的数据就一定不会发送碰撞
- 如果在争用期内检测到碰撞,就立即终止发送,这时已经发送出去的数据一定小于 64 字节,因此凡长度小于 64 字节的帧都是由于碰撞而导致的无效帧
- 以太网规定最小帧长为
-
最大帧长:
数据载荷
的最小长度不小于 46 字节,最大长度为 1500 字节- 加上首部和尾部共 18 字节,
最大帧长为 1518 字节,最小帧长为 64 字节
-
退避时间:使用
截断二进制指数退避算法
来计算退避时间,- 退避时间 = 基本退避时间(争用期 2t)* 随机数 r(r ∈ 0, 1, …, (2k - 1),k = min[重传次数,10])
- 从上述公式不难看出,若连续多次发生碰撞,就表明可能有较多的主机参与竞争信道,使用上述的退避算法可使重传需要推迟的平均时间随重传次数而增大(也称动态退避),因而减少发生碰撞的几率,有利于整个系统的稳定
-
CSMA/CD 协议的信道利用率:极限信道利用率 S = T0 / (T0 + t) = 1 / (1 + T0/t)。假定各主机发送帧都不会遭遇碰撞,总线一旦空闲就有某个主机立即发送帧
- T0:帧本身的发送时间
- T0 + t:发送一帧占用总线的时间
-
CSMA/CD 协议帧发送流程图:
-
CSMA/CD 协议帧接收流程图:
注:CSMA/CD 协议曾经用于各种总线结构的以太网和双绞线以太网的早期版本中。现在的以太网基于 交换机和全双工连接
,不会产生碰撞,因此没有必要使用 CSMA/CD 协议
3.12 媒体接入控制之随机接入 - CSMA/CA 协议
-
无线局域网中不能使用 CSMA/CD 的原因:
-
硬件要求:无线信道传输条件特殊,其信号强度的动态范围非常大,无线网卡上接收到的信号强度往往会小于发送信号的强度,如果要在无线网卡上实现碰撞检测,对硬件的要求非常高
-
隐蔽站问题:即使能够在硬件上实现无线局域网的碰撞检测功能,但由于无线电波传输的特殊性(存在隐蔽站问题),进行碰撞检测没有意义
-
-
载波监听多址接入/碰撞避免:
802.11 无线局域网
使用CSMA/CA(Carrier Sense Multiple Access / Collision Avoidance)
协议来解决无线信道的碰撞问题,不再实现 CAMA/CA 的碰撞检测功能。由于不可能避免所有的碰撞,并且无线信道误码率较高,因而 802.11 标准还在数据链路层使用了确认机制(停止 - 等待协议)
来保证数据被正确接收 -
802.11 的媒体接入控制标准定义了两种不同的媒体接入方式:
- 分布式协调功能 DCF(
Distributed Coordination Function
)。在 DCF 方式下,没有中心控制站点,每个站点使用 CSMA/CA 协议通过争用信道
来获取发送权,这是 802.11 的默认方式 - 点协调功能 PCF(
Point Coordination Function
)。PCF 方式使用集中控制的接入算法(一般在接入点 AP 实现集中控制),是 802.11 定义的可选方式,在实际中较少使用
- 分布式协调功能 DCF(
-
帧间间隔 IFS(
Inter Frame Space
):802.11 标准规定所有的站点必须在持续检测到信道空闲一段时间后才能发送帧,这段时间称为帧间间隔 IFS。帧间间隔的长短取决于该站点要发送的帧类型:- 高优先级帧需要等待的时间较短,因此可优先获得发送权
- 低优先级帧需要等待的时间较长,若某个站的低优先级帧还没来得及发送,而其它站的高优先级帧已发送到信道上,则信道变为忙碌状态,因而低优先级帧只能推迟发送,这样便减小了碰撞发生的几率
-
常见的两种帧间间隔:
- 短帧间间隔 SIFS(
28 µs
):最短的帧间间隔,用来分隔属于一次对话的各帧。一个站点应当能够在这段时间内从发送模式切换到接收模式。使用 SIFS 的帧类型有:- ACK 帧
- CTS 帧
- 由过长的 MAC 帧分片后的数据帧
- 所有回答接入点 AP 探寻的帧
- 在 PCF 方式中接入点 AP 发送出的任何帧
- DCF 帧间间隔 DIFS(
128 µs
):它比短帧间间隔 SIFS 要长得多,在 DCF 方式中用来发送数据帧和管理帧
- 短帧间间隔 SIFS(
-
CSMA/CA 的工作原理:
- 源站在检测到信道空闲后还要再等待一个 DIFS 时间的原因:考虑到其它站需要发送高优先级帧,若有则先发送高优先级帧
- 目的站正确接收数据帧后需等段一个 SISF 时间后才发送 ACK 帧的原因:用来分隔开一次对话的各帧,在这段时间内,一个站点应当能从发送模式切换到接收模式
-
CAMA/CA 的退避时间:
-
不使用退避算法的情况:当站点检测到信道是空闲的,并且上一个成功发送的数据帧不是本站所发送的,则不使用退避算法
-
必须使用退避算法的情况:
- 在发送数据帧之前检测到信道是否处于忙状态
- 在每一次重传一个数据帧时
- 在每一次成功发送后要连续发送下一个帧时(避免一个站点长时间占用信道)
-
随机退避时间:在执行退避算法时,站点需为退避计时器设置一个随机的退避时间
-
当退避计时器的时间减小到零时,就开始发送数据
-
当退避计时器的时间还未减小到零时而信道又转变为忙状态,这时就冻结退避计时器的数据,重新等待信道变为空闲,再经过 DIFS 后,继续启动退避计时器
-
在进行第 i 次退避时,退避时间在时隙编号 0, 1, …, 22+i - 1 中随机选择一个,然后乘以基本退避时间(争用期)就可以得到随机退避时间。这样做的目的是为了使不同站点选择相同退避时间的概率减小。当
时隙编号
达到 255 (对应于第 6 次退避)后就不再增加了
-
-
-
CAMA/CA 协议的信道预约:为了尽可能较小碰撞的概率和降低碰撞的影响,802.11 标准允许要发送数据帧的站点对信道进行预约
- 源站在发送数据帧之前先发送一个短的控制帧,称为
请求发送 RTS(Request To Send)
,它包括源地址、目的地址以及这次通信所需的时间。如果 RTS 帧发生碰撞,源站就收不到 CTS 帧,源站需执行退避算法重传 RTS 帧 - 若目的站正确收到源站发来的 RTS 帧且信道空闲,就发送一个响应控制帧,称为
允许发送 CTS(Clear To Send)
,它也包括这次通信所需的持续时间(从 RTS 中复制) - 源站收到 CTS 帧后,再等待一个 SIFS 时间后,就可发送其数据帧
- 若目的站正确收到了来自源站的数据帧,再等待时间 SIFS 后,就向源站发送确认帧 ACK
- 除源站和目的站以外的其它各站,在收到 CTS 帧(或数据帧)后就推迟接入到无线局域网,这样就保证了源站和目的站间的通信不会受到其他站的干扰
注:由于 RTS 和 CTS 帧很短,发生碰撞的概率、碰撞产生的开销以及本身发送的开销都很小,而对于一般的数据帧,其发送时延往往大于传播时延,碰撞的概率很大,且一旦发生碰撞将导致数据帧重发,浪费的时间会更多,因此用很小的代价对信道进行预约往往是值得的。802.11 标准规定了 3 种情况供用户选择:
- 使用 RTS 帧和 CTS 帧
- 不使用 RTS 帧和 CTS 帧
- 只有当数据帧的长度超过某一数值时才使用 RTS 帧和 CTS 帧
- 源站在发送数据帧之前先发送一个短的控制帧,称为
-
CAMA/CA 协议的虚拟载波监听:除 RTS 帧和 CTS 帧会携带通信需要持续的时间外,数据帧也能携带通信需要的持续时间。由于利用虚拟载波监听机制,站点只要监听到 RTS 帧、CTS 帧或数据帧中的任何一个,就能知道信道被占用的持续时间,而不需要真正监听信道上的信号,因此虚拟载波监听机制能减少隐蔽站带来的碰撞问题
3.13 MAC 地址
- MAC(
Media Access Control
) 地址:一般被固化在网卡(网络适配器)的电可擦可编程只读存储器 EEPROM
中,因此 MAC 地址也称为硬件地址,习惯上也称物理地址。一般情况下,用户主机会包含两个网络适配器:有线局域网适配器(有线网卡)和无线局域网适配器(无线网卡),每个网卡都配置有一个全球唯一的 MAC 地址,而交换机和路由器往往拥有更多的网络接口,所有会拥有更多的 MAC 地址。综上所述,严格来说 MAC 地址是对网络上各接口
的唯一标识,而不是对网络上各设备的唯一标识
-
MAC 地址的四种类型:全球管理多播地址、全球管理单播地址、本地管理多播地址、本地管理单播地址
- MAC 地址的发送顺序:字节顺序从第一字节到第六字节,比特顺序从第 0 个比特到第 7 个比特
- 广播 MAC 地址:全 F 的地址,即
FF-FF-FF-FF-FF-FF
-
IEEE 802 局域网 MAC 地址格式:
3.14 IP 地址
-
IP 地址属于 TCP/IP 体系结构的网际层,是因特网(Internet)上的主机和路由器所使用的地址,用于标识两部分内容:
- 网络编号:标识因特网上数以百万计的网络
- 主机编号:标识同一网络上不同主机(或路由器各接口)
-
分组转发过程中 IP 地址与 MAC 地址的变化情况:
- 源 IP 地址和目的 IP 地址保持不变
- 源 MAC 地址和目的 MAC 地址逐个链路(或逐个网络)改变
3.15 ARP 协议
-
ARP(
Address Resolution Protocol
) 协议属于 TCP/IP 体系结构的网际层,其作用是根据已知的设备 IP 地址获取设备的 MAC(Media Access Control
) 地址 -
ARP 的两种报文:
- ARP 请求报文(广播):封装在 MAC 帧中,目的地址为广播 MAC 地址
FF-FF-FF-FF-FF-FF
- ARP 响应报文(单播):封装在 MAC 帧中,目的地址为请求报文的 MAC 地址
- ARP 请求报文(广播):封装在 MAC 帧中,目的地址为广播 MAC 地址
-
Windows 系统下查看自己主机的 ARP 高速缓存表:
注:ARP 协议只能在一段链路上或一个网络上使用,而不能跨网络使用
3.16 集线器
-
早期的总线型以太网(已淘汰)
-
使用双绞线和
集线器(HUB)
的星型以太网 -
集线器式以太网的特点:
以上是关于计算机网络-可靠传输-停止等待协议的主要内容,如果未能解决你的问题,请参考以下文章
计算机网络 王道考研2021 第三章:数据链路层 -- 流量控制(停止-等待协议(信道利用率)滑动窗口协议概述)与可靠传输机制
王道考研 计算机网络11 数据链路层 封装成帧 透明传输 流量控制 停止-等待协议 后退N帧协议GBN 选择重传协议SR