学习笔记|计算机网络
计算机网络
第二章 物理层
2.1 基本通信理论
2.1.1 数据通信的基本概念
数据通信的基本概念
通信的目的就是传递消息。
一次通信中产生和发送信息的一端叫信源,接收信息的一端叫信宿。信源和信宿之间要有通信线路才能互相通信,通信线路称为信道,所以信源和信宿之间的信息交换是通过信道进行的。
数据通信系统的组成
- 源系统(发送端、信源)
- 传输系统
- 目的系统(接收端、信宿)
- 模拟信号:连续变化的电压或电流波形
- 数字信号:一系列表示“0”和“1”的电脉冲(码元)
- 数据:运送信息的实体
- 信号:数据的电气或电磁的表现
- 模拟的——连续变化的
- 数字的——取值是离散数值
- 调制:把数字信号转换为模拟信号的过程
- 解调:把模拟信号转换为数字信号的过程
2.1.2 数据通信中的几个指标
-
信号传输速率
每秒钟发送的码元数目,单位为波特(baud),信号传输速率又称为波特率。1波特为每秒传送1个码元。
- 信道的带宽
信道所能传输的电信号的频率范围,单位为赫兹。
-
奈氏准则
理想低通信道的最高码元传输速率=2$W$ Baud
$W$是理想低通信道的带宽,单位为赫(Hz)
每赫带宽的理想低通信道的最高码元传输速率是每秒2个码元。
理想带通信道的最高码元传输速率=$W$ Baud
$W$是理想带通信道的带宽,单位为赫(Hz)
每赫带宽的理想低通信道的最高码元传输速率是每秒1个码元。
-
数据传输速率
每秒钟能传输的二进制位数,单位:比特/秒(bps),数据传输速率又称为比特率。
码元状态数为4,四种状态表示为”00”、”01”、”10”、”11”
一般情况,若码元状态数为N,则比特率和波特率的一般关系为: \(S=Blog_2N\) 若一个码元携带n bit的信息量,则M Baud的码元传输速率所对应的信息传输速率为M×n b/s
-
信道的容量
也称为信道的极限信息数据传输速率:表示信道传输数字信号的能力,是信道所能支持的数据速率的上限。
无噪声低通信道
若信道带宽为H,码元状态数为N。
-
根据尼奎斯特定理 \(B=2H(baud)\)
-
信道的最大数据传输速率 \(S=B×log_2N\)
-
故可得: \(S=2H×log_2N(bps)\)
-
无噪声信道N可以取任意值,所以无噪声信道的信道容量是无限的。
有噪声信道
-
N不能无限增长。若带宽为H的有噪声信道,信道容量为 \(C=Hlog_2(1+S/N)\)
-
其中S为信号功率,N为噪声功率,S/N为信道的信噪比
-
信噪比的单位为分贝(dB),换算关系为: \(信噪比(dB)=10lg(S/N)\)
-
-
带宽
指信号具有的频带宽度,单位是赫;现指数字信道所能传送的“最高数据率”,单位是“比特每秒”,或b/s(bit/s)
常用的带宽单位:
- 千比每秒,即Kb/s(10^3^b/s)
- 兆比每秒,即Mb/s(10^6^b/s)
- 吉比每秒,即Gb/s(10^9^b/s)
- 太比每秒,即Tb/s(10^12^b/s)
K=2^10^,M=2^20^,G=w^30^,T=2^40^
在时间轴上信号的宽度随带宽的增大而变窄
-
时延
是指一个报文或分组从一个网络(或一条链路)的一端传送到另一端所需的时间。
-
发送时延
发送数据时,数据块从结点进入到传输媒体所需要的时间。即数据块第一个比特开始发送算起,到最后一个比特发送完毕所需的时间。
信道带宽:数据在信道上的发送速率,常称为数据在信道上的传输速率。 \(发送时延=\frac{数据块长度(比特)}{信道带宽(比特/秒)}\)
-
传播时延
电磁波在信道中需要传播一定的距离而花费的时间。
信号传输速率(发送速率)和信号在信道上的传播速率是完全不同的概念。 \(传播时延=\frac{信道长度(米)}{信号在信道上的传播速率(米/秒)}\)
-
处理时延
交换结点为存储转发而进行一些必要的处理所花费的时间。
结点缓存队列中分组排队所经历的时延是处理时延中的重要组成部分。
处理时延的长短往往取决于网络中当时的通信量。
在队列中产生处理时延;在发送器产生发送时延;在链路上产生传播时延
总时延=发送时延+传播时延+处理时延
-
提高的仅是数据的发送速率而不是比特在链路上的传播速率。
-
提高链路带宽减小了数据的发送时延。
往返时延RTT
表示从发送端发送数据开始,到发送端收到来自接收端的曲儿(接收端收到数据后立即发送确认),总共经历的时延。
-
-
误码率
传输出错的码元数占传输总码元数的比例,是衡量数据通信系统在正常工作情况下传输可靠性的指标。
设传输总的码元数为N,传输出错的码元数为Ne,则误码率Pe为: \(Pe=Ne/N\)
2.1.3 多路复用技术
采用多路复用,可以将多路信号组合在一条物理信道上进行传输,在接收端再将各路信号分离开来,提高通信线路的利用率。
-
频分多路复用
-
频谱:信号的能量随频率的分布规律为信号的频谱
-
信号的带宽:能量集中的区域为信号的带宽
-
当信道的带宽大于等于信号的带宽时,信号的频谱在传输过程中不会被改变
-
频分多路复用(Frequency Division Multiplexing,FDM):当信道的带宽大于各路信号的总带宽时,可以将信道分割成若干个子信道,每个子信道用来传输一路信号
-
要求:各路信号的频谱在传输过程中不互相重叠和干扰,采用频谱搬移技术
-
-
-
时分多路复用
-
TDM(Time Division Multiplexing)
-
将使用信道的时间分成一个个时间片,按一定规格将这些时间片分配给各路信号,每一路信号在自己的时间片内独占整个信道进行传输。
-
时间片的大小可以按一次传送一位,一个字节或一个固定大小的数据块所需的时间来确定。
-
同步TDM(普通TDM)
- 时间片的分配实现约定,且固定不变
- 优点:控制简单,接收设备根据预约的时间片分配方案,将收到的数据分发到不同的输出线路上
- 缺点:当某个信号源没有数据时,仍然占用时间片,不能充分利用信道
- 同步TDM将时间划分为一段段等长的TDM帧,每个用户占用的时隙周期性出现。即:信号源与时隙序号固定,即同步。
-
时分复用可能会造成线路资源的浪费。
-
统计时分复用STDM(异步TDM)
- 时间片按需分配,需要发送数据的信号源提出申请,才能获得时间片。
- 特点:可以充分利用信道,但控制比较复杂
-
-
波分多路复用
-
WDM(Wavelength Division Multiplexing)
-
波分复用就是光的频分复用。
-
不同的信号源使用不同频率(波长)的光波来传输数据,各路光经过一个棱镜(或衍射光栅),合成一个光束在光纤上传输;在接收端再将各路光波分开。
-
密集波分复用DWDM
-
DWDM,Dense WDM
-
技术的发展一根光纤上复用的光载波信息路数越来越多,例如80或更多路数
-
-
-
码分多路复用
-
CDMA(Code Division Multiple Access)
-
每个用户在同样的时间使用同样的频带进行通信
-
各用户使用经过特殊挑选的不同码型,彼此不会造成干扰
-
这种系统发送的信号有很强调度抗干扰能力,其频谱类似于白噪声,不易被敌人分析
-
采用CDMA可提高话音质量、数据传输可靠性、增大通信系统容量(是GSM的4~5倍),降低手机的平均发射功率
-
每一个比特时间划分为m个短的间隔,称为码片(chip)。m通常为64或128.
-
码片序列(chip sequence)
- 每个站被指派一个唯一的m bit码片序列
-
重要特点
-
每个站分配的码片序列不仅必须各不相同,并且还必须互相正交
-
正交关系
令向量S表示站S的码片向量,令T表示其他任何站的码片向量。
两个不同站的码片序列正交,都是向量S和T的规格化内积都是0: \(S·T = \frac{1}{m}\sum^{m}_{i=1}S_iT_i=0\)
-
正交关系的另一个重要特性:
- 任何一个码片向量和该码片向量自己的规格化内积都是1
- 一个码片向量和该码片反码的向量规格化内积值是-1
-
-
若S站发送信息的数据速率为B b/s,由于每一个比特要转换成M比特的码片,因此S站实际的数据速率为MB b/s,S站所占用的频带带宽提高到原来的M倍。这就是扩频通信
-
-
CDMA工作原理
每个站各自发送扩频信号,在接收端形成叠加的信号
当接收站打算接受S站的信号时,就用S站的码片序列与收到的叠加信号求规格化内积:
- 若S站有信号发送,则内积结果为1(发送数据1)或-1(发送数据0)
- 若S站没有信号发送,则内积结果为0
-
2.1.4 数字调制技术
-
在计算机提供的二进制数字信号与电话网提供的模拟信号之间进行转换,这类技术统称为调制/解调技术。
- 连续波数字信号调制
- 基带信号就是将数字信号1或0直接用两种不同的电压来表示,然后送到线路上去传输
- 宽带信号是将基带信号进行调制后形成的频分复用模拟信号
-
数字信号调制
- 电路中使用两种电平分别表示“1”和“0”,这种原始的电脉冲信号的“基带信号”,信号的带宽很宽
- 需要Modem,在发送端将基带信号转换成适合传输的音频信号(调制);在接收端再将音频信号转换成基带信号(解调)
-
调制解调器的作用
- 调制器:把要发送的数字信号转换为频率范围在300~3400Hz之间的模拟信号,以便在电话用户线上传送
- 主要作用就是个波形变换器,把基带数字信号的波形变化成适合于模拟信道传输的波形
- 解调器:把电话用户线上传送来的模拟信号转换为数字信号
- 主要作用就是个波形识别器,将经过调制器变换过的模拟信号恢复成原来的数字信号
- 若识别不正确,则产生误码
- 在调制解调器中还有差错检测和纠正的设施
- 主要作用就是个波形识别器,将经过调制器变换过的模拟信号恢复成原来的数字信号
- 调制器:把要发送的数字信号转换为频率范围在300~3400Hz之间的模拟信号,以便在电话用户线上传送
-
连续波数字信号调制
-
调制方法:选取一个适合于在线路上传输的正弦波作为载波,让载波的某些特性(幅度、频率、相位)随基带信号的变化而变化
-
基本调制方法
调制就是进行波形变换
-
振幅键控(ASK):载波的振幅随基带数字信号而变化
用载波的不同振幅来表示不同的二进制值。
调幅技术实现起来简单,但抗干扰性能差。
-
频移键控(FSK):载波的频率随基带数字信号而变化
用载波频率附近的两个不同频率,分别表示两个二进制数。
这种调制技术抗干扰性能好,但占用带宽较大。
-
相移键控(PSK):载波的初始相位随基带数字信号而变化
用载波的相位(绝对值或变化)来表示数据。
检测相位变化比检测相位值要容易。
-
-
-
多元制振幅相位混合调制方法
-
可以获得更高的信息传输速率
-
一种正交调制QAM(Quadrature Amplitude Modulaion)
- 可供选择的相位有12种,而对于每一种相位有1或2种振幅可供选择。$\tau$,$\varphi$分别是振幅和相位
- 由于4 bit编码共有16种不同的组合,因此这16个点中的每个点可对应于一种4 bit的编码
- 若每一个码元可表示的比特数越多,则在接收端进行解调时要正确识别每一种状态就月困难
-
脉冲编码调制PCM(Pulse Code Modulation)
-
模拟数据在时间上和取值上都是连续的,对其进行数字信号编码,是将其转换成一系列在时间和取值上都是离散的二进制数码脉冲
-
采样:实现时间上的离散化
每隔一定时间间隔,取模拟信号的当前值作为样本。该样本代表了模拟信号在某一时刻的瞬时值。
-
量化:是使采样值在取值上离散化
取样后得到的样本是连续值,这些样本必须量化为离散值。
将原始信号的取值范围划分为若干个等级,将每个采样值“取整”到离它最近的一个等级上。
离散值的个数(等级划分)决定了量化的精度。
-
编码:将量化后的采样值用一定位数的二进制数码来表示
编码的位数和量化的级数有关,若量化级数为N,则每个采样值都可以编码成$log_2N$位的二进制码
-
-
2.1.5 数字信号编码
-
单极性码
- 是指用电压的有或无来表示二进制数
-
双极性码
- 用正、负电压分别表示两个二进制数0和1,而且正和负幅度相同。
-
不归零码
-
在一个码元的全部时间内,电压保持恒定,这种码又称为全宽码
-
NRZ 不归零码
- 用0电位和1电位分别表示二进制的“0”和“1”
-
NRZI 不归零反转
-
如果下一个输入二进制位是“1”,则下一个编码后的电平是当前电平跳变后的电平;
-
如果下一个输入二进制位是“0”,则编码后的电平与当前保持一致
-
-
-
归零码
- 在一个码元的全部时间内,非零电压的持续时间小于一个码元的时间。在一个码元的后半部分时间内,电压总是归于零的。
- 好处:解决了不归零码在连续发送“1”码或“0”码不容易区分的问题
-
曼彻斯特编码
- 每位中间有一个电平跳变,从高到低的跳变表示“1”,从低到高的跳变表示“0”
-
差分曼彻斯特编码
-
每位的中间有一个跳变,利用每个码元的开始有无跳变来表示“0”或“1”
-
有跳变表示“0”,无跳变表示“1”
-
2.1.6 交换技术
交换:通信子网由传输线路和中间节点组成,当信源和信宿间没有线路直接相连时,信源发出的数据先到与之相连的中间节点,再从该中间节点传到下一个中间节点,直至到达信宿,这个过程称为交换。
交换技术
-
电路交换
- 要求在通信的双方之间建立起一条实际的物理通路,并且在整个通信过程中,这条通路被独占。
- 通信之前,双方必须先建立电路连接,由通信的一方发出连接请求,沿途经过的每个中间节点负责建立通过它的电路连接,并向前转发连接请求,直至和信宿建立起连接
- 优点
- 数据传输可靠、迅速、而且保证传输顺序
- 缺点
- 电路建立和拆除时间较长,在这期间,电路不能被共享,资源被浪费
- 当数据量较小时,为建立和拆除电路的代价得不偿失。电路交换适合系统间要求高质量、大量数据的传输
-
报文交换
- 以一个站点一次性要发送的数据作为一个报文,采用存储-转发方式,源点将报文送给与它相连的中间节点,每个中间节点先将报文完整地接收下来,放在缓冲区里,然后选择一条合适的输出线路,把它排在输出队列里,等输出线路空闲后传给下一个中间节点,直到将报文传到目的地。
- 优点
- 不需要建立专门的物理通道,多个报文可以分时共享一条节点到节点的通道,提供线路的利用率
- 可以把一个报文送到多个目的地,电路交换做不到
- 缺点
- 报文交换对报文长度没有限制,要求中间必须具有很大的存储空间
- 大报文在中间节点的延迟时间很长(报文接收时间+排队时间+转发时间),大报文长时间占用线路,小报文的延迟也增加
- 信道误码率高时,大报文出错率高,频繁重发影响传输效率
-
分组交换
- 限制发送和转发的信息长度,将一个大报文分割成一定长度的信息单位(分组),以分组为单位进行存储转发,在接收端将个分组组装成一个完整的报文
- 优点
- 每个节点需要的存储能力降低了
- 每次交换的信息量减少,转发时间短,延迟减小
- 报文分割成分组,且分组在网络中走不同的路径,这种并行性降低了报文整体的传播时间
- 分组变短,出错重发率降低,提高了传输的效率
- 重点解决分组丢失、重复和次序混乱问题
-
混合交换(在数据网中同时采用电路和分组交换)
-
三种交换方式比较
-
电路交换:在数据传送之前需建立一条物理通路,在线路被释放之前,该通路将一直被一对用户完全占有
-
报文交换:报文从发送方传送到接收方采用存储转发的方式
-
分组交换:此方式与报文交换类似,但报文被分成组传送,并规定了分组的最大长度,到达目的地后需重新将分组组装成报文
-
2.2 传输介质
- 导向性传输媒体:电磁波被导向沿着固体媒体传播
- 双绞线
- 屏蔽双绞线STP(Shielded Twisted Pair)
- 无屏蔽双绞线UTP(Unshielded Twisted Pair)
- 同轴电缆
- 50$\Omega$同轴电缆
- 75$\Omega$同轴电缆
- 光缆
- 双绞线
- 非导向性传输媒体:自由空间传播、无线传输
2.3 同步光纤网和同步数字系列
旧的数字传输系统存在以下缺点:
- 速率标准不统一
- 不是同步传输
SONET标准
同步光纤网SONET(Synchronous Optical NETwork)中,整个同步网络的各级时钟都来自一个非常精确的主时钟。
SDH标准
以美国标准SONET为基础,制定出国际标准同步数字系列SDH(Synchronous Digital Hierarchy)
2.4 物理层协议举例
特性
- 机械特性
- 电气特性
- 功能特性
- 规程特性
第三章 数据链路层
3.1 数据链路层的基本概念
-
链路(link)是一条无源的点到点的物理线路段,中间没有任何其他的交换结点。
- 一条链路只是一条通路的一个组成部分
-
数据链路(data link):除了物理线路外,需要有通信协议来控制这些数据的传输。若把实现这些协议的硬件和软件加到链路上,就构成了数据链路。
- 使用适配器(网卡)来实现这些协议的硬件和软件
- 一般的适配器都包括了数据链路层和物理层这两层的功能
-
数据链路层像个数字管道,这条数字管道上传输的数据单位是帧。
- 物理层间传输的是比特流,物理媒体上传送的是电或光信号,而在链路层上传输的数据帧
-
主要功能
-
基本功能
- 向网络层提供可靠的、透明的数据传输服务,将源节点的网络层数据可靠地传送到相邻节点的网络层
-
主要功能描述
-
链路管理
数据链路的建立、维持和释放
-
帧定界
数据链路层,数据的传送以帧为单位
帧定界(帧同步)是指接收方能从收到的比特流中区分一个帧的开始和结束的地方
-
流量控制
发送方发送数据的速率必须使收方来得及接收
-
差错控制
纠错:通过编码技术,接收方自动将差错改正过滤
检错:检测出帧有错误,要么忽略或重传
-
将数据和控制信息区分开
数据和控制信息在同一个帧中,收方将其区分开
-
透明传输
不管所传数据的比特组合,都能在链路上传送
若所传数据的比特片段与某一个控制信息相同,要有可靠机制,保证收方能正确识别
-
寻址
每一帧都能送到正确的目的地
收方也能知道发送方的地址
-
-
3.2 组帧
-
组帧的目的
- 使得接收方能准确识别帧的边界
-
帧定界(帧同步)的方法
-
字节计数法
-
思想
在帧头设置一个长度域,放置该帧的字节数,当收方收到帧后,通过帧的长度,确定帧的开始
-
问题
当帧的长度域出错,帧同步完全丢失
很少单独使用
-
-
使用字符填充的首尾定界法
-
思想
使用特殊的ASCII字符作为帧的起始和终止定界符
-
问题
数据传输不透明
-
-
使用比特填充的首尾定界法
-
思想
使用一个特殊的比特模式01111110作为帧的起始和结束标志
发送方边发送边检查数据,每连续发送5个“1”后在后面自动插入一个“0”
接收方在收到5个连续的“1”后将后面的“0”删掉而恢复出原始数据
-
好处
数据传输的基本单位是比特而不是字符,可用来传输任意长度的二进制比特串,通用性强
-
-
违法编码法
-
前提
物理介质上使用的信号编码有冗余码字时,使用这些冗余码字来作为帧的定界
-
-
3.3 差错控制
3.3.1 差错控制技术
-
前向纠错(FEC,Foward Error Correct)
- 发送方发送能使接收方检错并纠错的冗余位,纠错任务由接收方完成;常采用海明码
- 主要应用于没有反向信道或反向传输时间很长的场合
- 优点:实时性好
- 缺点:为纠错附加的冗余码较多,传输效率低
-
自动重发请求(ARQ,Automatic Repeat reQuest)
-
发送方发送能使接收方检错的冗余位,若无差错,则接收方回送一个肯定应答(ACK);
若有差错,则回送一个否定应答(NAK),要求发送方重发
-
优点:接收端设备简单,只要请求重发,无需纠正错误
-
缺点:信息传递连贯性差
-
3.3.2 差错编码技术
-
差错编码
数据块中插入冗余信息的过程
-
思想
判断一个数据块中是否存在传输错误,发送端必须在数据块中插入一些冗余信息,使得数据块中的各个比特建立某种形式的关联,接收端通过验证这种关联关系来判断是否有传输错误。
-
策略
- 检错码:能检测出错误,但不能纠正错误,如CRC
- 纠错码:能知道错误,且知道错误的位置,如海明码
-
检错码
-
检错码的构造
- 检错码(码字、传输帧)=信息位+冗余校验位
- 码字长n=K(信息位位数)+r(校验位位数)
- 编码效率R=有效数字位K/码字长n
-
信息字段和校验字段之间的对应关系
- 校验字段越长,检错能力越强,编码及解码越复杂;附加的冗余信息在整个编码中所占的比例越大,传输的有效成分越低,传输的效率下降
- 检错码一旦形成,整个检错码将作为一个整体被发往线路,通常的发送顺序是信息字段在前,校验字段在后
-
奇偶校验码
-
奇校验:使码字中“1”的总个数为奇数
-
偶校验:使码字中“1”的总个数为偶数
-
水平奇偶校验
其信息字段以字符为单位,校验字段仅含一个比特称为校验比特或校验位。校验位的取值应使整个码字包括校验位,1的比特个数为奇数或偶数。
编码效率:$Q/(Q+1)$ (信息字段占$Q$个比特)
应用:异步传输偶校验;同步传输奇校验
-
垂直奇偶校验
被传输的信息进行分组,并排列为若干行和若干行。组中每行的相同列进行奇偶校验,最终产生由校验位形成的校验字符(校验行),并附加在信息分组之后传输。
编码效率:$PQ/P(Q+1)$ (假设信息分组占$Q$行$P$列)
-
水平垂直奇偶校验
在水平校验的基础上实施垂直校验
发往线路顺序(偶校验):
01110010 00101011 01010110 10101010 10100101 编码效率:$PQ/(P+1)(Q+1)$ (假设信息分组占$Q$行$P$列)
-
-
循环冗余码
-
CRC,Cyclic Redundancy Code
-
漏检率低,可用简单电路实现
-
基本原理
任意一个由二进制位串组成的代码都可以和一个系数仅为“0”和“1”取值的多项式一一对应。如代码1010111对应的多项式为$x^6+x^4+x^2+x+1$
-
冗余码的计算
- 用二进制的模2运算进行$2^n$乘M的运算,即在M后面添加n个0
- 得到的(k+n) bit的数除以事先选定好的长度为(n+1)bit的数P,得出商是Q而余数是R,余数R比除数P少1个比特
-
一些说明
模2计算:加法不进位;相同取0,不同取1
n的选择:n为P位数-1
余数R的位数=n
生成多项式P最高位和最低位都必须为1,若P为r阶,则产生r位冗余位
-
举例
设M=1010001101,P=110101,n=5
$2^nM=101000110100000$
$2^nM$除以$P$得商$Q=1101010110$,余数$R=01110$
余数R作为冗余码添加在数据M后发送,$2^nM+R$,即发送数据为$101000110101110$
-
名词解释
符号 多项式 P(X) 生成多项式 M(X) 信息多项式 R(X) 冗余多项式 T(X) 传输帧多项式 $2^nM(x)/P(x)$产生冗余多项式$R(x)$附加到$M(x)$后形成$T(x)$编程待校验位的传输帧多项式。
-
接收方用P进行校验
$T(X)/P(X)$
- ≠0(除不尽),则有错
- =0(除尽),无错或漏检
-
-
海明码
-
码距(海明距离Hamming Distance)
一个编码系统中任意两个合法编码(码字)之间不同的二进位(bit)数叫着两个码字的码距
整个编码系统中任意两个码字的最小距离就是该编码系统的码距
-
基本思想
- 在k比特信息后附加r比特冗余信息(检验比特),构成n=k+r比特的码字,其中每个校验比特和某几个特定的信息比特构成偶校验关系
- 接收端对这r个奇偶校验关系进行校验,即将每个校验比特和与它关联的信息比特进行相加(异或),相加的结果为校正因子
- 若没有错,则r个校正因子都为0
- 若不全为0,根据校正因子的取值,确定错误发生的位置
-
发送方冗余位计算
根据信息位长度(如每帧K位),计算出所需冗余位位数r:
- 若需纠正一位错,需满足:$2^r≥K+r+1$
确定校验比特和信息比特的位置
校验比特习惯放在1、2、4、8、16、…位置上,通常是将2^k^位置上,方r~k~(K≥0),其余位置放I~i~(K≥1)
如7比特的海明码构造为:
-
海明码的计算
将每个信息比特的位置写成2的次幂之和的形式有:
- $I_4:7=2^2+2^1+2^0$(说明$I_4$参与$R_2、R_1$和$R_0$的生成)
- $I_3:6=2^2+2^1$
- $I_2:5=2^2+2^0$
- $I_1:3=2^1+2^0$
由此可以写成如下比特计算公式(XOR运算)
- $R_2=I_4⊕I_3⊕I_2$
- $R_1=I_4⊕I_3⊕I_1$
- $R_0=I_4⊕I_2⊕I_1$
-
接收方验证
接收端利用相应的偶关系进行验证:
- $S_2=R_2⊕I_4⊕I_3⊕I_2$
- $S_1=R_1⊕I_4⊕I_3⊕I_1$
- $S_0=R_0⊕I_4⊕I_2⊕I_1$
这里的$S_2、S_1、S_0$为校正因子,若校正因子全0,无错;
若校正因子不全为0,则有错,错误位置为$S=S_2S_1S_0$处,将该比特取反。
如:$S=101=5$则将位置5的比特取反,最后去掉校验比特即可得到正确的信息
-
-
3.4 流量控制
数据链路层上的流量控制,控制的是相邻节点间数据链路上的流量;传输层控制的是端到端的流量。
接收方的接受能力(设备的处理速度和缓冲器容量等)小于发送方的能力,需要流量控制。
使用某种反馈机制,向发送方报告接收方当前的接收能力,由接收方控制发送方的数据流,是计算机网络中流量控制的基本方法。
两种常用的方法:停等协议和滑动窗口协议。
-
简单停止协议
发送结点:
- 从主机取一个数据帧
- 将数据帧送到数据链路层的发送缓存
- 将发送缓存中的数据帧发送出去
- 等待
- 若收到由接收结点发过来的信息(此信息的格式与内容可由双方事先商定好),则从主机取一个新的数据帧,然后转到2
接收结点:
- 等待
- 若收到由发送结点发过来的数据帧,则将其放入数据链路层的接收缓存
- 将接收缓存中的数据帧上交主机
- 向发送结点发一消息,表示数据帧已上交给主机
- 转到1
-
实用的停等协议
-
思想
- 当发送方发完一帧后,停止发送,等待对方的应答
- 如果收到对方肯定应答,接着发送下一帧
- 如果收到否定应答或超过规定时间没有收到应答,则重发该帧
-
方法:设置超时定时器
- 给定时器设定初始值,发送完一帧后,启动定时器
- 在定时时间内,收到应答,则发送正常,复位定时器
- 在定时时间内,没有收到应答,则认定数据丢失,重新发送该帧
-
应答问题
- 不使用否认帧,而且确认帧带有序号n
- 表示方法,ACKn表示“第n-1号帧已经收到,现在期望接收第n号帧”
-
重传时间
作用:数据帧发送完毕后若经过了这样长的时间还没有收到确认帧,就重传这个数据帧
设重传时间为(假设数据帧处理时间和确认帧处理时间相等): \(t_{out}=t_p+t_{pr}+t_a+t_p+t_{pr}\) 设上式右端的处理时间$t_{pr}$和确认帧发送时间$t_a$都远小于传播时延$t_p$,因此可将重传时间取为两倍的传播时延,即 \(t_{out}=2t_p\)
-
缺点
- 停等协议的控制简单
- 若信号传输延迟较大时,传输效率不高
- 实用的停等协议由于采用了有效的检错重传机制,结合了浏览控制(停等协议)和差错控制(ARQ技术),因此也称为停等ARQ协议
-
-
连续ARQ协议
发送端对出错的数据帧进行重传是自动进行的银耳这种差错控制体制常简称为ARQ(Automatic Repeat reQuest),直译是自动重传请求。
ARQ的三种类型
-
停等ARQ
停等ARQ是停等流控技术和自动请求重传技术的结合。
根据停等ARQ协议,发送站发出一股帧后必须等待应答信号:
-
收到肯定应答信号ACK后继续发下一个帧
-
收到否定应答信号NAK后重发该帧
-
在一定的时间间隔内没有收到应答信号也必须重传该帧
-
-
连续ARQ
在发送完一股数据帧后,不是停下来等待确认帧,而是可以连续再发送若干个数据帧
如果这时收到了接收端发来的确认帧,那么还可以接着发送数据帧
由于减少了等待时间,整个通信的吞吐量就提高了
工作原理
-
发送端
在发送完一个数据帧后,不是停下来等待应答帧,而是可以连续再发送下面数据帧,如果这时收到了接收端发来的确认帧,那么还可以接着发送数据帧,如果在超时时间到时仍然没有收到相应帧的确认帧,则冲洗能从这个帧开始传起。
-
接收端
连续接收帧,当接收到一个坏帧时,简单丢弃这个帧和这个帧以后的所有帧,让它们在发送端超时,直到收到这个帧为止。
几点说明
- 接收端只按序接收数据帧
- 结点A在每发送完一个数据帧时都要设置该帧的超时计时器
- 当出现差错必须重传时,要向回走N个帧,然后再开始重传
特点
- 效率较高,发送端不需要等待确认,就可以连续发送
- 不实用,没有考虑到接收端的处理能力问题
- 如果发生错误,对效率的影响很大,不适合出错率比较高的信道
-
-
选择重传ARQ
-
-
滑动窗口协议
窗口机制
- 允许发送方连续发送多个帧而不需要等待应答
- 一次连续发送未经确认的帧的个数是有限的
- 发送端和接收端分别设定发送窗口和接收窗口
- 发送端,一次连续发送未经确认的帧是受到发送窗口控制的,只有落到发送窗口的帧才是可以发送的
- 接收端,只有落到接收端的帧才是可以接收的
概念
- 发送窗口用来对发送端进行流量控制
- 发送窗口的大小$W_T$代表在还没有收到对方确认信息的情况下发送端最多可以发送多少个数据帧
- 每收到对一个帧的确认,窗口就向前滑动
- 停等协议的$W_T=1$,连续ARQ协议的$W_T$非常大
接收端设置接收窗口
接收窗口是接收方允许接收的帧的序号表
在接收端只有当收到的数据帧的发送序号落入接收窗口内才允许将该数据帧收下
若接收到的数据帧落在接收窗口之外,则一律将其丢弃
在连续ARQ协议中,接收窗口的大小$W_R=1$
- 只有当收到的帧的序号与接收窗口一致时才能接收该帧。否则,就丢弃它。
- 每收到一个序号正确的帧,接收窗口就向前(即向右方)滑动一个帧的位置,同时发送对该帧的确认。
滑动窗口特性
- 只有在接收窗口向前滑动时(与此同时也发送了确认),发送窗口才有可能向前滑动
- 收发两段的窗口按照以上规律不断向前滑动,因此又被称为滑动窗口协议。
- 当发送窗口和接收窗口的大小都等于1时,急速停止等待协议
发送窗口的最大值
当用n个比特进帧进行编号时,若接收窗口的大小为1,则只有在发送窗口的大小$W_T≤2^n-1$时,连续ARQ协议才能正确运行。
-
选择重传ARQ
加大接收窗口,使得$W_R>1$。先收下发送序号不连续但仍处在接收窗口中的那些数据帧。等到所缺序号的数据帧收到后再一并送交主机。
优点:可避免重复传送那些本来已经正确到达接收端的数据帧
缺点:接收端要设置具有相当容量的缓存空间
接收窗口不大于$W_T$,且接收窗口的最大值$W_R≤2^{n-1}$
3.5 数据链路层协议举例
3.5.1 面向比特的链路控制规程HDLC
-
HDLC的适用范围和数据站
- HDLC的适用范围
- 计算机——计算机
- 计算机——终端
- 终端——终端
- HDLC的数据站:由计算机或终端组成,负责发送和接收帧
- HDLC涉及三种类型的站:
- 主站(primary station):主要功能是发送命令,接收响应,负责整个链路的控制
- 次站或从站(secondary station):主要功能是接收命令,发送响应,配合主站完成链路的控制
- 组合站(combined station):同时具有主、次站功能,既发送又接收命令和响应,并负责整个链路的控制
- HDLC的适用范围
-
HDLC的链路构型
- 非平衡配置
- 只有主站才可以发起向次站的数据传输,次站只有在主站向它发送命令帧进行探询时,才能以响应帧的形式回答主站。
- 两种类型:点—点式、点—多点式
- 适合把智能和半智能的终端连接到计算机
- 平衡配置
- 在链路两端的两个站点都是复合站或主次站;每个都可以发出命令和响应。
- 连接方式:复合式
- 适合计算机与计算机之间的连接
- 非平衡配置
-
HDLC的帧结构
标志字段、地址字段、控制字段、信息字段和帧校验序列组成
-
标志字段F
标志一个帧的起始和结束。
透明传输问题
- HDLC采用零比特填充法使一帧中两个F字段之间不会出现6个连续1
- 在发送端,当一串比特流数据中有5个连续1时,就立即填入一个0
- 在接收帧时,先找到F字段以确定帧的边界。接着再对比特流进行扫描。每当分析5个连续1时,就将其后的一个0删除,以还原成原来的比特。
-
地址字段A
- 地址字段A,8比特
- 使用非平衡方式传送数据时,地址字段总是写入次站的地址
- 在使用平衡方式时,地址字段总是填入确认站的地址
-
控制字段C
共8bit,是最复杂的字段
-
信息字段
可以为0,,最短帧为32比特,小于32比特为无效帧
-
帧校验字段FCS
- 生成多项式:16比特,CRC-CCITT
- 检验范围:从地址字段的第一个比特到信息字段的最后一个比特
-
-
HDLC帧类型
- 信息帧(I帧)
- 用于传送数据,第一比特为“0”,数据放在信息字段中
- 第2~4比特为发送序列号N(S):是发送帧的序号,HDLC采用发送窗口协议,发送方最多可以连续发送8个帧
- 第6~8比特为接收序列号N(R):用于捎带应答。通常是期望接收的下一个帧的编号
- P/F为探询/终止比特:主站发出的命令帧中若将P比特置为“1”,这表示要求对方立即做出响应。在对方确认的帧中若将F置为“1”,表示要发送的数据已经发送完毕
- 监督帧(S帧)
- 监视帧用作差错和流量控制。以控制字段为“10”标识
- 不能携带信息字段,因此帧长为32比特
- 无编号帧(U帧)
- 无编号帧隐其控制字段中不包含序号N(S)和N(R)而得名。以控制字段的“11”来标志
- 无编号帧主要用于链路的建立、拆除及其他多种控制功能,可在需要时随时发出
- 信息帧(I帧)
3.5.2 因特网中的链路层协议
-
SLIP协议(Serial Line IP)
提供在串行通信线路上封装IP分组,使得远程用户通过电话线及MODEM来接入TCP/IP网络
-
协议要点
-
IP分组后加上一个END字符(0xc0)作为帧的结束标志
-
在发送IP分组前,先发送一个END,接收方通过识别两个END之间的部分作为一个有效分组
-
转义字符(ESC)
若IP分组中出现同END相同的字符,使用连续的0xdb,0xdc来代替
若IP分组中出现同ESC相同的字符,使用连续的0xdb,0xdd来代替
-
-
优点
- 组帧方式简单,易于实现
-
缺陷
- 通信双方必须事先知道对方的IP地址,不支持在连接建立过程中动态分配IP地址
- 没有协议类型域,仅支持IP协议
- 没有校验字段,链路层无法检测出传输错误,必须由上层实体进行差错处理
- 没有任何形式的身份认证,对拨号用户存在一定的问题
-
-
PPP协议(Point-to-Point Protocol)
-
改进
- 处理错误检测
- 支持多种协议
- 连接时允许商议IP地址
- 允许身份验证
-
PPP协议的组成
- 提供一个将IP数据报封装到串行链路的方法
- 一个链路控制协议LCP:建立、配置和测试数据链路的协议
- 一套网络控制协议NCP:如为IP协议分配临时IP地址,支持多个网络层协议
-
PPP协议的帧格式
PPP是面向字节的
所有的PPP帧的长度都是整数字节
- 标志字段F仍为0x7E
- 地址字段A只置为0xFF
- 控制字段C通常0x03,表示PPP帧不使用编号
- PPP有一个2个字节的协议字段
- 0x0021 IP数据报
- 0xC021 PPP链路控制数据
- 0x8021 网络控制数据NCP数据
- 帧校验字段:采用循环冗余码CRC校验
-
字符填充法——PPP异步传输
- 将信息字段中每一个0x7E字节转变成2个字节序列(0x7D,0x5E)
- 若信息字段中出现一个0x7D字节,则将其转变成2个字节序列(0x7D,0x5D)
- 若信息字段中出现ASCII码的控制字段(即数值小于0x20的字符)则在该字符签名加入一个0x7D字节,同时将该字符的编码加以改变
-
PPP协议工作状态
-
当用户拨号接入ISP时,路由器的调制解调器对拨号做出确认,并建立一条物理连接
-
PC机向路由器发送一系列的LCP分组(封装成多个PPP帧)
-
这些分组及其相应选择一些PPP参数,和进行网络层的配置,NCP给新接入的PC机分配一个临时的IP地址,使PC机称为因特网的一个主机
-
通信完毕时,NCP释放网络层连接,收回原来分配出去的IP地址。接着,LCP释放数据链路层的连接。最后,释放的是物理层连接。
-
-
PPP协议的特点
- 增加了校验字段,在链路层具有差错检测功能
- LCP协议提供通信双方进行参数协商的手段
- 增加了协议字段,使得PPP可以支持多种网络层协议
- 支持IP的NCP可以在建立连接时动态分配IP地址,解决家庭用户拨号上网的问题
-
第四章 局域网
4.1 信道分配策略
- 局域网概述
- 局域网(Local Area Network,简称LAN)是计算机网络的一种。局域网是在一个较小的范围,利用通信线路将众多计算机(一般为微机)及外围设备连接起来,达到数据通信和资源共享的目的。
- 主要特点:网络通常为一个单位所拥有,地理范围几米到几公里。局域网具有较高的数据率、较低的时延和较小的误码率。
- 常用局域网的传输媒体
- 双绞线
- 同轴电缆
- 光缆
- 无线传输
- 局域网信道分配策略
- 广播网中所有站点共享同一个信道,任一站点发送的信息能被所有其他站点接收到
- 问题
- 若有两个或两个以上的站点同时发送数据,则信号在信道中发生碰撞,数据发送失败,为冲突
- 解决
- 广播网中,如何将单一信道分配给各不同的用户,是个重要问题
- 用户使用的信道称为介质,决定由谁来使用信道的协议为“介质访问控制协议”
- 绝大多数的局域网使用广播信道。因此,解决局域网中如何使众多用户能够合理而方便地共享通信媒体是个重要问题
- 信道分配策略
- 静态划分信道
- 有频分多路复用、时分多路复用、波分复用和码分复用
- 将频带或时间片固定分配给各个站点,各个站点有自己的频带或时间片,不会产生冲突
- 静态分配特点
- 站点数目少且固定,每个站点有大量数据发送,控制协议简单且传输的效率高
- 对于大部分计算机网络,站点数目多且不固定,数据传输有突发性,信道的利用率低
- 动态分配
- 动态接入控制(多点接入)
- 信道不是在用户通信时固定分配给用户
- 如一部时分多路复用,各站点仅当有数据发送时,才占用信道发送数据
- 动态接入控制类型
- 随机接入
- 又称为争用,各站点发送前不需要取得发送权,有数据就发送,发生冲突后采取措施解决冲突
- 适合负载较轻的网络,信道的利用率一般不高,但网络延迟较短
- 控制访问(受控接入)
- 都是使发送站点首先获得发送权,再发送数据,不会产生冲突
- 当网络负载较重时,控制访问可以获得较高的信道利用率
- 随机接入
- 动态接入控制(多点接入)
- 静态划分信道
4.2 代表性介质访问控制方法
争用协议
特性:
-
随机访问
意味着对任何站都无法预计其发送的时刻
-
竞争发送
指所有发送的站自由竞争信道的使用权
-
ALOHA协议
ALOHA是陆地无线网,其基本思想是如何实现多个用户竞争使用单一信道的系统。
-
思想
- 任何用户有数据发送就可以发送
- 每个用户通过监听信道来获知数据传输是否成功
- 发现数据传输失败后,各自等待一段随机时间,再重新发送
-
工作原理
-
信道分析
- 竞争系统中,一方面不断有新的数据帧发送,另一方面冲突帧需要重发,系统的吞吐量是一个重要的指标。
- 系统的吞吐量:单位时间内系统能够成功发送的新的数据帧的平均数量
- 信道利用率很低,因为各个站自由发送数据,碰撞概率增大
-
-
CSMA/CD协议
Carrier Sense Multiple Access with Collision Detection,载波监听多点接入/碰撞检测
多点接入是指总线型网络。许多计算机以多点接入的方式连接在一根总线上。
载波监听是指每一个站在发送数据之前先要检测一下总线上是否有其他计算机在发送数据,如果有,则暂时不要发送数据,以免发生碰撞。
碰撞检测就是计算机边发送数据边检测信道上的信号电压大小。当几个站同时在总线上发送数据时,总线上的信号电压摆动值将会增大。当一个站检测到的信号电压摆动值超过一定的门限值时,就认为总线上至少有两个站同时发送数据,表明产生了碰撞。
发生碰撞时,总线上传输的信号产生了严重的失真,无法从中恢复出有用的信息来。每一个正在发送数据的站,一旦发现总线上出现了碰撞,就要立即停止发送,免得继续浪费网络资源,然后等待一段随机时间后再次发送。
碰撞的根本原因是电磁波在媒体上的传播速度总是有限的
-
重要特性
- 使用CSMA/CD协议的以太网不能进行全双工通信,而只能进行双向交替通信(半双工通信)
- 每个站在发送数据之后的一小段时间内,存在着遭遇碰撞的可能性。这种发送的不确定性使整个以太网的平均通信量远小于以太网的最高数据率
-
重要问题
-
争用期(碰撞窗口)
- 网上任一站点在开始发送后,最多经过2t时间就能确认此次传输是否成功。t为网络中相距较远的两个站点信号传输的时间。
- 以太网的端到端往返时延2t称为争用期,又称为碰撞窗口
- 经过争用期这段时间还没有检测到碰撞,才能肯定这次发送不会发生碰撞
-
检测到冲突后,等待多长时间再重试?
二进制指数退避算法
算法思想:
- 随机实际的基本单位是一个竞争时间片长度
- 对每一个帧,第一次发送冲突,设置参数L=2,随机时间取为n个时间片(n为$0-(L-1)$中的一个随机数)
- 帧每重复一次冲突,L加倍n为$0-(L-1)$中的一个随机数
- 算法对每一个帧设置最大重传次数,超过后不重传,报告出错
发生碰撞的站在停止发送数据后,要推迟(退避)一个随机时间才能再发送数据
- 确定基本退避时间,一般是取为争用期$2\tau$
- 定义参数k为重传次数,k≤10,即$k=Min[重传次数,10]$
- 从整数集合$[0,1,…,(2^k-1)]$中随机地取出一个数,记为$r$。重传所需的时延就是$r$倍的基本退避时间
- 当重传达16次仍不能成功时即丢弃该帧,并向高层报告
-
- 争用期的长度
- 以太网取51.2$\mu s$为争用期长度
- 对于10$Mb/s$以太网,在争用期内科发送512 bit,即64字节
- 以太网在发送数据时,若前64字节没有发送冲突,则后续数据就不会发生冲突。
- 由于一检测到冲突就立即中止发送,已经发送出去的数据一定小于64字节
- 以太网规定了最短有效帧长为64字节,凡长度小于64字节的帧都是由于冲突而异常中止的无效帧
-
强化碰撞
当发送数据的站一旦发现发生了碰撞时,除了立即停止发送数据外,还要再继续发送若干比特的人为干扰信号,以便让所有用户都知道现在已经发生了碰撞。
-
小结
-
先听后讲
发送前先侦听介质,若介质空闲,则立即发送;若介质忙,则继续侦听,直到介质空闲
-
边讲边听
在发送过程中进行冲突检测
-
冲突停止
若发送过程中检测到冲突,则立即停止发送
-
随机等待
停止发送后,须等待一段时间后再侦听介质
-
每次冲突后,随机延迟的平均值加倍(二进制指数退避算法),即使较少发生冲突的帧具有较优先发送的概率
-
可以减少争用型总线上的冲突
-
-
4.3 传统以太网
传统以太网可使用的传输媒体有四种:
- 铜缆(粗缆或细缆)
- 铜线(双绞线)
- 光缆
以太网四种不同的物理层:
传统以太网的连接方法
- 10BASE5(粗缆)、10BASE2(细缆)、10BASE-T(双绞线)、10BASE-F(光缆)
- BASE表示电缆上的信号是基带信号,采用曼彻斯特编码
- BASE前的数字“10”表示数据率为10Mb/s
- 后面的数字5或2表示每一段电缆的最大长度为500米或200米。“T”代表双绞线,“F”代表光纤
具体分析
- 粗缆以太网(10BASE5)
- 网卡:DB-15型连接器与收发器电缆相连
- 收发器电缆:AUI(连接单元接口)电缆
- 收发器:连接AUI电缆的另一端
- 转发器:能够将信号放大并整形后再转发出去,工作在物理层
- 细缆以太网(10BASE2)
- 细通州电缆
- 媒体连接单元MAU和媒体相关接口MDI
- 用标准BNC T型接头连接到网卡上的BNC连接器的插口
- 双绞线以太网(10BASE-T)
- 以上两种连接方式的问题可靠性不高
- 在星形网中心增加集线器
- 连接方式:HUB、双绞线、RJ45接头
- 连接距离:站点到集线器距离不超过100m
- 优点:可靠性高,便宜
- 光缆以太网(10BASE-F)
4.4 以太网的MAC层
4.4.1 以太网标准
- DIX Ethernet V2
- IEEE 802.3
IEEE 802标准
4.4.2 以太网的层次结构
-
物理层
与OSI模型中类似。物理层负责与传输介质的连接,并在传输介质上传输比特流,因此,它描述和规定了与传输接口的特性
-
数据链路层
OSI模型中数据链路层的功能在IEEE 802模型中分成了两个子层(MAC和LLC)
-
逻辑链路控制LLC(Logical Link Control)子层
屏蔽对各种不同物理网络的访问方法的差异,向上提供数据传输服务的统一的逻辑接口
-
媒体接入控制MAC(Medium Access Control)子层
媒体接入控制子层的主要功能是控制对传输介质的访问,并在物理层的基础上实现无差错通信。
以太网MAC层拆分的好处:
- 与接入到传输媒体有关的内容都放在MAC子层,而LLC子层则与传输媒体无关,不管何种协议的局域网对LLC子层来说都是透明的。
-
4.4.3 以太网的MAC层
网卡
- 网络接口板又称为通信适配器(adapter)或网络接口卡NIC(Network Interface Card),或“网卡”
- 主要工作:
- 进行串行/并行转换
- 对数据进行缓存
- 实现以太网协议
- 在计算机的操作系统安装设备驱动程序
MAC层的硬件地址
- 局域网中,硬件地址又称为物理地址,或MAC地址
MAC地址分配与描述
- 网卡地址或网卡标识符常写为:EUI-48
- IEEE规定地址第一字段第一字节为I/G比特
- “0”表示单站地址;“1”表示组地址
网卡检查MAC地址
- 网卡从网络上每收到一个MAC帧就首先用硬件检查MAC帧中的MAC地址
- 如果是发往本站的帧则收下,然后再进行其他处理
- 否则就将此帧丢弃,不再进行其他的处理
- “发往本站的帧”包括以下三种帧:
- 单播(unicast)帧(一对一)
- 广播(broadcast)帧(一对全体)
- 多播(multicast)帧(一对多)
MAC帧格式
- 类型字段
- 用来标识上一层使用的是什么协议,以便把收到的MAC帧交给上一层的协议
- 类型字段为0x0800表示上层使用IP数据报
- 类型字段为0x8137表示上层使用Novell IPX数据报
- 同步码
- 实际传送的比MAC帧多8个字节
- 当一个站开始接收MAC帧时,没有与到达的比特流同步,因此MAC帧的开始若干比特无法接收,这样使得整个帧无效。这样需要插入同步码。
- 目的地址字段6字节
- 源地址字段6字节
- 类型字段2字节,用来标志上一层使用的是什么协议,以便把收到的MAC帧的数据上交给上一层的这个协议。
- 数据字段46~1500字节,正式名称是MAC客户数据字段,最小长度64字节-18字节的首部和尾部=数据字段的最小长度
- FCS字段4字节,当传输媒体的误码率为1×10^-8^时,MAC子层可使未检测到的差错小于1×10^-14^
- 当数据字段的长度小于46字节时,应在数据字段后面加入整数字节的填充字段,以保证以太网的MAC帧长不小于64字节
无效MAC帧的情况
- 数据字段的长度与长度字段的值不一致
- 帧的长度表示整数个字节
- 用收到的帧检验序列FCS查出有差错
- 数据字段的长度步骤46~1500字节之间
- 有效的MAC帧长度为64~1518字节之间
- 对于监察处的无效MAC帧就简单地丢弃。以太网不负责重传丢弃的帧
帧间最小间隔
- MAC子层标准规定帧间最小间隔为9.6$\mu s$,相当于96 bit的发送时间
- 一个站在检测到总线开始空闲后,还要等待9.6$\mu s$才能再次发送数据
- 这样做是为了使刚刚收到数据帧的站的接收缓存来得及清理,做好接收下一帧的准备
4.4.4 局域网的扩展(物理层和链路层扩展)
- 局域网覆盖距离有限
- 单个局域网覆盖的距离往往不能满足应用的需要
- 局域网能支持的连网计算机数目有限
- 单个局域网所能连接的计算机数目往往不能满足应用的需要
- 局域网上能传输的通信量有限
- 单个局域网所容许的通信量往往不能满足应用的需要
局域网互联设备
- 互联的本质
- 由于网络是分层次实现的,而局域网又各有不同的标准,因此网络互连的本质就是在不同的协议层次上实现协议的彼此转换
- 互联设备
- 转发器(Repeater)
- 集线器(Hub)
- 网桥(Bridge)
- 交换机(Switch)
- 路由器(Router)
- 网关(Gateway)
局域网的扩展
- 重发器又称中继器,用于在物理层上实现两个同构型局域网之间的互连
- 重发器的功能
- 常用于连接两个同轴电缆以太网,将信号放大整形后,以增大传输距离
- 不具有信号通路的选择功能
物理层扩展局域网
-
冲突域(碰撞域)
- 任一时刻每个系中只能有一个站发送数据
- 为每个局域网的最大吞吐量为10M/b,则整个系统为30M/b的最大吞吐量
-
集线器扩展局域网
- 优点
- 使原来属于不同碰撞域的局域网上的计算机能够进行跨碰撞域的通信
- 扩大了局域网覆盖的地理范围
- 缺点
- 碰撞域增大了,但总的吞吐量并未提高
- 如果不同的碰撞域使用不同的数据率,那么就不能用集线器将它们互连起来
- 优点
数据链路层扩展局域网
-
使用网桥
- 网桥工作在数据链路层
- 根据MAC帧的目的地址对收到的帧进行转发
- 具有过滤帧的功能。当网桥收到一个帧时,并不是向所有的端口转发此帧,而是先检查此帧的目的MAC地址,然后再确定将该帧转发到哪个端口
-
网桥的工作原理
- 网桥从端口接收网段上传送的各种帧
- 每当收到一个帧时,先暂存在缓存中
- 若此帧为出错,且欲发送的目的站的MAC地址属于另外一个网段,则通过查找“转发表”,将收到的帧送往对应的端口转发
- 若此帧出错,则丢弃该帧
- 同一个网段内的帧,不会被网桥转发,不会增加网络负担
-
使用网桥的优缺点
- 优点
- 过滤通信量、扩大了物理范围、提高了可靠性
- 可互连不同物理层、不同MAC子层和不同速率(如10Mb/s和100Mb/s以太网)的局域网
- 缺点
- 存储转发增加了时延
- 在MAC子层并没有流量控制功能
- 具有不同MAC子层的网段桥接在一起时时延更大
- 网桥只适合于用户数不太多和通信量不太大的局域网,否则有时还会因传播过多的光波信息而产生网络拥塞。这就是所谓的光波风暴。
- 优点
-
网桥和集线器的不同
- 集线器在转发帧时,不对传输媒体进行检测
- 网桥在转发帧之前必须执行CSMA/CD算法
- 若在发送过程中出现碰撞,就必须停止发送和进行退避
- 在这一点上网桥的接口很像一个网卡。但网桥却没有网卡。
- 由于网桥没有网卡,因此网桥并不改变它转发的帧的源地址
-
网桥的类型
-
网桥的特点
- 网桥用于在数据链路层上实现在数据链路层以上使用相同协议的局域网的互连
- 负责完成物理层和数据链路层协议的转换
- 网桥具有路由选择功能,可提高网络的整体效率
-
依据不同路由确定方法
-
固定路由网桥
人工为每个网桥针对它所连接的每个局域网分别建立一张路由表。当一个帧到达时,网桥就根据预先设计好的路由表来决定如何进行转发。
缺点:不能适应动态改变的网络互连环境,路由表维护困难
-
透明网桥
能生成和修改自己路由表的网桥。
“透明”是指局域网上的站点并不知道所发送的帧将经过哪几个网桥,因为网桥对各站来说是看不见的
做法
- 任何时候当网桥接收到一个帧时,根据其源地址就可获得发送该帧的站点所在的局域网,从而为路由表建立相应的条目
- 同时,为未知路由的帧使用扩散算法(Flooding Algorithm)来进行转发(即向它所连接的每个局域网发送该帧,该帧来自哪个局域网除外)
特点
- 能适应动态改变的网络环境
- 确定路由的负担在网桥
==网桥处理收到的帧和建立转发表算法==
- 从端口x收到无差错的帧(若有差错即丢弃),在转发表中查找目的站MAC地址
- 如有,则查找出到此MAC地址应当走的端口d,然后进行3,否则转到5
- 如到这个MAC地址去的端口d=x,则丢弃此帧(因为这表示不需要经过网桥进行转发)。否则从端口d转发此帧。
- 转到6
- 向网桥除x以外的所有端口转发此帧(可以保证找到目的站)
- 如源站不在转发表中,则将源站MAC地址加入到转发表,登记该帧进入网桥的端口号,设置计时器。然后转到8.如源站在转发表中,则执行7
- 更新计时器
- 等待新的数据帧。转到1.
网桥在转发表中登记的信息
登记三项信息
- 站地址:登记收到的帧的源MAC地址
- 端口:登记收到的帧进入该网桥的端口号
- 时间:登记收到的帧进入该网桥的时间
站地址问题
- 转发表中的MAC地址是根据源MAC地址写入的,但在进行转发时,是将此MAC地址当作目的地址
转发表中的计时器
为了使转发表反映最新的局域网拓扑。
局域网的拓扑结构经常变化,为了使转发表能反映整个局域网的最新拓扑,所以要记录下每个帧到达网桥的时间。
具体做法:
网桥中的端口管理软件周期性地扫描转发表中的项目。将一定时间之前登记的项目删除。
透明网桥使用了支撑树(生成树)算法,以避免产生转发的帧在网络中不断地兜圈子。
-
源路由网桥
-
由发送站点确定到达目的地的路由,并将它存储在所发送的帧中;网桥接收帧后按其只是的路由将它转发到下一局域网上
-
特点
- 能适应动态改变的网络环境
- 确定路由的负担在站点
-
源站以广播方式向欲通信的目的站发送一个方向帧,每个发现帧都记录所经过的路由。
发现帧到达目的站时就沿各自的路由返回源站。源站在得知这些路由后,从可能的路由中选择出一个最佳路由。凡从该源站向该目的站发送的帧的首部,都必须携带源站所确定的这一路由信息。
-
-
-
-
多端口网桥——以太网交换机
交换式集线器常称为以太网交换机或第二层交换机(表明此交换机工作在数据链路层)
以太网交换机通常有十几个端口。因此,以太网交换机实际上就是一个多端口的网桥
独占传输媒体的带宽
每个端口到主机的带宽是10Mb/s,但由于一个用户在通信时是独占而不是和其他网络用户共享传输媒体的带宽,因此对于拥有N对端口的交换机的总容量为N×10Mb/s
用以太网交换机扩展局域网
4.4.5 虚拟局域网
虚拟局域网VLAN是由一些局域网网段构成的与物理位置无关的逻辑组
- 这些网段具有某些共同的需求
- 每一个VLAN的帧都有一个明确的标识符,指明发送这个帧的工作站是属于哪一个VLAN
虚拟局域网其实只是局域网给用户提供的一种服务,而不是一种新型局域网。
虚拟局域网限制了接收广播信息的工作站数,使得网络不会因传播过多的光波信息而引起性能恶化。
冲突域与广播域
- 连接在同一个网桥或交换机端口的计算机构成一个冲突域,即处于同一个端口的计算机在某一个时刻只能有一台计算机发送数据,其他处于监听状态,如果出现两台或两台以上的计算机同时发送数据,便会冲突
- 网桥或交换机的本质是通过将网络分割成多个冲突域来增强网络服务
- 网桥会向所有端口转发未知目的端口的数据帧,所以网桥/交换网络会产生广播风暴
优点
- 安全性好
- 没有路由的情况下,不同虚拟局域网间不能相互通信
- 网络分段
- 可将物理网络逻辑分段,而不是按物理分段。可以将不同地点、不同部门的计算机划分在一个虚拟局域网上。
- 提高较高的灵活性
- 方便地将一个站点加入或从一个VLAN删除
划分VLAN的方法
- 基于端口的划分
- 将交换机按照端口进行分组,每一组定义为一个VLAN
- 基于MAC地址的划分
- 按照终端的MAC地址定义VLAN
- 基于网络层
- 基于网络层的协议或网络层地址来划分
4.4.6 高速以太网
速率达到或超过100Mb/s的以太网称为高速以太网
100BASE-T以太网又称为快速以太网(Fast Ethernet),在双绞线上传送100Mb/s基带信号拓扑以太网。
特点
- MAC帧格式仍是802.3标准规定的
- 保持最短帧长不变,但将一个网段的最大电缆长度减小到100m
- 帧间时间间隔从原来的9.6$\mu s$改为现在的0.96$\mu s$
吉比特以太网
- 允许在1Gb/s下全双工和半双工两种方式工作。
- 使用802.3协议规定的帧格式
- 在半双工方式下使用CSMA/CD协议
- 与10BASE-T和100BASE-T技术向后兼容
载波延伸(carrier extension)
- 吉比特以太网在工作在半双工方式时,就必须进行碰撞检测
- 由于数据率提高了,因此只有减小最大电缆长度或增大帧的最小长度
- 仍然保持一个网段的最大长度为100m,但采用了“载波延伸”的办法,使最短帧长仍为64字节,同时将争用时间增大为512字节
10吉比特以太网
- 10吉比特以太网与10Mb/s,100Mb/s和1Gb/s以太网的帧格式完全相同
- 10吉比特以太网还保留了802.3标准规定的以太网最小和最大帧长,便于升级
- 10吉比特以太网不再使用铜线而只使用光纤作为传输媒体
- 10吉比特以太网只工作在全双工方式,因此,没有争用问题,也不使用CSMA/CD协议
第五章 网络层
5.1 路由器在互联中的作用
当主机A要向另一个主机B发送数据报时,先要检查目的主机B是否与源主机A连接在同一个网络上。
如果是,就将数据包直接交付给目的主机B而不需要通过路由器。
但如果目的主机与源主机A不是连接在同一个网络上,则应将数据报发送给本网络上的某个路由器,由该路由器按照转发表指出的路由将数据包转发给下一个路由器。这就叫做间接交付。
直接交付不需要使用路由器,间接交付必须使用路由器
转发和路由选择的区别
- 转发(forwarding)就是路由器根据转发表将用户的IP数据报从合适的端口转发出去
- “路由选择”(routing)是按照分布式算法,根据从各相邻路由器得到的关于网络拓扑的变化情况,动态地改变所选择的路由。
- 路由表是根据路由选择算法得出的。而转发表是从路由表得出的。
输入端口对线路上收到的分组处理
数据链路层剥去帧首部和尾部后,将分组送到网络层的队列中排队等待处理。这会产生一定的时延。
输出端口将交换结构传送来的分组发送到线路
当交换结构传送过来的分组先进行缓存。数据链路层处理模块将分组加上链路层的首部和尾部,交给物理层后发送道外部线路。
分组丢弃
若路由器处理分组的速率赶不上分组进入队列的速率,则队列的可用存储空间最终必定减少到零,这就使后面再进入队列的分组由于没有存储空间而只能被丢弃。
路由器中的输入或输出队列产生溢出是造成分组丢失的重要原因。
5.2 网络层提供的服务
- 数据链路层的任务
- 在相邻的两个节点之间实现数据帧的透明传输
- 网络层的任务
- 负责将分组从源节点传送到目的节点
- 局域网中网络层的功能很弱
- 在单个的局域网中,网络层并不重要。网络层主要实现局域网的互连,流量控制和差错处理都放在链路层完成。
网络层应该提供的服务
- 提供无连接的传输服务
- Internet团体为代表:认为通信子网本质上不可靠,数据的正确传输,主机总是要进行差错控制。
- 简化网络层的设计,仅提供无连接的数据传输服务。
- 每个分组携带完整的地址信息,独立传输,独立寻址,彼此之间不需要保持任何的顺序关系。
- 提供可靠的面向连接的传输服务
- 电话公司为代表:发送数据之间应该先建立,好处是对控制参数、可选服务类型、服务质量等进行协商;保证数据的顺序传送,便于流量控制。
- 两种服务类型的比较
- 无连接服务
- 网络层设计简单,传输层(主机)协议复杂
- 适用于要求快速投递而允许偶然出错的实时系统
- 如:Internet网络层
- 面向连接的服务
- 要求网络层设计复杂,而传输层简单
- 适用于实时的数据传送(电视图像传送)
- 如:ATM网络提供的服务
- 无连接服务
服务的可靠与连接的关系
- 可靠
- 是指数据没有丢失、损坏或重复
- 采用应答来实现,即可靠/不可靠可用有/无应答来区分
- 面向连接
- 本质是保证数据的顺序传送
- 特征是数据传送必须经过建立连接、传送数据和拆除连接三个阶段
- 结论
- 可靠性与是否连接之间没有关系
- 可靠性与有/无连接的四种组合(主要有可靠的面向连接的服务和不可靠的无连接的服务)
5.3 IP地址编址方法
因特网的网际IP
网际协议IP是TCP/IP体系中两个最主要的协议之一。与IP协议配套使用的还有四个协议:
- 地址解析协议ARP(Address Resolution Protocol)
- 逆地址解析协议RARP(Reverse Address Resolution Protocol)
- 因特网控制报文协议ICMP(Internet Control Message Protocol)
- 因特网组管理协议IGMP(Internet Group Management Protocol)
把整个因特网看成为一个单一的、抽象的网络。IP地址就是给每个连接在因特网上的主机(或路由器)分配一个在全世界范围是唯一的32bit的标识符。
IP地址现在由因特网名字与号码指派公司ICANN(Internet Corporation for Assigned Names and Numbers)进行分配。
IP地址与硬件地址
- 物理地址
- 数据链路层和物理层使用的地址
- IP地址
- 网络层和以上各层使用的地址
IP地址编址的三个阶段
-
分类的IP地址
这是最基本的编址方法,在1981年就通过了响应的标准协议。
-
子网的划分
这是对最基本的编址方法的改进。
-
构造超网
这是比较新的无分类编址方法。
分类的IP地址
每一类地址都由固定长度的字段组成,其中一个字段是网络号net-id,它标志主机(或路由器)所连接到的网络,而另一个字段则是主机号host-id,它标志该主机(或路由器)。
两级的IP地址可以记为:
==**IP地址 ::= {<网络号>, <主机号>}**==主机号>网络号>
- A类地址的网络号字段net-id为1字节,主机号字段host-id为3字节
- B类地址的网络号字段net-id为2字节,主机号字段host-id为2字节
- C类地址的网络号字段net-id为3字节,主机号字段host-id为1字节
- D类地址为多播地址
- E类地址保留为今后使用
点分十进制记法
机器中存放的IP地址是32bit二进制代码 1000000000010110000001100011111
每隔8bit插入一个空格能够提高可读性 1000000 00001011 00000011 00011111
将每8bit的二进制数转换为十进制数 128 11 3 31
采用点分十进制记法进一步提高可读性 128.11.3.31
IP地址分类的好处
- 划分成不同类别的考虑
- 各种网络差异很大,有的网络拥有很多主机,而有的网络拥有的主机数目很少
- 将IP地址划分成不同类别A、B、C可以满足不同用户的需求
- 当一个单位申请到一个IP地址时,只是申请了一个网络号net-id,具体的主机号由各个单位自行分配
- D类和E类使用较少
- D类的多播地址主要留给IAB(因特网体系结构委员会)使用
路由器转发分组的步骤
- 先按所要找的IP地址中的网络号net-id把目的网络找到
- 当分组到达目的网络后,再利用主机号host-id将数据报直接交付给目的主机
- 按照整数字节划分net-id子段和host-id字段,就可以使路由器在收到一个分组时能够更快地将地址中的网络号提取出来。
网络类别 | 最大网络数 | 第一个可用的网络号 | 最后一个可用的网络号 | 每个网络中最大的主机数 |
---|---|---|---|---|
A | 126 (2^7^-2) | 1 | 126 | 16.777.214 |
B | 16,383 (2^14^-1) | 128.0 | 191.255 | 65,534 |
C | 2,097,151(2^21^-1) | 192.0.0 | 223.255.255 | 254 |
三种类别的IP地址中,2个特殊的host-id含义:
- 全”0”的host-id表示该IP地址是“本主机”所连接的单个网络地址
- 全“1”的host-id表示“所有(all)”,即该网络上的所有主机
三种类别的IP地址
- A类地址
- 网络号为126个(2^7^-2)
- IP地址的全”0“表示”这个(This)“
- net-id为全”0”,是保留地址,表示“本网络”
- net-id为127,为本地软件的环路测试,本主机使用
- 全部的IP地址为2^32^个,A类IP地址共有2^31^占50%
- B类地址
- 共有2^30^个,占25%
- C类地址
- 共有2^29^个,占12.5%
一般不使用的特殊IP地址
net-id | host-id | 源地址 | 目的地址 | 含义 |
---|---|---|---|---|
0 | 0 | 可以 | 不可以 | 在本网络上的本主机 |
0 | host-id | 可以 | 不可以 | 在本网络上的某个主机 |
全1 | 全1 | 不可以 | 可以 | 只在本网络上进行广播 (各路由器均不转发) |
net-id | 全1 | 不可以 | 可以 | 对net-id上所有主机进行广播 |
127 | 任何数 | 可以 | 可以 | 用作本地软件进行环回测试用 |
IP地址的一些重要特点
- IP地址是一种分等级的地址结构。分两个等级的好处是:
- IP地址管理机构在分配IP地址时只分配网络号,而剩下的主机号则由得到该网络号的单位自行分配,方便IP地址的管理
- 路由器仅根据目的主机所连接的网络号来转发分组(而不考虑目的主机号),可以使路由表中的项目数大幅度减少,从而减小了路由表所占的存储空间
- IP地址是标识“一个主机(或路由器)和一条链路的接口”
- 当一个主机同时连接到两个网络上时,该主机就必须同时具有两个相应的IP地址,其网络号net-id必须是不同的。这种主机称为多借口主机(multihomed host)
- 由于一个路由器至少应当连接到两个网络(这样它才能将IP数据报从一个网络转发到另一个网络),因此一个路由器至少应当有两个不同的IP地址
- 用转发器或网桥连接起来的若干个局域网仍为一个网络,因此这些局域网都具有同样的网络号net-id
- 所有分配到网络号net-id的网络,无论范围很小的局域网,还是可能覆盖很大地理范围的广域网,都是平等的
- 在同一个局域网上的主机或路由器的IP地址中的网络号必须是一样的
- 路由器总是具有两个或两个以上的IP地址。路由器的每一个接口都有一个不同网络号的IP地址
- 两个路由器直接相连的接口处,可指明也可不指明IP地址。如指明IP地址,则这一段连线就构成了一种只包含一段线路的特殊”网络”(如图中N~1~,N~2~,N~3~)。现在常不指明IP地址
IP多播
特点:
- 多播使用组地址
- 永久组地址
- 动态的组成员
- 使用硬件进行多播
5.3 IP层数据报格式
一个IP数据报由首部和数据两部分组成
- 首部
- 固定部分
- 首部的前一部分是固定长度,共20字节,是所有IP数据报必须具有的。
- 可变部分
- 在首部的固定部分的后面是一些可选字段,其长度是可变的
- 固定部分
- 数据部分
-
版本:占4 bit,指IP协议的版本
-
首部长度:占4 bit,可表示的最大数值是15个单位(一个单位为4字节)
-
服务类型:占8 bit,用来获得更好的服务,最小延迟(D)、最大吞吐量(T)、最高可靠性(R)和最小花费(C)等
-
总长度:占16 bit,指首部和数据之和的长度,单位为字节,因此数据报的最大长度为65535字节。总长度必须不超过最大传送单元MTU。
-
分组标识:占16 bit,是一个计数器,用来产生数据报的标识。发送方每发送一个分组,分组标识加1;分组若被分片,标识仍旧保持不变。
-
标志:占3 bit,目前只有前两个比特有意义。标志字段的最低位是MF,是否是分组最后片段。MF=1表示后面“还有分片”。MF=0表示最后一个分片。标志字段中间的一位是DF。只有当DF=0时才允许分片。DF=1,表示路由器不要将分组分段。
-
片偏移:占12 bit,该片段在分组中的位置。片偏移以8个字节为片移单位。
-
生存时间:占8 bit,记为TTL(Time To Live),为了限制数据报在网络中的生存时间,其单位最初是秒,但为了方便,现在都用”跳数”作为TTL的单位。数据报每经过一个路由器,其TTL值就减1.
-
协议:8 bit,指出此数据报携带的数据使用何种协议(如TCP/UDP)以便目的主机的IP层将数据部分上交给哪个处理过程
-
首部检验和:16 bit,只检验数据报的首部不包括数据部分
-
源地址和目的地址各占4字节
-
可变部分
- IP首部的可变部分就是一个选项字段,用来支持排错、测量以及安全等措施,内容很丰富。
- 选项字段的长度可变,从1个字节到40个字节不等,取决于所选择的项目。
- 增加首部的可变部分是为了增加IP数据报的首部长度成为可变的。这就增加了每一个路由器处理数据报的开销。
- 实际上这些选项很少被使用
IP层转发分组的流程
路由器和结点交换机的区别:
- 路由器是用来连接不同的网络,而结点交换机只是在一个特定的网络中工作
- 路由器是专门用来转发分组的,而结点交换机还可接上许多个主机
- 路由器使用统一的IP协议,而结点交换机使用所在广域网的特定协议
- 路由器根据目的网络地址找出下一个路由器,而结点交换机则根据目的站所接入的交换机号找出下一跳
特定主机路由
- 分组转发大都是基于目的主机所在的网络,但也有特例
- 特定主机路由,这种路由是为特定的目的主机指明一个路由
- 采用特定主机路由可使网络管理人员能更方便地控制网络和测试网络,同时在需要考虑某种安全问题时采用这种特定主机路由
分组转发算法
- 从数据报的首部提取目的站的IP地址$D$,得出目的网络地址为$N$
- 若网络$N$与此路由器直接相连,则直接将数据包交付给目的站$D$;否则是间接交付,执行3
- 若路由表中中有目的地址为$D$的特定主机路由,则将数据报传送给路由表中所指明的下一跳路由器;否则,执行4.
- 若路由表中有到达网络$N$的路由,则将数据报传送给路由表指明的下一跳路由器;否则执行5
- 若路由表中有一个默认路由,则将数据报传送给路由表中所指明的默认路由器;否则,执行6
- 报告转发分组出错
IP数据报的首部中没有地方可以用来指明“下一跳路由器的IP地址”
当路由器收到待转发的数据报,不是将下一跳路由器的IP地址填入IP数据报,而是送交下层的网络接口软件
网络接口软件使用ARP负责将下一跳路由器的IP地址转换成硬件地址,并将此硬件地址放在链路层的MAC帧的首部,然后根据这个硬件地址找到下一跳路由器。
5.5 划分子网和构造超网
5.5.1 划分子网
在IP地址中增加了一个“子网号字段”,使两级的IP地址变成为三级的IP地址,这种做法叫作划分子网
从主机号借用若干个比特作为子网号 subnet-id,而主机号host-id也就相应减少了若干个比特
**IP地址::={<网络号>,<子网号>,<主机号>}**主机号>子网号>网络号>
基本思路
- 凡是从其他网络发送给本单位某个主机的IP数据报,仍然是根据IP数据报的目的网络号net-id,先找到连接在本单位网络上的路由器
- 然后此路由器在收到IP数据报后,再按目的网络号net-id和子网号subnet-id找到目的子网
- 最后就将IP数据报直接交付给目的主机
划分子网后变成了三级结构
- 当没有划分子网时,IP地址是两级结构,地址的网络号字段也就是IP地址的“因特网部分”,而主机号字段是IP地址的“本地部分”
- 划分子网IP地址就变成了三级结构。划分子网只是将IP地址的本地部分进行再划分,而不改变IP地址的因特网部分
5.5.2 子网掩码
-
从一个IP数据报的首部并无法判断源主机或目的主机所连接的网络是否进行了子网的划分
-
使用子网掩码可以很方便地找出IP地址中的子网部分
使用子网掩码的分组转发过程
- 在不划分子网的两级IP地址下,从IP地址得出网络地址是个很简单的事
- 在划分子网的情况下,从IP地址不能唯一地得出网络地址来,这是因为网络地址取决于那个网络所采用的的子网掩码,但数据报的首部并没有提供子网掩码的信息
- 从收到的分组的首部提取目的IP地址$D$
- 先判断是否直接交付。先用个网络的子网掩码和$D$逐比特相“与”,看是否和相应的网络地址匹配。若匹配,则将分组直接交付。否则就是间接交付,执行3.
- 若路由表中有目的地址为$D$的特定主机路由,则将分组传送给指明的下一跳路由器;否则,执行4
- 对路由表中的每一行的子网掩码和$D$逐比特相”与”,若其结果与该行的目的网络地址匹配,则将分组传送给该行指明的下一跳路由器;否则执行5
- 若路由表中有一个默认路由,则将分组传送给路由表中所指明的默认路由器;否则执行6
- 报告转发分组出错
5.5.3 无分类编址CIDR
无分类域间路由选择CIDR(Classless Inter-Domain Routing)
CIDR的主要特点
- CIDR消除了传统的A类、B类和C类地址以及划分子网的概念,因而可以更加有效地分配IPv4的地址空间
- CIDR使用各种长度的“网络前缀”来代替分类地址中的网络号和子网号
- IP地址从三级编址(使用子网掩码)又回到了两级编址
无分类的两级编址
**IP地址::={<网络前缀>,<主机号>}**主机号>网络前缀>
CIDR使用“斜线记法”,或称为CIDR记法,即在IP地址后面加上一个斜线“/”,然后写上网络前缀所占的比特数
CIDR将网络前缀都相同的连续的IP地址组成“CIDR地址块”
CIDR地址块
- 128.14.32.0/20 表示的地址块共有2^12^个地址
- 这个地址块的起始地址是128.14.32.0
- 128.14.32.0/20地址块的最小地址:128.14.32.0
- 128.14.32.0/20地址块的最大地址:128.14.32.255
- 全0和全1的主机号地址一般不使用
路由聚合(route aggregation)
- 一个CIDR地址块可以表示很多地址,这种地址的聚合常称为路由聚合,它使得路由表中的一个项目可以表示很多个原来传统分类地址的路由
- 路由聚合也称为构成超网
- CIDR虽然不使用子网,但仍使用“掩码”
- 对于/20地址块,它的掩码是20个连续的1
构成超网
- 前缀超度不超过23 bit的CIDR地址块都包含了多个C类地址
- 这些C类地址合起来就构成了超网
- CIDR地址块中的地址数一定是2的整数次幂。网络前缀越短,其地址块所包含的地址数就越多
最长前缀匹配
- 使用CIDR时,路由表中的每个项目由“网络前缀”和“下一跳地址”组成。在查找路由表时可能会得到不止一个匹配结果。
- 应当从匹配结果中选中具有最长网络前缀的路由:最长前缀匹配
- 网络前缀越长,其地址块就越小,因而路由越具体。最长前缀匹配又称为最长匹配或最佳匹配
使用二叉线索查找路由表
- IP地址中从左到右的比特值决定了从根结点逐层向下层延伸的路径,而二叉线索中的各个路径就代表路由表中存放的各个地址
5.6 路由协议
5.6.1 路由协议的基本概念
理想的路由算法要求:
- 算法必须是正确的和完整的
- 算法在计算上应简单
- 算法应能适应通信量和网络拓扑的变化,要有自适应性
- 算法应具有稳定性
- 算法应是公平的
- 算法应是最佳的
代价(Cost):由一个或几个因素综合决定的一种度量(metric),如链路长度、数据率等
最佳路由
- 不存在一种绝对的最佳路由算法
- 所谓“最佳”只能是相对于某一种特定要求下得出的较为合理的选择而已
- 路由选择是个非常复杂的问题
- 是网络中的所有结点共同协调工作的结果
- 路由选择的环境往往是不断变化的,而这种变化有时无法事先知道
从路由算法的自适应性考虑
-
静态路由选择
非自适应路由选择,其特点是简单和开销较小,但不能及时适应网络状态的变化。
-
动态路由选择
自适应路由选择,其特点是能较好地适应网络状态的变化,但实现起来较为复杂,开销也比较大。
分层次的路由选择协议
- 因特网规模非常大。若让所有路由器知道所有网络怎样到达,则这种路由表将非常大,处理起来太花时间。
- 许多单位不愿意外界了解自己单位网络的布局细节和本部门采用的路由选择协议。
自治系统(autonomous system)
- 一个自治系统最重要的特点是自治系统自主地决定在本系统内应采用何种路由选择协议
- 一个自治系统的所有路由器在本自治系统内都必须是连通的
因特网由两大类路由选择协议
-
IGP(Interior Gateway Protocol)
在一个自治系统内部使用的路由选择协议。如RIP和OSPF协议。
-
RIP(Routing Information Protocol)
-
RIP是一种分布式的基于距离向量的路由选择协议
-
RIP协议要求网络中的每一个路由器都要维护从它自己到其它每一个目的网络的距离记录
-
RIP协议中的“距离”称为跳数,每经过一个路由器,跳数就加1
-
RIP认为一个好的路由就是它通过的路由器的数目少,即“距离短”
-
RIP允许一条路径最多只能包含15个路由器
-
距离的最大值为16时,即相当于不可达
-
RIP只适用于小型互联网
-
RIP选择一个具有最少路由器的路由
-
RIP协议的三个要点
每一个路由器需要不断地与其它路由器交换路由信息
- 仅和相邻路由器交换信息
- 交换的信息是当前本路由器所知道的全部信息,即自己的路由表
- 按固定的时间间隔交换路由信息
-
RIP路由表的建立
- 路由器刚刚开始工作时,只知道到直接连接的网络的距离(此距离定义为1)
- 以后,每一个路由器也只和数目非常有限的相邻路由器交换并更新路由信息
- 经过若干次更新后,所有的路由器最终都会知道到达本自治系统中任何一个网络的最短距离和下一跳路由器的地址
- RIP协议的手链过程较长,即在自治系统中所有的结点都得到正确的路由选择信息的过程
-
RIP路由表信息
到某个网络的距离(即最短距离),以及应经过的下一跳地址
路由表的更新原则是找出到每个目的网络的最短距离
-
距离向量算法
收到相邻路由器(其地址为X)的一个RIP报文:
-
先修改此RIP报文中的所有项目:将“下一跳”字段中的地址都改为X,并将所有的距离字段的值加1
目的:便于进行本路由表的更新
-
对修改后的RIP报文中的每一个项目,重复以下步骤:
若项目中目的网络不在路由表中,则将该项目加到路由表中。
目的:表明这是新的目的网络,应该加入到路由表中
否则
若下一跳字段给出的路由器地址是同样的,则将收到的项目替换原路由表中的项目。
原因:路由表要以最新消息为主
否则
若收到项目中的距离小于路由表中的距离,则进行更新,否则什么也不做。
-
若3分钟还没有收到相邻路由器的更新路由表,则将此相邻路由器记为不可达的路由器,即将距离置为16
-
返回
-
-
RIP协议的报文格式
首部(4字节)
- 命令字段:表示报文的意义。“1”表示请求路由信息;“2”表示对请求路由信息的响应或未被请求而发出的路由更新报文
- 后面补“0”是为了补齐4个字节
路由部分
- 由若干个路由信息组成。每个路由信息需要用20个字节
- 地址族标识符(又称为地址类别)字段用来标志所使用的地址协议
- 路由标记填入自治系统的号码,这是考虑使RIP有可能受到本自治系统以外的路由选择信息
最大RIP报文长度为:4+20×25=504字节
-
RIP协议的优缺点
- RIP协议最大的优点就是实现简单,开销较小
- RIP存在的一个问题是当网络出现故障时,要经过比较长的时间才能将此信息传送到所有的路由器
- RIP限制了网络的规模,它能使用的最大距离为15
- 路由器之间交换的路由信息是路由器中的完整路由表,因而随着网络规模的扩大,开销也就增加
-
-
OSPF(Open Shortest Path First)
-
OSPF协议的特点
- “开放”表明OSPF协议是公开发表的
- 最短路径优先是因为使用了最短路径算法SPF
- 是分布式链路状态协议
-
最短路径问题
-
路由最短是指:物理距离近、分组传输延迟时间最小、通信费用最低
-
算法思想:
首先从起始点出发,找出距起始点最短的通路,然后在此基础上找出距起始点次短的通路如此反复,知道某个通路达到某个目的地。
-
-
链路状态路由选择算法
-
基本思想
- 通过各个节点之间的路由信息交换,每个节点可以获得全网的拓扑信息
- 全网的拓扑信息:包括网中所有的节点、各个节点间的链路连接以及各条链路的代价,将这些拓扑信息组成一张带权无向图,然后利用最短通路路由选择算法计算到各个目的节点的最短通路
-
组成
-
找邻居节点
- 每一个节点启动后,首先在所有与之相连的点点线路上发送询问分组,线路上另一端的节点收到后给以回应,告知其网络地址
- 启动后,向所有邻节点发出HELLO分组,工作态的路由器收到后应发应答告知地址
-
确定链路代价
- 每个节点确定与之相连的每条链路的代价
- 发送ECHO分组,要求对方立即响应,测得来回时间除以2
- 为了动态取得链路状态,△t时间测一次,取得延时
-
构造并发布链路状态分组
-
各节点测得延时后,构造状态分组,并向邻节点发布。各路由器根据得到的邻节点送来的最新状态分组,计算新路由,△t时间进行一次。
-
发布方式:洪泛法,即除了分组到达线路以外的所有出路上发布。
好处:可靠性高,只要目的节点可达,分组就一定能到目的地
缺点:分组容易重复,且在网络中不易清除
-
顺序号字段:用顺序号解决重复分组问题,每发出一新链路状态分组,顺序号加1,链路状态分组中由4字节(32位)顺序号
-
age字段:解决无限存活和丢失顺序号问题
-
-
计算新路由
每一个路由器都积累了一整套链路状态分组,就可知道整个子网的结构,然后利用Dijkstra算法就可以算出该顶点到其他任何顶点的最短路径
-
-
OSPF的三要点
- 向本自治系统中所有路由器发送信息,使用的是洪泛法
- 发送的信息就是与本路由器相连的所有路由器的链路状态
- 只有当链路状态发送变化时,路由器才用洪泛法向所有路由器发送此信息
-
区域(area)
为了使OSPF能够用于规模很大的网络,OSPF将一个自治系统再划分为若干个更小的范围,叫做区域
-
-
-
-
外部网关协议EGP(External Gateway Protocol)
在自治系统之间的路由选择协议。若源站和目的站处在不同的自治系统中,当数据报传到一个自治系统的边界时,就需要使用一种协议将路由选择信息传递到另一个自治系统中。如BGP。
-
BGP
边界网关协议BGP只能是力求寻找一条能够到达目的网络且比较好的路由(不能兜圈子),而并非要寻找一条最佳路由)
采用路径向量路由选择协议。
特点
- 交换路由信息的结点数量级是自治系统数的量级
- 每一个自治系统中BGP发言人的数目很少
- BGP支持CIDR,因此BGP的路由表也包括目的网络前缀、下一跳路由器以及到达该目的网络索要经过的各个自治系统序列
- BGP刚刚运行时,BGP的邻站是交换整个的BGP路由表。但以后只需要在发生变化时更新有变化的部分
-
5.7 网络层协议
5.7.1 ICMP协议
因特网控制报文协议ICMP(Internet Control Message Protocol)
- ICMP允许主机或路由器报告差错情况和提供有关异常情况的报告
- ICMP表示高层协议,而是IP层的协议
- ICMP报文作为IP层数据报的数据,加上数据报的首部,组成IP数据报发送出去
ICMP报文的格式
ICMP报文
- ICMP报文的种类有两种,即ICMP差错报告报文和ICMP询问报文
- ICMP报文的前4个字节是统一的格式,共有三个字段:即类型、代码和检验和。接着的4个字节的内容与ICMP的类型有关
- 类型域用来指明消息的类型,有些消息还用代码域进一步定义说明
ICMP差错报告报文
- 差错报告
- 向源站点报告错误信息,不需要应答
- 差错报告的类型
- 终点不可达:网络不可达、主机不可达、协议不可达、端口不可达、需分片但DF为1、源路由失败等6种
- 源站抑制:路由器或主机拥塞时,向源报告
- 时间超过:路由器收到TTL为0的数据报时,丢弃且报告
- 参数问题:收到的数据报首部由字段不正确时
- 改变路由(重定向)
- 差错报告的方法
- 在发送一个ICMP错误消息时,消息内容同时携带引起错误的IP分组的分组头及分组数据域中的前8个字节
ICMP差错报告报文的数据字段的内容
不应发送ICMP差错报告报文的几种情况
- 对ICMP差错报告报文不再发送ICMP差错报告报文
- 对第一个分片的数据报片的所有后续数据报片都不发送ICMP差错报告报文
- 对具有多播地址的数据报都不发送ICMP差错报告报文
- 对具有特殊地址(如127.0.0.0或0.0.0.0)的数据报不发送ICMP差错报告报文
ICMP询问报文
询问报文:采用请求/应答方式进行交互,用来请求一些消息
-
回送请求和回答报文
由主机或路由器向一个特定的目的主机发出询问,收到此报文的机器给源主机应答。一般用来测试目的机器是否可达。
-
时间戳和回答报文
请求某个主机或路由器回答当前的日期和时间。
-
掩码地址请求和回答报文
用于向某个子网掩码服务器,请求得到某个接口的地址掩码。
-
路由器询问和通过报文
了解连接在本网络上的路由器是否正常工作
主机将路由器询问报文进行广播,收到询问报文的路由器使用路由器通告报文广播其路由选择信息
PING(Packet InterNet Groper)
- PING用来测试两个主机之间的连通性
- PING使用了ICMP回送请求与回送回答报文
- PING是应用层直接使用网络层ICMP的例子
5.7.2 ARP和RARP协议
当主机A欲向本局域网上的某个主机B发送IP数据报时,就现在其ARP高速缓存中查看有无主机B的IP地址。如有,就可查出其对应的硬件地址,再将此硬件地址写入MAC帧,然后通过局域网将该MAC帧发往此硬件地址。
ARP高速缓存的作用:
- 为了减少网络上的通信量,主机A在发送其ARP请求分组时,就将自己的IP地址到硬件地址的映射写入ARP请求分组
- 当主机B收到A的ARP请求分组时,就将主机A的这一地址映射写入主机B自己的ARP高速缓存中
应当注意的问题:
- ARP是解决同一个局域网上的主机或路由器的IP地址和硬件地址的映射问题
- 如果所要找的主机和源主机不在同一个局域网上,那么就要通过ARP找到一个位于本局域网上的某个路由器的硬件地址,然后把分组发送给这个路由器,让这个路由器把分组转发给下一个网络
- 从IP地址到硬件地址的解析是自动进行的,主机的用户对这种地址解析过程是不知道的
- 只要主机或路由器要和本网络上的另一个已知IP地址的主机或路由器进行通信,ARP协议就会自动地将该IP地址解析为链路层所需要的硬件地址
逆地址解析协议 RARP
基本思想:
- 无盘工作站启动时,首先从其接口卡中读取系统的硬件地址,然后发送一个RARP的请求分组,且封装在一个广播帧中
- 网络中有一个RARP服务器,上面存有MAC-IP映射配置文件,每当收到一个RARP请求,即读取配置文件,发现匹配时,用一个RARP应答回复
MTU(Maximum Transfer Unit)最大传送单元
IP层下面的每一种数据链路层都有其自己的帧格式,帧中数据字段的最大长度为MTU。
第六章 传输层
6.1 运输层协议概述
从通信和信息处理的角度看,运输层向它上面的应用层提供通信服务,属于面向通信部分的最高层,同时也是用户功能中的最低层。
通信子网中没有运输层,运输层只存在于通信子网以外的主机中。
应用进程之间的通信
- 两个主机进行通信实际上就是两个主机中的应用进程互相通信
- 应用进程之间的通信又称为端到端的通信
- 运输层的一个很重要的功能就是复用和分用。应用层不同进程的报文通过不同端口向下交到运输层,再往下就共用网络层提供的服务。
- 复用:不同进程的报文通过不同的端口,向下交给运输层,复用IP报文
- 分用:分组到达目的主机后,目的主机的运输层使用其分用功能,将不同端口的报文交付给不同的应用进程
- 运输层提供应用进程间的逻辑通信。逻辑通信是指运输层之间的通信好像是沿水平方向传送数据,但实际上两个运输层之间没有一条水平方向的物理连接。
网络层和运输层的主要区别
- 网络层提供主机之间的逻辑通信
- 运输层提供进程之间的逻辑通信
运输层的主要功能
-
运输层为应用进程之间提供端到端的逻辑通信(但网络层是为主机之间提供逻辑通信)
-
运输层还要对收到的报文进行差错检测
在网络层,IP数据报中的校验和字段,仅对数据报的首部作校验,而不检查数据部分
-
运输层需要有两种不同的运输协议,即面向连接到达TCP和无连接的UDP。
网络层无法同时实现两个协议,仅用无连接的IP协议
Attention
- TCP可靠信道含义:管道中运输无差错、按序(接收和发送的顺序)、无丢失、无重复
- UDP不可靠信道含义:不保证交付。接收时不按序、可能出现丢失和重复
- 运输层的可靠交付含义:运输层将数据可靠地交付给接收端的应用层
运输层的两个主要协议
TCP/IP的运输层有两个不同的协议:
- 用户数据报协议UDP(User Datagram Protocol)
- 传输控制协议TCP(Transmission Control Protocol)
两个对等运输实体在通信时传送的数据单位叫作运输协议数据单元TPDU(Transport Protocol Data Unit)
- TCP传送的数据单位协议是TCP报文段
- UDP传送的数据单位协议是UDP报文或用户数据报
TCP与UDP
- UDP在传送数据之前不需要先建立连接。对方的运输层在收到UDP报文后,不需要给出任何确认。虽然UDP不提供可靠交付,但在某些情况下UDP是一种最有效的工作方式。
- TCP则提供面向连接的服务。TCP不提供广播或多播服务。由于TCP要提供可靠的、面向连接的运输服务,因此不可避免增加了很多开销。这不仅使协议数据单元的首部增大很多,还要占用许多的处理机资源。
- 运输层的UDP用户数据报与网际层的IP数据报有很大区别。IP数据报要经过互连网中许多路由器的存储转发,但UDP用户数据报是在运输层的端到端抽象的逻辑信道中传送的。
- TCP报文段是在运输层抽象的端到端逻辑信道中传送,这种信道是可靠的全双工信道。但这样的信道却不知道究竟经过了哪些路由器,而这些路由器也根本不知道上面的运输层是否建立了TCP连接。
运输层的端口
- 运行在计算机中的进程是用进程标识符来标志的
- 运行在应用层的各种应用进程却不应当让计算机操作系统指派它的进程标识符。
- 为了使运行不同操作系统的计算机的应用进程能够互相通信,就必须用统一的方法对TCP/IP体系的应用进程进行标志
软件端口与硬件端口
- 在协议栈间的抽象的协议端口是软件端口
- 路由器或交换机上的端口是硬件端口
- 硬件端口是不同硬件设备进行交互的接口,而软件端口是应用层的各种协议进程与运输实体进行层间交互的一种地址。
端口
-
端口就是运输层服务访问点TSAP
-
端口的作用就是让应用层的各种应用进程都能将其数据通过端口向下交付给运输层,以及让运输层知道应当将其报文段的数据向上通过端口交付给应用层相应的进程
-
端口是用来标志应用层的进程
-
端口用一个16位(64 k个)端口号进行标识
-
端口只具有本地意义
- 端口号只是为了标志本计算机应用层中的各进程
- 在因特网中不同计算机的相同端口号是没有联系的
-
两类端口
-
服务端使用的端口号:熟知端口号或系统端口号、登记端口号
-
熟知端口号0~1023
应用程序 FTP TELNET SMTP DNS TFTP HTTP SNMP SNMP(trap) HTTPS 熟知端口号 21 23 25 53 69 80 161 162 443 -
登记端口号1024~49151
为没有熟知端口号的应用程序使用的
-
-
客户端使用的端口号或短暂端口号49152~65535
留给客户进程选择暂时使用
-
6.2 用户数据报协议UDP
UDP在IP的数据报服之上增加了端口的功能和差错检测的功能。
UDP的优点
- 发送数据之前不需要建立连接
- UDP的主机不需要维持复杂的连接状态表
- UDP用户数据报只有8个字节的首部开销
- 网络出现的拥塞不会使源主机的发送速率降低
应用 | 应用层协议 | 运输层协议 |
---|---|---|
名字转换 | DNS | UDP |
文件传送 | TFTP | UDP |
路由选择协议 | RIP | UDP |
IP地址配置 | DHCP | UDP |
网络管理 | SNMP | UDP |
远程文件服务器 | NFS | UDP |
IP电话 | 专用协议 | UDP |
流式多媒体通信 | 专用协议 | UDP |
多播 | IGMP | UDP |
电子邮件 | SMTP | TCP |
远程终端接入 | TELNET | TCP |
万维网 | HTTP | TCP |
文件传送 | FTP | TCP |
面向报文的的UDP
- 发送方UDP对应用程序交下来的报文,在添加首部后就向下交付IP层。UDP对应用层交下来的报文,既不合并也不拆分,而是保留这些报文的边界。
- 应用层交给UDP多长的报文,UDP就照样发送,即一次发送一个报文。
- 接收方UDP对IP层交上来的UDP用户数据报,在去除首部后就原封不动地交付上层的应用进程,一次交付一个完整的报文
- 应用程序必须选择合适大小的报文
UDP队列工作原理
- TFTP服务器端
- 启动
- 服务进程一直运行,等待客户端的服务请求
- 服务端使用周知端口69
- 服务器收、发报文
- 接收:服务器UDP先判断目的端口是否为69,若是则将报文放到入队列末尾;否则丢弃该报文,发送ICMP不可达给客户端
- 发送:将报文放到出队列的末尾,加上UDP的首部,然后传送给IP层
- 启动
- TFTP客户端
- 客户端启动
- 客户端进程启动的时候,操作系统临时分配一般端口、出队列和入队列。进程终止时分配的资源被撤销。
- 客户端发报文
- 客户进程将报文发送到出队列中。
- 客户端接收IP层报文
- UDP先检查报文中的端口号是否正确,不正确则UDP丢弃该报文,并发送ICMP端口不可达。若端口正确,UDP将该报文放到入队列的末尾,客户进程按照报文的FIFO的顺序取走报文
- 客户端启动
UDP首部格式
用户数据报UDP有两个字段:数据字段和首部字段。
首部字段由8个字节,由4个字段组成,每个字段都是两个字节。在计算校验和时,临时把“伪首部”和UDP用户数据报连接在一起。伪首部仅仅是为了计算检验和(二进制反码运算求和)
6.3 传输控制协议TCP
TCP的主要特点
- TCP是面向连接的运输层协议
- 每一条TCP连接只能有两个端点,每一条TCP连接只能是点对点的(一对一)
- TCP提供可靠交付的服务
- TCP提供全双工通信
- 面向字节流
TCP报文的发送
- TCP连接是一条虚连接而不是一条真正的物理连接
- TCP对应用进程一次把多长的报文发送到TCP的缓存中是不关心的
- TCP根据对方给出的窗口值和当前网络拥塞程度来决定一个报文段应包含多少个字节
- TCP可把太长的数据块划分短一些再传送。
TCP报文段首部
TCP报文段包括:
- 首部
- TCP的全部功能体现在各个首部字段中
- 首部的前20个字节是固定的,后4N(N为整数)字节是根据需要而增加的选项
- TCP首部最小长度为20字节
- 数据部分
-
源端口和目的端口字段
各占2字节。端口是运输层与应用层的服务接口。运输层的复用和分用功能都要通过端口才能实现。
-
序号字段
占4字节。TCP连接中传送的数据流的每一个字节都编上一个序号。序号字段的值则指的是本报文段所发送的数据的第一个字节的序号。
-
确认号字段
占4字节,是期望收到对方的下一个报文段的数据的第一个字节序号。
-
数据偏移(即首部长度)
占4位,指出TCP报文段的数据起始处距离TCP报文段的起始处有多远。“数据偏移”的单位是32位字
-
保留
占6位,保留为今后使用,但目前应置为0.
-
紧急URG
URG=1,表明紧急指针字段有效。告诉系统此报文有紧急数据,应尽快传送。
-
确认ACK
只有当ACK=1时确认号字段才有效。
-
推送PSH
接收TCP收到PSH=1的报文段,就尽快交付接收应用进程,而不再等到整个缓存都填满了后再向上交付。
-
复位RST
RST=1时,表明TCP连接中出现严重差错,必须释放连接,然后再重新建立运输连接。
-
同步SYN
SYN=1表示这是一个连接请求或连接接受报文
-
终止FIN
用来释放一个连接。FIN=1表明此报文段的发送端的数据已发送完毕,并要求释放运输连接。
-
窗口字段
占2字节。用来控制对方发送的数据量,单位为字节。TCP连接的一端根据设置的缓存空间大小确定字节的接收窗口大小,然后通知对方以确认对方的发送窗口的上限。
-
检验和
占2字节。检验和字段检验的范围包括首部和数据两部分。在TCP报文段签名加上12字节的伪首部。
-
紧急指针字段
占16 bit。指本报文中紧急数据的字节数,紧急指针指出在本报文段中的紧急数据的最后一个字节的序号。
-
选项
长度可变,最长40字节。最大报文段长度MSS是TCP报文段中的数据字段的最大长度,数据字段加上TCP首部才等于整个的TCP报文段。
-
窗口扩大选项
占3字节,其中有一个字节表示移位值S。新的窗口值等于TCP首部中的窗口位数增大到(16+S),相当于把窗口值向左移动S位后获得实际的窗口大小。
-
时间戳选项
占10字节,其中最主要的字段时间戳值字段(4字节)和时间戳回送回答字段(4字节)
-
选择确认选项
针对TCP可靠传输的实现。
-
填充字段
使整个首部长度是4字节的整数倍。
TCP的连接
- TCP把连接作为最基本的抽象
- 每一条TCP连接有两个端点
- TCP连接的端点不是主机,不是主机的IP地址,不是应用进程,也不是运输层的协议端口。TCP连接的端点叫做套接字或插口
- 端口号拼接到IP地址即构成了套接字
套接字(socket) \(套接字socket=(IP地址:端口号)\) 每一条TCP连接唯一地被通信两端的两个端点(即两个套接字)所确定。即:
TCP连接::={socket1,socket2}={(IP1:port1),(IP2:port2)}
TCP连接的建立和释放
运输连接就有三个阶段,即连接建立、数据传送和连接释放。运输连接的管理就是使运输连接的建立和释放都能正常地进行。
连接建立过程中要解决以下三个问题:
- 要使每一方能够确知对方的存在
- 要允许双方协商一些参数(如最大报文段长度,最大窗口大小,服务质量等)
- 能够对运输实体资源(如缓存大小,连接表中的项目等)进行分配。
客户服务器方式
- TCP连接的建立都是采用客户服务器方式
- 主动发起连接建立的应用进程叫做客户
- 被动等待连接建立的应用进程叫做服务器
TCP的连接建立(书P238)
TCP连接的释放过程(书P240)
- TCP采用对称释放法来释放连接
- 通信的双方必须都向对方发送FIN置“1”的TCP报文段并得到对方的应答,连接才能被释放
- 因此,释放连接包含四个阶段:
- (A->B) FIN
- (B->A) Ack of FIN
- (B->A) FIN
- (A->B) Ack of FIN
- A必须等待2MSL的时间
- 为了保证A发送的最后一个ACK报文能够到达B
- 防止“已失效的连接请求报文段”出现在本连接中。A在发送完最后一个ACK报文段,再经过时间2MSL,就可以使本连接持续的时间内所产生的的所有报文段,都从网络中消失。这样就可以使下一个新的连接中不会出现这种旧的连接请求报文段。
6.4 TCP可靠传输的实现
停止等待协议
主机A向主机B传输数据的信道仍然是无差错的理想信道。然而现在不能保证接收端向主机交付数据的速率永远不低于发送端发送数据的速率。
停止等待协议:每发送完一个分组就停止发送,等待对方的确认,收到确认后再发送下一个分组。
- 当发送方发完一帧后,停止发送,等待对方的应答
- 如果收到对方肯定应答,接着发送下一帧
- 如果超过规定时间没有收到应答,则重发该帧
优点:简单;缺点:信道利用率低
超时重传
设置超时计时器
- 给计时器设定初始值,发送完一个分组后,启动计时器
- 如果在超时计时器到期之前收到了对方的曲儿,则表明发送正常,撤销该计时器
- 如果在计时时间内没有收到应答,则认为数据丢失,重新发送该分组
- 在发送完一股分组后,必须暂时保留已发送的分组的副本(发生超时重传时使用)
- 若数据帧被正确接收,而应答帧丢失或延迟到达,这样发送方在定时时间内仍收不到应答帧,重发该帧导致帧重复
- 分组和确认分组都必须进行编号(明确哪个分组收到了确认,哪个没收到)
- 超时计时器的重传时间应当比数据在分组传输的平均往返时间更长一些
可靠通信的实现
- 使用上述的确认和重传机制,我们就可以在不可靠的传输网络上实现可靠的通信
- 这种可靠传输协议常称为自动重传请求ARQ(Automatic Repeat reQuest)
- ARQ表明重传的请求是自动进行的。接收方不需要请求发送方重传某个出错的分组。
信道利用率U
$T_D$:A发送分组需要的时间
$T_A$:B发送确认分组需要的时间
$RTT$:往返时延 \(U=\frac{T_D}{T_D+RTT+T_A}\) 流水线传输
发送方可连续发送多个分组,由于信道上一直有数据不间断地传送,这种传输方式可获得很高的信道利用率。
连续ARQ协议
-
发送端
- 在发送完一个分组后,不是停下来等待确认分组,而是可以连续再发送若干个分组
- 如果这时收到了接收端发来的确认,那么还可以接着发送分组
- 如果在超时时间到时,仍然没有收到相应分组的确认,则重新从这个分组开始传起
-
接收端:只按序接收分组
-
当接收到一个有差错的分组时,丢弃该分组和它以后的所有分组,让它们在发送端超时
-
重复发送已发送过的最后一个确认分组
-
接收方一般采用累积确认的方式。即不必对收到的分组逐个发送确认,而是对按序到达的最后一个分组发送确认,这样就表示:到这个分组位置的所有分组都已正确收到了。
累积确认有的优点是:容易实现,即使确认丢失也不必重传
累积确认的缺点是:不能向发送方反映出接收方已经正确收到的所有分组信息
-
Go-back-N(回退N):表示需要再退回来重传已发送过的N个分组
-
发送窗口的最大值
当用n个比特进分组进行编号时,若接收窗口的大小为1,则只有在发送窗口的大小$W_T≤2^n-1$时,连续ARQ协议才能正确运行。
选择重传ARQ协议
加大接收窗口,使得$W_R>1$。先收下发送序号不连续但仍处在接收窗口中的那些数据帧。等到所缺序号的数据帧收到后再一并送交主机。这就是选择重传ARQ协议。
接收窗口的尺寸不能超过2^n-1^,否则可能会造成帧重叠。发送窗口尺寸一般和接收窗口的尺寸相同。
优点:避免重复传送那些本来已经正确到达接收端的数据帧。 \(信道利用率=\frac{发送n帧的时间}{成功传送n帧所需的总时间}\) 小窗口ARQ
小窗口:即$nT_D<(T_D+RTT+T_A)$
此时,发送方在发送完n帧后需等待对第1帧的确认后才能再发送新的帧。
发送n帧的时间为$nT_D$,数据帧从$A$站到$B$站所用时间,加上应答帧从$B$站到$A$站所用时间为$T_D+RTT+T_A$,因此信道利用率$U=\frac{nT_D}{T_D+RTT+T_A}$
大窗口ARQ
大窗口:即$nT_D≥(T_D+RTT+T_A)$
此时信道没有任何空闲时间,因此信道利用率U=1
TCP可靠通信的具体实现
- TCP连接的每一端都必须设有两个窗口——一个发送窗口和一个接收窗口
- TCP的可靠传输机制用字节的序号进行控制。TCP所有的确认都是基于序号而不是基于报文段
- TCP两端的四个窗口经常处于动态变化之中
- TCP连接的往返时间RTT也不是固定不变的。需要使用特定的算法估算较为合理的重传时间。
滑动窗口协议
- 滑动窗口协议是停等协议和连续ARQ协议的折中。
- 窗口机制
- 允许发送方连续发送多个分组而不需要等待应答(区别于停止等待协议)
- 一次连续发送未经确认的分组的个数是有限的(区别于连续ARQ协议)
- 发送端和接收端分别设定发送窗口和接收窗口
- 发送窗口
- 发送窗口的大小$W_T$表示:在还没有收到接收端确认信息的情况下,发送端最多可以发送多少个分组
- 即只有落在发送窗口的分组才是可以发送的
- 每收到对一个分组的确认,窗口就向前滑动
- 停止等待协议的$W_T=1$,连续ARQ协议的$W_T$非常大
- 接收窗口
- 接收窗口是接收端允许接收的分组的序号表
- 只有落到接收窗口的分组才是可以接收的
- 若接收到的分组落在接收窗口之外,一律将其丢弃
- 在连续ARQ协议中,接收窗口的大小$W_R=1$
- 只有当收到的分组的序号与接收窗口一致时才能接收该分组。否则就丢弃它。
- 每收到一个序号正确的分组,接收窗口就向前(右方)滑动一个分组的位置。同时发送对该分组的确认。
- 滑动窗口特性
- 只有在接收窗口向前滑动时,发送窗口才有可能向前滑动
- 收发两端的窗口按照以上规律不断地向前滑动,因此这种协议又称为滑动窗口协议
- 当发送窗口和接收窗口的大小都等于1时,就是停止等待协议
- 发送缓存与接收缓存的作用
- 发送缓存用来暂时存放:
- 发送应用程序传送给发送方TCP准备发送的数据
- TCP已发送出但尚未收到确认的数据
- 接收缓存用来暂时存放:
- 按序到达的、但尚未被接收应用程序读取的数据
- 不按序到达的数据
- 发送缓存用来暂时存放:
- 强调!
- A的发送窗口并不总是和B的接收窗口一样大
- TCP标准没有规定对不按序到达的数据应如何处理。
- TCP要求接收方必须有累积确认的功能,这样可以减小传输开销。
往返时延的自适应算法
记录每一个报文段发出的时间,以及受到相应的确认报文段的时间。这两个时间之差就是报文段的往返时延。
将各个报文段的往返时延样本加权平均,就得到加权平均往返时间RTT~s~(又称为平滑的往返时间) \(新的RTT_s=(1-\alpha)×(旧的RTT_s)+\alpha×(新的RTT样本)\) 超时重传时间RTO(Retransmission Time-Out)
Karn算法
- 在计算平均往返时间RTT时,只要报文段重传了,就不采用其往返时间样本
- 这样得出的加权平均往返时间RTT~s~和超时重传时间RTO就较准确
修正的Karn算法
-
报文段每重传一次,就把RTO增大一些: \(新的RTO=γ×(旧的RTO)\)
-
系数γ的典型值是2
-
当不再发送报文段的重传时,才根据报文段的往返时延更新平均往返时延RTT和超时重传时间RTO的数值
6.5 TCP的流量控制与拥塞控制
流量控制(flow control)就是让发送方的发送速率不要太快,既要让接收方来得及接收,也不要使网络发生拥塞
利用滑动窗口实现流量控制(书 P227)
持续计时器
须考虑传输速率
可以用不同的机制来控制TCP报文段的发送时机:
- 第一种机制是TCP维持一个变量,它等于最大报文段长度MSS。只要缓存中存放的数据达到MSS字节时,就组装成一个TCP报文段发送出去
- 第二种机制是由发送方的应用进程指明要求发送报文段,即TCP支持的推送(push)操作
- 第三种机制是发送方的一个计时器期限到了,这时就把当前已有的缓存数据装入报文段发送出去
拥塞控制
在某段时间,若对网络中某资源的需求超过了该资源所能提供的可用部分,网络的性能就要变坏——产生拥塞
出现资源拥塞的条件:对资源需求的总和>可用资源
若网络中有许多资源同时产生拥塞,网络的性能就要明显变坏,整个网络的吞吐量将随输入负荷的增大而下降。
拥塞控制与流量控制的关系
-
拥塞控制所要做的都有一个前提,就是网络能够承受现有的网络负荷。
拥塞控制是一个全局性的过程,涉及到所有的主机、所有的路由器,以及与降低网络传输性能有关的所有因素。
-
流量控制往往指在给定的发送端和接收端之间的点对点通信量的控制。
流量控制所要做的就是抑制发送端发送数据的速率,以便使接收端来得及接收。
TCP的拥塞控制
TCP实体根据是否超时来判断网络拥塞。
除了接收窗口外,TCP还维护一个拥塞窗口,来避免网络拥塞。
-
接收窗口rwnd
是接收端根据其目前的接收缓存大小所许诺的最新的窗口值,是来自接收端的流量控制。接收端将此窗口值放在TCP报文的首部中的窗口字段,传送给发送端。
-
拥塞窗口cwnd
是发送端根据自己估计的网络拥塞程度而设置的窗口值,并且动态地在变化。
发送窗口
-
发送窗口的上限值:
- 发送端的发送窗口的上限值应当取为接收端窗口rwnd和拥塞窗口cwnd这两个变量中较小的一个,即应按以下公式确定: \(发送窗口的上限值=Min[rwnd,cwnd]\)
-
当rwnd<cwnd时,是接收端的接收能力限制发送窗口的最大值
-
当cwnd<rwnd时,则是网络的拥塞限制发送窗口的最大值
TCP拥塞控制算法
- 发送方控制拥塞窗口的原则是:只要网络没有出现拥塞,拥塞窗口就再增大一些,以便把更多的分组发送出去。但只要网络出现拥塞,拥塞窗口就减小一些, 以减少注入到网络中的分组数
- 慢启动阶段(slow-start)
- 拥塞避免阶段(congestion avoidance)
- 慢启动门限值(ssthresh)
慢开始门限ssthresh
- 当cwnd<ssthresh时,使用慢启动算法
- 当cwnd>ssthresh时,使用拥塞避免算法
- 当cwnd=ssthresh时,既可使用慢开始算法,也可使用拥塞避免算法
慢启动算法的原理
- 在主机刚刚开始发送报文段时可先设置拥塞窗口cwnd=1,即设置为一个最大报文段MSS的数值
- 在每收到一个对新的报文段的确认后,将拥塞窗口加1,即增加一个MSS的数值
- 用这样的方法逐步增大发送端的拥塞窗口cwnd,可以使分组注入到网络的速率更加合理
- cwnd呈指数级增长
传输轮次(transmission round)
- 使用慢启动算法后,每经过一个传输轮次,拥塞窗口cwnd就加倍。
- 一个传输轮次所经历的时间其实就是往返时间RTT
- “传输轮次”更加强调:把拥塞窗口cwnd所允许发送的报文段都连续发送出去,并收到了对已发送的最后一个字节的确认
拥塞避免算法的思路
- 让拥塞窗口cwnd缓慢地增大,即每经过一个往返时间RTT就把发送方的拥塞窗口cwnd加1,而不是加倍
- cwnd按线性规律缓慢增长
当网络出现拥塞时
-
无论在慢启动阶段还是在拥塞避免阶段,只要发送方判断网络出现拥塞(其根据就是没有按时收到确认),就把慢启动门限ssthresh设置为出现拥塞时的发送方窗口值的一半(但不能小于2)
-
把拥塞窗口cwnd重新设置为1,执行慢启动算法。即:
$ssthresh=max(cwnd/2,2),cwnd=1$
-
目的:迅速减少主机发送到网络中的分组数,使得发生拥塞的路由器有足够时间把队列中积压的分组处理完毕。
快速重传和快速恢复
-
快重传算法首先要求接收方每收到一个失序的报文段后就立即发出重复确认。这样做可以让发送方及早知道有报文段没有到达接收端。
发送方只要一连收到三个重复确认就应当立即重传对方尚未收到的报文段
不难看出,快重传并非取消重传计时器,而是在某些情况下可更早地重传丢失的报文段
-
快速恢复算法:当发送端收到连续三个重复的确认时,就执行“乘法减小”算法,把慢开始门限ssthresh减半,cwnd设置为慢开始门限ssthresh减半后的数值,执行拥塞避免算法。
附录
英文缩写和中文解释
英文缩写 | 英文全称 | 中文含义 |
---|---|---|
IMP | Interface Message Processors | 接口信息处理机 |
OSI/RM | Open system Interconnection/Reference Model | 开放系统互连参考模型 |
MODEM | Modulator-Demodulator | 调制解调器 |
LAN | Local Area Network | 局域网 |
FDM | Frequency Division Multiplexing | 频分复用 |
TDM | Time Division Multiplexing | 时分复用 |
STDM | Statistic TDM | 统计时分复用 |
WDM | Wavelength Division Multiplexing | 波分复用 |
DWDM | Dense WDM | 密集波分复用 |
CDMA | Code Division Multiplexing Access | 码分复用 |
PCM | Pulse Code Modulation | 脉冲编码调制 |
SONET | Synchronous Optical NETwork | 同步光纤网 |
SDH | Synchronous Digital Hierarchy | 同步数字系列 |
STM-1 | Synchrounous Transfer Module -1 | 第1级同步传递模块 |
OC-48 | Optical Carrier 48 | 第48级光载波 |
DTE | Data Terminal Equipment | 数据终端设备 |
DCE | Data Communication Equipment | 数据通信设备 |
QAM | Quadrature Amplitude Modulation | 正交幅度调制 |
CRC | Cydic Redundancy Check | 循环冗余检验 |
FEC | Forwarding Equivalence Class | 转发等价类 |
ARQ | Automatic Repeat reQuest | 自动重传请求 |
HDLC | High-level Data Link Control | 高级数据链路控制 |
SLIP | Serial Line Internet Protocol | 串行线路网际协议 |
PPP | Point-to-Point Protocol | 点对点协议 |
LCP | Link Control Protocol | 链路控制协议 |
NCP | Network Control Protocol | 网络控制协议 |
CSMA/CD | Carrier Sense Multiple Access/Collision Detection | 载波监听多点接入/冲突检测 |
MAC | Media Access Control | 媒体接入控制 |
LLC | Logical Link Control | 逻辑链路控制 |
NIC | Network Interface Card | 网络接口卡、网卡 |
VLAN | Virtual LAN | 虚拟局域网 |
10BASE5 | 粗缆以太网 | |
10BASE2 | 细缆以太网 | |
10BASE-T | 双绞线以太网——10Mbps的数据率,BASE表示连接线上的信号是基带信号,T表示双绞线 | |
1BASE5 | 最大网段长度为500m,传输速度为1Mbps的基带以太网 | |
CIDR | Classless InterDomain Routing | 无分类域间路由选择 |
IP | Internet Protocol | 网际协议 |
ICMP | Internet Control Message Protocol | 网际控制报文协议 |
IGMP | Internet Group Management Protocol | 网际组管理协议 |
ARP | Address Resolution Protocol | 地址解析协议 |
RARP | Reverse Address Resolution Protocol | 逆地址解析协议 |
RIP | Routing Information Protocol | 路由信息协议 |
OSPF | Open Shortest Path First | 开放最短通路优先 |
IGP | Interior Gateway Protocol | 内部网关协议 |
BGP | Border Gateway Protocol | 边界网关协议 |
NAT | Network Address Translation | 网络地址转换 |
TTL | Time To Live | 生存时间或寿命 |
TCP | Transmission Control Protocol | 传输控制协议 |
UDP | User Datagram Protocol | 用户数据报协议 |
MSS | Maximum Segment Size | 最长报文段 |
ARQ | Automatic Repeat reQuest | 自动重传请求 |
RTT | Round-Trip Time | 往返时间 |
RTO | Retransmission Time-Out | 超时重传时间 |