计算机网络
计算机网络的分类
按交换技术分类
电路交换网络
报文交换网络
交换机只有在接收完报文之后才会进行转发
分组交换网络
将数据分组逐步转发,各分组可以由不同链路转发。
按使用者分类
公用网
专用网
按传输介质分类
有线网络
无线网络
按覆盖范围分类
广域网 WAN
因特网核心,覆盖范围极广,可横跨国家乃至州
城域网 MAN
城市骨干网
局域网 LAN
一般用微型计算机或工作站通过高速通信线路相连,速率通常在10Mbit/s 范围较小
个域网 PAN
个人使用的网络,如智能手表,无线耳机,无线鼠标键盘等,覆盖范围大约为十米
按拓扑结构分类
总线型网络
使用单根传输线把计算机连接起来,
优点:是建网容易,增减节点方便,节省线路
缺点:重负载时通信效率不高,总线任意一处出现故障,则全网瘫痪
星型网络
将每个计算机都以单独的线路与中央设备相连,中央设备早期是计算机,后来是集线器,现在一般是交换机或路由器
优点:便于网络集中控制和管理
缺点:成本高,中央设备对故障敏感
环形网络
将所有计算机的网络接口连接成一个环,详见令牌环局域网,环可以是单环也可以是双环,环中信号是单向传输。
网状型网络
一般情况下,每个节点至少由两条路径与其他节点相连,多用在广域网(WAN)中
优点:可靠性高
缺点:控制复杂,线路成本高
计算机网络的性能指标
比特 bit
bit 是数据量的单位
常用数据量单位:
8bit = 1Byte = 1字节
KB = 2¹⁰ B
MB = K · KB = 2¹⁰ · 2¹⁰ B = 2²⁰ B
GB = K · MB = 2¹⁰ · 2²⁰ B = 2³⁰ B
速率
常用单位: bit/s (b/s, bps)
带宽
带宽在模拟信号系统中的意义:信号所包含的各种不同频率成分所占据的频率范围;
单位: Hz(kHz,MHz,GHz)
带宽在计算机网络中的意义 用来表示网络的通信线路所能传送数据的能力,因此网络带宽表示在单位时间内从网络中的某一点到另一点所能通过的“最高数据率”;
单位: b/s (kb/s,Mb/s,Gb/s,Tb/s)
“带宽” 的这两种表述之间有着密切的联系,一条通信线路的“频带宽度” 越宽,其所传输数据的“最高数据率”也越高
吞吐量
吞吐量表示在单位时间内通过某个网络(或信道、接口)的数据量
吞吐量被经常用于对现实世界中的网络的一种测量,以便知道实际上到底有多少数据量能够通过网络
吞吐量受网络带宽或额定速率的限制
时延
发送时延
数据在发送时的延迟
计算公式:分组长度(b)/ 发送速率(b/s)
传播时延
数据传播到各节点或终点时的延迟
计算公式:信道长度(m)/ 电磁波传播速率(m/s)
电磁波传播速率常用导体:
自由空间: 3 * 10⁸ m/s
铜线:2.3 * 10⁸ m/s
光纤:2.0 * 10⁸ m/s
处理时延
数据到达各节点并转发处理时的延迟,不方便计算具体延迟
小结
报文交换总时间 = 报文的发送时延 * 链路
分组交换总时间 = 报文的发送时延 * 1个分组的发送时延
时延带宽积
时延带宽积 = 传播时延 * 带宽
若发送端连续发送数据,则在所发送的第一个比特即将到达终点时,发送端就已经发送了时延带宽积个比特;
链路的时延带宽积又称为以比特为单位的链路长度
往返时间
在许多情况下,因特网上的信息不仅仅单方向传输,而是双向交互;
我们有时很需要知道双向交互一次所需的时间;
因此,往返时间RTT(round-trip time)也是一个重要的性能指标
利用率
利用率分 信道利用率和网络利用率两种
信道利用率:用来表示某信道有百分之几的时间是被利用的(有数据通过)。
网络利用率: 全网络的信道利用率的加权平均
-
根据排队论,当某信道的利用率增大时,该信道引起的时延也会迅速增加;
-
因此,信道利用率并非越高越好;
-
如果令 D0 表示网络空闲时的时延,D表示网络当前的时延,那么在适当的假定条件下,可以用下面的简单公式来表示D、D0和利用率U之间的关系:
D = D0 / 1-U ;
- 当网络利用率到达 50%时,时延就要加倍;
- 当网络利用率超过 50%时,时延急剧增大;
- 当网络利用率接近 100%时,时延就趋于无穷大;
- 因此,一些拥有较大主干网的ISP通常会控制它们的信道利用率不超过50%,如果超过了,就要准备扩容,增大线路的带宽。
-
也不能是信道利用率太低,这会使宝贵的通信资源被白白浪费。应该使用一些机制,可以根据情况动态调整输入到网络中的通信量,使网络利用率保持在一个合理的范围内
丢包率
-
丢包率即分组丢失率,是指在一定的时间范围内,传输过程中丢失的分组数量与总分组数量的比率。
-
丢包率具体可分为接口丢包率、结点丢包率、链路丢包率、路径丢包率、网络丢包率等。
-
丢包率时网络运维人员非常关心的一个网络性能指标,但对于普通用户来说往往并不关心这个指标,因为他们通常意识不到网络丢包。
-
分组丢失主要有两种情况
-
分组在传输过程中出现误码,被节点丢弃;
-
分组到达一台队列已满的分组交换机时被丢弃;
在通信量较大时就可能造成网络拥塞。
-
-
因此,丢包率反应了网络的拥塞情况:
- 无拥塞时路径丢包率为0%
- 轻度拥塞时路径丢包率为 1% ~ 4%
- 严重拥塞时路径丢包率为 5% ~ 15%
计算机网络体系结构
常见的计算机网络体系结构
OSI体系结构
是法律上的国际标准,不可靠!
TCP/IP 体系结构
事实上的国际标准 生活中经常使用的
IP协议直接为ICMP协议提供服务
PPP协议属于TCP/IP体系结构网络接口层,它可以直接为IP协议提供服务。
原理体系结构
结合上述体系的优点 适合教学
计算机网络体系结构分层的必要性
1.物理层
解决使用何种信号来传输比特的问题
2.数据链路层
解决分组在一个网络(或一段链路)上传输的问题
3.网络层
解决分组在多个网络上传输(路由)的问题
4.运输层
解决进程之间基于网络的通信问题
5.应用层
解决通过应用进程的交互来实现特定网络应用的问题
计算机网络体系结构中的专用术语
实体 任何可发送或接收信息的硬件或软件进程。
对等实体 收发双方相同层次中的实体。
协议 控制两个对等实体进行逻辑通信的规则的集合。
协议的三要素
- 语法 定义所交换信息的格式
- 语义 定义收发双方所要完成的操作
- 同步 定义收发双方的时序关系
服务 在协议的控制下,两个对等实体间的逻辑通信使得本层能够向上一层提供服务
- 要实现本层协议,还需要使用下面一层所提供的服务
- 协议是 “水平的”,服务是 “垂直的”。
- 实体看得见相邻下层所提供的服务,但并不知道实现该服务的具体协议,也就是说,下面的协议对上面的实体是透明的。
服务访问点 在同一系统中相邻两层实体交换信息的逻辑接口,用于区分不同的服务类型。
服务原语 上层使用下层所提供的服务必须通过与下层交换一些命令,这些命令称为服务原语。
协议数据单元PDU 对等层次之间传输的数据包称为该层的协议数据单元。
服务数据单元SDU 同一系统内,层与层之间交换的数据包称为服务数据单元。
物理层
物理层的基本概念
解决在各种传输媒体上传输比特0和1的问题,进而给数据链路层提供透明传输比特流的服务。所谓透明是指数据链路层看不见也无需看见物理层究竟使用的是什么方法来传输比特0和1的。只管享受物理层提供的比特流传输服务即可。
重点:
- 物理层考虑的是怎样才能在连接各种计算机的传输媒体上传输数据比特流。
- 物理层为数据链路层屏蔽了各种传输媒体的差异,使数据链路层只需要考虑如何完成本层协议和服务,而不必考虑网络具体的传输媒体是什么。
物理层为了解决在各种传输媒体上传输比特0和1的问题,主要有以下四个任务:
-
机械特性:
指明接口所用的接线器的形状和尺寸,引脚数目和排列,固定和锁定装置。
-
电气特性:
指明在接口电缆的各条线上出现的电压的范围。
-
功能特性:
指明某条线上出现的某一电平的电压表示何种意义。
-
过程特性:
指明对于不同功能的各种可能的事件的出现顺序。
( 由于传输媒体的种类众多,例如双绞线、光纤等。物理连接方式也很多,例如点对点连接、广播连接等。因此物理层协议种类就比较多,每种物理层协议都包含了上述四个任务的具体内容 )
导引型传输媒体
同轴电缆
基带同轴电缆(50Ω):数字传输,过去用于局域网。
宽带同轴电缆(75Ω):模拟传输,目前主要用于有线电视。
双绞线
光纤
电力线
最早的的方式
非导引型传输媒体
无线电波
微波
列如使用 2.4GHz 和 5.8GHz 频段的WI-FI
红外线
点对点无线传输
直线传输,中间不能有障碍物,传输距离短
传输速率低(4Mb/s~16Mb/s)
可见光
通过高速调制光的开关来通讯
传输方式
串行传输 && 并行传输
串行传输
一个比特一个比特的传输数据
并行传输
一次发送n个比特而不是一个比特,因此在发送端和接收端之间需要有n条线路
例如硬件里的CPU和内存
同步传输 && 异步传输
同步传输
数据块以稳定的比特流的形式传输,字节之间没有间隔。
接收端在每个比特信号的中间时刻进行检测,以判别接收到的是比特0还是比特1.
异步传输
以字节为独立的传输单位,字节之间的时间间隔不是固定的。接收端仅在每个字节的起始处对字节内的比特实现同步,为此 通常要在每个字节前后分别加上起始位和结束位。
单工 && 半双工 && 全双工
单工
又称为单向通信,只需要一条信道。
通信双方只有一个数据传输方向,例如无线电广播就是采用这种方式。
半双工
又称为双向交替通信,需要两条信道,一条接收一条发送。
通信双方可以相互传输数据,但不能同时进行。例如对讲机就是采用这种方式。
全双工
又称为双向同时通信,需要两条信道,一条接收一条发送。
通信双方可以同时发送和接收信息。例如电话采用的就是这种方式。
编码与调制
常用编码
不归零编码(存在同步问题)
又称不归零编码NRZ:
1.整个码元事件内电平不发生变化
2.需要额外的传输线来传输时钟信号
归零编码 (自同步,编码效率低)
又称归零编码RZ:
每个马原传输结束后信号都要 “ 归零 ”,所以接收方只需要在信号归零后进行采样即可。
曼彻斯特编码(传统以太网,10Mb/s)
1.码元中间时刻的跳变即表示时钟,又表示时间。
2.正/负 跳变表示1/0可以自行定义。
差分曼彻斯特编码(比曼彻斯特编码变化少,更适合较高的传输速率)
1.跳变仅表示时钟。
2.马原开始处电平是否发生变化表示数据,发生变化表示0,不发生变化表示1。
(小知识: log₂ N 可得出每个码元可以携带的比特量 | N : 相位数)
调制
基本调制方法
使用基本调制方法,一个码元只能包含一个比特信息
混合调制方法
信道的极限容量
奈氏准则
在假定的理想条件下,为了避免码间串扰,码元传输速率是有上限的。
理想低通信道的最高码元传输速率 = 2W Baud = 2W 码元/秒
理想带通信道的最高码元传输速率 = W Baud = W 码元/秒
W : 信道宽带(单位为Hz)
Baud : 波特,即码元/秒
码元传输速率又称为波特率、调制速率、波形速率或符号速率。它与比特率有一定关系:
- 当一个码元只携带1比特的信息量时,则波特率(码元/秒)与比特率(比特/秒)在数值上是相等的;
- 当一个码元携带n比特的信息量时,则波特率转换成比特率时,数值要乘以n。
要提高信息传输速率(比特率),就必须设法使每一个码元能携带更多个比特的信息量。这需要采用多元制。
(考点注意:若没有指明信道频率的上下限,则该信道属于低通信道)
实际的信道所能传输的最高码元速率,要明显低于奈氏准则给出的这个上限数值。
香农公式
小知识: log₂8 == 2的多少次方等于8,答案是3次方 2×2×2 = 8
带宽受限且由高斯白噪声干扰的信道的极限信息传输速率。
公式: c = W * log₂(1 +S/N)
c : 信道的极限信息传输速率(单位:b/s)
W : 信道带宽 (单位:Hz)
S : 信道内所传信号的平均功率
N : 信道内的高斯噪声功率
S/N : 信噪比,使用分贝(dB)作为度量单位
信噪比(dB)= 10 * log₁₀(S/N) (dB)
信道带宽或信道中信噪比越大,信息的极限传输速率越高。
在实际信道上能够达到的信息传输速率要比该公式的极限传输速率低不少,这是因为在实际信道中,信号还要受到其他的一些损伤,如各种脉冲干扰、信号在传输中的衰减和失真等,这些因素在香农公式中并未考虑。
综合
在信道宽带一定的情况下,根据奈氏准则和香农公式,要想提高信息的传输速率就必须采用多元制(更好的调制方式)和努力提高信道中的信噪比。
自从香农公式发表后,各种新的信号处理和调制方法就不断出现,其目的都是为了尽可能地接近香农公式给出的传输速率极限。
数据链路层
概述
又可以看成是:
- 链路(Link)就是从一个结点到相邻结点的一段物理线路,而中间没有任何其他的交换结点。
- 数据链路(Data Link)是指把实现通信协议的硬件和软件加到链路上,就构成了数据链路。
- 数据链路层以 帧 为单位传输和处理数据
使用点对点信道的数据链路层
- 三个重要问提:封装成帧、差错检测、可靠传输
使用广播信道的数据链路层
- 共享式以太网的媒体接入控制协议CSMA/CD
- 802.11局域网的媒体接入控制协议CSMA/CA
数据链路层的互联设备
- 网桥和交换机的工作原理
- 集线器(物理层互联设备)与交换机的区别
封装成帧
封装成帧 是指数据链路层给上层交付的协议数据单元添加帧头和帧尾使之成为帧
如下图所示:
帧头和帧尾中包含有重要的控制信息。
例如以太网版本2的MAC帧格式,如图:
点对点协议PPP帧格式:
发送方的数据链路层将上层交付下来的协议数据单元封装成帧后,还要通过物理层将构成帧的各比特转换成点型号发送到传输媒体。
问题:接收方的数据链路层如何从物理层交付的比特流中提取出一个个的帧?
答: 使用帧定界
帧头和帧尾的作用之一就是帧定界
点对点协议PPP帧格式中的1字节的标志就是帧定界,假设发送方发送的是PPP帧,比特流中红色部分是帧定界标志!(1字节 == 1B == 1byte == 8bit) 01111110 就是帧标志
但并不是每个协议都有帧定界标志!例如以太网V2的MAC帧就没有帧头和帧尾标志,但是以太网的数据链路层封装好MAC帧后,将其交付给物理层,物理层会在MAC帧前面添加8字节的前导码。然后再将比特流装换成电信号发送。前导码中的前7个字节为前同步码,作用是使接收方的时钟同步,之后的1字节为帧开始定界符,表明其后面紧跟着的就是MAC帧。如下图所示:
另外,以太网还规定了帧间间隔时间为96比特的发送时间。因此,MAC帧并不需要帧结束定界符。帧间间隔还有其他作用
透明传输 是指 数据链路层对上层交付的传输数据没有任何限制,就好像数据链路层不存在一样
(数据链路层对上层交付的协议数据单元有限制,其内容不能包含帧定界符。但是各种数据链路层协议会想办法解决其中包含的帧定界符,例如在发送帧之前,对帧的数据部分进行扫描,将帧定界符转义来实现透明传输)
|
|
面向字节的物理链路使用字节填充(或称字符填充)的方法实现透明传输。
面向比特的物理链路使用比特填充的方法实现透明传输。
|
|
为了提高帧的传输效率,应当使帧的数据部分的长度尽可能大些。
考虑到差错控制等多种因素,每一种数据链路层协议都规定了帧的数据部分的长度上限,即最大传送单元MTU(Maximum Transfer Unit)
差错检测
实际的通信链路都不是理想的,比特在传输过程中可能会产生差错:1可能会变成0,0可能会变成1。这称为 比特差错
在一段时间内,传输错误的比特占所传输的比特总数的比特称为 误码率BER(Bit Error Rate)。
使用 差错检测码 来检测数据在传输过程中是否产生了比特差错,是数据链路层所要解决的重要问题之一
差错码 只能检测出帧在传输过程中出现了差错,但并不能定位错误,因此 无法纠正错误。
要想纠正传输中的差错,可以使用冗余信息更多的 纠错码 进行 前向纠错。但纠错码的开销比较大,在 计算机网络中较少使用。
循环冗余检验 CRC 有很好的检错能力(漏检率非常低),虽然计算比较复杂,但非常 易于用硬件实现,因此被 广泛应用于数据链路层。
在计算机网络中通常采用 检错重传方式来纠正传输中的差错,或者仅仅是丢弃检测到差错的帧,这取决于数据链路层向其上层提供的是可靠传输服务还是不可靠传输服务
奇偶校验
在待发送的数据后面 添加1位奇偶校验位,使整个数据(包括所添加的校验位在内)中 **“ 1 “ 的个数 **为奇数(奇校验)或偶数(偶校验)。
- 如果有奇数个位发生误码,则奇偶性发生变化,可以检查出误码;
- 如果有偶数个位发生误码,则奇偶性不发生变化,不能检查出误码(漏检);
奇偶校验法的漏检率过高,在计算机网络的数据链路层一般不会采用该方法
循环冗余校验CRC(Cyclic Redundancy Check)
-
收发双方约定好一个 生成多项式 G(x);
-
发送方基于待发送的数据和生成多项式计算出差错检测码(冗余码),将其添加到待传输数据的后面一起传输;
-
接收方通过生成多项式来计算收到的数据是否产生了误码;
使用这些生成多项式进行CRC校验,可以达到较好的检错效果,也就是漏检率比较低
CRC算法要求生成多项式必须包含最低次项。
异或运算:
【循环冗余检验CRC举例】待发送的信息为101001,生成多项式为G(x) = x³ + x² + 1 , 计算余数。
第一步:构造被除数
待发送信息后面添加生成多项式最高次数个0 生成多项式中最高次数是x³ 则添加三个0
得:101001000
第二步:构造除数
生成多项式各项系数构成的比特串,
G(x) = x³ + x² + 1 还原后得 G(x) = 1·x³ + 1·x² + 0·x¹ + 1·x⁰ ,将系数组合成串得:1101
第三步:做除法
商中从左到右第一个数字标记为1表示是从这里开始的,其他的表示是否够除,0表示不够除,1表示够除。
第四步:检查余数
余数的位数应与生成多项式最高次数相同,如果位数不够,则在余数前补0来凑足位数。上图中补了两个0
将余数添加到带发送信息的后面就可以发送了,”101001“ + ”001“ == ”101001001“
【循环冗余检验CRC举例】接收到的信息为101101001,生成多项式为G(x) = x³ + x² + 1 ,判断传输是否误码?
答案:余数为11,有误码。过程自己算算看
可靠传输
基本概念
可靠传输服务:想办法实现发送端发送什么,接收端就收到什么。
一般情况下,有线链路的误码率比较低,为了减小开销,并不要求数据链路层向上提供可靠传输服务。即使出现了误码,可靠传输的问题由其上层处理。
无线链路易受干扰,误码率比较高,因此要求数据链路层必须向上层提供可靠传输服务。
比特差错只是传输差错中的一种。(此处将帧的称呼改为了分组)
从整个计算机网络体系结构来看,传输差错还包括分组丢失、分组失序以及分组重复。
分组丢失、分组失序以及分组重复这些传输差错,一般不会出现在数据链路层,而会出现在其上层。因此可靠传输服务并不局限于数据链路层,其他各层均可选择实现可靠传输
可靠传输的实现比较复杂,开销也比较大,是否使用可靠传输取决于应用需求。
可靠传输的三种实现机制
这三种可靠传输实现机制的基本原理并不局限于数据链路层,可以应用到计算机网络体系结构的各层协议中。
停止-等待协议SW
确认与否认
发送方给接收方发送数据分组,接收方进行 差错检测 判断该数据分组是否有误码
-
若没有误码,则接收该分组,并给发送方发送确认分组ACK
-
若有误码,则丢弃该数据分组,并给发送方发送否认分组NAK。发送方接收NAK后立刻重传该数据分组。
(因此发送方每发送完一个数据分组后并不能立刻将该数据分组从缓存中删除,只有收到ACK确认分组后才可以删除)
发送方每发送完一个数据分组后,就停止发送下一个数据分组,收到ACK确认分组或者NAK否认分组才能进行下一步操作。
超时重传
假设发送方在发送数据分组的过程中意外丢失了该数据分组,接收方没有收到该分组,发送端也没有收到任何确认或重传指令所以不会发送下一个数据分组。为避免这类事件的发生,可以在发送端添加一个超时计时器,超过一定时间后仍未收到ACK或NAK指令,则重发该数据分组。
确认丢失
假设接收端收到数据后发送的确认分组ACK在发送途中意外丢失,而接收端的超时计时器触发使上一个数据分组重复发送。为避免这类事件,可以给发送端发送的数据分组编号,由于停止-等待协议的停等特性,只需1个比特编号就够了,即编号0和1。接收端收到数据分组后发现与上一个收到的数据分组编号一样便丢弃该分组,向发送端发送确认分组ACK。
确认迟到
若接收端的确认分组ACK因为某些原因延迟到达发送端,发送端重发数据分组后又发送了下一个数据分组,接收端收到重复的数据分组和下一个数据分组后向发送端发送了两个确认分组ACK,为了避免这类事件,可给确认分组ACK进行编号,所用比特数量与数据分组编号所用的比特数据量一样。发送端收到同样编号的确认分组ACK后会忽略该确认分组
【注意事项】
- 接收端检测到数据分组有误码时,将其丢弃并等待发送方的超时重传。但对于误码率较高的点对点链路,为使发送方尽早重传,也可给发送方发送NAK分组。
- 为了让接收方能够判断所收到的数据分组是否是重复的,需要给数据分组编号。由于停止-等待协议的停等特性,只需1个比特编号就够了,即编号0和1。
- 为了让发送方能够判断所收到的ACK分组是否是重复的,需要给ACK分组编号。所用比特数量与数据分组编号所用的比特数据量一样。数据链路层一般不会出现ACK分组迟到的情况,因此在数据链路层实现停止-等待协议可以不用给ACK分组编号。
- 超时计时器设置的重传时间应仔细选择。一般可将重传时间选为略大于 “ 从发送方到接收方的平均往返时间 ”。
- 在数据链路层点对点的往返时间比较确定,重传时间比较好设定。
- 然而在运输层,由于端到端往返时间非常不确定,设置合适的重传时间有时并不容易。
停止-等待协议SW信道利用率
Td : 发送方发送数据分组所耗费的发送时延 Time Data
RTT :收发双方之间的往返时间
Ta : 接收方发送确认分组所耗费的发送时延 Time Ack
图中忽略了接收方对数据分组的处理时延以及发送方对确认分组的处理时延。
Ta 远小于 Td 可以忽略,当 RTT 远大于 Td 时,信道利用率会非常低。
【举例】假设信道长度2000km,数据分组长度1500B,发送速率10Mbit/s。
(忽略Ta,因为Ta一般都远小于Td)
答:
根据发送时延 = 分组长度(b)/ 发送速率(b/s)
可得出 1500 / 1250,000 = 0.0012s = 1.2ms
根据传播时延 = 信道长度(m)/ 电磁波传播速率(m/s)
(为了方便计算使用光纤的传播速度: 2 * 108 m/s)
可得出 2,000,000 / 3 * 108 = 0.01 = 10ms
因为是往返时间所以 10 * 2 得 20ms
1.2 / 21.2 = 0.056… 0.056 * 100 = 5.66%
【举例】主机甲采用停-等协议向主机乙发送数据,数据传输速率是3kbps,单向传播延时是200ms,忽略确认帧的传输延时。当信道利用率等于40%时,数据帧的长度为多少?
答案:800比特,过程自己算
- 若出现重传,则对于传送有用的数据信息来说,信道利用率还要降低。
- 为了克服停止-等待SW协议信道利用率很低的缺点,就产生了另外两种协议,即 **后退N帧协议GBN **和 选择重传协议SR。
- 像停止-等待协议这种通过确认和重传机制实现的可靠传输协议,常称为自动请求重传协议ARQ(Automatic Repeat reQuest)意思是重传的请求是自动进行的。
回退N帧协议GBN
跟SW协议差不多,只是发送方一次连续发送N个帧,而接受方正确有序接收N个帧后
才会发送 N [N - 1] 个 ACK
回退N帧协议在流水线传输的基础上利用发送窗口来限制发送方连续发送数据分组的数量,是一种连续ARQ协议。
在协议的工作过程中发送窗口和接收窗口不断向前滑动,因此这类协议又称为滑动窗口协议。
由于回退N帧协议的特性,当通信线路质量不好时,其信道利用率并不比SW协议高。
选择重传协议SR
为了进一步提高性能,可设法只重传出现误码的数据分组。因此,接收窗口的尺寸 WR 不应再等于 1 (而应大于1),以便接收方先收下失序到达但无误码并且序号落在接收窗口内的那些数据分组,等到所缺分组收齐后再一并送交上层。这就是选择重传协议。
SR协议为了使发送方仅重传出现差错的分组,接收方不能再采用累计确认,而需要对每个正确接收到的数据分组进行逐一确认!
点对点协议PPP
点对点协议PPP(Point-to-Point Protocol)是目前使用最广泛的点对点数据链路层协议。也广泛运用于广域网路由器之间的专用线路。
PPP协议是因特网工程任务组IETF在1992年制定的。经过1992年和1994年的修订,现在的PPP协议已成为因特网的正式标准[RFC1661,RFC1662]。
PPP协议为在点对点链路传输各种协议数据报提供了一个标准方法,主要由以下三部分构成:
- 对各种协议数据报的封装方法(封装成帧)
- 链路控制协议LCP,用于建立、配置以及测试数据链路的连接
- 一套网络控制协议NCPs,其中的每一个协议支持不同的网络层协议
PPP协议帧格式:
|
|
PPP协议解决透明传输问题
如果帧的数据部分有标志字段F(定界符),那么该怎么让接收方忽略该标志字段呢?
PPP协议实现透明传输的方法取决于所使用的链路类型
**面向字节的异步链路:**采用字节填充法,也就是插入转义字符。
-
发送方的处理:
- 出现的每一个7E(PPP帧的定界符)字节转变成2字节序列(7D,5E)
- 相当于在7E字节前插入了转义字符7D,并将7E字节减去16进制的20。
- 出现的每一个7D(转义字符)字节转变成2字节序列(7D,5D)
- 相当于在7D字节前插入了转义字符7D,并将7D字节减去16进制的20。
- 出现的每一个ASCII码控制字符(数值小于0x20的字符),则在该字符前面插入一个7D字节,同时将该字符的编码加上0x20。
- 出现的每一个7E(PPP帧的定界符)字节转变成2字节序列(7D,5E)
-
接收方的处理:
- 进行反变换即可恢复出原来的帧的数据部分。
**面向比特的同步链路:**则采用比特填充法,也就是插入比特0。
帧定界符 => 01111110
-
发送方的处理
- 对帧的数据部分进行扫描(一般由硬件实现)。只要发现5个连续的比特1,则立即填充1个比特0。
-
接收方的处理
- 对帧的数据部分进行扫描(一般由硬件实现)。只要发现5个连续的比特1,就把其后的1个比特0删除。
差错检测
工作状态
媒体介入控制的基本概念
静态划分信道
信道复用
简单理解:
- 复用是将单一媒体的频带资源划分成很多子信道,这些子信道之间相互独立,互不干扰。从媒体的整体频带资源上看,每个子信道只占用该媒体频带资源的一部分。
- 多址(更确切的应该称为多点接入)处理的是动态分配信道给用户。这在用户仅仅暂时性地占用信道地应用中是必须的,而所有的移动通信系统基本上都属于这种情况。相反,在信道永久性地分配给用户地应用中,多址是不需要的(对于无线广播或电视广播站就是这样)。
- 某种程度上,FDMA、TDMA、CDMA可以分别看成FDM、TDM、CDM地应用。
常见的复用技术有
频分复用FDM、时分复用TDM、波分复用WDM、码分复用CDM
频分复用FDM 的所有用户同时占用不同的频带资源并通信。
(广播的频率有很多 就如同一个用户用高频分段,另一个用户用低频分段)
时分复用TDM 的所有用户在不同的时间占用同样的频带宽度。时分复用技术将时间划分成一段段登场的时分复用帧。每一个时分复用的用户在每一个时分复用帧中占用固定序号的时隙。
波分复用WDM 就是光(光纤)的频分复用,具体网上搜吧~
码分复用CDM:
-
码分复用CDM是另一种共享信道的方法。实际上,由于该技术主要用于多址接入,人们更常用名词是码分多址CDMA(Code Division Multiple Access)。
-
同理,频分复用FDM和时分复用TDM同样可用于多址接入,相应的名词是频分多址FDMA(Frequency Division Multiple Access)和时分多址TDMA(Time Division Multiple Access)。
-
与FDM和TMD不同,CDM的每一个用户可以 在同样的时间使用同样的频带进行通信。
-
由于 各用户使用经过特殊挑选的不同码型,因此各用户之间 不会造成干扰。
-
CDM最初用于军事通信,因为这种系统所发送的信号有很强的抗干扰能力,其频谱类似于白噪声不易敌人被发现。
-
随着技术的进步,CDMA设备的价格和体积都大幅度下降,因而现在已广泛用于民用的移动通信中。
-
在CDMA中,每一个比特时间再划分为m各短的间隔,称为码片(Chip)。通常m的值是64或128。为了简单起见,在后续的举例中,我们假设m为8。
-
使用CDMA的每一个站被指派一个唯一的 m bit码片序列(Chip Sequence)。
- 一个站如果要发送比特1,则发送它自己的 m bit码片序列;
- 一个站如果要发送比特0,则发送它自己的 m bit码片序列的二进制反码;
【举例】
指派给CDMA系统中某个站点的码片序列为00011011
发送比特1:发送自己的码片序列 00011011
发送比特0:发送自己的码片序列的二进制反码 11100100
(这种通信方式称为直接序列扩频DSSS)
-
码片序列的挑选原则如下:
-
分配给每个站的码片序列必须各不相同,实际常采用伪随机码序列。
-
分配给每个站的码片序列必须相互正交(规格化内积为0)。
令向量S表示站S的码片序列,令向量T表示其他任何站的码片序列。
两个不同站S和T的码片序列正交,就是向量S和T的规格化内积为0:
-
【习题】假设给站S分配的码片序号为01011101,给站T分配的码片序号为10111000,这样分配正确吗?(为了简单起见,我们假设m为8)
答:
1. S码片序列和T码片序列符合码片序列的挑选原则[1]
2. 向量S和T的规格化内积不为0,不符合码片序列的挑选原则[2]
故这样分配不正确!
动态接入控制
总线局域网使用的CSMA/CD协议
载波监听多址接入/碰撞检测 CSMA/CD(Carrier Sense Multiple Access / Collision Detection)
无线局域网使用的CSMA/CA协议
载波监听多址接入/碰撞避免 CSMA/CA(Carrier Sense Multiple Access / Collision Avoidance)
在无线局域网中,仍然可以使用载波监听多址接入CSMA,即再发送帧之前先对传输媒体进行载波监听。若发现有其他站再发送帧,就推迟发送以免发生碰撞。
在无线局域网中,不能使用碰撞检测CD,原因如下:
- 由于无线信道的传输条件特殊,其信号强度的动态范围非常大,无线网卡上接收到的信号强度往往会远远小于发送信号的强度(可能相差百万倍)。如果要在无线网卡上实现碰撞检测CD,对硬件的要求非常高。
- 即使能够在硬件上实现无线局域网的碰撞检测功能,但由于无线电波传播的特殊性**(存在隐蔽站问题),进行碰撞检测的意义也不大**。如图所示:
-
802.11无线局域网使用CSMA/CA协议,在CSMA的基础上增加了一个碰撞避免CA功能,而不再实现碰撞检测功能。
-
由于不可能避免所有的碰撞,并且无线信道误码率较高,802.11标准还使用了**数据链路层确认机制(停止-等待协议)**来保证数据被正确接收。
-
802.11的MAC层标准定义了两种不同的媒体接入控制方式:
- 分布式协调功能DCF(Distributed Coordination Function)。在DCF方式下,没有中心控制站点,每个站点使用CSMA/CA协议通过征用信道来获取发送权,这是802.11定义的默认方式。
- 点协调功能PCF(Point Coordination Function)。PCF方式使用集中控制的接入算法(一般在接入点AP实现集中控制),802.11定义的可选方式,在实际中较少使用。
-
802.11标准规定,所有的站点必须在持续监测到信道空闲一段指定时间后才能发送帧,这段时间称为帧间间隔IFS(Inter Frame Space)。
-
帧间间隔的长短取决于该站点要发送的帧的类型:
- 高优先级帧需要等待的时间较短,因此可优先获得发送权;
- 低优先级帧需要等待的时间较长。若某个站的低优先级帧还没来得及发送,而其他站的高优先级帧已发送到信道上,则信道变为忙态,因而低优先级帧就只能再推迟发送了。这样就减少了发生碰撞的机会。
-
常见的两种帧间间隔如下:
- 短帧间间隔SIFS(28μs),是最短的帧间间隔,用来分隔开属于一次对话的各帧。一个站点应当能够在这段时间内从发送方式切换到接收方式。使用SIFS的帧类型有ACK帧、CTS帧、由过长的MAC帧分片后的数据帧、以及所有回答AP探询的帧和在PCF方式中接入点AP发送出的任何帧。
- DCF帧间间隔DIFS(128μs),它比短帧间间隔SIFS要长得多,在DCF方式中用来发送数据帧和管理帧。
CSMA/CA协议的工作原理
CSMA/CA协议的退避算法
在执行退避算法时,站点为退避计时器设置一个随机的退避时间:
- 当退避计时器的时间减小到零时,就开始发送数据;
- 当退避计时器的时间还未减小到零时而信道又转变为忙状态,这时就冻结退避计时器的数值,重新等待信道变为空闲,再经过时间DIFS后,继续启动退避计时器。
在进行第 i 次退避时,退避时间在时隙编号{0,1,…,22 + i -1}中随机选择一个,然后乘以基本退避时间(也就是一个时隙的长度)就可以得到随机的退避时间。这样做是为了使不同站点选择相同退避时间的概率减少。当时隙编号达到255时(对应于第6次退避)就不再增加了。
- 当站点检测到信道是空闲的,并且所发送的数据帧不是成功发送完上一个数据帧之后立即连续发送的数据帧,则不使用退避算法。
- 以下情况必须使用退避算法:
- 在发送数据帧之前检测到信道处于忙状态时;
- 在每一次重传一个数据帧时;
- 在每一次成功发送后要连续发送下一个帧时(这是为了避免一个站点长时间占用信道);
CSMA/CA协议的信道预约和虚拟载波监听
为了尽可能减少碰撞的概率和降低碰撞的影响,802.11标准允许要发送数据的站点对信道进行预约。
(1)源站再发送数据帧之前先发送一个短的控制帧,称为请求发送RTS(Request To Send),它包括源地址、目的地址以及这次通信(包括相应的确认帧)所需的持续时间。
(2)若目的站正确收到源站发来的RTS帧,且媒体空闲,就发送一个响应控制帧,称为允许发送CTS(Clear To Send),他也包括这次通信所需的持续时间(从RTS帧中将此持续时间复制到CTS帧中)。
(3)源站收到CTS帧后,再等待一段时间SIFS后,就可发送其数据帧。
(4)若目的站正确收到了源站发来的数据帧,在等待时间SIFS后,就向源站发送确认帧ACK。
除源站和目的站以外的其他各站,在收到CTS帧(或数据帧)后就推迟接入到无线局域网中。这样就保证了源站和目的站之间的通信不会受到其他站的干扰。
如果RTS帧发生碰撞,源站就收不到CTS帧,需执行退避算法重传RTS帧。
由于RTS帧和CTS帧很短,发送碰撞的概率,碰撞产生的开销及本身的开销都很小。而对于一般的数据帧,其发送时延往往大于传播时延(因为是局域网),碰撞的概率很大,且一旦发生碰撞而导致数据帧重发,则浪费的时间就越多,因此用很小的代价对信道进行预约往往是最值得的。802.11标准规定了3钟情况供用户选择:
- 使用RTS帧和CTS帧
- 另一种是不使用RTS帧和CTS帧
- 只有当数据帧的长度超过某一数值时才使用RTS帧和CTS帧
除RTS帧和CTS帧会携带通信需要持续的时间,数据帧也能携带通信需要持续的时间,这称为802.11的虚拟载波监听机制。
由于利用虚拟载波监听机制,站点只要监听到RTS帧、CTS帧或数据帧中的任何一个,就能知道信道被占用的持续时间,而不需要真正监听到信道上的信号,因此虚拟载波监听机制能减少隐蔽站带来的碰撞问题。
MAC地址、IP地址、ARP协议
MAC地址是以太网的MAC子层所使用的地址;(属于数据链路层的范畴)
IP地址是TCP/IP体系结构网际层所使用的地址;
ARP协议属于TCP/IP体系结构的网际层,其作用是已知设备所分配到的IP地址,使用ARP协议可以通过该IP地址获取到设备的MAC地址;
尽管IP地址和ARP协议属于TCP/IP体系结构的网际层(而不属于数据链路层),但是它们与MAC地址存在一定的关系,并且我们日常的网络应用都离不开MAC地址、IP地址以及ARP协议。因此我们将这三者放在一起讨论
MAC地址
MAC地址是以太网的MAC子层所使用的地址;(属于数据链路层的范畴)
使用点对点信道的数据链路层不需要使用地址,
而使用广播信道的数据链路层必须使用地址来区分各主机,也就是说当多个主机连接在同一个广播信道上,要想实现两个主机之间的通信,则每个主机都必须有一个唯一的标识,即一个数据链路层地址;
在每个主机发送的帧中必须携带标识发送主机和接收主机的地址。由于这类地址是用于媒体接入控制MAC(Media Access Control),因此这类地址被称为MAC地址;
- MAC地址一般被固化在网卡(网络适配器)的电可擦可编程只读储存器EEPROM中,因此MAC地址也被称为硬件地址;
- MAC地址有时被称为物理地址。但这并不意味着MAC地址属于网络体系结构中的物理层!
一般情况下,用户主机会包括两个网络适配器:有线局域网适配器(有线网卡)和无线局域网适配器(无线网卡)。每个网络适配器都有一个全球唯一的MAC地址。而交换机和路由器往往拥有更多的网络接口,所以会拥有更多的MAC地址。综上所述,严格来说,MAC地址是对网络上各接口的唯一标识,而不是对网络上各设备的唯一标识。
IEEE 802局域网的MAC地址格式
由48个比特构成,每8个比特为1个字节,从左至右依次为第一字节到第六字节。
前三个字节是组织唯一标识符OUI,由IEEE的注册管理机构分配。
后三个字节是网络接口标识符,由获得OUI的厂商自行随意分配。
这种地址标识符称为扩展的唯一标识符EUI,对于48比特的MAC地址,可称为EUI-48。
MAC地址的标准表示方法是将每4个比特写成一个16进制的字符,共12个字符,将每两个字符分成一组,共6租
(可以在IEEE的官方网站查看已分配的OUI,www.standards-oui.ieee.org/oui.txt)
对于使用EUI-48空间的应用程序,IEEE的目标寿命为100年(直到2080年),但是鼓励采用EUI-64作为替代。
MAC地址的发送顺序:
字节发送顺序: 第一字节 到 第六字节
字节内的比特发送顺序:b0 => b7
单播MAC地址举例:
简单理解:单播就是给一个目的地发送信息
假设有ABC三个主机
主机B要给主机C发送信息,首先要构建该单播帧,在帧首部中的目的地址字段,填入C的MAC地址,源地址字段填入自己的MAC地址,再加上帧首部中的其他字段, 数据载荷以及帧尾部就构成了单播帧,发送方将该单播帧发送出去后,主机A和C都会接收到该单播帧,主机A的网卡发现该单播帧的目的MAC地址与自己的MAC地址不匹配,于是丢弃该帧。而主机C的网卡发现该单播帧的目的MAC地址于自己的MAC地址相匹配便接收该帧,并将该帧交给上层处理。。
广播MAC地址举例:
简单理解:广播就是给所有目的地发送信息(范围内)
假设有ABC三个主机
主机B要发送广播帧,首先要构建该广播帧,在帧首部中的目的地址字段填入广播地址,也就是16进制的全F,源地址字段填入自己的MAC地址,再加上帧首部中的其他字段,数据载荷以及帧尾部,就构成了该广播帧。主机B将该广播帧发送出去,A和C都会收到该广播帧,发现帧首部中的目的地址字段的内容是广播地址,就知道该帧是广播帧,接收该帧,并将该帧交给上层处理。
多播MAC地址举例:
简单理解:多播就是给多个目的地发送消息
随机MAC地址:
由于可以通过MAC地址查询到用户的精确位置,所以就出现了随机MAC地址
IP地址
IP地址是TCP/IP体系结构网际层所使用的地址;
IP地址的作用
IP地址是因特网(Internet)上的主机和路由器所使用的地址,用于标识两部分信息:
- 网络编号:标识因特网上数以百万计的网络
- 主机编号:标识同意网络上不同主机(或路由器接口)
IP地址具备区分不同网络的功能,如果主机所在的网络要接入因特网,则IP地址和MAC地址都需要使用。
数据包转发过程中IP地址与MAC地址的变化情况:
- 数据包转发过程中源IP地址和目的IP地址保持不变;
- 数据包转发过程中源MAC地址和目的MAC地址逐个链路(或逐个网络)改变;
ARP协议
ARP协议属于TCP/IP体系结构的网际层,其作用是已知设备所分配到的IP地址,使用ARP协议可以通过该IP地址获取到设备的MAC地址