第一章 计算机网络体系结构
1.1 计算机网络概述
1.1.1 计算机网络的概念
计算机网络的定义 :计算机网络是将众多分散的、自治的计算机系统,通过通信设备与线路连接起来,由功能完善的软件实现资源共享和信息传递的系统。
计算机网络 :由若干结点和连接这些结点的链路组成,结点可以是计算机、集线器、交换机和路由器
互连网(internet) :多个计算机网络互连 而成的计算机网络,这些网络之间可以使用任意的通信协议作为通信规则
互联网(Internet):是一个专用名词,指当前全球最大的、开放的、由众多网络和路由器互联而成的特定计算机网络
1.1.2 计算机网络的组成
从组成部分来看:
- 硬件
- 软件:实现资源共享,资源共享的场所
- 协议:计算机网络的核心,规定了数据传输的规范。协议由软件和硬件共同实现
从工作方式来看:
- 边缘部分:由直接连接到计算机网络上的用户主机组成,用来进行通信(传输各种数据)
- 核心部分:由大量网络和连接这些网络的路由器组成,为边缘部分提供数据流通和交换
从功能组成来看:
- 通信子网:各种通信介质、通信设备和网络协议
- 资源子网:实现资源共享功能的设备及其软件的集合
1.1.3计算机网络的功能
- 数据通信:计算机网络最基本和最重要的功能
- 资源共享:软件共享、数据共享、硬件共享(云端服务器)
- 分布式处理:将庞大复杂的任务拆分成子任务,分配给网络中的其他计算机系统,减少处理时间
- 提高可靠性:各台计算机护卫替代机
- 负载均衡:工作任务均衡分配给计算机网络中的各台计算机
- 其他:电子化办公与服务、远程教育、娱乐等功能
1.1.4 电路交换、报文交换与分组交换
(一)电路交换
用于电话网络
连接方式:
通过物理线路的连接,动态分配线路传输线路资源
电路交换的步骤:
- 连接建立
- 数据传输
- 连接释放
电路交换的优点
- 通信线路为通信双方专用,数据直达,通信时延小
- 双方通信有序传输
- 不同的双方拥有不同的信道,没有冲突
- 适用范围广,既可以传输数据信号也可以传输模拟信号
- 实时性强
- 电路交换控制简单
电路交换的缺点
- 建立连接时间长
- 线路利用率低,物理通路被双方通信独占,即使资源空闲也不能被其他用户使用
- 灵活性差。物理通路中任何一点出现错误都需要重新建立
- 难以规格化
- 中间结点不具备存储和检验数据的能力,难以实现差错控制
(二)报文交换
连接方式 :
利用存储转发的思想,将报文传送到相邻结点,全部存储后查找转发表,转发到下一个结点
数据交换单位 :
报文
报文交换的优点:
- 无需建立连接
- 动态分配线路,选择合适的、最快的线路
- 若传输路径发生故障,可以选择一条合适的空闲线路,转发报文,线路可靠性高
- 线路利用率高
- 一个报文可以同时发送给多个目的地址,提供多目标服务
报文交换的缺点:
- 转发时延高:交换结点要将报文整体接收完后,才能转发到下一个结点
- 由于交换结点需要对报文进行缓存,所以交换结点需要更大的缓存
- 报文较长时,发生错误概率大,重传整个报文的代价也很大
(三)分组交换
连接方式 :
也利用存储转发技术,但将较长的报文划分成若干小的等长 数据段,每个数据段前添加一些必要的控制信息(如源地址、目的地址和编号信息等)组成首部
分组交换的优点 :
- 无需建立连接
- 动态分配路线,选择合适、较快的路线
- 线路可靠性高,若传输路径发生故障可以选择一条合适的空闲路线
- 线路利用率高
- 提供多目标服务
- 简化存储管理,分组定长使结点缓冲区大小固定
- 流水线式并行,加快传输
- 减少了出错概率和重发数据量
分组交换的缺点 :
- 仍然存在转发时延,但是比报文交换传输时延小
- 需要传输额外的信息量。每个小数据(分组)段都要加上控制信息构成分组
- 可能出现失序、丢失或重分组的情况,且分组到达目的结点时,需要对分组按编号进行排序等工作
1.1.5 计算机网络的分类
(一)按分布范围分 :
- 广域网(wan):提供长距离通信,直径是几十到几千千米,是互联网的核心部分。连接广域网的个链路结点都是高速链路,通信容量大
- 城域网(man)
- 局域网(lan):
- 范围:几十米-几千米
- 具体适用:家庭网络/校园网/企业网
- 通信技术:以太网技术
- 个人区域网(pan)
(二)按分布范围分 :
- 广播
- 点对点
- 点对多
(三)按拓扑结构分 :
星形

总线:广播,存在总线争用,如集线器设备
环形:

网状
(四)按使用者分类 :
- 公用网:如电信移动网络
- 专用网:如铁路、电力、军队等部门的专用网络
(五)按传输介质分类 :
有线网络:如网线,光纤 无线网络:5G,WIFI,卫星
1.1.6计算机网络的性能指标
性能指标从不同的方面度量计算机网络的性能。常用指标如下:
- 速率:数据传输速率 b/s
- 带宽:计算机网络中,表示网络的通信线路传输数据的能力,是数字信道所能传送的最高数据传速率 ,单位是b/s
- 吞吐量:单位时间通过网络信道或接口(网卡)的实际数据量,与带宽成正比
- 时延
- 发送(传输)时延:将所有数据推向链路的时间
- 传播时延:电磁波在信道中传播一定距离所花的时间
- 处理时延:数据在交换结点存储转发而消耗的时间,如分析分组首部、从分组中提取数据、差错控制和查找合适线路
- 排队时延:在路由器中的输入队列和输出队列排队等待处理的时间
- 时延带宽积:发送端的第一个比特到达终点时,发送端已经发送了多少比特 时延带宽积=传播时延✖信道带宽
- 往返时延:不包括发送端的发送时延,发送端收到来自接收端的确认总共个经历的时延
- 信道利用率:有数据通过的时间与总时间之比
1.2 计算机网络的体系结构与参考模型
1.2.1 计算机网络分层结构
网络体系结构 :计算机网络的各层及其协议的集合,就是这个计算机网络各层 及其构件所应完成的功能的精确定义 (不涉及实现),简单来说就是是什么,作用是什么。
实现是用何种硬件和软件实现这些功能。
分层设计的思想 :
- 每层都实现相对对立的功能,降低系统复杂性
- 各层之间接口清晰
- 各层功能的精确定义独立于具体实现,保持开放的实现原则
- 保持上下层的独立性,上层使用下层的服务
- 整个分层结构应能促进标准化工作
计算机网络服务的概念 :
- 本层为紧邻的上层提供服务,还要使用下层的服务
- 当上层使用下层提供的服务时,必须与下层交换一些命令
- 协议是水平的,服务是垂直的
- 只有本层协议实现,才能保证向上一层提供服务
- 只有被上一层看的见的功能才称为服务
服务的分类 :
- 面向连接服务与无连接服务
- 面向连接服务,通信双方必须先建立连接,分配相应的资源,且传输结束后释放连接和占用的资源。
- 无连接服务,数据可以直接发送
- 可靠服务与不可靠服务
- 可靠服务是指网络具有纠错、检错、应答机制,保证数据的正确性和传输的可靠性
- 尽力而为的服务
- 有应答服务和无应答服务
应用层DNS报文逐层封装的关系 :
n+1层的数据部(SDU)分加上n层的协议控制信息(PCI)组成n+1层的协议数据单元(PDU)
数据链路层的首部除增加控制信息外,也增加源和目的物理地址。
1.2.3 OSI参考模型
OSI参考模型有7层,物理层,数据链路层,网络层,传输层,会话层,表示层,应用层,其中低三层统称通信子网,高三层统称资源子网,传输层承上启下。
各层的功能
(1)物理层->数据端与数据链路接口
传输单位:比特
功能:在物理介质上为数据端设备 透明地传输原始比特流
作用:定义数据终端设备和数据传输设备的物理和逻辑连接方法
研究的主要内容:
- 规定通信链路与通信节点接口的参数,如机械形状和尺寸
- 规定了通信链路上所传输的信号的意义和电气特性,如规定信号X代表数字0
- 物理传输介质(如双绞线、光缆、无线信道等)并不在物理层协议之内,而在物理层协议下面,可看作第0层
(2)数据链路层
传输单位:帧
作用:在相邻各个节点(主机,硬件的IP地址)之间传输数据,加强物理层传输原始比特流的功能
功能:
- 差错控制:检测出数据比特流在传输中受外界干扰发生的错误
- 流量控制:协调发送端和接收端速率
- 信道访问控制:处理广播式网络的数据传输
(3)网络层
传输单位:数据报
作用:将数据单元从源结点传输到目的结点
功能:
- 路由选择:利用算法,从多条路径中选择合适的路径作为传输路径
- 流量控制
- 差错控制
- 拥塞控制:流量控制是尽量避免拥塞的出现,拥塞控制是当拥塞出现了,怎么解决这种拥塞
(4)传输层
传输单位:报文段
作用:将数据端到端的传输,即实现主机中两个进程的通信(把数据传给进程),一个进程由一个端口标识
功能:
- 流量控制
- 差错控制
- 数据传输管理
- 服务质量
- 分用和复用:分用是指传输层将收到的信息分别交付给上面应用层中相应的进程。复用是指多个应用层进程可以同时使用一个传输层的服务
(5) 会话层
传输单位:报文段
作用:管理进程间的会话
功能:
- 设置检查点维持可靠会话,通信失效时在检查点恢复通信
(6)表示层
传输单位:报文段
作用:解决不同主机信息不一致问题
功能:
- 统一编码标准
- 数据压缩、加密和解密
(7)应用层
传输单位:报文
作用:实现特定的网络应用,是用户和网络的接口
功能:
- 实现不同应用的不同协议
1.2.4 TCP/IP模型
TCP/IP模型从低到高依次为网络接口层、网际层、传输层和应用层
(1)网际接口层
作用:表示与物理网络的接口,将主机或结点接收IP分组,并将他们发送到指定物理网络上。
功能:只指出使用某种网络协议与网络连接,并未具体指出具体的实现细节
(2) 网际层
作用:实现相邻结点间的数据传输(为网络层传输"分组" ),与OSI网络层类似。但具体怎么传输不作规定
功能:
- 将分组发向网络
- 独立选择合适的路由
- 拥塞控制
- 网际互联
与OSI网络层的不同:尽最大能力交付,数据传输是不可靠的,分组可能有差错
(3) 传输层
作用:实现进程到进程间的通信。
功能:
- 分用和复用
- 差错控制、流量控制
- 连接管理、可靠传输管理
与OSI传输层的不同:减少了网络核心部分路由器的功能,负载低,主要负责路由选择和分组转发
(4) 应用层
作用:实现特定的网络应用。
功能:
与OSI传输层的不同:并不是所有网络应都需要数据格式转换、会话管理功能。如果某些应用需 要数据格式转换、会话管理功能,就交给应用层的特定协议去实现

TCP/IP模型认为,可靠性是端到端才需要处理的问题,网络层不需要考虑这些东西。网络层只尽最大努力进行不可靠传输,只对网络层的首部进行校验,其他的差错控制和流量控制,交给两端传输层进行,所以TCP/IP模型只在传输层供有连接和无连接的通信模式,在网络层只有无连接的通信模式
第二章 物理层
2.1 通信基础
(一)基本概念
- 数据:信息的实体,如图像、声音、文字,计算机内部以二进制数传输
- 信宿:信号的接收方
- 信源:信号的发送方
- 信号:数据的载体,分为模拟信号和数字信号
- 信道:信号的通道,一条物理信道通常包含发送信道和接收信道
- 模拟信号:信号值是连续的
- 数字信号:信号值是离散的
- 码元:具有一定含义的,最基础的不可分割的单位信号
- 速率
- 波特率:每秒传输一个码元,单位:码元/s或波特
- 比特率:每秒传输几个bit

对信号的理解->对同一周期不同种类的信号编码
根据物理设备的电气特性,产生相应的信号。
如物理设备可以释放 -1v~1v的电压,那么,对于离散信号我们就可以规定
- 1v就对应二进制的信号1
- -1v对应二进制的信号0
对于于连续型信号,我们规定
- sin2πt的一个周期图像为1
- sin2π(t+1/2)的一个周期图像为0
这样我们就可以通过电器设备输出数据比特。

对码元的理解
在上图中,一个周期只能输出0和1两种信号,其实我们可以通过增大电压来使一个周期出现四种 信号,四种信号用二进制表示为00,01,10,11,当然我们还可以让一个周期可以表示8种 信号,不管一个周期可以表示的信号有多少种,这一个周期内表示出的信号就称为码元。
表示四种信号的码元叫四进制码元
表示八种信号的码元叫八进制码元
注:码元越大,不是表示的图形越长,而是同一形状的图形表示的比特数越多
假设物理设备可以释放 -2v~2v的电压,那么对于离散信号,我们就可以规定
- -2v对应二进制的信号00
- -1v对应二进制的信号01
- 1v对应二进制的信号10
- 2v对应二进制的信号11
对于连续信号,我们就可以规定
- sin2πt的一个周期图像为11
- sin2π(t+1/2)的一个周期图像为00
- sin4πt的一个周期图像为01
- sin4π(t+1/2)的一个周期图像为10


(二)信道的极限容量
回顾:带宽的概念
- 在计算机网络中,带宽表示信道所能通过的最高数据传输速率,单位为bps
- 在通信基础中,带宽表示信道允许通过的信道频带范围,单位为HZ
但它们的本质相同,带宽越大,传输数据的能力越强

失真
码元的传输速率越高,信号的传输距离越远,噪声干扰越大,传输介质质量越差,接收端波形的失真就越严重。
码间串扰
接收端收到的信号波形失去码元之间的清晰界限,这种情况称为码间串扰。
奈奎斯特定理
理论上讲,一码元携带的比特数不变的情况下,信道的频率带宽越高,传输码元的速度就越高,但是实际情况是,当信道频率带宽高过一个阀值,就会出现严重的码间串扰,影响码元传输,使数据失真。
奈奎斯特定理规定:
对于一个理想低通(没有噪声、带宽有限)信道,极限码元传输速率是2W波特(码元/s),其中w是信道的频率带宽(hz),若超过这个极限,就会出现码间串扰。
理想低通信道下的极限数据传输速率:

码元的传输速率受奈氏准则制约,所以要提高数据传输速率,可在保证码元不变的情况下,设法使每个码元携带更多比特的信息。但是其实,一个码元携带的比特数也是不能无限增大的。
香农定理
香浓定理规定,对于一个有噪声、带宽有限的信道:

- S:该信道内传输信号的功率
- N:该信道内噪声的功率
- S/N:信噪比,此外由于信噪比可能很大,不好书写和记忆,于是信噪比有时采用分贝(db)记法,即

香农定理的结论:
- 信道的带宽或信道中的信噪比越大,信息的极限传输速率越高
- 对于一定带宽和一定信噪比,信息传输速率的上限是确定的
- 只要信息传输速率低于信道的极限传输速率,就能找到某种方法实现无差错的传输
- 香农定理得出的是极限信息传输率,实际信道能达到的传输速率要比它低不少。
- 香农定理与奈奎斯特定理的区别是,香农定理除了考虑带宽,还考虑了信噪比。
(三)编码与调制
信号是数据的载体,要想传输数据,就必须把数据转换为信号,讲数据转化为模拟信号的过程称为调制,将数据转化为数字信号的过程称为编码。
数字数据 通过数字发送器转化为数字信号,通过调制器转换为模拟信号。
模拟数据 通过PCM编码器转换成数字信号,通过放大器调制器转换为模拟信号。
常见的编码方法如下:
不归零编码
编码规则:低电平为0,高电平为1
特点:
- 自同步能力:无
- 是否浪费带宽:不浪费
- 抗干扰能力:弱
归零编码
编码规则:低0,高1,中归0
特点:
- 自同步能力:通过归零来标记电平变化,实现自同步
- 是否浪费带宽:浪费,归零信息是冗余信息
- 抗干扰能力:弱
反向归零编码
编码规则:跳0不跳1,看起点,中不变
特点:
- 自同步能力:在跳变位置可设置冗余位,实现自同步
- 是否浪费带宽:若实现自同步则浪费,但不多
- 抗干扰能力:弱
曼彻斯特编码
编码规则:上跳0,下跳1,看中间,中必变
特点:
- 自同步能力:通过跳变标记0和1,有自同步能力。
- 是否浪费带宽:跳变的瞬间有实际意义,其他编码位置无意义,浪费。
- 抗干扰能力:跳变标记0和1,抗干扰能力强
差分曼彻斯特编码
编码规则:跳0不跳1,看起点,中必变
特点:
- 自同步能力:通过跳变标记0和1,有自同步能力。
- 是否浪费带宽:跳变的瞬间有实际意义,其他编码位置无意义,浪费。
- 抗干扰能力:跳变标记0和1,抗干扰能力强

来自信源的基带信号(数字信号)需要调制成模拟信号才能在某些信道上传输:
常见的调制方法如下:
调幅 ASK
调整信号的幅度,增加信号的种类来表示数据比特。
例如,我们规定:
- y=0×sinx表示00
- y=sinx表示01
- y=2sinx表示10
- y=3sinx表示11
调幅 FSK
调整信号的频率,增加信号的种类来表示数据比特
例如,我们规定:
- y=sinx表示00
- y=sin2x表示01
- y=sin3x表示10
- y=sin4x表示11
调相 FSK
调整信号的相位,增加信号的种类来表示数据比特
例如,我们规定:
- y=sin(x+π/2)表示00
- y=sin(x+π)表示01
- y=sin(x+3π/2)表示10
- y=sin(x+2π)表示11

正交幅调制 QAM
若设计m种幅值、n种相位,则将AM、PM信号两两"复合",可调制出 mn 种信号,则QAM
1码元 = log! 𝑚𝑛 bit
2.2 传输介质
数据的传输过程

传输介质的分类
常用的传输介质分为:
- 导向型:双绞线、同轴电缆和光纤
- 非导向型:无线传输介质
双绞线
- 应用:双绞线是最常用的传输介质,在近期局域网和早期电话网中普遍使用。
- 构成:由两根采用一定规则并排绞合、相互绝缘的铜导线组成
- 减少电磁干扰的方式:绞合,加金属丝编织的屏蔽层
- 优点:价格便宜,模拟传输和数字传输都可以使用双绞线
- 通信距离:几千米-数十千米
- 带宽:取决于铜线的粗细和传输距离
- 解决信号衰减的办法:模拟传输用放大器;数字传输用中继器

同轴电缆
同轴电缆一般分为两类:50欧同轴电缆,主要用于传输基带数字信号;75欧同轴电缆,主要用于传输宽带信号(较高频率范围的模拟信号)。
- 应用:有线电视->75欧
- 构成:内导体、绝缘层、网状编织屏蔽层和塑料外层构成
- 降低电磁干扰的方式:外导体屏蔽层
- 优点:良好的抗干扰性,被广泛应用于传输较高速率的数据
随着技术的发展和集线器的出现,在局域网领域基本上都采用双绞线作为传输介质
光纤
- 传输信号:利用光导纤维传递的光脉冲(光信号)来通信,有脉冲表示1,无脉冲表示2
- 应用:全球通信网
- 构成:纤芯(8-100微米)和包层
- 通信原理:光由低折射率的纤芯射向高折射率的包层时,当入射角大于临界角,就会出现全反射折回纤芯,这个过程不断重复,光也就沿着光纤传输下去
- 优点:
- 由于可见光的频率范围较大,因此光纤系统的带宽极大
- 抗雷电和电磁干扰性能好
- 无串音干扰,保密性好,不易被窃听或窃取数据
- 体积小,质量轻
光纤分为多模光纤和单模光纤:
多模光纤:
- 实现方式:当纤芯的直径较大时,从不同角度入射多条光线,让多条光线在光纤中传输,根据入射角度的不同区分不同的光信号。
- 光源:发光二极管
- 优点:成本低,兼容性强,可以同时传输多个不同的信号
- 缺点:带宽低于单模光纤,光信号衰减快,只适合近距离传输
单模光纤:
- 实现方式:当光纤的直径小于一个波长时,可以使光线沿直线传播,不产生多次反射
- 光源:定向性很好的半导体激光器,光信号衰减小
- 优点:衰减慢,传输距离长,带宽高
- 缺点:成本高,兼容性差,对环境变化敏感等


无线传输介质
无线通信广泛应用于蜂窝移动电话领域
无线电波
- 特点:具有较强的穿透能力,可以传输很长的距离;电波信号向所有方向散播
- 应用:手机信号、WIFI
- 是一种长波通信
微波、红外线和激光
- 特点:频率带宽高、信号指向性强,沿直线通信,信号接收器需要对准信号源、保密性差,易受气候影响
- 应用:卫星通信(卫星作为中继器,传播时延较大)、红外线通信、激光通信
- 短波通信
2.3 物理层的接口特性
物理层主要考虑的就是接口特性,即各种连接计算机的介质如何传输比特流
- 机械特性:指明接口所用接线器的形状和尺寸、引脚数目和排列、固定和锁定装置
- 电气特性:指明接口电缆发出的电压范围、传输速率和距离限制
- 功能特性:指明线路上电平电压的意义,如-1v代表比特0,1v代表比特1
- 过程特性:又称规程特性,指明不同功能的各种可能事件的出现顺序
2.4 物理层设备
中继器
信号经过长距离传输会产生衰减并失真,中继器可以消除或减少这种衰减
功能:
整形、放大并转发信号,以消除信号经过长距离传输后产生的失真和衰减,使信号的波形和强度达到协议规定的要求,进而扩大网络传输的距离
原理:
信号再生,不是简单的放大
端口:
中继器有两个端口,一个端口输入,一个端口输出,端口仅作用于信号的电气部分,而不管是否有错误数据或不适于网段的数据
作用:
扩大网络规模的最简单的廉价互联设备
但是中继器连接的两端只能是同一个局域网的不同网段,不是独立的子网,若中继器出现故障,相邻两个网段都受到影响
中继器没有存储转发功能,所以不能连接两个具有不同速率的局域网
注意: 网络不能无限延长,例如在10BASE5以太网规范中,五个网段用四个中继器进行连接,只有三个网段可以挂起计算机。
第三章 数据链路层
3.1 数据链路层的功能
(1)主要任务:
将数据封装成帧,在网络中传输
(2)主要信道:
- 点对点信道,ppp协议
- 广播信道,有线局域网使用CSMA/CD协议,无线局域网使用CSMA/CA协议
(3)数据链路层所处的地位

- 数据链路层使用物理层的比特服务,将帧转换成比特传输。
- 为网络层提供服务,将IP数据包封装成帧进行传输。
链路:
- 物理链路:指从一个结点到相邻结点的一段物理线路。
- 数据链路:加上使用通信协议的软件和硬件的物理链路,也叫逻辑链路
(4)功能
- 组帧:对从网络层获得的数据,按一定长度分组添加首部和尾部,帧长等于数据部分长度+首部尾部长度。为了提高传输效率应使数据长度尽量大于首部和尾部长度,但传输差错概率也会变高,传输成本也会变高
- 帧定界:让接收方指导帧的界限,即多少字节为一帧。
- 帧的首部和尾部信息包括帧的定界信息,校验码,帧类型,帧序号
- 透明传输:收方链路层要能从帧内接收到原始的SDU,让网络层感受不到组帧的过程
- 差错控制:
- 检错编码:发现错误丢弃帧
- 纠错编码:发现错误纠正错误比特
- 流量控制:限制发送方发送速率,让接收方来得及接收
- 可靠传输:帧丢失,帧失序,帧重复
- 介质访问
3.2 组帧
什么是组帧?
发送方依据一定的规则将网络层递交的分组封装成帧,使数据以帧为单位传输。
为什么要组帧?
为了出错时只重发出错的帧,而不必重发全部数据,从而提高传输效率
组帧主要解决的问题
- 帧定界
- 帧同步
- 透明传输
注意:
组帧时既要加首部,又要加尾部,因为在网络中信息是以帧为最小单位进行传输的,接收方的数据链路层要清楚一串比特流中从哪里开始到哪里结束
3.2.1 字符计数法
原理
在每个帧的开头,用一个定长特殊字段表示帧长,帧长等于数据字段长度+计数字段长度
缺点
任何一个计数字段出错,都会导致后续帧无法定界

3.2.2 字节填充法
原理
使用特定字节来定界一帧的开始与结束。如控制字符SOH放在帧的最前面,表示帧的开始,控制字符EOT表示帧的结束。
缺点
在帧的数据字段中,出现和特定字节一样的信息,接收方数据链路层误以为是帧的界限。
解决方案
在数据字段中出现的EOT字符和SOH字符前插入转义字符ESC,通知接收方后面的字符是数据字段而不是控制字段,接收方得到消息后自动删除转义字符ESC。不过若数据字段中还包含转义字符ESC,则ESC前还要加一个ESC。

3.2.3 零比特填充法(常用)
原理
使用固定比特串01111110来标志一帧的开始和结束,发送方在数据字段中每出现5个连续的1就在后面+一个0,防止数据字段中的01111110被误认为是控制信息。接收方每出现5个连续的1就删除后面的一个0还原数据。
优点
零比特填充法很容易由硬件来实现,性能优于字节填充法。
3.2.4 违规编码(常用)
原理
借助物理层的信号传输,将违反信号协议的信号添加至帧的开头和结尾。
缺点
只适用于采用冗余编码的特殊编码环境。
3.3 差错控制
处理差错类型:比特差错
差错控制技术:编码技术
两种类型:
- 自动请求重传(ARQ):当接收方检测到差错时,设法通知发送方重发,直到收到正确的数据为止。
- 向前纠错(FEC):接收方发现差错,而且能确定错误的位置并加以纠正。
3.3.1检错编码->数据位和检错位都可能出错
处理技术:冗余编码技术
核心思想:
- 在有效数据被发送前,按照合适的规则添加一定的冗余位,构成一个符合某一规则的码字后发送。
- 当发送的有效数据变化时,冗余位也随之变化
- 根据冗余位的变化判断是否出现错误
常见的检错编码有奇偶校验码和循环冗余校验码
1.奇偶校验码
原理:
整个码字(数据段+校验段)中需要有奇数个1,若数据段中有奇数个1则校验位为0,若有偶数个1则校验位为1;偶校验规定有偶数个1。
偶校验的优势
偶校验与奇校验相比,应用较多,因为偶校验可以借助硬件计算很快实现。
- 发送方将比特串的数据段进行异或运算,得到的结果就是校验位的值
- 接收方对比特串进行异或运算,若为0则数据未出错,1则说明数据出错(同为0,异为1)
缺点
奇偶校验无法检测出偶数个位数出错的情况,且只能检错,无法纠错
2. 循环冗余校验码
原理:
- 数据接收方和发送方约定一个二进制除数,除数根据收发双方约定的生成多项式G(x)(最高位和最低位必须为1)确定,例如多项式G(x)=X^3+X^2+1表示1101
- K个信息位和R个校验位作为被除数,R的个数-1与除数的个数相同,初始时R全部为0
- 用被除数除以除数,得到校验码,与信息位进行拼接
- 拼接后发送方将数据发送至接收方
- 接收方将接收到的数据除以双方约定的除数,若结果非0则说明错误,为0则说明正确
缺点
CRC其实具有纠错功能,但若信息位太长,校验码太短,则这种方法不具备完整的校验能力,因为信息位能标识的错误状态少于总错误状态,若信息位较少,信息位和校验位的总位数小于校验位能表示种类数,则一个种类能对应一个错误状态,就能完全纠正。
即当2^r-1>=K+R时,循环冗余码可以完全纠错,但只能纠错一个位置错误的状态
如下图,校验码的位数只有3,能标识的错误状态为2^3-1=7,小于错误的总种类数,所以不能完全标识

但是,当信息码为4位,校验码为3位,则校验码正好可以一一标识每一种错误状态

3.3.2 纠错编码-海明码
原理:
在有效信息位中加入几个检验码,对信息位进行分组检验,插入的位置为2^i-1位
实现过程
- 确定海明码的位数:位数=n个信息位+k个校验位,信息位的个数已知,根据信息位的个数通过2^k-1>=n+k校验位的个数
- 确定校验位的分布:2^i-1


- 确定校验位的值:
4. 纠错

3.4 流量控制与可靠传输机制
3.4.1 流量控制与滑动窗口机制
基本概念
- 流量控制是指由接收方控制发送方的发送给速率,使接收方有足够的缓冲时间来接收每个帧
- 流量控制通过滑动窗口机制实现
- 数据链路层和传输层的流量控制功能都采用了滑动窗口机制,但数据链路层传输相邻结点的流量,控制手段是接收方收不下就不确认返回,等待超时重传;传输层传输端到端的流量,控制手段是接收方通过确认报文段中的窗口值来调整发送窗口
滑动窗口相关机制
- 只能发送发送窗口内的信息,接收窗口只能接收与发送窗口帧号对应的信息,比如发送窗口发送的信息帧号为0,此时没有帧号为0的窗口则拒绝接收。
- 接收窗口成功接收数据帧,接收窗口移动
- 发送窗口成功收到确认帧,发送窗口移动
- 窗口接收几个帧,依次移动几下
- 收到的帧落在接收窗口之外一律丢弃
- 收到重复帧,返回相应的确认帧
- wt+wr <= 2^n,保证接收窗口可以识别重复帧,并返回确认帧
3.4.2 可靠传输机制

1.停止等待协议
停止等待协议有四种机制:
- 滑动窗口机制:发送窗口Wt=1,接收窗口Wr=1
- 确认机制:确认帧ACK_i,若接收方收到i号帧且没有检测出"差错",需要给发送方返回确认帧ACK_i。
- 重传机制:超时重传,若发送方未收到确认帧ACK_i,则重传i号帧。
- 帧编号:Wt+Wr <= 2^n。区分相邻两组传输数据,保证了上面三个机制的正常运行,n为表示帧号的比特位数
异常情况:
- 数据帧丢失,无法返回确认帧,接收方窗口无法滑动->发送方超时重传

- 确认帧丢失,接收方滑动窗口移动,一直接收发送方发送的重复数据帧->利用帧编号判定是否是重复帧,丢弃重复帧,并发送重复帧的确认帧
- 数据帧有差错->检错控制,不发送ACK_i,超时重传

2.后退N帧协议(GBN)
后退N帧协议是停止等待协议的PRO版,原理基本相同,区别如下:
- 连续发送:允许发送窗口内的数据一次性连续发送。
- 累计确认:发送窗口Wt>=1,当发送窗口内的一组连续数据被接收窗口接收后,再返回一个ACK_i,表示发送窗口内第i号数据帧及之前的数据帧被正确接收。
如下图,只有3号帧被接收,返回ACK_3,接收窗口移动

- 异常处理:
- 数据帧丢失:丢失数据及后面已发送的数据都需要退回重传
- 确认帧丢失:返回最后一个正确数据帧的ACK_i,i之后的全部重传
- 数据出错

缺点: 由于后退N帧协议一次性的把发送窗口内的数据发完再移动窗口,而当数据被发送时数据对应的计时器立刻开始计时,如果接收方接收帧的速度很慢或者误码率极高,则发送方进度可能需要经常后退,传输效率低下。
导致缺点的原因:累计重传机制
3.选择重传协议
核心思想:
当误码率较高时,后退N帧协议信道利用率不高,原因是因为累计确认会重传正确的数据帧,所以选择重传协议去掉累计重传机制,设法只传出现差错和计时器超时的数据帧来提高信道利用率,等到所缺帧的序号收齐后,一并上交。
原理:
- 设置更多的接收窗口,但仍需满足Wt+Wr<=2^n
- Wt=Wr,Wt < Wr导致接收窗口的浪费,Wt > Wr导致发送窗口的浪费
新的机制:主动重传,接收方检测到数据帧出错,向发送方发送一个NAK否定帧,主动要求其重发。
异常情况



4. 信道利用率的分析
信道利用率是在发送方的一个发送周期内,即发送方发送第一个分组到第一个分组确认收到的时间内,发送数据的时间的所占的比例即:
信道利用率 = 数据传输时延/(数据传输时延+2*单向传播时延+确认帧传输时延)
想要提高信道利用率,要么提高数据的传输时延,要么降低整个发送周期,或者让数据在信道传播的同时,保证更多的数据进入信道,让信道忙起来,减少信道的空闲时间。
信道传输的理想理想状态:没有帧错误,没有帧丢失,对三种信道利用率的分析都是在理想状态下进行的
停止等待协议
优点:机制比较简单
缺点:信道利用率太低,当RTT>RD时,信道利用率就低于50

后退N帧协议与选择重传协议
这两种协议又叫做连续ARQ协议,连续ARQ协议采用流水线传输,即发送方可以连续发送多个分组,只要发送窗口足够大,就可以使信道上有数据持续流动从而提高信道利用率。
连续ARQ协议窗口有n个,所以传输时间为nTD 当nTD>=TD+RTT+TA时,表明在一个发送周期内发不完一个发送窗口内的n个分组。对于这种情况,只要不发生差错,发送方就可以不间断的发送分组,信道利用率为1。

拓展:
信道实际数据传输速率 = 信道利用率 * 信道带宽(信道最大数据传输速率)
信道实际数据传输速率 = 发送周期内发送的数据量 / 发送周期
练习:
3.5介质访问控制
多个节点共享一个"总线型"的广播信道时可能会发送冲突,介质访问控制的主要任务就是控制各节点对介质的访问,从而减少冲突甚至避免冲突。
决定介质中信道分配的协议由数据链路层的子层介质访问控制层决定
3.5.1 信道划分介质访问控制 -> 静态划分
思想:将使用同一传输介质的多个节点,通过时域和频域划分的方式隔离
原理:复用技术,即在发送端把多个信号组合在一起,在接收端把信号分离
优点:通过在一条介质上传输多个信号,提高传输系统的利用率
实质:通过分时、分频、分码将广播信道转变为多个点对点信号
1.频分复用FDM
- 原理:将总频带划分为几个子频带,每个子频带作为一个子信道,每对用户使用一个子频带进行通信
- 优点:充分利用传输介质带宽,系统效率高
- 注意:子频带的总和不能超过总频带,且不同频带之间需加入隔离频带,防止子信道之间互相干扰
- 局限:只能发送模拟信号

2.时分复用TDM

3.统计时分复用STDM

4.波分复用WDM

5.码分复用CDM
思想 :允许多个信号相互叠加,接收方将各个信号分离
原理 :
- 将发送方的比特用m个信号值表示,如比特1用 11101011表示,比特0用其反码 00010100表示
- 这m个信号值称为码片,每一个站点都有唯一一个m位的码片,若A站点要给B站点发送比特1,其实就是发送码片序列
- 码片的分配不是随意的,为了保证能从信道中分离各个信号,各个站点的码片需要相互正交,且所有通信站点知道双方的码片 序列
- 为了方便计算比特0在码片序列中记为1,在接收方通过规格化内积(码片×比特向量/维数)将信号分离结果为1就是比特1,0就是比特0
优点:频谱利用率高,抗干扰能力强,保密性强,语音质量好,减少投资以及运行成本,主要有用于无线通信特别是移动通信系统。
3.5.2 随机访问介质访问控制
- 思想:不划分发送信息的时间和空间,所有用户都能随机地发送信息,占用信道地全部速率
- 缺点:当信息在总线型网络中传输时,用户同时发送信息会产生帧冲突,导致所有冲突用户发送的信息都以失败告终。所以解决和冲突是随机介质访问控制的核心问题。
- 解决方案:按一定规则重复发送帧,直到帧顺利传输
- 实质:将广播信道转换为点到点信道的机制
- 信道争用:总线型网络上的节点都在争相获得信道的使用权
1.纯ALOHA协议
思想
数据只要准备好了就进行发送,若一段时间未收到确认,随机等待一段时间重发
缺点
吞吐量很低

2.时隙ALOHA协议
改进
将时间划分为一段等长的时隙,站点只能在每个时隙开始发送帧,每一帧的时间必须<=时隙的长度,若一段时间未收到确认,随机等待几个时隙重发
优点
降低发生冲突的可能性,提高了信道利用率

不管是ALOHA协议还是时隙ALOHA协议,网络发生冲突的概率都很大,若每个站点在发送前先监听公共信道是否空闲再发送数据,就会大大降低冲突概率,CSMA协议是ALOHA的改进方案,添加了载波监听功能。
3. 1-坚持CSMA协议
改进
发送数据准备好后,先监听信道是否空闲,若空闲则立刻发送
特点
- 坚持监听
- 推迟重发
- 立即发送

优点
降低了冲突概率,信道一空闲就可以被使用,提高了信道利用率
缺点
在信道空闲时,有多个数据同时准备好向信道发送,仍会产生冲突
4. 非坚持CSMA协议
改进
信道监听为忙时,不坚持监听,随机推迟一段时间再进行监听
特点
- 推迟监听
- 推迟重发
- 立即发送

优点
监听为忙时,随机推迟一段时间再监听,错开了各节点发送数据的时间,降低了冲突的概率
缺点
当信道恢复空闲时,可能不会立即被使用,导致信道利用率降低
5. P-坚持CSMA协议
改进
推迟监听导致信道利用率降低,将推迟监听改为坚持监听,当信号监听为空闲时,p概率发送,1-p概率重新发送
特点
- 坚持监听
- 推迟重发
- 概率发送

优点
- 将推迟监听改为坚持监听,提高了信道利用率
- 将立即发送改为概率发送,降低了冲突概率
缺点
属于1坚持和非坚持的折中方案
6. CSMA/CD协议
改进
CSMA/CD协议中文名为,载波监听多路访问/冲突检测,在CSMA的基础上增加了冲突检测功能
特点
- 坚持监听
- 推迟重发
- 立即发送
- 边听边发,冲突停发
- 不需要返回确认帧,因为在争用期内无冲突则不可能传输再发生冲突

单向传播时延
数据由一个结点到另一个结点的传播时间
最大单向传播时延
距离最远的两个结点的传播时延,也是最长冲突检测时间
注意
- 冲突停发后,已发送的数据不会消失,仍然会在信道内传播,但由于帧的长度不完整,结点不会接收
- 存在最短帧长,小于最短帧长的帧视为无效帧,非法帧长 = 2✖单向传播时延✖带宽
- 原因:小于最短帧长,会让发送给结点误以为没有产生冲突,但实际上已经产生了冲突,比如A向B发送数据,传播时延为60us,B向A传输数据传输时延为50us,在A到达之前,B已经传输完数据,这样A和B就无法察觉信号冲突
- 存在最长帧长,防止节点长时间占用信道
7. CSMA/CA协议
前面的协议都是有线以太网协议,CSMA/CA协议是无线网协议,中文名为,载波监听多路访问/冲突避免
无线网络无法使用CSMA/CD协议
- 由于硬件的限制,接收信号强度远远小于发送信号强度,无法实现边听边发
- 信号强度的动态范围变化很大,很难实现监测
特点
- 推迟发送:数据准备好后,隔一个DIFS帧的时间再发送,且数据一次发送完,不进行冲突检测
- 差错控制:接收方使用一个SIFS帧进行差错控制,若正确返回ACK
- 推迟重发:未收到ACK,利用二进制指数退避算法确定随机退避时间(倒计时),只有当信道空闲时才会扣除倒计时时间
- 忙则退避,坚持监测:当信道忙碌时,利用二进制指数退避算法确定随机退避时间(倒计时),只有当信道空闲时才会扣除倒计时时间
- 信道预约:
- RTS:是预约帧
- CTS:RTS发送方传递预约成功的消息,对于其他站点则是禁言消息
- ACK:对于RTS发送方传递数据帧发送成功消息,对于其他站则是解除禁言消息。

注意:DIFS和SIFS的设置不是随意的,是为了避免与ACK帧起冲突,DIFS必须大于SIFS
8.令牌环网协议->轮询访问
思想
用户不能随机地发送信息,而要通过一个集中控制地监测站,以循环方式轮询访问每个结点,再决定信道分配
令牌
- 令牌沿着环形总线在各站之间依次传递
- 令牌在空闲时是一个特殊的控制帧,本身不包含信息,用于控制信道的使用,只有等待并取得控制帧的站点才能发送数据,站点发送完一帧后立即释放令牌。
令牌的传递过程
1.网络空闲 -> 2.源站点发送数据 -> 3.匹配目的地址 -> 4.回到源站点 -> 5.释放令牌,并产生一个新令牌
- 网络空闲:令牌帧循环传递
- 发送数据:站点修改令牌中的标志位,并添加数据信息,令牌帧变为数据帧,数据帧沿着环路传递
- 匹配目的地址:查看帧的目的地址与各节点是否匹配,若相等则复制数据
- 回到源站点:数据帧回到源点,停止转发,并进行差错控制,若错误则重传。
- 释放令牌,并产生一个新令牌,交出信道控制权
优点
- 适合负载很高的广播信道,即多个节点在同一时间发送数据概率很大的信道,若采用随机访问介质控制,则发送冲突概率很大。
- 既不共享时间,也不共享空间,实际上在随机介质访问控制的基础上,限定了有权发送数据的节点只有一个
3.6 局域网
3.6.1 局域网的基本概念与体系结构
定义:
指在一个较小的地理范围(如一所学校)内,将各种计算机、外部设备和数据库系统等通过双绞线、同轴电缆等连接介质互相连起来 ,组成资源和信息共享的计算机互联网络。
特点
- 为一个单位所有,地理范围和站点数目有限
- 所有站点共享较高的总带宽,数据传输速率较高
- 时延小,误码率低
- 局域网内的各节点以"帧"为单位传输
- 支持单播、多播、广播
- 各站为平等关系而非主从关系
局域网的三大特性
- 拓扑结构
- 星形结构
- 环形结构
- 总线形结构
- 复合型结构:星形和总线形结合
- 传输介质
- 同轴电缆
- 双绞线:主流传输介质
- 光纤
- 介质访问控制方式:最为重要,决定局域网的技术特性
-
频分复用(FDM)
-
时分复用(TDM)
-
统计时分复用(STDM)
-
波分复用(WDM)
-
码分复用(CDM)
-
1-CSMA
-
非-CSMA
-
P-CSMA
-
CSMA/CD 主要技术
-
CSMA/CA
-
令牌环网 主要技术
-

具体局域网的三大特性
以太网:
- 同轴电缆 10BASE5
- 拓扑结构:总线
- 传输介质:同轴电缆
- 介质访问控制:CSMA/DA
- 双绞线-集线器 10BASET
- 拓扑结构:物理上星形,逻辑上总线型
- 传输介质:双绞线
- 介质访问控制:CSMA/CD
- 双绞线-交换机 10BASET
- 拓扑结构:物理上和逻辑上都是星形
- 传输介质双绞线
- CSMA/CD(半双工模式争抢信道)或NULL(全双工模式下不需要争抢信道)
- 光纤以太网(用于扩大以太网的覆盖范围)10BASEF
- 拓扑结构:点对点,通常不连接终端节点,用于中继器/集线器/交换机之间的传输
- 传输介质:光纤
- NULL(全双工通信)
无线网WLAN:
- WIFI/802.11
- 拓扑结构:星(1个AP + N台移动设备)
- 传输介质:无线
- 介质访问控制:CSMA/CA协议
网络适配器的作用
- 负责把帧发送到局域网 主存通知网络适配器发送帧的数量和起始地址
- 从局域网接收帧 检查帧的mac地址跟自己是否一致 若一致且无错,主存告诉帧存放在哪些地址 将帧还原成IP数据报交给网络层
- 根据接入的局域网类型,实现相应的数据链路层和物理层协议
- 完成数据的串并行转换,IO并行,外部串行
- 支持帧缓冲
3.6.2 以太网与IEEE 802.3
1.IEEE802.3的层次划分
IEEE802.3的层次划分有三层,将数据链路层划分为逻辑链路控制层LLC和介质控制访问层MAC。
- MAC层:与传输介质有关,向上层屏蔽物理层的各种差异,主要功能为组帧,拆卸帧,比特传输,差错检测,透明传输
- LLC层:与传输介质无关,向网络层提供无确认无连接、面向连接、带确认、无连接、高速传送四种不同的连接服务类型,但随着局域网技术被以太网垄断,LLC层名存实亡

2.IEEE802.3 推出的以太网标准(物理层)
以太网的演进证明了以太网是可扩展的(10Mb/s到10Gb/s)、灵活的(多种传输介质、全/半双、共享/交换),且易于安装,稳健性好
拓展:以太网扩展的方向
- 硬件进步
- 算法优化
- 冲突解决

3.以太网的MAC地址
什么是以太网的MAC地址?
IEEE802标准为局域网规定了一种48位的全球地址,是指局域网上的每台计算机固化在适配器的ROM中的地址,称为物理地址或MAC地址
MAC地址的作用
每一个设备在适配器的ROM都有全球唯一的MAC地址,用于标识不同的计算机,从而控制主机在网络上的数据通信。一台计算机只要没有更换适配器,不管地理位置如何变化,其MAC地址都不会变化
MAC地址的格式,
MAC地址长6个字节48位,用12个十六进制数表示(一个十六进制数=四个二进制数),高24位为厂商代码,低24位为厂商自行分配的适配器序列号。

如何标识
当路由器通过适配器连接到局域网时,适配器上的MAC地址就用来标志路由器的某个接口,路由器每收到一个MAC帧,都首先用硬件检查MAC帧中的MAC地址,若是本站的帧则收下,否则丢弃。
- 单播帧:帧的目的地址为本站的目的地址
- 广播帧:目的地址全1
- 多播帧:发送给本局域网一部分结点的帧
4. 太网的MAC帧
以太网MAC帧的两种标准
- DIX Ethernet V2标准:无LLC层
- IEEE802.3标准:有LLC层,所以已经名存实亡
V2-MAC格式
6 6 2 N 4 ,收发协数验
- 6:接收地址->6个字节
- 6:发送地址->6个字节
- 2:协议类型->两个字节
- N:数据长度->N(46~1500)个字节
- 4:校验码->4个字节
一个帧数据大小的范围为什么是46~1500?
- 以太网的最大传输单元是1500字节,若IP数据报超过1500字节,则必须将IP数据报分片
- 由于CSMA/CD协议的限制,以太网帧的最小长度是64字节,小于64则必须在数据段后面填充
前导码
- MAC帧的开始定界符,当数据比特出现连续两个11时,说明11后面的数据比特为MAC帧。
- MAC帧不需要结束定界符,因为采用曼彻斯特编码方式,在最后设置一个违规编码即可 注意:CRC不但要校验MAC帧的数据部分,还要校验目的地址,源地址,和类型字段,但不检验前导码
3.6.3 IEEE 802.11无线局域网
1.无线局域网的组成
无线局域网可以分为两大类:
- 有固定基础设施的无线局域网
- 无固定基础设施的移动自组织网络
固定基础设施:指预先建立的、能覆盖一定地理范围的固定基站
(1)有固定基础设施的无线局域网
AP:中心接入点,即连接的WIFI热点
使用802.11系列协议的局域网称为WIFI
802.11标准使用星形拓扑 基本概念
- 基本服务集BSS:一个基站+多个移动站,无线局域网中的最小构件
- 基站AP:
- 服务集标识符SSID:无线局域网的名字,即WIFI名字
- 基本服务区(BBA):基本服务集覆盖的地理范围,即可以连接WIFI的范围
- 门户(Portal):将无线局域网802.11接入有线局域网802.3,接入后通过AP进行帧格式转换(802.11和802.3的帧格式不同)
- 扩展服务集(ESS):将多个基本服务集通过AP连接到同一个分配系统,组成更大的服务集
- 分配系统(Distribution System, DS):使各个服务集看起来都在一个服务集里
- 漫游:一个移动站从一个基本服务集切换到另一个基本服务集,使用的AP改变

(2)无固定基础设施的无线局域网
特点
- 没有AP,只有移动站
- 各移动站之间地位平等,中间结点都为转发结点,都具有路由器的功能。
- 可以不和因特网相连

注意:
- WIFI热点也是一种AP,不属于这种类型
- 在IEEE802.11无线局域网内,两个移动站之间不能直接通信,必须通过基站AP转发
2.802.11局域网的MAC帧
帧的分类
- 数据帧
- 控制帧:RTS CTS ACK
- 管理帧
帧的格式 :
MAC首部+数据+校验
MAC首部 :
帧控制+3个地址最重要(还有一个没用的地址)
帧控制:
- 2-4字节:帧类型
- 5-8字节:帧类型的子类型
- 9,10表示去往AP还是来自AP:
- 10:去往:地址123分别表示AP地址+源地址+目的地址(中起止)
- 01:来自:地址123分别表示目的地址+源地址+AP地址(止起中)

3.6.4 VLAN基本概念与基本原理
3.6.4.1VLAN目的
解决大型局域网面临的问题:
- 刚播风暴
- 局域网内存在重要的敏感节点,对信息保密和安全不利

3.6.4.2解决方案
将较大的局域网划分为一些与地理位置无关的较小的虚拟局域网(VLAN),计算机只能探测到自己虚拟局域网的节点,其他节点被隐藏,每一个VLAN都是一个广播域,每个VLAN都对应一个VID
3.6.4.3VLAN的三种划分方式
基于接口
根据交换机的接口号进行划分
优点:方法最简单、最有效
缺点:若主机离开原来的接口,则可能进入另一个VLAN

基于MAC地址
交换机先判断发送计算机的mac地址,根据mac地址识别vlan,然后广播给同一vlan的计算机
优点:改变计算机连接的交换机或交换机的接口,VLAN不变

基于IP地址
根据网络层的地址或协议划分VLAN
优点:跨越路由器进行扩展,将多个局域网的主机连接在一起
3.6.4.4 802.Q帧
帧的格式
在以太网802.3帧中插入一个四个字节的标识符,称为VLAN标签,用于指明发送方的VID
VLAN标签的格式:
- 前2个字节:总是0X8100,表示这是一个802.1Q帧
- 后2个字节
- 前4位:没什么用
- 后12位:VLAN的标识符VID

注意
- 插入VLAN标签后,FCS位置的校验码必须重新计算
- VID的值由交换机管理员设定,各主机不知道自己的VID,交换机必须知道
- 主机与交换机之间用802.3标准以太网帧,交换机与交换机之间用802.1Q帧
- 在交换机与交换机交换之前,需要加上VLAN标签;交换完之后需要拿掉VLAN标签
3.8 数据链路层设备
3.8.2 以太网交换机
实质
以太网交换机的实质是一个多接口的网桥
功能
- 根据MAC帧首部的MAC地址识别帧和转发帧,可以隔离冲突域
- 增加局域网的规模和地理范围
- 自学习功能,交换机除有自己的MAC地址外,还会在其内部维护一个表,存储和管理连接各个接口的设备的MAC地址
- 特殊的交换机可以划分虚拟局域网
拓展:

优点
每个用户通信时,独占带宽,而不是同时和其他用户共享带宽。若介质的总带宽为10Mb/s,则拥有N个接口的交换机总容量为N✖10Mb/s
特点
- 交换机与交换机,交换机与主机之间可在全双工模式下通信
- 交换机与集线器之间只能使用CSMA/CD协议在半双工模式下通信,计算机中的网卡能自动识别这两种情况
- 即插即用,因为内部帧的转发表通过自学习算法建立和维护
- 使用交换结构芯片,交换速率较高
- 交换机在同一时间独占传输介质带宽
交换机主要采用的两种交换模式
- 直通交换:仅接收处理MAC帧首部中的目的地址,然后立即转发
- 优点:交换时延非常小
- 缺点:无差错控制,不适用于需要速率匹配、协议转换和差错检测的线路
- 存储转发交换
- 优点:可靠性高,进行差错控制,支持不同速率之间的转换,协议转换
- 缺点:交换时延高
交换机的自学习功能
- 将首次发送至某个交换机的计算机的MAC地址登记在该将换机,并标识端口号,且首次广播,目址判断,
- 当进入的交换机的交换表包含接收的地址时,根据MAC地址进行数据发送,不会广播
注意 :当计算机的端口号改变时,交换表内的信息就是错误的
解决方案:表内信息过期作废

第四章 网络层
4.2 IPv4

4.2.1IPv4分组
4.2.1.1 IPv4分组的格式
一个IP数据包(IP分组)的格式:
- 固定首部
- 数据长度信息
- 版本:IPv4 或 IPv6
- 首部长度:4B为单位
- 区分服务:一般用不到
- 总长度:表示范围围殴0~65535,单位为B
- 分片信息
- 标识:由源主机生成的自增序列
- 标志:三位,最低位MF,次低位DF,最高位不用管
- 片偏移:表示数据部分在被分片前的位置,单位为8B
- 传输过程信息
- 生存时间:TTL,由源主机设置,每经过一个路由器-1
- 协议:TCP-6/UDP-17
- 首部校验和:奇偶校验、循环冗余校验海明校验等校验方式生成
- 主机信息:
- 源地址
- 目的地址
- 可变首部
- 可选字段
- 填充:保证首部为4B的倍数
- 数据部分
详细介绍
数据长度信息: 注意:
- 数据长度信息中总长度的表示范围为理论值,因为数据链路层中存在最大最小帧长,过大的帧会进行分片分成多个IP分组
- 固定部分的字节为20B,可变部分的字节为40B
- 填充字段的目的是为了凑足4B的倍数
分片信息:

传输过程信息:

主机地址信息:

4.2.1.2 IP数据包分片
为什么要分片?
一个链路层数据帧能承载的最大数据单元称为最大数据单元,而IP分组需要先进入数据链路层,然后被封装成帧,所以数据链路层的MTU严格限制了IP数据报的长度。
怎么分片?
定义三个字段
- 标识:每个片都具有原始数据包分配的标识,当目的主机收到一批数据报时,通过标识来确定哪些数据报属于一个原始数据片
- 标志:
- 次低位DF:1->不允许被分片,0->允许被分片
- 最低位MF:1->表示后面还有分片,0->表示后面没有分片
- 片偏移:确定片在原始数据报的哪个位置

注意:
- 分片的首部偏移字段必须是8B的倍数,所以除了最后一个分片外,其他分片的数据部分必须时8B的倍数(2~(n-1)分片的偏移量是前一个分片的数据大小)
- 每增加n个分组,就会增加(n-1)✖20B的数据量
- IP数据报的"分片"可能在源主机、或任何一个路由器中发生
- 各分片有可能乱序到达目的主机
- 只有目的主机才会对分片进行"重组"
4.2.2 IP地址划分
4.2.2.1最初的分类方案
划分方案:
最初的地址划分将32位 IP地址划分为A,B,C,D,E五类,
A、B、C类地址为单播地址,在一个局域网内,每个节点只能分配一个唯一的IP地址
D、E类地址为多播地址,多个主机分配一个IP地址
注意:
- 若一个主机连接多个局域网,就会有多个IP地址
- 默认网关就是路由器的IP地址
- 从属于同一网络的节点,网络号都相同
- IP地址是全球唯一的
IP分组转发流程
IP数据报就绪,准备由源地址发往目的地址
- 检查源地址的网络号和目的地址的网络号是否相同
- 根据ARP协议将默认网关的IP地址映射为默认网关的MAC地址
- IP数据报进入链路层封装成帧,将帧的目的MAC地址设置为默认网关(路由器)的MAC地址
- 到达路由器后,帧解包还原成IP数据报,并根据路由表选择转发接口。
- 选择完后,将目的MAC地址改为下一结点的MAC地址封装成帧继续转发
- 直到到达目的结点
在此过程中MAC地址一直在变,而IP地址从未改变,所以我们更可以理解为什么数据链路层处理的是相邻结点的传输,而网络层处理的是源节点和目的结点之间的传输,IP地址就像一个通行证,每当我们到达一个结点后,我们出示通行证,结点都会告诉我们下一条路的名字(MAC地址),直到遇到与目的IP地址相同的节点
特殊用途的IP地址
- 正常网络号+全0主机号:可以代表一个局域网,用于路由转发表中
- 正常网络号+全1主机号:向某个网络号 内的所有节点广播
- 全0网络号+正常主机号:作为源地址,表示本网络中的一个主机
- 全0网络号+全0主机号:本网络中的本主机(在DHCP协议中使用,分配IP地址,获取默认网关)
- 全1网络号+全1主机号:作为目的地址,向本网络 进行广播
- 127+非全且或非全1的任何数:本地回环测试,表示一台主机本身

4.2.2.2 子网划分与子网掩码
为什么要划分
一个机构申请一个局域网,但机构内主机数量有限用不了这么多IP地址,可以将一个网络划分为多个子网使用
怎么划分
保持IP地址的网络号不变,将主机号划分为子网号和主机号。如下图所示,将主机号的一位分给子网号,此时网络有两个子网

子网划分的优点
提高了网络的利用率
子网掩码的格式
子网掩码由1和0组成,网络号和子网号部分全为1,主机号全为0
为什么需要子网掩码
在未划分子网的的网络中传输数据,首先需要判断目的地址和源IP地址是否在一个局域网内,在划分子网的网络中同样也需要判断是否在一个子网内,判断的依据是目的地址和源地址是否具有相同的网络前缀(网络号+子网号)。子网掩码的作用就是跟IP地址做与运算取得IP地址的网络前缀(网络号+子网号)
路由转发表与子网掩码
- 路由器内构建的表数据结构,除了存储各端口连接的目的网络号、MAC地址及对应的端口号外,还会存储网络对应的子网掩码。
- 如果一个网络内部划分了子网,那么每台路由器的每个端口都要分配IP地址、默认网关、子网掩码,因为路由表的作用是告诉数据往哪个端口走,但没有说明端口在哪个方向,需要数据报自己根据网络前缀识别。
注意
- 同一子网的默认网关和子网掩码相同
- 除了使用子网掩码对是否在一个网络内进行判断,其他情况基本与未划分的情况一致

IP分组转发流程
- 首先通过源主机的子网掩码得到目的地址和发送地址的网络前缀,判断是否在一个子网内
- 通过ARP协议将默认网关的IP地址映射为MAC地址
- IP分组进入数据链路层,IP分组封装成帧,默认网关的MAC地址是MAC帧的目的地址
- 到达路由器后,帧还原成数据报,将IP分组的目的IP地址依次与路由转发表的每一个子网掩码做与运算,匹配网络前缀,选择转发接口
- 选择转发接口后,将端口连接的,另一端结点的MAC地址作为MAC帧的目的地址,封装成帧继续传输
- 直到到达目的结点

注意:
- 对于不连接子网,而连接路由器的端口设置默认子网掩码,默认子网掩码的大小由A,B,C类网址确定
- A:255.0.0.0
- B:255.255.0.0
- C:255.255.255.0
- 设置默认路由以及相应的转发接口,在发送数据时,让数据可以在更远的网络中传播;接收数据时,丢弃无效数据报
4.2.2.3 cidr地址划分
为什么要使用cidr地址划分
ip地址资源告急,传统分类方式ip地址利用率不高
cidr格式
网络号+主机号,根据实际需求动态分配网络号和主机号的位数
cidr的子网划分
一个单位获得cidr地址块后,可以把它划分为多个子网,划分方式有两种
- 定长子网划分:在一个cidr地址块中,把主机号前k bit抠出来作为定长子网号,划分出2^k个子网号(每个子网包含的ip地址块大小相等)
- 边长子网划分:划分子网时,子网号长度不固定(每个子网包含的ip地址块大小不同)
定长子网划分的缺点
不够灵活,会出现子网ip地址不够用或子网ip地址利用率不高的情况
变长子网划分的优点
非常灵活,根据各地各机构的需要分配合适数量的IP地址
变长子网划分的例子


注意:
- 划分时,原始CIDR地址块作为根节点,拥有h bit自由分配的地址块
- 每个分支节点必须拥有左右孩子,左0,右1,
- 每个叶子节点对应一个子网,根据根节点到达叶子节点的路径来分析子网对应的ip地址块,具体见上图
- 整棵树的高度不能超过h-1,因为至少要保留2bit的主机号来分配ip地址
疑惑点:可以在倒数5+2的地方划分吗,这样可分配的不就最小为2了吗
IP数据报转发流程


4.2.2.4 路由聚合与CIDR地址划分
什么是路由聚合
对于一个路由转发表,如果表内几条表项的
- 转发接口相同
- 部分网络前缀也相同
那么可以将这几条路由表项聚合为一条

路由聚合的优缺点
优点:
- 减少路由表的大小
- 查询路由更快,降低转发时延
缺点:
- 可能会引入额外的无效地址。
- 如上图,若一条来自互联网的数据报的目的IP地址是128.14.32.157,县路由器由于路由聚合不会拦截该数据报,并将其转发给咸鱼电信,但在咸鱼电信路由表中没有对应的表项,数据包被丢弃
- 一个IP地址匹配多个表项
最长前缀匹配原则
最长前缀匹配用于解决一个IP地址可能匹配多个表项的问题
原则就是选择所有匹配的表项中,网络前缀最长的表项进行路由转发
假设铁柱网吧不想使用咸鱼电信的服务,直接跟县里的路由器连接
那么发往铁柱网吧的IP数据报都会匹配表项1和表项2,但是根据最长前缀匹配原则,选择前缀更长的表项2,从G3接口发出。
发往其他网络的IP数据报无法与表项2匹配,只能与表项1匹配,所以还是会从G1接口转出,不会受到影响
IP数据报转发过程综合
条件说明:
- 一个网络可以连接多个路由器
- 默认网关往往是路由器某个接口的IP地址,而一个路由器可以有多个接口
- 县路由器使用路由聚合,学校和公司未使用路由聚合
- 学校和县进行了子网划分,公司没有进行子网划分
- 学校使用定长子网划分,县使用变长子网划分
- 一个子网共用一个子网掩码和默认网关

4.2.2.5 NAT地址划分
什么是NAT地址划分
将网络地址分为外网IP地址和私有IP地址
- 外网IP地址:每个局域网分配一个外网IP地址,由ISP提供,全球唯一
- 私有IP地址:由路由器在局域网内部分配,在局域网内唯一,在不同的局域网可以重复
NAT地址划分的思想
NAT地址划分的思想与CIDR地址划分的思想有共同点,也有不同点,不同点正是NAT地址划分思想的核心
- 共同点:CIDR和NAT都将IP地址块进一步分块管理
- 不同点:
- CIDR划分方式将地址分块后,各块内的网络不进行重新编址,即使在不同的块,IP地址也不允许相同。
- 而NAT划分方式在各块内重新进行编址,在不同的块,可以出现重复的IP地址

举个例子:
假设中国只有两个公司小米和华为,每个公司的所有员工都要申请工牌,某一机构规定国内的工牌号范围为1~100
由于华为创办的比小米要早,所以华为申请到了1-50的工牌号,且华为的老大工牌号为1
后来的小米只能申请51-100的工牌号,不过小米的老大也想要工牌号1, 于是向这个机构提出抗议,这个机构想了各解决方式,多设定一个企业号范围,让华为的企业号为1,小米的企业号为2,然后在两个公司的内部自己分配工牌号。
NAT地址划分的实现
需要一个NAT路由器实现内网地址和外网地址的转换,连接内网的路由器端口IP地址为内网IP,连接外网的端口为外网IP,内网IP和外网IP都是局域网内的一个地址
- 外网IP地址由外网分配
- 外网端口号由NAT路由器随机分配(还存储到服务器吗)
IP数据报转发
- 在传输层将数据增加TCP首部的源端口号和目的端口号的信息,目的端口为主机对外暴露出的外网的端口号。源端口号通过进程使用的服务器查询对应的内网端口号。
- 数据进入网络层,增加IP首部信息,指明目的IP地址和源IP地址,封装成数据报,同样的目的IP地址仍是外网IP
- 数据报进入数据链路层,增加帧的首部和尾部信息,指明源MAC地址和目的MAC地址,被封装成帧,进入物理层传输。其中MAC地址为默认网关的MAC地址
- 数据进入路由器,帧还原成数据报,根据IP首部的源端口号和源地址查NAT表,找到对应的外网IP地址和端口号,并更新IP数据报的IP地址和端口号,并继续封装成帧,在物理层进行传输
- 数据到达目的IP所在的局域网的NAT路由器,查表并更新IP数据报的目的IP地址和端口号,封装成帧后进入目的局域网
- 进入局域网后,数据到达数据链路层的交换机,根据帧首部的目的MAC地址,到达目的主机
注意:
- 源IP地址是局域网内部分配的,源端口号是主机内部分配的;目的IP地址和目的端口号是对外暴露的外网IP地址和端口号
- NAT路由器具有传输层的部分功能,普通路由器只有网络层及以下功能
- 数据报在外网中传播时,源和目的IP地址、端口号都是外网的
- 数据报在源主机局域网内传播时,源IP地址、端口号是内网的,目的IP地址、端口号是外网的,因为需要源IP地址映射找到默认网关
- 数据报在目的主机局域网内传播时,源IP地址、端口号是外网的,目的IP地址、端口号是内网的,因为需要目的IP地址引导数据的传输
- 发送至服务器,服务器未连接NAT路由表,不需要目的IP和端口的转换
4.2.3 地址解析协议ARP
IP分组和ARP分组在数据链路层封装成帧的不同

MAC地址回顾
- Mac地址是网络适配器出场时分配好的,全球唯一
- 一台主机至少有一个网络适配器(网线插口背后的芯片),因此主机至少有一个Mac地址
- 一台路由器有多个转发接口,一个接口背后都是一个网络适配器,因此路由器有多个Mac地址 ARP的作用
当一个主机刚接入局域网时,该节点不知道默认网关的MAC地址,其他节点也不知道该节点的MAC地址,但是各个节点之间的IP地址是相互知道的。在一个局域网内部,可以通过ARP协议查询到一个IP地址对应的MAC地址,并将IP地址和MAC地址的对应关系记录在ARP表里,这个节点可以是主机,也可以是路由器。
如何进行查询
每个节点和路由器都有一个ARP表,记录IP地址和MAC地址之间的映射关系,刚接入局域网的节点的ARP表是空的,ARP表也需要定期更新。
查询过程
ARP请求分组
- 在网络层,发送节点的IP地址作为源IP地址,接收节点的IP地址作为目的IP地址
- 在数据链路层,发送节点的MAC地址作为源MAC地址,全1MAC地址作为接收节点的MAC地址
ARP响应分组
- 在网络层,接收节点的IP地址作为源IP地址,发送节点的IP地址作为目的IP地址、
- 在数据链路层,发送节点的MAC地址作为目的MAC地址,接收节点的MAC地址作为源IP地址


4.2.4 动态主机配置协议DHCP
DHCP协议属于应用层协议,使用传输层UDP协议
DHCP协议的作用
对网络层进行初始化,如节点的IP地址,子网掩码,默认网关
DHCP服务器
- 在每一个子网中分配一个DHCP服务器,用于IP地址的分配
- DHCP服务器也有一个IP地址,为所在子网的一个IP地址
DHCP客户
刚接入网络的主机
DHCP协议的工作流程
DHCP协议的工作流程就是对节点网络信息的初始化过程,需要双方发送四个报文:
- DHCP发现报文
- 应用层:客户机生成DHCP发现报文,将主机的MAC地址写入
- 传输层:将DHCP报文封装成UDP数据报,写入主机进程的端口号和DHCP服务器的端口号(67)
- 网络层:将UDP数据报封装成IP数据报,IP源地址为0.0.0.0,目的地址为255.255.255.255
- 数据链路层:将IP数据报封装成帧,源MAC地址为主机MAC地址,目的MAC地址为11:11:11:11
2. DHCP响应报文
- 应用层:DHCP服务器生成DHCP响应报文,将提供的IP地址、默认网关、子网掩码写入
- 传输层:将DHCP报文封装成UDP数据报,写入主机进程的端口号和DHCP服务器的端口号(67)
- 网络层:将UDP数据报封装成IP数据报,IP源地址为DHCP服务器IP地址,目的地址为255.255.255.255
- 数据链路层:将IP数据报封装成帧,源MAC地址为DHCP服务器MAC地址,目的MAC地址为11:11:11:11
3. DHCP请求报文
- 应用层:客户机生成DHCP请求报文,将主机的MAC、接受的IP地址写入
- 传输层:将DHCP报文封装成UDP数据报,写入主机进程的端口号和DHCP服务器的端口号(67)
- 网络层:将UDP数据报封装成IP数据报,IP源地址为0.0.0.0,目的地址为255.255.255.255
- 数据链路层:将IP数据报封装成帧,源MAC地址为主机MAC地址,目的MAC地址为11:11:11:11
4. DHCP确认报文
- 应用层:DHCP服务器生成DHCP响应报文,将提供的IP地址、默认网关、子网掩码写入
- 传输层:将DHCP报文封装成UDP数据报,写入主机进程的端口号和DHCP服务器的端口号(67)
- 网络层:将UDP数据报封装成IP数据报,IP源地址为DHCP服务器IP地址,目的地址为255.255.255.255
- 数据链路层:将IP数据报封装成帧,源MAC地址为DHCP服务器MAC地址,目的MAC地址为11:11:11:11

注意:
- 只有经历这四次报文发送后,才能使用分配的IP地址
- 一个局域网内可以有多个DHCP服务器
- 确认报文和请求报文是确保哪些服务器知道自己提供的IP地址没有被使用,哪个服务器提供的IP地址被使用了
- DHCP协议在ARP协议之前完成,所以ARP协议总能知道所有节点的IP地址,通过IP地址映射出MAC地址
疑问:
- 局域网内各节点之间是如何相互知道IP地址的
第五章 传输层
5.1 传输层提供的服务
5.1.1传输层的功能
传输层为不同主机上的进程之间提供逻辑通信,是通信部分的最高层,也是用户功能的最低层。即使网络层协议不可靠,传输层同样能为应用程序提供可靠的服务。
- 实现端到端的通信
- 分用和复用
- 分用:接收方的传输层在剥去报文的首部后能把这些数据正确交付到目的应用进程
- 复用:发送方多个应用进程可以使用同一个传输协议传送数据
- 差错检测:
- Tcp协议检查出差错后丢弃数据,并通知发送方重传
- Udp协议检查出差错后直接丢弃数据,不通知发送方重传
- 向应用层提供两种服务 应用进程间建立的逻辑通道对上层的表现因传输层协议不同而有很大的区别
- TCP协议:尽管在TCP/IP模型中,下面的网络层是不可靠的,但TCP协议实现的逻辑通信信道就相当于一条全双工的有连接的可靠信道
- TCP协议确保数据正确完整,不提供广播和多播。且为了实现可靠数据传输,就必须增加许多措施,使首部信息大大增加,占用处理机资源,并产生一定时延,实时性较差。
- UDP协议:提供无连接、不可靠的端到端传输服务
- UDP只提供两个附加服务,多路复用和对数据错误的检测,不需要像TCP一样建立连接、确认信息,所以UDP比较简单,开销小,速度快,实时性好

5.1.2 传输层的寻址与端口
端口的作用
- 让应用层进程的进程将其数据通过端口交付给传输层
- 让传输层将数据报通过端口交付给相应的应用进程
端口号
长度 :16 bit
意义:标识本计算机应用层中的各个进程,不同主机的端口号相互独立,不同协议的端口号也相互独立
端口号的分类

套接字 套接字由IP地址和端口号组成,唯一标识一台主机上的应用程序
5.2 UDP协议
5.2.1 UDP数据报
UDP仅在IP层的数据服务之上,增加了两个功能:
- 分用和复用
- 差错检测
UDP协议优点
- 首部很小,只占8B,而TCP首部占20B
- 每次传输一个完整的报文、不支持报文自动拆分、重装,交给网络层后可能会导致分片
- 无连接的,不会引入建立连接的时延
- 不可靠的(可靠性交给应用层),应用层可以根据应用需求来灵活设计自己的可靠性机制
- 不需要维持连接状态,使用UDP协议的服务器可以支持更多的客户机
- 没有拥塞控制,网络拥塞不会影响源主机的发送速率

UDP首部格式
首部占8B
- 源端口号
- 目的端口号
- 长度(首部+数据):单位为B
- 校验和
- 数据
5.2.2 UDP校验
差错检测方法
- 相加取反,作为校验和信息
- 若数据与校验和相加全为1则说明没有比特错误
- 如果产生高进位就回卷

UDP检验
发送方产生UDP校验和
- 生成一个伪首部,12B
- 把UDP数据报的伪首部、首部和数据部分以16bit为一组,进行二进制加法
- 最终加法结果逐位取反,得到16bit校验和,将其填入UDP首部
- 去掉伪首部,并将UDP数据报交给网络层,封装成IP数据报
接收方检验
①网络层向传输层递交UDP数据报
②传输层在UDP数据报之前,添加伪首部
③把伪首部、UDP首部、数据部分以16bit为一组,进行二进制加法(最高位产生的进位需要回卷)
④如果加法结果为全1,说明没有比特错误,于是接收该UDP数据报,并根据目的端口号,向应用 层递交报文。如果加法结果不是全1,说明有差错,于是丢弃该UDP数据报
注意:
- 不足16bit的部分填充0
- 最高位产生进位回卷
- UDP检验出UDP数据报是错误的就可以丢弃,也可以交付上层,但是需要告诉上层这是错误数据报
- 通过伪首部,还可以校验IP数据报的源地址和目的地址
- 伪首部和填充的0都是不发送的
5.3 TCP协议
5.3.1 TCP/IP协议的特点
由于网络层只校验IP数据报的首部,TCP是在不可靠的IP层之上实现的可靠的数据传输协议,它主要解决传输的可靠、有序、无丢失和不重复问题
- 面向连接
- 一对一连接传输
- 提供可靠传输,保证数据无差错、不丢失、不重复
- 提供全双工通信,TCP发送和接收两端都设有发送缓存和接收缓存
- 面向字节流,无论传输多少个报文,在TCP协议看来都是字节流
- 每次建立连接可以发送多个报文,且建立时双方协商最大段长MSS(不包括首部),但是TCP不会要求每个TCP段都满载数据
UDP与TCP发送报文时采用的方式不同
- UDP报文的长度由发送方的应用程序决定
- TCP报文的长度由接收方的窗口值和当前网络拥塞程度来决定
- 若太长,则划分
- 若太短,则等待

5.3.2 TCP报文段
什么是TCP报文段
应用层的长报文在进入传输层后会被TCP协议划分为报文段,简称为TCP报文段,是TCP传播的数据单元
TCP报文段的作用
- 建立连接
- 运载数据
- 释放连接
- 应答
TCP报文段的格式
- 源端口号、目的端口号
- 序号seq:本报文段第一个字节的占用序号,TCP连接中传送的字节流中每一个字节都要按顺序编号
- 确认号ack_seq:表示确认收到另一端发送的数据,并设置期望收到的下一个报文中第一个字节的序号,若确认号为N,表示N-1序号的数据全部接收,期望收到第N个序号的数据,具有累计确认的性质
- 数据偏移:首部长度
- 保留:目前设为0
- 紧急位URG:URG=1紧急指针有效,表示这是紧急数据,意为该报文段中有紧急数据,需要插到本报文段的最前面发送
- ACK:ACK=1,确认号有效,建立连接后ACK都为1
- PUSH:PUSH=1时,希望接收方尽快回复
- RST:RST=1时,表示出现严重 差错(如主机崩溃),必须释放连接。也可用于拒绝一个非 法报文段(如恶意的黑客攻击)
- SYN:SYN=1,表示这是连接请求或连接接收报文,只有握手1,2 SYN=1,其他都等于0
- FIN:FIN=1,表示发送方数据发送完毕,请求释放连接,只有挥手1,3 FIN=1,其他都等于0
- 窗口:表示接收窗口的大小,表示在这次连接中,接收方还能接收多少数据
- 校验和:与UDP类似,计算校验和时,需要将TCP首部的协议字段由17改为6,UDP长度字段改为TCP长度,同样需要增加12B伪首部
- 紧急指针:紧急数据专用序号,指出本报文段中紧急数据的字节数
- 选项
- 填充:使整个首部长度为4B

5.3.3 TCP连接管理

TCP连接管理的基本概念
- 三个阶段:连接建立、数据传输、连接释放
- 客户机连接状态(5个):连接关闭状态(CLOSED)、监听状态(LISTEN)、同步已发送状态(SYS-SENT)、同步已收到(SYS-RCVD)、已建立连接状态(ESTABLISHED)
- 客户机释放状态:已建立连接状态(ESTABLISHED)、终止等待状态(FIN-WAIT1)、最后确认状态(LAST-ACK)、时间等待状态(TIME-WAIT)、连接关闭状态(CLOSED)
- 连接建立时,双方会协商一些参数
- TCP连接的两个端点是Socket,一个端口可以被多个TCP连接,一个IP地址可以有多个不同的TCP连接
TCP连接的建立
"三次握手"建立连接
- 第一次握手:客户机请求与服务器建立连接(SYN=1),并告诉服务器我发送的数据从x开始排序(seq=x)
- 第二次握手:服务器收到了客户机的请求,并告诉客户机同意该请求(ack_seq=x+1),而且服务器也请求与客户机建立连接(SYN=1),告诉客户机我发送的数据从y开始排序(seq=y)
- 第三次握手:客户机收到了服务器的请求,也同意该请求(ack_seq=y+1),同时向服务器发送数据,数据的第一个字节序号为x+1(seq=x+1)
注意:
- 第一次握手和第二次握手不能携带数据,但消耗一个序号
- 第三次握手可以携带数据,也可以不携带,若不携带数据则不消耗序号
TCP连接的释放

"四次挥手"释放连接
- 客户机传输完数据,告诉服务器我向你发送的数据传完了,请求断开连接(FIN=1),seq=u,u等于前面传送完数据的最后一个字节加一
- 服务器收到客户机发送的请求,并告知客户机我收到了你的请求(ack_seq=u+1),同意断开连接,seq=v,v也等于它向客户机发送的前一个数据的最后一个字节+1
- 服务器传输完数据,告诉客户机我也向你发送完数据了,请求断开连接(FIN=1),seq=w(两次断开连接之间还会有数据传送,传送的数据量为w-v),ack_seq=u+1;
- 客户机收到服务器发送的请求,并告知服务器我收到了你的请求(ack_seq=w+1),同意断开连接,seq=u+1
注意:
- 挥手1,3不携带数据,也要消耗一个序号
- 挥手2可以携带也可以不携带
- 挥手4不可以携带数据
- 除时间等待计时器外,TCP设有保活计时器,若TCP双方已经建立连接,但是后来客户机出现故障,服务器就不会接收客户机传来的数据,为了不让服务器白白等下去,这个问题就可以用保活计时器解决
TCP连接释放的过程及状态变化的时间分析
TCP连接:
- 从握手1到客户机可以发送数据最少耗时1.5RTT
- 从握手2到服务器可以发送数据最少耗时1RTT
TCP释放:
MSL:TCP协议的一个固定时间长度
客户机收到挥手3后,立即进入TIME-WAIT时间等待,经过2MSL后连接关闭
设置MSL的原因:
当客户机收到挥手3后,向服务器发送挥手4,挥手4没有被服务器接收,经过一段时间,服务器还会发送挥手3,若客户机关闭,就无法发送挥手4,所以要设置一个时间缓冲,2MSL的时间在客户机每一次接收到挥手3后重置