第1章 计算机网络体系结构
一、计算机网络概述
1、计算机网络的概念
-
早期的一个最简单定义:互联、自治、计算机系统的集合
- 互连:指计算机之间可以通过有线或无线的方式进行数据通信
- 自治:指独立的计算机,它有自己的硬件和软件,可以单独运行使用
- 集合:指至少需要两台计算机
-
现阶段的一个较好的定义:
- 计算机网络主要是由一些通用的、可编程的硬件互连而成的,而这些硬件并非专门用来实现某一特定目的(例如,传送数据或视频信号)
- 这些可编程的硬件能够用来传送多种不同类型的数据,并能支持广泛的和日益增长的应用
-
internet (互连网) :
- 是一个通用名词,泛指由多个计算机网络互连而成的计算机网络
- 在这些网络之间可以使用任意的通信协议作为通信规则,不一定非要使用 TCP/IP 协议。
-
Internet ( 互联网或因特网):
- 是一个专用名词,指当前全球最大的、开放的、由众多网络和路由器互连而成的特定计算机网络
- 采用 TCP/IP 协议族作为通信规则
2、计算机网络的组成
(1)从组成部分上
- 硬件:主要由主机(端系统)、通信链路(如双绞线、光纤)、交换设备(如路由器、交换机等) 和通信处理机(如网卡)等组成
- 软件:主要包括各种实现资源共享的软件和方便用户使用的各种工具软件(如网络操作系统、邮件收发程序、FTP 程序、聊天程序等)
- 协议:计算机网络的核心,规定了网络传输数据时所遵循的规范
(2)从工作方式上
- 边缘部分:
- 由所有连接到因特网上、供用户直接使用的主机组成
- 用来进行通信(如传输数据、音频或视频)和资源共享
- 核心部分:
- 由大量的网络和连接这些网络的路由器组成
- 为边缘部分提供连通性和交换服务

(4)从功能组成上
- 通信子网:
- 由各种传输介质、通信设备和相应的网络协议组成
- 使网络具有数据传输、交换、控制和存储的能力,实现联网计算机之间的数据通信
- 资源子网:
- 是实现资源共享功能的设备及其软件的集合
- 向网络用户提供共享其他计算机上的硬件资源、软件资源和数据资源的服务
3、计算机网络的功能
- 数据通信:最基本的功能
- 资源共享:包括软件共享、硬件共享
- 分布式管理
- 提高可靠性
- 负载均衡
4、电路、报文、分组交换
- 网络核心是计算机网络(特别是因特网)中最复杂的部分。
- 网络核心要向网络边缘中的大量主机提供连通性,使边缘部分中的任何一个主机都能够与其他主机通信。
- 路由器 (Router) 是网络核心中最主要的设备,其主要功能是数据交换,即接收来自源主机系统的数据,并向目的主机系统转发。
- 在计算机网络中,路由器转发的数据称为数据分组(Packet Switching)。
(1)电路交换 (Circuit Switching)
-
电路交换:
- 电话交换机接通电话线的方式
- 交换的含义:转接——把一条电话线转接到另一条电话线,使它们连通起来
- 从通信资源分配角度来看:交换就是按照某种方式动态地分配传输线路的资源
-
电路交换的步骤
- 建立连接:分配通信资源
- 数据传输:一直占用通信资源
- 释放连接:归还通信资源
-
电路交换的关键点:用户始终占用着端到端的固定传输带宽

| 优点 | 缺点 |
|---|---|
| 通信时延小:通信线路为通信双方专用的,数据直达 | 建立连接时间长 |
| 有序传输:通信双方只有一条专用通信线路,数据只在这一线路上传输,不存在失序问题 | 线路独占,使用效率低 |
| 没有冲突:不同的通信双方拥有不同的信道,不会出现争用物理通道的问题 | 不便于差错控制:中间结点不具备存储和检验数据的能力,无法发现并纠正错误 |
| 适用范围广:适用于传输模拟信号,也适用于传输数字信号 | 难以规格化 |
| 实时性强:时延小所以实时性强 | 灵活性差 |
| 控制简单 |
(2)报文交换 (Message Switching)
- 是分组交换的前身
- 报文被整个发送,数据交换的单位是报文
- 报文携带有目标地址、源地址等信息
- 报文交换在交换结点采用存储转发的传输方式
- 交换节点将报文整体接收完成后才能查找转发表,将整个报文转发到下一个节点
- 报文大小没有限制
| 优点 | 缺点 |
|---|---|
| 无需建立连接 | 引起转发时延:交换结点要将报文整体接收完后,才能查找转发表转发到下一个结点 |
| 动态分配线路 | 缓存开销大:报文大小没有限制,因此交换结点要有较大的缓存空间 |
| 提高线路可靠性:如果某条线路出现故障,会重新选择另一条线路 | 错误处理低效:报文较长时,发生错误的概率相对较大,重传整个报文的代价也很大 |
| 提高线路利用率:通信双方在不同的时间分段占用物理线路 | |
| 提供多目标服务:一个报文可以同时发送给多个目的地址 |
(3)分组交换 (Packet Switching)
- 采用存储转发技术,解决了报文交换中报文过长的问题:
- 源结点在发送之前,先把较长的报文划分成若干较小的等长数据段
- 每个数据段前面添加一些由必要控制信息【源地址、目的地址和编号信息等】组成的首部,构成分组 (Packet)
- 分组交换还可以进一步分为面向连接的虚电路方式和无连接的数据报方式,这两种服务方式都由网络层提供

- 发送方:构建分组 ----> 发送分组
- 路由器:缓存分组 ----> 转发分组
- 接收方:接收分组 ----> 还原报文
| 优点 | 缺点 |
|---|---|
| 无建立时延 | 存在存储转发时延 |
| 线路利用率高 | 需要传输额外信息量(分组首部信息) |
| 简化存储管理:因为分组大小固定,管理起来就容易一些 | 当分组交换采用数据报服务,可能会出现失序、丢失、重复分组 |
| 加速传输:因为分组是逐个传输,这样前一个交换机的转发操作与后一个交换机的存储操作可同时进行【流水线方式】 | 当分组交换采用虚电路服务,虽然没有分组失序问题,但有呼叫建立,数据传输和虚电路释放三个过程 |
| 减小出错率和重复数据量:分组比报文小,因此出错概率也会比较小,即使出错也只需要重传出错的这一小部分即可 |
(4) 总结:三种交换对比
-
若要传送大量数据,并且数据传送时间远大于建立连接的时间,则使用电路交换效率高,然而计算机的数据传送往往是突发式的,采用电路交换时通信线路的利用率会很低
-
报文交换和分组交换都不需要建立连接(即预先分配通信资源),在传送计算机的突发数据时可以提高计算机通信线路的利用率
-
将报文构造成若干个更小的分组进行分组交换,比将整个报文进行报文交换的时延要小,并且还可以避免太长的报文长时间占用链路,有利于差错控制,同时具有更好的灵活性

5、计算机网络的分类
-
按分布范围:
- 广域网 WAN:互联网的核心部分,采用交换技术
- 城域网 LAN:大多采用以太网技术
- 局域网 LAN:采用广播技术
- 个域网 PAN:采用无线技术
-
按传输技术:
- 广播式
- 点对点
-
按拓扑结构:
- 总线形
- 星形
- 环形
- 网状形

-
按交换技术:
- 电路交换
- 报文交换
- 分组交换
-
按使用者:
- 公用网
- 专用网
-
按传输介质:
- 有线网络
- 无线网络
-
注意:
- 广域网和局域网之间的差异在于:
- 所覆盖范围不同
- 所使用的协议和网络技术不同【广域网使用点对点技术,局域网使用广播技术】
- 广域网基本都属于点对点网络
- 点对点网络与广播式网络的重要区别:是否采用分组存储转发与路由器选择机制
- 若中央处理器之间的距离非常近(如仅 1 m 的数量级或更小),则一般称为多处理器系统,而不称为计算机网络
- 拓扑结构主要是指通信子网的拓扑结构
- 星形、总线型和环形网络多用于局域网
- 网状形网络多用于广域网
- 广域网和局域网之间的差异在于:
6、计算机网络的性能指标
- 性能指标可以从不同的方面来度量计算机网络的性能
(1)速率 Speed
- 比特:
- 计算机中的数据量的基本单位,也是信息论中信息量的单位
- 一个比特就是二进制数字中的一个 1 或 0
- 速率:
- 指连接到网络上的结点在数字信道上传送数据的速率【每秒传送多少个比特】
- 也称:数据传输速率,数据传输率、比特率或数据率
- 单位:b/s(比特/秒)
- 速率提高体现在单位时间内发送到链路上的比特数增多了,而并不是比特在链路上跑得更快了

(2)带宽 Bandwidth
- 带宽在模拟信号系统中的意义:
- 某个信号所包含的各种不同频率成分所占据的频率范围
- 单位:赫兹 Hz(kHz,MHz,GHz)`
- 带宽在计算机网络中的意义:
- 用来表示网络的通信线路所能传送数据的能力
- 即在单位时间内从网络中的某一点到另一点所能通过的最高数据率
- 单位:b/s(kb/s,Mb/s,Gb/s,Tb/s)`
- 数据传送速率 = min【主机接口速率,线路带宽,交换机或路由器的接口速率】

(3)吞吐量 Throughput
- 吞吐量:单位时间内通过某个网络 (或信道、接口) 的数据量
- 吞吐量常用在对实际网络的测量中,受网络的带宽或额定速率的限制
(4)时延 Delay
- 指数据 (一个报文或分组) 从网络 (或链路) 的一端传送到另一端所需的总时间
- 包括:
- 发送时延 = \frac{分组长度(b)}{发送速率(b/s)},结点将分组的所有比特推向链路所需的时间
- 传播时延 = \frac{信道长度(m)}{电磁波在信道上的传播速率(m/s)},一个比特从链路一端传播到另一端所需的时间
- 处理时延:数据在交换结点为存储转发而进行的--些必要处理所花的时间
- 排队时延:分组在进入路由器后要先在输入队列中排队等待处理

例题


(5)时延带宽积
- 时延带宽积 = 传播时延 * 信道带宽
- 指发送端发送的第一个比特即将到达终点时,发送端已发出了多少比特
- 也称为以比特为单位的链路长度

(6)往返时间 RTT
- 指从发送端发送数据分组开始,到发送端收到接收端发来的相应确认分组为止,总共耗费的时间
(7)利用率
- 信道利用率:用来表示某链路有百分之几的时间是被利用的 (有数据通过)
- 网络利用率:全网络所有链路的链路利用率的加权平均

- 根据排队论,当某链路的利用率增大时,该信道引起的时延也会迅速增加,因此信道利用率不是越高越好
- 如果令 D_0 表示网络空闲时的时延,D 表示网络当前的时延
- 在适当的假定条件下,可以用下面的简单公式来表示 D、D_0 和利用率 U 之间的关系:
D=\dfrac{D_0}{1-U}

- 当网络利用率 U 到 50% 时,时延急剧增大
- 当网络利用率接近 100% 时,时延趋于无穷大
- 但是也不能使信道利用率过低,这会使宝贵的通信资源被浪费
(8)丢包率
- 丢包率:即分组丢失率,是指在一定的时间范围内,传输过程中丢失的分组数量与总分组数量的比率
- 具体可分为:接口丢包率、结点丢包率、链路丢包率、路径丢包率、网络丢包率等
- 分组丢失的两种情况
- 分组在传输过程中出现误码,被传输路径中的结点点交换机(例如路由器)或目的主机检测出误码而丢弃
- 分组到达一台队列已满的分组交换机时被丢弃,在通信量较大时就可能造成网络拥塞
- 分组在传输过程中出现误码,被传输路径中的结点点交换机(例如路由器)或目的主机检测出误码而丢弃
- 丢包率反映了网络的拥塞情况:
- 无拥塞时路径丢包率为 0
- 轻度拥塞时路径丢包率为 1%~4%
- 严重拥塞时路径丢包率为 5%~15%
二、计算机网络体系结构与参考模型
1、计算机网络分层结构
(1)基本概念
- 计算机网络的体系结构就是这个计算机网络及其所应完成的功能的精确定义,它是计算机网络中的层次、各层的协议及层间接口的集合
- 体系结构是抽象的,而实现是具体的,是真正在运行的计算机硬件和软件
- 分层的基本原则:
- 各层之间相互独立,每层只实现一种相对独立的功能
- 每层之间界面自然清晰,易于理解,相互交流尽可能少
- 结构上可分割开,每层都采用最合适的技术来实现
- 保持下层对上层的独立性,上层单向使用下层提供的服务
- 整个分层结构能促进标准化工作
- 具体地,层次结构的含义包括:
- 第 n 层的实体不仅要使用第 n-1 层的服务来实现自身定义的功能,还要向第 n+1 层提供本层的服务,该服务是第 n 层及其下面各层提供的服务总和
- 最低层只提供服务,是整个层次结构的基础;最高层面向用户提供服务
- 上一层只能通过相邻层间的接口使用下一层的服务,而不能调用其他层的服务;下一层所提供服务的实现细节对上一层透明
- 两台主机通信时,对等层在逻辑上有一条直接信道,表现为不经过下层就把信息传送到对方

(2)专用术语
1)实体
- 指任何可以发送或接受信息的硬件或软件进程
- 对等实体:同一层的实体
- 第 n 层中的活动元素称为第 n 层实体
- 第 n 层实体实现的服务为第 n+1 层所利用
- 每一层还有自己传送的数据单位,其名称、大小、含义也各有不同

- 协议数据单元 PDU:对等层之间传送的数据单位,包括:
- 服务数据单元 SDU:同一系统内层与层之间交换的数据包
- 协议控制信息 PCI:控制协议操作的信息
- 每层的 PDU 都有一个通俗的名称:
- 物理层的 PDU 称为比特
- 数据链路层的 PDU 称为帧
- 网络层的 PDU 称为分组
- 传输层的 PDU 称为报文段
- 在各层间传输数据时,把从第 n+1 层收到的 PDU 作为第 n 层的 SDU,加上第 n 层的 PCI,就变成了第 n 层的 PDU,交给第 n-1 层后作为 SDU 发送,接收方接收时做相反的处理
2)协议
-
控制两个对等实体在“水平方向” 进行“逻辑通信”的规则的集合
-
这种通信实际上不存在,只是便于我们考虑问题

-
三要素:
- 语法:数据与控制信息的格式
- 语义:需要发出何种控制信息、完成何种动作及做出何种应答
- 同步:执行各种操作的条件、时序关系等,即事件实现顺序的详细说明
-
一个完整的协议通常应该具有线路管理 (建立\连接\释放连接),差错控制,数据转换等功能
3)接口
- 服务访问点 SAP:同一结点内相邻两层的实体交换信息的逻辑接口
- 服务通过 SAP 提供给上层使用
- 第 n 层的 SAP 就是第 n+1 层可以访问第 n 层服务的地方
- 数据链路层的 SAP 为帧的“类型”字段
- 网络层的 SAP 为 IP 数据报的“协议”字段
- 传输层的 SAP 为“端口号”字段
4)服务
- 在协议控制下,两个对等实体间的逻辑通信使得本层能够**向上一层提供服务
- 要实现本层协议,还需要使用下面一层所提供的服务
- 协议是"水平的",服务是"垂直的"
- 实体看得见相邻下层所提供的的服务,但是并不知道实现该服务的具体协议

-
服务原语:上层使用下层所提供的服务必须通过与下层交换一些命令
-
OSI 参考模型将原语划分为 4 类:
- 请求 (Requst):服务用户 ----> 服务提供者,请求完成某项工作
- 指示 (Indication):服务提供者 ----> 服务用户,指示用户做某件事情
- 响应 (Response):服务用户 ----> 服务提供者,作为对指示的响应
- 证实 (Confirmation):服务提供者 ----> 服务用户,作为对请求的证实

-
计算机网络提供的服务按以下三种方式分类:
- 面向连接服务和无连接服务
- 可靠服务与和不可靠服务
- 有应答服务和无应答服务
2、参考模型

(1)OSI 参考模型
- 低三层统称为通信子网,它是为了联网而附加的通信设备,完成数据的传输功能
- 高三层统称为资源子网,它相当于计算机系统,完成数据的处理等功能

1)物理层(Physical Layer)
- 物理层主要定义数据终端设备(DTE)和数据通信设备(DCE)的物理与逻辑连接方法
- 传输单位:比特
- 功能:在物理媒体上为数据端设备透明地传输原始比特流
- 接口标准:EIA-232 C、EIA/TIARS-449、CCITT 的X.21 等
- 主要研究内容:
- 规定了通信链路与通信结点的连接所需电路接口的一些参数
- 规定了通信链路上传输的信号的意义和电气特征
- 注意:
- 传输信息所利用的一些物理介质(双绞线、光缆、无线信道等),并不在物理层协议之内而在物理层协议下面
- 因此,有人把物理介质当作第 0 层
2)数据链路层(Data Link Layer)
- 传输单位:帧
- 任务:将网络层传来的 IP 分组封装成帧,并可靠地传输到相邻结点的网络层
- 功能概括为:封装成帧、差错控制、流量控制和传输管理
3)网络层(Network Layer)
- 传输单位:数据报
- 任务:把网络层的协议数据单元(分组)从源端传到目的端,为分组交换网上的不同主机提供通信服务
- 关键问题:对分组进行路由选择,并实现流量控制、拥塞控制、差错控制和网际互连等功能
- 因特网是一个很大的互联网,它由大量异构网络通过路由器(Router)相互连接起来
- 因特网的主要网络层协议是无连接的网际协议 IP 和许多路由选择协议
- 因特网的网络层也称网际层或 IP 层
- 网络层的协议: IP、IPX、ICMP、IGMP、ARP、RARP 和 OSPF 等
4)传输层 (Transport Layer)
- 传输单位:报文段
- 功能:
- 负责主机中两个进程之间的通信
- 为端到端连接提供可靠的传输服务,即流量控制、差错控制、服务质量、数据传输管理等服务
- 一台主机可同时运行多个进程,具有复用和分用的功能
- 数据链路层提供的是点到点的通信:
- 主机到主机之间的通信
- 一个点是指一个硬件地址或 I 地址,网络中参与通信的主机是通过硬件地址或地址标识的
- 传输层提供的是端到端的通信:
- 运行在不同主机内的两个进程之间的通信
- 个进程由一个端口来标识
- 传输层的协议:TCP、UDP
5)会话层(Session Layer)
- 允许同主机上的各个进程之间进行会话
- 利用传输层提供的端到端的服务,向表示层提供它的增值服务,主要为表示层实体或用户进程建立连接并在连接上有序地传输数据,这就是会话,也称建立同步(SYN)
- 负责管理主机间的会话进程,包括建立、管理及终止进程间的会话
- 可以使用校验点使通信会话在通信失效时从校验点继续恢复通信,实现数据同步
6)表示层(Presentation Layer)
- 主要处理在两个通信系统中交换信息的表示方式
- 不同机器采用的编码和表示方法不同,使用的数据结构也不同
- 采用插象的标准方法定义数据结构,并采用标准的编码形式,使不同表示方法的数据和信息之间能互相交换
- 实现数据压缩、加密和解密
7)应用层(Application Layer)
- 是 OSI 参考模型的最高层,是用户与网络的界面
- 为特定类型的网络应用提供访问 OSI 参考模型环境的手段
- 用户的实际应用多种多样,因此应用层协议最多、最复杂
- 典型的协议有用于文件传送的 FTP、用于电子邮件的 SMTP、用于万维网的 HTTP 等
(2)TCP/IP 参考模型

1)网络接口层
- 类似于 OSI 的物理层和数据链路层
- 作用是从主机或结点接收IP分组,并把它们发送到指定的物理网络上
2)网际层
- 网际层(主机 - 主机)是TCP/IP 体系结构的关键部分
- 类似于 OSI 的网络层
- 网际层将分组发往任何网络,并为之独立地选择合适的路由,但它不保证各个分组有序地到达,各个分组的有序交付由高层负责
3)传输层
- 类似于 OSI 的传输层
4)应用层
- 应用层(用户 - 用户或进程 - 进程)包含所有的高层协议,如虚拟终端协议(Telnet)、文件传输协议(FTP)、域名解析服务(DNS)、电子邮件协议(SMTP)和超文本传输协议(HTTP)
(3)TCP/IP 模型与 OSI 参考模型的比较

-
相似之处:
- 都采取分层的体系结构
- 都是基于独立的协议栈的概念
- 都可以解决异构网络的互连,实现世界上不同厂家生产的计算机之间的通信
-
不同之处:
- OSI 参考模型的最大贡献就是精确地定义了三个主要概念:服务、协议和接口;而TCP/IP 模型在这三个概念上却没有明确区分
- OSI 参考模型是 7 层模型,而 TCP/IP 模型是 4 层结构
- OSI 参考模型先有模型,后有协议规范,通用性良好,适合描述各种网络;TCP/IP 模型正好相反,即先有协议栈,后建立模型,因此不适合任何其他的非 TCP/IP 网络
- OSI 参考模型在网络层支持无连接和面向连接的通信,但在传输层仅有面向连接的通;而 TCP/IP 模型认为可靠性是端到端的问题,因此它在网际层仅有一种无连接的通信模式,但传输层支持无连接和面向连接两种模式
(4)原理体系结构


基于通信协议栈进行通信的结点的数据传输过程

-
浏览器发送:
- 应用层:
- 按照
HTTP协议的规定构建一个HTTP请求报文(请求要干什么) - 将
HTTP请求的报文交给运输层处理
- 按照
- 运输层:
- 给
HTTP请求报文添加一个TCP首部(区分应用进程),使之成为TCP报文段 - 将
TCP报文段交给网络层处理
- 给
- 网络层:
- 给
TCP报文段添加一个IP首部(使之可以在互联网上传输),使之成为 `IP数据报 - 将
IP数据报交付给数据链路层处理
- 给
- 数据链路层:
- 给
IP数据报添加一个首部【让其能在一段链路上传输,能被相应主机接收】 和一个尾部【让目的主机检查所接收到的帧是否有误码】,使之成为帧 - 数据链路层将
帧交给物理层
- 给
- 物理层:
- 将帧看作比特流,如果网络是以太网,它还会在帧上加前导码【让目的主机做好接收帧的准备】
- 接着将比特流变成相应信号发送到传输媒体
- 应用层:
-
路由器转发:
- 物理层收到信号将其变为比特流,去掉前导码后,将其交付给数据链路层【交付的实际是帧】
- 数据链路层将帧去掉首部和尾部后,将其交付给网络层【交付的实际是 IP 数据报】
- 网络层解析 IP 数据报首部,从中提取目的网络地址,然后查找自身路由表,确定转发端口,接着数据链路层封装,物理层再封装,将比特流变成信号发送出去
-
服务器接收:
- 物理层收到信号将其变为比特流,去掉前导码后,将其交付给数据链路层【交付的实际是帧】
- 数据链路层收到帧后,去除首部和尾部,将其交付给网络层【交付的实际是 IP 数据报】
- 网络层收到 IP 数据报后,去除 IP 首部,将其交付给运输层【交付的实际是 TCP 报文】
- 运输层收到 TCP 报文后,从中得知是与哪个端口上的进程通信,去除 TCP 头部后,交付给应用层【交付的实际是 HTTP 请求报文】
- 应用层收到 HTTP 请求报文后,将其解析给对应进程,并执行相关操作,返回 HTTP响应报文
第2章 物理层
一、通信基础
1、基本概念
(1)数据、信号和码元
- 数据:传送信息的实体
- 信号:数据的电气或电磁表现
- 数据和信号都有模拟或数字之分:
- 模拟信号/数据:连续变化
- 数字信号/数据:有限的离散值
- 码元:
- 指用一个固定时长的信号波形(数字脉冲)表示一位 k 进制数字,代表不同离散数值的基本波形
- 是数字通信中数字信号的计量单位,这个时长内的信号称为 k 进制码元,该时长称为码元宽度
- 在使用二进制编码时,1 码元表示 2 bit 信息量
(2)信源、信道与信宿
- 数据通信系统主要划分为三部分:
- 信源:产生和发送数据的源头
- 信道:信号的传输介质
- 信宿:接收数据的终点

- 信道分类:
- 按传输信号:
- 模拟信道用于传输模拟信号
- 数字信道用于传输数字信号
- 按传输介质:
- 无线信道
- 有线信道
- 按传输信号:
- 信号分类:
- 基带信号:将数字信号 1 和 0 直接用两种不同的电压表示,然后送到数字信道上传输【基带传输】
- 数字基带信号 (CPU 和内存传输的信号)
- 模拟基带信号 (麦克风收到声音后转变的电信号)
- 宽带信号:将基带信号进行调制后形成频分复用模拟信号,然后送到模拟信道上传输【宽带传输】
- 基带信号:将数字信号 1 和 0 直接用两种不同的电压表示,然后送到数字信道上传输【基带传输】
(3)传输方式
1)串行/并行传输
- 串行传输是指数据是
1个比特1个比特依次发送的,发送端与接收端之间只用1条数据传输线即可 - 并行传输是指一次发送
n个比特而不是一个比特,在发送端和接收端之间要有n条传输线路

2)同步/异步传输
-
同步传输:
- 指数据块以稳定的比特流形式传输,字节之间没有间隔
- 接收端在每个比特信号的中间时刻 (有区分
0,1的标志) 进行检测,以判别接收到的是比特0还是 `1 - 收发双方时钟同步方法:
- 外同步:在收发双方之间加一条单独的时钟信号线
- 内同步:发送端将时钟同步信号编码到发送数据中一起传输 (如曼彻斯特编码) `

-
异步传输:
- 指以字节为独立的传输单位,字节间的时间间隔不是固定的
- 接收端仅在每个字节的起始处对字节内的比特实现同步
- 通常传送前要在每个字节前后加上起始位和结束位
- 异步是指字节之间异步【字节之间的时间间隔不固定】
- 字节中的每个比特仍然要同步【各比特的持续时间是相同的】

3)通信方式
- 单工通信:
- 只有一个方向的通信而没有反方向的交互,如无线电广播、电视广播
- 只需一个信道
- 半双工通信:
- 通信双方都可发送或接收信息,但不能同时
- 需要两个信道
- 全双工通信:
- 通信双方可同时发送或接收信息
- 需要两个信道

(4)速率、波特与带宽
- 速率:指数据传输速率,表示单位时间内传输的数据量
- 码元传输速率:
- 表示单位时间内数字通信系统所传输的码元数
- 也称:调制速率、符号速率
- 单位:波特(Baud)
- 1 波特表示数字通信系统每秒传输 1 个码元
- 码元速率与进制数无关
- 信息传输速率:
- 表示单位时间内数字通信系统传输的二进制码元数(比特数)
- 也称:比特率
- 单位:比特/秒 (b/s)
- 码元传输速率:
- 注意:
- 若 1 码元携带 n 比特的信息量,则 1 Baud = n bit/s `
- 当 1 码元只携带 1 比特的信息量时,波特率(码元/秒)与比特率(比特/秒)在数值上是相等的
- 当 1 个码元携带 n 比特的信息量时,波特率(码元/秒)转换成比特率(比特/秒)时,数值要乘以 n
- 带宽:
- 在模拟信号系统中:
- 表示某个信道所能传输信号的频率范围,即最高频率与最低频率之差
- 也称:频率带宽
- 单位:赫兹(Hz)
- 在计算机网络中:
- 表示网络的通信线路所能传输数据的能力,即最高数据率
- 单位:b/s
- 在模拟信号系统中:
2、信道的极限容量
- 造成信号失真的主要因素:
- 码元的传输速率:传输速率越高,信号经过传输后的失真就越严重
- 信号的传输距离:传输距离越远,信号经过传输后的失真就越严重
- 噪声干扰:噪声干扰越大,信号经过传输后的失真就越严重
- 传输媒体的质量:传输媒体质量越差,信号经过传输后的失真就越严重
- 码间串扰:
- 接收端收到的信号波形失去码元之间的清晰界限的现象
- 如果信道的频带越宽,则能够通过的信号的高频分量就越多,那么码元的传输速率就可以更高,而不会导致码间串扰
(1)奈奎斯特定理(奈氏准则)
- 极限码元传输速率: 2 W 波特 = 2 W 码元/秒
- W :理想低通信道的带宽(单位 Hz)
- V :每个码元离散电平的数目【指有多少种不同的码元】
- 比如有 16 种不同的码元,则需要 4 个二进制位,因此信息传输速率是码元传输速率的 4 倍
- 理想低通信道(无噪,带宽有限)下的极限数据传输速率:2Wlog_{2}V (单位为 b/s)
- 对于奈氏准则,可以得出以下结论:
- 在任何信道中,码元传输速率是有上限的,若超过此上限,就会出现严重的码间串扰问题
- 信道的频带越宽(即通过的信号高频分量越多),就可用更高的速率进行码元的有效传输
- 奈氏准则给出了码元传输速率的限制,但并未对信息传输速率给出限制,即未对一个码元可以对应多少个二进制位给出限制
(2)香农定理
- 给出了带宽受限且有高斯白噪声干扰的信道的极限数据传输速率
- 当用此速率进行传输时,不会产生误差
- C:信道的极限信息传输速率(单位为 b/s)
- W:信道的频率带宽(单位为 Hz)
- S: 信道所传输信号的平均功率
- N :信道内部的高斯噪声功率
- S/N 为信噪比:信号的平均功率与噪声的平均功率之比
- 对于香农定理,可以得出以下结论:
- 对一定的传输带宽和一定的信噪比,信息传输速率的上限是确定的
- 信道的带宽或信道中的信噪比越大,信息的极限传输速率越高
- 只要信息传输速率低于信道的极限传输速率,就能找到某种方法来实现无差错的传输
- 香农定理得出的是极限信息传输速率,实际信道能达到的传输速率要比它低不少
例题



3、编码与调制
- 编码:将数据转换成数字信号的过程
- 调制:将数据转换成模拟信号的过程


(1)数字数据编码为数字信号
- 数字数据编码用于基带传输中,即在基本不改变数字数据信号频率的情况下,直接传输数字信号

1)归零(RZ)编码
- 高电平表示 1,低电平表示 0(或者相反)
- 每个码元的中间均跳变到零电平(归零)
- 接收方根据跳变调整本方的时钟基准,实现同步机制
- 在传输过程中处于低电平的情况多,信道利用率低

2)非归零(NRZ)编码
- 与 RZ 编码的区别是不用归零
- 一个时钟全部用来传输数据,编码效率最高
- 收发双方存在同步问题,需要双方都带有时钟线

3)反向非归零(NRZI)编码
- 用电平的跳变表示 0,电平保持不变表示 1
- 跳变信号本身可作为一种通信机制
- 既能传输时钟信号,又能尽量不损失系统带宽
- USB 2.0 采用
4)曼彻斯特编码
- 每个码元的中间都发生电平跳变
- 电平跳变既作为时钟信号(用于同步),又作为数据信号
- 向下跳变表示 1,向上跳变表示 0(或者相反)
- 标准以太网采用

5)差分曼彻斯特编码
- 每个码元的中间都发生电平跳变【仅作为时钟信号】
- 数据的表示在于每个码元开始处是否有电平跳变:
- 无跳变表示 1
- 有跳变表示 0
- 抗干扰能力更强

(2)模拟数据编码为数字信号
- 计算机内部处理的是二进制,处理的都是数字音频,所以需要将模拟音频通过采样、量化转换成有限个数字表示的离散序列(即实现音频数字化)
- 典型的例子:对音频信号进行编码的脉码调制(PCM)
- 主要步骤包括三步:
- 采样:
- 对模拟信号进行周期性扫描,把时间上连续的信号变成时间上离散的信号
- 采样定理【奈奎斯特定理】:f_{采样} ≥ 2f_{max},保证采样后的数字信号完整保留原模拟信号的信息
- 量化:
- 把抽样取得的电平幅值按照一定的分级标度转化为对应的数字值,并取整数
- 这就把连续的电平幅值转换为离散的数字量
- 编码:
- 把量化的结果转换为与之对应的二进制编码
- 采样:
(3)数字数据调制为模拟信号
- 使用基本调制方法,1 个码元只能包含 1 个比特信息:
- 调幅:
- 即载波的振幅随基带数字信号而变化
- 如 0 或 1 分别对应无载波或有载波输出
- 调频:
- 即载波的频率随基带数字信号而变化
- 如 0 或 1 分别对应低频或高频
- 调相:
- 即载波的初相随基带数字信号而变化
- 如 0 或 1 分别对应正弦波或余弦波
- 调幅:

- 使用混合调制方法,1个码元可以包含 4 个比特信息:
- A\sin \omega(x+\dfrac{\varphi}{\omega})
- 因为载波的频率和相位是相关的,即频率是相位随时间的变化率,所以载波的频率和相位不能进行混合调制
- 载波的相位和振幅可以结合起来一起调制:正交振幅调制 QAM
- 设波特率为 B,采用 m 个相位,每个相位有 n 种振幅,则该 QAM 的数据传输速率 R 为 R=Blog_{2}(mn)(单位为b/s)

(4)模拟数据调制为模拟信号
- 为了保证传输的有效性,需要将信号调制成频率更高的信号来应对传输过程的衰减
- 接收方接收到调制的信号后,通过解调器将信号还原为原来的信号
- 可使用频分复用 FDM 技术,充分利用宽带资源
- 例子:电话机和本地局交换机采用模拟信号传输模拟数据的编码方式
3、常见的信道复用技术
(1)频分复用 FDM
- 频分复用的所有用户同时占用不同的频率资源进行通信

(2)时分复用 TDM
- 时分复用的用户在不同的时间占用同样的频带

(3)波分复用 WDM
- 根据频分复用的设计思想,可在一根光纤上同时传输多个频率(波长)相近的光载波信号,实现基于光纤的频分复用技术
- 目前可以在一根光纤上复用 80 路或更多路的光载波信号。因此,这种复用技术也称为密集波分复用 DWDM

(4)码分复用 CDM
- 码分复用常称为码分多址 CDMA,它是在扩展通信技术的基础上发展起来的一种无线通信技术
- 每个用户可以在相同的时间使用相同的频带进行通信
- 将每个比特时间划分为 m 个更短的时间片,称为码片(Chip)
- m 的取值通常为 64 或 128
- 每个站点都被指派一个唯一的 m 比特码片序列
- 某个站要发送比特 1,则发送它自己的 m 比特码片序列
- 某个站要发送比特 0,则发送它自己的 m 比特码片序列的反码
- 如果有两个或多个站同时发送数据,则信道中的信号就是这些站各自所发送一系列码片序列或码片序列反码的叠加
- 为了从信道中分离出每个站的信号,给每个站指派码片序列时,必须遵循以下规则:
- 分配给每个站的码片序列必须各不相同,实际常采用伪随机码序列
- 分配给每个站的码片序列必须相互正交,即各码片序列相应的码片向量之间的规格化内积为 0

举例




(5)复用与多址的区别
- 复用:
- 将单一媒体的频带资源划分成很多子信道,这些子信道之间相互独立,互不干扰
- 从媒体的整体频带资源上看,每个子信道只占用该媒体频带资源的一部分
- 多址:
- 更确切地应该称为多点接入
- 处理的是动态分配信道给用户
- 在用户仅仅暂时性地占用信道的应用中是必须的【所有的移动通信系统基本上都属于这种情况】
- 相反,在信道永久地分配给用户的应用中,多址是不需要的 【对于无线广播或电视广播站】
- 频分复用
FDM和时分复用TDM可用于多点接入,相应名词是频分多址 FDMA和时分多址 TDMA - 从某种程度上,FDMA、TDMA、CDMA 可以分别看作是 FDM、TDM、CDM 的应用
二、传输介质
- 传输介质:是计算机网络设备之间的物理通路,也称为传输没提或传输媒介
- 传输媒体并不包含在计算机网络体系结构中

- 物理层规定了电气特性,所以能识别所传送的是比特流
- 传输介质可以分为:导向性传输介质和非导向性传输介质
- 导向传输介质:铜线,光纤
- 非导向传输媒介质:空气,真空,海水
1、导向传输介质
(1)双绞线
- 把两根互相绝缘的铜导线并排放在一起,然后用规则的方法绞合起来
- 绞合可减少对相邻导线的电磁干扰
- 在局域网和传统电话网中普遍使用
- 屏蔽双绞线 STP:在双绞线的外面再加上一层用金属丝编织成的屏蔽层,提高抗电磁干扰的能力
- 非屏蔽双绞线 UTP:无屏蔽层的双绞线
- 优缺点:
- 价格便宜
- 通信距离一般为几千米到数十千米
- 长距离的模拟传输需要放大器放大衰减信号
- 长距离的数字传输需要用中继器将失真的信号整形

(2)同轴电缆
- 由内导体、绝缘层、网状编织屏蔽层和塑料外层所组成
- 基带同轴电缆 (50 \Omega):传送基带数字信号,早期用于局域网
- 宽带同轴电缆 (75 \Omega):传送宽带信号,目前主要用于有线电视
- 优缺点:
- 由于外导体屏蔽层的作用,同轴电缆具有很好的抗干扰特性
- 被广泛用于传输较高速率的数据
- 传输距离比双绞线更远,价格也更高

(3)光纤
-
光纤通信:
- 利用光导纤维(光纤)传递光脉冲来进行通信
- 有光脉冲表示 1,无光脉冲表示 0
- 可见光的频率约为 10^8 MHz 量级,因此光纤通信系统的带宽极大

-
原理:基于全反射,当光纤碰到包层时就会折射到纤芯,这个过程不断重复,光就沿着光纤传输下去

-
分类:

-
优点:
- 传输损耗小,中继距离长,对远距离传输特别经济
- 抗雷电和电磁干扰性能好
- 无串音干扰,保密性好,也不易被窃听或截取数据
- 体积小,重量轻
-
缺点:
- 割接需要专用设备
- 光电接口价格较贵
2、非导向传输介质


(1)无线电波
- 具有较强的穿透能力,可以传输很长的距离
- 广泛应用于通信领域(无线手机通信、无线局域网)
- 无线电波使信号向所有方向扩散,有效距离范围内的接收设备无须对准某个方向,简化
(2)微波、红外线和激光
- 微波:
- 通信频率较高,频段范围较宽,载波频率通常为 2~40 GHz,因此通信容量大
- 信号沿直线传播,超过一定距离后需要使用中继站
- 卫星通信:
- 利用地球同步卫星作为中继来转发微波信号
- 3 颗同步卫星可基本实现全球通信
- 优点:通信容量大、距离远、覆盖广
- 缺点:保密性差、端到端的传播时延长
- 红外线:
- 点对点无线传输
- 直线传播,中间不能有障碍物,传输距离短
- 传输速率低 (
4Mb/s~16Mb/s)
- 可见光:
- 即光源作为信号源,前景好,暂时未被大范围应用
3、物理层接口的特性
- 机械特性:指明接口所用接线器的形状和尺寸、引脚数目和排列、固定和锁定装置
- 电气特性:指明在接口电缆的各条线上出现的电压范围
- 功能特性:指明某条线上出现的某一电平的电压表示何种意义
- 过程特性:指明对于不同功能的各种可能事件的出现顺序,也称规程特性
三、物理层设备
1、中继器
- 主要功能:整型、放大并转发信号,以消除信号经过一长段电缆后而产生的失真和衰减,使信号的波形和强度达到所需要的要求,进而扩大网络传输的距离
- 原理:信号再生,而非简单地将衰减的信号放大
- 两个端口:
- 数据从一个端口输入,再从另一个端口发出
- 端口仅作用于信号的电气部分,并不管数据中有没有错误数据或者不适于网段的数据
- 两端可以连接相同媒体,也可以连接不同媒体
- 两端的网络部分是网段(不是子网)
- 注意:
- 中继器连接的几个网段仍然是一个局域网
- 中继器工作在物理层,因此它不能连接两个具有不同速率的局域网
- 如果某个网络设备具有存储转发的功能,那么可以认为它能连接两个不同的协议
- 中继器没有存储转发功能,因此两端的网段一定要使用同一个协议
- 放大器和中继器都起放大作用:
- 放大器放大的是模拟信号,原理是将衰减的信号放大
- 中继器放大的是数字信号,原理是将衰减的信号整形再生
- 5-4-3 规则:
- 5 个网段,4 个中继器或集线器,3 个网段为主机段
- 在同一个由中继器或集线器互联的网络中,任意发送方和接收方最多只能经过 4 个路由器,5 个网段

2、集线器 Hub
- 实质上是一个多端口的中继器
- 主要功能:
- 对接收到的信号进行再生整形放大,以扩大网络的传输范围
- 把所有节点集中在以它为中心的节点上
- 端口收到数据后,从除输入端口外的所有端口广播出去
- 不具备信号的定向传送能力,是一个共享设备
- 集线器主要使用双绞线组建共享网络,是从服务器连接到桌面的最经济方案
- 集线器的每个端口连接的网络部分是同一个网络的不同网段
- 注意:
- 多台计算机必然会发生同时通信的情形,因此集线器不能分割冲突域,所有集线器的端口都属于同一个冲突域
- 使用集线器的以太网虽然物理拓扑是星型的,但逻辑上仍是一个总线网,各站共享总线资源,使用的还是
CSMA/CD协议 - 集线器只工作在物理层,它的每个接口仅简单地转发比特,不进行碰撞检测(由各站网卡检测)
- 集线器一般都有少量的容错能力和网络管理功能
- 集线器是半双工模式,收发不能同时进行

- 集线器在一个时钟周期中只能传输一组信息,如果一台集线器连接的机器数目较多,且多台机器经常需要同时通信,那么将导致信息碰撞,使得集线器的工作效率很差
- 一个带宽为 10 Mb/s 的集线器上连接了 8 台计算机,当这 8 台计算机同时工作时,每台计算机真正所拥有的带宽为 10/8 Mb/s=1.25 Mb/s
第3章 数据链路层
一、数据链路层概述
1、主要任务
- 在物理层提供服务的基础上向网络层提供服务
- 加强物理层传输原始比特流的功能,将物理层提供的可能出错的物理连接改造为逻辑上无差错的数据链路,使之对网络层表现为一条无差错的链路

2、为网络层提供服务
- 无确认的无连接服务:
- 源主机发送帧不需要先建立链路链接,目的主机收到帧时不需要发回确认
- 数据传输的可靠性由高层负责
- 适用于实时通信或误码率较低的通信信道 —— 以太网
- 有确认的无连接服务:
- 源主机不需建立,目的主机必须发回确认
- 源主机在规定时间未收到确定信号,就重传丢失帧
- 适用于误码率较高的通信信道 —— 无线通信
- 有确认的有连接服务:
- 三个阶段:建立链路、传输帧、释放链路
- 目的主机对收到的每一个帧都要返回确认
- 适用于对可靠性,实时性要求较高的场合
3、信道分类
- 点对点信道:
- 一对一
- PPP 协议
- 广播信道:
- 一对多
- 有限局域网使用 CSMA/CD 协议
- 无线局域网使用 CSMA/CA 协议
4、三个重要问题
- 封装成帧和透明传输:
- 数据链路层给上层交付下来的协议数据单元 PDU 添加帧首部和帧尾部,这称为封装成帧
- 如果能够采取措施,使得数据链路层对上层交付的 PDU 的内容没有任何限制,就好像数据链路层不存在一样,就称其为透明传输
- 差错检测:
- 帧在传输的过程中可能出现误码
- 接收方根据发送方添加在帧尾部中的检错码,可以检测出帧是否出现了误码
- 可靠传输:
- 不可靠传输服务:收到有误码的帧,直接丢弃,其他什么也不做;未收到发送方发送的帧,也不进行任何处理
- 可靠传输服务:实现发送方发送什么,接收方最终都能正确收到
5、相关概念
-
链路:指从一个节点到相邻节点的一段物理线路(有线或无线),而中间没有任何其他的交换节点

-
数据链路:
- 把实现控制数据传输的通信协议的硬件和软件加到链路上
- 由网络适配器【网卡】和其相应软件驱动程序实现通信协议
- 一般网卡包含物理层和数据链路层的功能

-
链路管理:数据链路层的建立、维持和释放过程
-
帧:数据链路层对等实体之间在水平方向进行逻辑通信的协议数据单元 PDU

二、封装成帧和透明传输
1、封装成帧(组帧)
-
指数据链路层给上层交付下来的协议数据单元 PDU添加帧首部和帧尾部
-
组帧主要解决:帧定界、帧同步、透明传输等问题
- 帧头和帧尾中包含有重要的控制信息


- 帧头和帧尾的作用之一就是帧定界


- 帧头和帧尾中包含有重要的控制信息
-
注意:
- 在网络中信息是以帧为最小单位进行传输的,接收端要正确地接收帧,必须要清楚该帧在一串比特流中从哪里开始到哪里结束
- 分组(即 IP 数据报)是包含在帧中的数据部分,不需要加尾部来定界
- 为了提高帧的传输效率,应当使帧的数据载荷的长度尽可能地大于首部和尾部的长度
- 并不是每一种数据链路层协议的帧都包含帧定界标志【以太网 V2 的 MAC 帧】
-
最大传送单元(MTU):
- 每一种数据链路层协议都规定了帧的数据载荷的长度上限
- 以太网的 MTU 为 1500 个字节

-
组帧方法:较常用的是零比特填充法和违规编程法
(1)字符计数法
- 在帧首部使用一个计数字段来记录该帧所含的字节数【包括计数字段所占用的 1 个字节】
- 缺点:如果计数字段出错,就失去了帧定界划分的依据

(2)字节填充法
- 使用特定字节来定界一帧的开始与结束
- SOH 表示帧的首部开始
- EOT 表示帧的结束
- 在特殊字符前面填充一个转义字符 ESC 来区分
- 接收方收到数据会删除 ESC 然后得到原来的数据

(3)零比特填充法
- 允许数据帧包含任意个数的比特,使用 01111110 标志一帧的开始和结束
- 在数据中如果出现连续的 5 个 1,就插入一个 0
- 早期使用的 HDLC 协议采用这种方法
- 很容易用硬件实现,性能优于字符填充法

(4)违规编程法
- 在物理层进行比特编码时,通常采用违规编码法
- 局域网 IEEE 802 标注采用这种方法
- 不采用任何填充技术便能实现数据的透明传输
- 只适合于采用冗余编码的特殊编码环境
2、透明传输
-
数据链路层对上层交付下来的协议数据单元 PDU 没有任何限制,就好像数据链路层不存在一样 【保证接收方接到的数据是完整的数据】
-
面向字节的物理链路使用字节填充的方法

-
面向比特的物理链路使用比特填充的方法

三、差错检测
1、误码的相关概念
- 比特差错:实际的通信链路都不是理想的,比特在传输过程中可能会产生差错
- 比特 1 可能变成比特 0
- 比特 0 可能变成比特 1
- 误码率 BER:在一段时间内,传输错误的比特占所传输比特总数的比率
- 提高链路的信噪比,可以降低误码率
- 使用差错检测码(如
Mac帧尾的FCS) 来检测数据在传输过程中是否产生了比特差错,是数据链路层所要解决的重要问题之一 - 检测分类:
- 检错码:只能检测错误,不能纠正错误
- 纠错码:可以纠正错误,但是开销大
2、检错编码
- 检错编码都采用冗余编码技术,常用的检错编码有奇偶奇偶校验码和循环冗余校验码
(1)奇偶检验码
- 奇校验:是在待发送的数据后面添加 1 个校验位,使得添加该校验位后的整个数据中比特 1 的个数为奇数
- 偶校验:是在待发送的数据后面添加 1 个校验位,使得添加该校验位后的整个数据中比特 1 的个数为偶数


- 注意:
- 如果有奇数个位发生误码,则奇偶性发生变化,可以检查出误码
- 如果有偶数个位发生误码,则奇偶性不发生变化,不能检查出误码 (漏检)
(2)循环冗余码 CRC
- 基本思想:
- 收发双方约定好一个生成多项式 G(x)
- 发送方基于待发送的数据和 G(x),计算出冗余码【帧检测序列 FCS】,将其添加到待传输数据的后面一起传输
- 接收方通过生成多项式 G(x),计算收到的数据和冗余码是否产生了误码
- 发送方的 FCS 生成和接收方的 CRC 检验都是由硬件实现
- CRC 有很好的检错能力,漏检率非常低
- CRC 具有纠错功能,只是数据链路层仅使用了检错功能,检测到帧出错则直接丢弃
- 除法内的相减实际是做异或运算




3、纠错编码(海明码)
- 实现原理:在有效信息位中加入几个校验码组成海明码,把海明码的每个二进制位分配到几个奇偶校验组中,当某一位出错后,就会引起有关的几个校验位的值发生变化
- 该方法不但可以发现错位,还能指出错位的位置
- 海明码可以纠正一位差错
- 纠错 d 位,需要码距 2d+1 的编码
- 检错 d 位,需要码距 d+1 的编码

四、流量控制与可靠传输机制
1、流量控制与滑动窗口机制
- 流量控制:由接收方控制发送发的发送速率,使接收方有足够的缓冲空间来接收每个帧
- 数据链路层控制的是相邻结点之间的流量,而传输层控制的是端到端的流量
- 数据链路层的控制手段是接收方收不下就不返回确认,传输层的控制手段是接收方通过确认报文段中的窗口值来调整发送方的窗口值
(1)停止 - 等待流量控制基本原理
- 发送方每次只允许发送一个帧
- 接收方每接收一个帧都要反馈一个应答信号,表示可以接收下一帧
- 发送方收到应答信号后才能发送下一帧
- 若发送方没有收到接收方反馈的应答信号,则需要一直等待
- 发送方每发送完一个帧,就进入等待接收方确认信息的过程中,因而传输效率很低
(2)滑动窗口流量控制基本原理
- 发送窗口 W_T:
- 发送方维持一组连续的允许发送帧的序号
- 表示在还未收到确认信息的情况下,发送方最多还能发送多少个帧和哪些帧
- W_T = 1 :发送方每收到一个按序确认的确认帧,就将发送窗口向前滑动一个位置

- 接收窗口 W_R:
- 接收方维持一组连续的允许接收帧的序号
- 控制可以接收哪些帧和不可以接收哪些帧
- W_R = 1: 接收方每收到一个序号落入窗口的数据帧,就允许将该帧收下,然后将接受窗口向前滑动一个位置,并发回确认

2、可靠传输机制
- 可靠传输:发送方发送的数据都能被接收方正确的接收,通常采用超时和确认重传两种机制实现
- 确认:接收方每收到发送方发来的数据帧,都要向发送方发回一个确认帧,表示已正确地收到该数据帧
- 超时重传:发送方在发送一个数据帧后就启动一个计时器,若在规定时间内没有收到所发送数据帧的确认帧,则重发该数据帧,直到发送成功为止
- 传输差错:
- 出现在数据链路层上层:分组重复,分组失序,分组丢失
- 出现在数据链路层及其下层:误码(比特差错)
- 一般情况下,有线链路的误码率比较低,为了减小开销,并不要求数据链路层向上提供可靠传输服务,即使出现了误码,可靠传输的问题由其上层处理
- 无线链路易受干扰,误码率比较高,因此要求数据链路层必须向上层提供可靠传输服务
- 可靠传输服务并不仅局限于数据链路层,其他各层均可选择实现可靠传输

- 自动重传请求(ARQ):
- 通过接收方请求发送方重传出错的数据帧来恢复出错的帧,是通信中用于处理信道差错的方法之一
- 重传的请求是发送方自动进行的,而不是接收方请求发送方重传某个误码的数据分组
- 在 ARQ 协议中,数据帧和确认帧都必须编号,以区分确认接收方是对哪个帧确认,以及哪些帧还未确认
- 分类:
- 停止-等待 ARQ (SW)
- 后退 N 帧 ARQ (GBN)
- 选择重传 ARQ (SR)

(1)停止-等待 ARQ 协议:SW / 单帧滑动窗口
-
发送方发送数据
DATA,接收方接收时进行差错检测 -
如果没有出现误码,则接收信息并返回
ACK确认分组给发送方,发送方收到ACK后,一次通信结束 -
如果出现误码,则丢弃信息并返回
NAK拒绝分组给发送方,发送方收到NAK后,重传DATA

-
引入超时重传机制:
- 解决
DATA中途丢失的问题 - 发送方可在每发送完一个数据分组时就启动一个超时计时器
- 若到了超时计时器所设置的超时重传时间(RTO),但发送方仍未收到接收方的 ACK 或 NAK,就重传之前已发送过的数据分组
- 在数据链路层点对点的往返时间好确认,重传时间好确认
- 在运输层,由于端到端往返时间不确定,重传时间不好确认

- 解决
-
对数据帧编号:
- 避免分组重复的传输错误
- 对于 SW 协议,每次发送一个数据分组就停止等待,只需一个比特来编号【0 / 1】

-
对确认帧编号:
- 避免确认分组迟到的情况【数据链路层一般不会出现】

- 避免确认分组迟到的情况【数据链路层一般不会出现】
-
信道利用率:


- 若出现超时重传,对于传送有用的数据信息来说,信道利用率还要降低
- 在往返时间 RTT 相对较大的情况下,为了提高信道利用率,收发双方不适合采用停止-等待协议,而可以选择使用回退 N 帧(GBN)协议或选择重传(SR)协议
例题

(2)回退 N 帧 ARQ 协议:GBN / 多帧滑动窗口
- 回退 N 帧协议采用流水线传输方式,并且利用发送窗口来限制发送方连续发送数据分组的数量,这属于连续 ARQ 协议
- 接收窗口尺寸只能等于
1,因此接收方只能按序接收正确到达的数据分组 - 在使用流水线传输方式时,发送方不能无限制地连续发送数据分组,否则可能会导致网络中的路由器或接收方来不及处理这些数据分组,进而导致数据分组的丢失,这实际上是对网络资源的浪费

- 信道利用率:假设连续 ARQ 协议的发送窗口为 n:
- nT_D<T_D+RTT+T_A:即在一个发送周期内可以发送完 n 个分组
- $nT_D>=T_D+RTT+T_A$:即在一个发送周期内可以发不完(或刚好发完) n 个分组,只要不发生差错,发送方就可不间断地发送分组,信道利用率为 1
- 信道平均(实际)数据传输速率 =
- 信道利用率 * 信道带宽(最大数据传输速率)
- 发送周期内发送的数据量 / 发送周期
1)无差错情况
- 发送方将 0-4 依次连续发送,没有出现乱序和误码
- 接收方按顺序接收他们,即每接受一个,接收窗口就向前滑动一个位置,并返回确认分组
- 发送方每接收一个,发送窗口就向前滑动一个位置
- 发送方可以将确认收到的分组从缓存中删除了,而接收方将已接收的分组择机交付给上层处理
- GBN 协议允许接收方进行累计确认:
- 连续收到多个正确的数据帧后,对最后一个数据帧发回确认信息
ACK n表示发送过来的分组 x<=n 的都收到了,下次期望收到 n+1 号帧- 优点:即使确认分组丢失,发送方也可能不必重传,减小资源开销
- 缺点:不能及时反映出确认分组的信息



2)有差错情况

3)窗口尺寸的限制


- 此时,无法分辨新旧数据分组
4)总结

5)例题

(3)选择重传 ARQ 协议:SR / 多帧滑动窗口
- 为了只重传出现差错的分组,接收方不能再采用累计确认,而需要对每个正确收到的分组进行逐一确认
- 接收方设置足够的帧缓冲区:
- 暂存那些失序但正确到达且序号落在接收窗口内的数据帧
- 数目等于接收窗口的大小


例题

五、介质访问控制
- 介质访问控制所完成的主要任务:为使用介质的每个结点隔离来自同一信道上其他结点所传送的信号,以协调活动节点的传输
- 介质访问控制(MAC)子层:用来决定广播信道中信道分配的协议属于数据链路层的一个子层
- 常见的介质访问控制方法:
- 静态划分信道:信道划分介质访问控制
- 动态分配信道:随机访问介质控制、轮询访问介质访问控制
1、信道划分介质访问控制
- 概念:
- 将使用同一传输介质的多个设备的通信隔离开来,把时域和频域资源合理地分配给这些设备
- 通过复用技术实现
- 复用:指发送端把多个发送方的信号组合在一条物理信道上进行传输,在接收端把收到的复用信号分离出来,并发送给对应的接收方

(1)频分复用 FDM
- 将信道的总频带划分为多个子频带,每个子频带作为一个子信道,每对用户使用一个子信道进行通信
- 所有用户在同一时间占用不同的频带资源
- 优点:充分利用了传输介质的带宽,系统效率较高,实现也比较容易

(2)时分复用 TDM
- 将信道的传输时间划分为一段段等长的时间片,称为 TDM 帧
- 每个用户在每个 TDM 帧中占用固定序号的时隙,每个用户所占用的时隙周期性【TDM 的长度】出现
- 所有用户在不同的时间占用同样的信道资源
- 缺点:按固定次序给用户分配时隙,信道利用率不高
- 统计时分复用(STDM):
- 按需动态分配时隙
- 当用户有数据传送时,才会分配到 STDM 帧中的时隙,提高线路的利用率
- 又称:异步时分复用

(3)波分复用 WDM
- 基于光的频分复用
- 在一根光纤中传输多种不同波长(频率)的光信号,因为波长不同,各路光信号互不干扰,最后用光分用器将各路波长分解出来
- 因为光波处于频谱的高频段,有很大的带宽,所以可以实现多路的波分复用

(4)码分复用 CDM
- 采用不同的编码来区分各路原始信号的一种复用方式,同时共享信道的频率和时间
- 常称为码分多址 CDMA
- 每个用户可以在相同的时间使用相同的频带进行通信
- 将每个比特时间划分为 m 个更短的时间片,称为码片(Chip)
- m 的取值通常为 64 或 128
- 每个站点都被指派一个唯一的 m 比特码片序列
- 某个站要发送比特 1,则发送它自己的 m 比特码片序列
- 某个站要发送比特 0,则发送它自己的 m 比特码片序列的反码
- 如果有两个或多个站同时发送数据,则信道中的信号就是这些站各自所发送一系列码片序列或码片序列反码的叠加
- 为了从信道中分离出每个站的信号,给每个站指派码片序列时,必须遵循以下规则:
- 分配给每个站的码片序列必须各不相同,实际常采用伪随机码序列
- 分配给每个站的码片序列必须相互正交,即各码片序列相应的码片向量之间的规格化内积为 0

举例




2、随机访问介质访问控制
- 在总线型网络中,两个或多个用户同时发送信息时,就会产生帧冲突【碰撞】
- 核心思想:胜利者通过争用获得信道,进而获得信息的发送权
- 结点之间既不共享时间,又不共享空间
- 实质是一种将广播信道转换为点到点信道的机制
(1)ALOHA 协议
1)纯 ALOHA 协议
- 不监听信道,不按时间槽发送,随即重发,即想发就发
- 吞吐量很低

2)时隙 ALOHA 协议
- 同步各站点的时间,将时间划分为一段段等长的时隙T_0
- 规定站点只能在每个时隙开始时才能发送帧,发送一帧的时间必须小于或等于时隙的长度
- 优点:避免了用户发送数据的随意性,降低了产生冲突的可能性,提高信道利用率

(2)CSMA 协议
- CSMA:
- 载波监听多路访问
- 每个站点在发送前都先监听公用信道,发现信道空闲后再发送
- 三种类型的 CSMA 协议比较:
| 信道状态 | 1 - 坚持 | 非坚持 | p - 坚持 |
|---|---|---|---|
| 空闲 | 立即发送数据 | 立即发送数据 | 以概率 p 发送数据,以概率 1-p 推迟到下一个时隙 |
| 忙 | 继续坚持监听 | 放弃监听,等待一个随机的时间后再监听 | 持续监听(等到下一时隙再监听),直至信道空闲 |
(3)CSMA/CD 协议(共享式以太网)
1)基本概念
- CSMA/CD:
- 载波监听多路访问/冲突检测
- 适用于总线型网络或半双工网络环境
- 全双工网络不需要【收发双方可以同时发送和接收数据,不会冲突】
- 载波监听检测到总线空闲,但是总线不一定空闲
- 不能完全避免碰撞
- 先听后发,边听边发,冲突停发,随机重发

- 帧间最小间隔:
96比特时间,指发送96比特所需要的时间- 作用:接收方可以检测出一个帧的结束,同时也使得其他站点都能有机会平等竞争信道并发送帧

2)争用期(冲突窗口)
- 主机最多经过 2\tau(\delta→0) 的时长就可以检测到本次发送是否遭受了碰撞
- 因此,以太网的端到端往返传播时延 2\tau 称为争用期
- 站点从发送帧开始,经过争用期这段时间还没有检测到碰撞,就可以肯定这次发送不会发生碰撞
- 每一个站点在自己发送帧之后的一小段时间内【取决于另一个发送帧的站点到本站点的距离,不会超过一个争用期】,存在着遭遇碰撞的可能性
- 总线的长度越长(单程端到端的传播时延越大),网络中站点数量越多,发生碰撞的可能性就越大
- 共享式以太网不能连接太多的主机,使用的总线也不能太长


- 为什么 \tau - \frac{\delta}{2} 时刻发送碰撞?
当 D 开始发送时,A 已经走了 \tau - \delta 时间,所以剩下路程所需要的时间是 \delta,
又因为 A 和 D 发送速度是相同的,因此对于 \delta 时间的路程,每人只需要走 \dfrac{\delta}{2} 时间就会相遇,
即碰撞时刻= \tau - \delta +\dfrac{\delta}{2}=\tau -\dfrac{\delta}{2}
- 为什么 t=\tau 时,D 检测到碰撞?
根据上边推论,D 走了 \dfrac{\delta}{2} 的时间路程后就发送了碰撞,此时它开始返回,经过同样的时间可以回到 D
检测到碰撞时间= \tau - \dfrac{\delta}{2}+\dfrac{\delta}{2}=\tau
- 为什么 2\tau - \delta 时,A 检测到碰撞?
与 D 检测到碰撞同理,A 走了 \tau -\dfrac{\delta}{2} 时间,因此往回走也是这么多时间
A 检测到碰撞时间= \tau -\dfrac{\delta}{2}+\tau -\dfrac{\delta}{2}=2\tau - \delta

因此其总线长度不能超过 5210 m
但考虑到其他一些因素,如转发器所带来的时延,以及产生碰撞时继续发送 32 比特或 48 比特认为干扰信号所持续的时间等,
\tau 实际上要更小
3)最小帧长 64 B
- 最小帧长:总线传播时延 * 数据传输速率 * 2
- 争用期内可发送的数据长度
- 确保共享总线以太网上的每一个站点在发送完一个完整的帧之前,能够检测出是否产生了碰撞
- 如果在争用期检测到碰撞就立即中止发送,这时已经发送出去的数据一定小于 64 字节,因此凡长度小于 64 字节的帧都是由于碰撞检测而异常中止的无效帧,收到这种无效帧应立即丢弃
- 10 Mb/s 的以太网,在争用期可发送 512 bit,即 64 B
- 如果要发送的数据非常少,那么必须加入一些填充字节,使帧长不小于 64 B
- 一般来说,帧的数据载荷的长度应远大于帧首部和尾部的总长度,这样可以提高帧的传输效率

4)退避算法
- 正在发送帧的站点一边发送帧一边检测碰撞,当检测到碰撞时就立即停止发送,退避一段随机时间后再重新发送
- 共享总线以太网中的各站点采用截断二进制指数退避(Truncated Binary Exponential Backoff)算法来选择退避的随机时间

- 使用上述退避算法可使重传需要推迟的平均时间随重传次数而增大(即动态退避),因而减小产生碰撞的概率
- 当重传达 16 次仍不能成功时,就表明同时打算发送帧的站点太多,以至于连续产生碰撞,此时应放弃重传并向高层报告
5)信道利用率

- 考虑以下这种理想情况:
- 各站点发送帧都不会产生碰撞
- 总线一旦空闲就有某个主机立即发送帧
- 每帧的发送时延为 T_0,传播时延为 \tau,占用信道的时间为 T_0+\tau
6)例题



(4)CSMA/CA 协议(802.11 无线局域网)
1)基本概念
- 无线局域网中的问题:
- 无线网卡上接收到的信号强度往往会远远小于发送信号的强度,且在无线介质上信号的动态变化范围很大,若实现冲突检测,开销很大
- 存在隐蔽站的问题:并非所有站点都能听见对方

- CSMA/CA:
- 载波监听多路访问/冲突避免
- 并不能避免所有的碰撞,而是尽量减少碰撞发生的概率
- 由于无线信道的通信质量远不如有线信道,所以 802.11 无线局域网不适用累计确认重传的方式,而使用链路层确认/重传机制(ARQ)【停止 - 等待协议】
2)帧间间隔 IFS
- 为了尽量避免碰撞,802.11 标准规定,所有的站完成发送后,必须等待一段很短的时间(继续监听)才能发送下一帧,这段时间称为帧间间隔 IFS
- SIFS(短 IFS):
- 最短的 IFS, 用来分隔属于一次对话的各帧
- 类型有 ACK帧、CTS 帧、分片后的数据帧,以及所有回答 AP 探询的帧
- PIFS(点协调 IFS):
- 中等长度的 IFS,在 PCF 操作中使用
- DIFS(分布式协调 IFS):
- 最长的 IFS
- 用于异步帧竞争访问的时延
- SIFS(短 IFS):
802.11的MAC层标准定义了两种不同的媒体接入控制方式;- 分布式协调功能 DCF:
- 没有中心控制站点,每个站点使用
CSMA/CA协议通过争用信道来获取发送权 - 这是
802.11定义的默认方式
- 没有中心控制站点,每个站点使用
- 点协调功能 PCF :
- 使用集中控制的接入算法 【一般在接入点 AP 实现】
- 是
802.11定义的可选方式,在实际中较少使用

- 分布式协调功能 DCF:
3)工作原理
- 虚拟载波监听机制:
- 源站将它要占用信道的持续时间【包括目的站发回 ACK 帧所需的时间)】及时通知给所有其他站,以便使所有其他站在这段时间内都停止发送
- 表示其他站并未监听信道,而是因收到了源站的通知才不发送数据,这种效果就像是其他站都监听了信道
- 网络分配向量 NAV:指出了完成这次帧的传送且信道转入空闲状态所需的时间
- 源站检测到信道空闲后,还需要等待 DIFS 时间:
- 其他站此时可能有优先级更高的帧需要发送,因此有
DIFS时间进行缓冲 - 若这个时间内没有高优先级的帧要发送,则说明信道是真正的空闲
- 其他站此时可能有优先级更高的帧需要发送,因此有
- 目的站接收到帧后,还需要等到 SIFS 时间才返回 ACK 确认帧:
SIFS是最短的帧间间隔,用来分割一次对话的各帧- 在这个时间里由接收状态转变为发送状态
- 发现信道忙后,等待了 DIFS 时间后,还要退避一段随机时间:
- 可能有多个站点在信道忙时都想发送帧,在
DIFS时间后他们会同时发送,而实际上多个站点同时发送数据会碰撞 - 因此需要一个随机时间将他们进行错峰发送

- 可能有多个站点在信道忙时都想发送帧,在
4)退避算法
- 当某个站要发送数据帧时,仅在这种情况下才不使用退避算法:
- 检测到信道空闲,并且该数据帧不是成功发送完上一个数据帧之后立即连续发送的数据帧
- 除此之外的以下情况,都必须使用退避算法:
- 在发送帧之前检测到信道处于忙态
- 在每一次重传一个帧时
- 在每一次成功发送帧后要连续发送下一个帧时

- 在执行退避算法时,站点为退避计时器设置一个随机的退避时间
- 当退避计时器的时间减小到 0,就开始发送数据
- 当退避计时器的时间还未减小到 0 时信道又转变为忙状态,这时就冻结退避计时器的数值,重新等待信道变为空闲,再经过
DIFS后,继续启动退避计时器
- 在进行第
i次退避时,退避时间在时隙编号 \{0,1,..,2^{i+2}-1\} 中随机选择一个,然后乘以基本退避时间 (也就是一个时隙的长度) 就可以得到随机的退避时间【为了使不同站点选择相同退避时间的概率减少】 - 当时隙编号达到
255时 (对应第6次退避) 就不再增加了
5)处理隐蔽站问题:RTS 和 CTS
- 源站在发送数据帧之前先广播一个请求发送 RTS 控制帧:
RTS能被范围内所有的站点都听到RTS包括源地址、目的地址以及这次通信 (包括相应的确认帧) 所需的持续时间
- 若 AP 正确收到 RTS 帧,且信道空闲,则等待时间 SIFS 后,向源站发送一个允许发送 CTS 控制帧:
CTS包括这次通信所需的持续时间CTS给源站明确的发送许可CTS指示其他站在预约期间内不要发送
- 源站收到 CTS 帧后,在等待时间 SIFS,就可发送数据帧
- 若 AP 正确收到源站发来的数据,则等待时间 SIFS 后就向源站发送确认帧 ACK

- 注意:
- 源站在 RTS 帧中填写的所需占用信道的持续时间 = SIFS + CTS + SIFS + 数据帧 + SIFS + ACK
- AP 在 CTS 帧中填写的所需占用信道的持续时间 = SIFS + 数据帧 + SIFS + ACK
- 使用 RTS 帧和 CTS 帧进行信道预约,也属于虚拟载波监听机制
6)CSMA/CD 与 CSMA/CA 的区别
| CSMA/CD | CSMA/CA |
|---|---|
| 可以检测冲突,但无法避免 | 发送数据的同时不能检测信道上有无冲突,本结点处没有冲突并不意味着在接收结点处就没有冲突,只能尽量避免 |
| 用于总线型以太网 | 用于无线局域网 |
| 通过电缆中的电压变化检测 | 采用能量检测、载波检测和能量载波混合检测三种检测信道空闲的方式 |
3、轮询访问:令牌传递协议
- 在轮询访问中,用户不能随机地发送信息,而要通过一个集中控制的监控站,以循环方式轮询每个结点,再决定信道的分配
- 典型的轮询访问控制协议是令牌传递协议:
- 一个令牌(Token)沿着环形总线在各站之间依次传递
- 令牌本身并不包含信息,仅控制信道的使用,确保同一时刻只有一个站独占信道
- 站点只有取得令牌后才能发送帧,发送完后释放令牌,不存在冲突
- 令牌在网环上依次传递,对所有入网计算机而言,访问权是公平的
- 网上所有结点共享网络带宽
- 适合负载很高的广播信道,即多个结点在同一时刻发送数据概率很大的信道
- 令牌环网络中令牌和数据的传递过程如下:
- 当网络空闲时,环路中只有令牌帧在循环传递
- 当令牌传递到有数据要发送的站点时,该站点就修改令牌中的一个标志位,并在令牌中附加自己需要传输的数据,将令牌变成一个数据帧,然后将这个数据帧发送出去
- 数据帧沿着环路传输,接收到的站点一边转发数据,一边查看帧的目的地址,若目的地址和自己的地址相同,则接收站就复制该数据帧,以便进一步处理
- 数据帧沿着环路传输,直到到达该帧的源站点,源站点收到自己发出去的帧后便不再转发,同时,通过检验返回的帧来查看数据传输过程中是否出错,若出错则重传
- 源站点传送完数据后,重新产生一个令牌,并传递给下一站点,交出信道控制权
六、局域网
1、基本概念
- 局域网:在一个较小的物理范围(如一所学校)内,将各种计算机、外部设备和数据库系统等通过双绞线、同轴电缆等连线介质互相连接起来,组成资源和信息共享的计算机互联网络
- 主要特点:
- 为一个单位所拥有,且地理范围和站点数目均有限
- 所有站点共享较高的总带宽,即较高的数据传输速率
- 较低的时延和较低的误码率
- 各站为平等关系而非主从关系
- 能进行广播和多播
- 局域网的特性主要由三个要素决定:
- 拓扑结构:星形、环形、总线形、星形和总线形结合的复合型结构
- 传输介质:双绞线【主流】、铜缆、光纤
- 介质访问控制方式【最重要】:
- 总线形局域网:CSMA/CD 协议、令牌总线协议
- 环形局域网:令牌环协议
- 三种特殊的局域网拓扑实现如下:
| 以太网(目前使用范围最广) | 令牌环 IEEE 802.5 | FDDI(光纤数字接口,IEEE 802.8) | |
|---|---|---|---|
| 逻辑拓扑 | 总线形 | 环形 | 环形 |
| 物理拓扑 | 星形 | 星形 | 双环 |
- IEEE 802 标准定义的局域网将数据链路层拆分为:
- 逻辑链路控制(LLC)子层:
- 与传输介质无关
- 向网络层提供无确认无连接、面向连接、带确认无连接、高速传送四种不同的连接服务类型
- 介质访问控制(MAC)子层:
- 与接入传输介质有关的内容都在 MAC 子层
- 向上层屏蔽物理层访问的各种差异
- 主要功能:组帧和拆卸帧、比特传输差错检测、透明传输
- 逻辑链路控制(LLC)子层:
2、以太网(IEEE 802.3 局域网)
(1)基本概念
- 以太网 Ethernet 是由 Xerox 公司创建并由 Xerox、Intel、和 DEC 联合开发的基带总线局域网规范,是局域网最通用的通信协议标准
- 严格来说,以太网应是符合 DIX Ethernet V 2 标准的局域网,但实际上 DIX Ethernet V 2 和 IEEE 802.3 基本相同,我们习惯上把以太网称作 IEEE 802.3 局域网
- 以太网是目前最流行的有线局域网技术
- 以太网逻辑上采用总线拓扑结构,信息以广播方式发送
- 以太网使用 CSMA/CD 方式对总线进行访问控制
- 以太网简化通信的措施:
- 采用无连接的工作方式:
- 既不对发送的数据帧编号,又不要求接收方发送确认
- 尽最大努力交付数据,提供的是不可靠服务
- 对差错的纠正由高层完成
- 发送的数据使用曼彻斯特编码的信号
- 采用无连接的工作方式:
(2)以太网传输介质、网卡
- 以太网常用的传输介质有四种:粗缆、细缆、双绞线、光纤
| 参数 | 10 BASE 5 | 10 BASE 2 | 10 BASE-T | 10 BASE-F |
|---|---|---|---|---|
| 传输媒体 | 基带同轴电缆(粗缆) | 基带同轴电缆(细缆) | 非屏蔽双绞线 | 光纤对(850 nm) |
| 编码 | 曼彻斯特编码 | 曼彻斯特编码 | 曼彻斯特编码 | 曼彻斯特编码 |
| 拓扑结构 | 总线型 | 总线型 | 星型 | 点对点 |
| 最大段长 | 500 m | 185 m | 100 m | 2000 m |
| 最多结点数 | 100 | 30 | 2 | 2 |
10 BASE-T 非屏蔽双绞线以太网拓扑结构为星型网,中心为集线器,但使用集线器的以太网在逻辑上仍是一个总线型网,属于一个冲突域
- 要将计算机连接到以太网,需要使用相应的网络适配器(Adapter),又称网络接口卡(NIC)
- 在计算机内部,网卡与 CPU之间的通信,一般是通过计算机主板上的 I/O 总线以并行传输方式进行
- 网卡与外部以太网(局域网)之间的通信,一般是通过传输媒体(同轴电缆、双绞线电缆、光纤)以串行方式进行的
- 网卡除要实现物理层和数据链路层功能,另外一个重要功能就是要进行并行传输和串行传输的转换
- 为了使网卡正常工作,还必须要在计算机的操作系统中为网卡安装相应的设备驱动程序,负责驱动网卡发送和接收帧


(3)以太网的 MAC 地址
-
当多个主机连接在同一个广播信道上,要想实现两个主机之间的通信,则每个主机都必须有一个唯一的标识,即一个数据链路层地址
-
在每个主机发送的帧的首部中,都携带有发送主机(源主机)和接收主机(目的主机)的数据链路层地址
-
由于这类地址是用于媒体接入控制(Medium Access Control,MAC)的,因此被称为 MAC 地址

-
MAC 地址一般被固化在网卡的电可擦可编程只读存储器 EEPROM 中,因此 MAC 地址也被称为硬件地址
-
MAC 地址有时也被称为物理地址

-
一般情况下,普通用户计算机中往往会包含两块网卡:
- 一块是用于接入有线局域网的以太网卡
- 另一块是用于接入无线局域网的 Wi-Fi 网卡
-
每块网卡都有一个全球唯一的 MAC 地址
-
MAC 地址长 6 字节(48 位),一般由连字符(或冒号分割的 12 个十六进制数表示)


注意:
字节的发送顺序:第
1字节->第6字节字节内的比特发送顺序:
b0->b7;广播地址(本地多播)
FF-FF-FF-FF-FF-FF:即第 1 字节 b 0 位=1,第 1 字节 b 1 位=1,并且剩余
46比特为全1
- 网卡从网络上每收到一个帧,就检查帧首部中的目的 MAC 地址,按以下情况处理:
- 广播帧(一对全体):目的 MAC 地址是广播地址(FF-FF-FF-FF-FF-FF),则接受该帧
- 单播帧(一对一):目的 MAC 地址与网卡上固化的全球单播 MAC 地址相同,则接受该帧
- 多播帧(一对多):目的 MAC 地址是网卡支持的多播地址,则接受该帧
- 除上述情况外,丢弃该帧
- 网卡还可被设置为一种特殊的工作方式:混杂方式,只要收到共享媒体上传来的帧就会收下,而不管帧的目的 MAC 地址是什么
(4)以太网 V2 的 MAC 帧
-
以太网 MAC 帧格式有两种标准:
- DIX Ethernet V2 标准(以太网 V2,流行)
- IEEE 802.3 标准
- 用长度域替代了 V2 帧中的类型域,指出了数据域的长度
- 长度域最大值是 1500,1501~65535 的值可用于类型段标识符
-
以太网的 MAC 帧的长度为 64-1518 字节【最小帧长到最大帧长】
-
以太网的数据链路层将封装好的 MAC 帧交付给物理层进行发送,物理层在发送帧之前还要在其前面添加 8 字节的前导码:
- 第一个字段是 7 字节的前同步码:实现 MAC 帧的比特同步
- 第二个字段是 1 字节的帧开始定界符:表示后面的信息就是 MAC 帧
-
注意:

-
目的地址:6 字节,帧在局域网上的目的适配器的 MAC 地址
-
源地址:6 字节,传输帧到局域网上的源适配器的 MAC 地址
-
类型:2 字节,指出数据字段中的数据应交给哪个上层协议处理,如网络层的 IP 协议
-
数据:46~1500 字节,承载上层的协议数据单元(如 IP 数据报)
- 若 IP 数据报超过 1500 字节,必须将 IP 数据报分片
- 由于 CSMA/CD 算法的限制,当数据字段的长度小于 46 字节时,MAC 子层在数据字段后面加一个整数字节的填充字段,以确保帧长不小于 64 字节
-
检验码(FCS): 4 字节,算法采用 32 位 CRC 码,
- 检验 MAC 帧的目的地址、源地址、类型字段、数据部分
- 不检验前导码

-
接收方可能收到的无效 MAC 帧包括以下几种:
- MAC 帧的长度不是整数个字节
- 通过 MAC 帧的 FCS 字段的值检测出帧有误码
- MAC 帧的长度不在 64~1518 字节之间
-
如果接收方收到无效的 MAC 帧时,就简单将其丢弃(以太网的数据链路层没有重传机制,提供的是无连接、不可靠服务)
(5)高速以太网
- 速率达到或超过
100Mb/s的以太网叫高速以太网
| 标准名称 | 100 BASE-T 以太网 | 吉比特以太网 | 10 吉比特以太网 |
|---|---|---|---|
| 传输速率 | 100 Mb/s | 1 Gb/s | 10 Gb/s |
| 传输介质 | 双绞线 | 双绞线或光纤 | 双绞线或光纤 |
| 通信方式 | 半双工、全双工 | 半双工、全双工 | 全双工 |
| 介质访问控制协议 | 半双工下使用 CSMA/CD | 半双工下使用 CSMA/CD | 无 |
- 100 BASE-T 以太网:
- 又称:快速以太网
- 在双绞线上传送 100 Mb/s 基带信号的星形拓扑以太网
- MAC 帧格式为 802.3 标准
- 保持最短帧长不变,将一个网段的最大长度减小到 100 m,帧最小间隔由 9.6 \mu s 改为 0.96\mus
- 吉比特以太网:
- 又称:千兆以太网
- 使用 802.3 标准的帧格式
- 10 吉比特以太网:
- 与 10 Mb/s、100 Mb/s、1 Gb/s 以太网的帧格式完全相同
- 保留了 802.3 标准规定的以太网最小帧长和最大帧长,以便升级和向后兼容
3、IEEE 802.11 无线局域网
(1)无线局域网的组成
- 802.11 无线局域网可分为以下两类:
- 有固定基础设施的无线局域网
- 无固定基础设施的
固定基础设施是指预先建立的、能够覆盖一定地理范围的、多个固定的通信基站
802.11 无线局域网使用最多的是它的固定基础设施的组网方式
1)有固定基础设施的
-
IEEE 制定了无线局域网【又称 Wi-Fi】的 802.11 系列协议标准
-
802.11 标准使用星形拓扑,其中心称为接入点AP【基站】,在 MAC 层使用 CAMA/CA 协议
-
基本服务集 BSS:
- 最小构件
- 一个 BSS 中,包含有一个 AP 和若干个移动站
- 本 BSS 内各站点之间的通信以及与本 BSS 外的站点之间的通信,都必须经过白 BSS 内的 AP 进行转发
- 安装 AP 时,必须为其分配一个最大 32 字节的服务集标识符(SSID)【使用该 AP 的无线局域网的名称】和一个无线通信信道
-
基本服务区 BSA:
- 一个 BSS 所覆盖的地理范围
- 无线局域网的 BSA 的直径一般 < 100 m

-
扩展的服务集 ESS:
- 通过 AP 连接到一个分配系统 DS,然后再连接到另一个服务集
- 分配系统的作用就是使扩展的服务集对上层的表现就像一个基本服务集一样
- ESS 还可以通过 Portal(门户)设备为无线用户提供到有线连接的以太网的接入,门户的作用相当于一个网桥

-
注意:AP1 到 AP2 的通信使用有线传输
2)无固定基础设施(自组织网络)
- 自组织网络没有 AP,而是由一些平等状态的移动站相互通信组成的临时网络
- 各结点地位平等,中间节点都为转发结点,因此都具有路由器的功能

- 自组网络和移动 IP 并不相同:
- 移动 IP 技术使漫游的主机可用多种方法连接到因特网,其核心网络功能仍然基于固定网络中一直使用的各种路由选择协议
- 自组网络是将移动性扩展到无线领域中的自治系统,具有自己特定的路由选择协议,且可以不和因特网相连
(2)802.11 局域网的 MAC 帧

-
802.11 帧分三种:
- 数据帧:用于在站点间的传输
- 控制帧:
- 通常与数据帧搭配使用
- 负责区域的清空,虚拟载波监听的维护以及信道的接入,并于收到数据帧时予以确认
- ACK 帧,RTS 帧以及 CTS 帧等都属于控制帧
- 管理帧:
- 用于加入或退出无线网络,以及处理 AP 之间连接的转移事宜
- 信标帧,关联请求帧以及身份认证帧等都属于管理帧
-
802.11 无线局域网的 MAC 帧格式:

-
帧主体:数据部分,不超过 2312 字节,比以太网的最大长度长很多
-
帧检验序列 FCS:帧尾部,4 字节
-
MAC 首部:30 字节,主要包含:
- 持续期:用于实现 CSMA/CA 的虚拟载波监听和信道预约机制,在数据帧、RTS 帧和 CTS 帧中用该字段指出将要持续占用信道的时长
- 序号控制:用来实现 802.11 的可靠传输,对数据帧进行编号
- 地址 1、2、3、4:取决于帧控制字段中的“去往 DS”和“来自 DS”这两个字段的值
- 帧控制
地址 1 是直接接收数据帧的结点地址,地址 2 是实际发送数据帧的结点地址
注意,接收地址与目的地址不是一个概念,因为要通过 AP 中转

-
发送数据帧的情况:
-
A->B

-
A->R(路由器接口):802.11 MAC 帧需要通过 AP 转为 802.3 帧

-
-
例题:

4、VLAN
(1)基本概念
-
虚拟局域网 VLAN(Virtual Local Area Network):
- 一种将局域网内的设备划分成与物理位置无关的逻辑组的技术
- 这些逻辑组具有某些共同的需求,每个 VLAN 就是一个独立的广播域

-
为什么需要 VLAN:随着交换式以太网规模的扩大,广播域相应扩大,而巨大的广播域会带来很多弊端(广播风暴)
广播风暴:如果数台交换机连接了数台主机,当主机
A要向主机B发送数据帧,此时各交换机的MAC表均为空,因此帧每到一个交换机就会进行泛洪,由于网络巨大,因此泛洪的范围也巨大
- 分割广播域的方法:
- 使用路由器:
- 由于路由器默认情况下不对广播数据包进行转发,因此路由器很自然的就可以隔离广播域
- 成本很高,全部使用路由器隔离广播域是不现实的

- 使用路由器:
- VLAN:将一个较大的局域网分割成一些较小的与地理位置无关的逻辑上的 VLAN
(2)VLAN 划分方式
- 基于接口:
- 将交换机的若干接口划为一个逻辑组
- 最简单、最有效
- 若主机离开了原来的接口,则可能进入一个新的子网
- 基于 MAC 地址:
- 按 MAC 地址将一些主机划分为一个逻辑子网
- 当主机的物理位置从一个交换机移动到另一个交换机时,它仍属于原来的子网
- 基于 IP 地址:
- 根据网络层地址或协议划分 VLAN
- 这样的 VLAN 可以跨越路由器进行扩展,将多个局域网的主机连接在一起
(3)IEEE 802.1 Q 帧
-
对以太网的 MAC 帧格式进行了扩展,插入了 4 字节的 VLAN 标签,用来标明计算机属于哪个虚拟局域网。
-
VLAN 的首部增加到了 4 字节,所以最大帧长为 1522 字节

-
VLAN 标签:
- 标签协议标识符 TPID:
- 长度为 16 比特,其值固定为 0x8100
- 表示该帧是 IEEE 802.1 Q 帧
- 优先级 PRI:
- 长度为 3 比特,取值范围是 0~7,值越大优先级越高
- 当网络阻塞时,设备优先发送优先级高的 802.1 Q 帧
- 规范格式指示符 CFI:
- 长度为 1 比特,对于以太网,CFI 的取值为 0
- 取值为 0 表示 MAC 地址以规范格式封装
- 取值为 1 表示 MAC 地址以非规范格式封装
- 虚拟局域网标识符 VID:
- 唯一地标志了以太网帧属于哪一个 VLAN 长度为 12 比特
- 取值范围是 0
4095,其中 0 和 4095 保留不使用,因此用于表示 VLAN 的**VID 的有效范围是 14094**

- 标签协议标识符 TPID:
-
注意:
- 插入 VID 后,FCS 字段必须重新计算
- 802.1 Q 帧时是交换机来处理的,而不是用户主机来处理的
- 用户不知道自己的 VID 值,但交换机必须知道,这样就实现了分割广播域
- 当交换机收到普通的以太网帧时,会将其插入 4 字节的 VLAN 标记转变为 802.1Q 帧 【打标签】
- 当交换机转发 802.1 Q 帧时,可能会删除其 4 字节 VLAN 标记转变为普通以太网帧【去标签】

七、广域网
1、基本概念
- 广域网 WAN:
- 通常指覆盖范围很广(远超一个城市的范围)的长距离网络,任务是长距离运送主机所发送的数据
- 连接广域网各交换机的链路都是高速链路
- 首要考虑问题是通信容量必须足够大,以便支持日益增长的通信量

- 广域网由一些结点交换机及连接这些交换机的链路组成
- 结点交换机的功能:存储并转发分组
- 为了提高网络的可靠性,通常一个结点交换机往往与多个结点交换机相连
- 广域网使用的协议主要在网络层,局域网使用的协议主要在数据链路层
- 网络中的两个结点要进行数据交换,还要给数据“包装”上一层控制信息,用于实现传输控制
- 若这层控制信息是数据链路层协议的控制信息,则称使用了数据链路层协议
- 若这层控制信息是网络层协议的控制信息,则称使用了网络层协议
- 广域网和局域网的区别和联系:
| 广域网 | 局域网 | |
|---|---|---|
| 覆盖范围 | 很广,通常跨区域 | 较小,通常在一个区域内 |
| 连接方式 | 通常采用点对点连接 | 普遍使用广播信道 |
| OSI 参考模型层次 | 物理层、数据链路层、网络层 | 物理层、数据链路层 |
| 着重点 | 强调资源共享 | 强调数据传输 |
| 联系与相似点 | 1. 广域网和局域网都是互联网的重要构件,从互联网的角度看,二者平等(不是包含关系) | 2. 当连接到一个广域网或另一个局域网上的主机在该网内进行通信时,只需要使用其网络的物理地址 |
- 广域网早期使用能实现可靠传输的高级数据链路控制(HDLC)协议,目前使用最广泛的是点对点(PPP)协议
2、PPP 协议
(1)基本概念
- 广域网应用最广泛的点对点数据链路层协议
- PPP 用于规定帧格式,使之成为各种主机、网桥和路由器之间简单连接的一种共同的解决方案
- PPP 是使用串行线路通信的面向字节的协议
- 主要有两种应用:
- 用户通常都要连接到某个 ISP 才能接入互联网,PPP 协议就是用户计算机与 ISP 通信时所用的数据链路层协议
- 广泛用于广域网路由器之间的专用线路
- 组成部分:
- 一个链路控制协议 LCP:用来建立、配置、测试数据链路连接,以及协商一些选项
- 一套网络控制协议 NCP: PPP 协议允许采用多种网络层协议,每个不同的网络层协议要用一个相应的 NCP 来配置,为网络层协议建立和配置逻辑连接
- 一种将 IP 数据报封装到串行链路的方法:IP 数据报在 PPP 帧中就是其信息部分,这个信息部分的长度受最大传送单元 (MTU) 限制

(2)PPP 链路的连接过程

(3)PPP 帧格式
- 首部和尾部各有一个标志字段 F,规定为 0x7E(01111110),作为帧定界符,表示帧的开始和结束

- 注意:
- PPP 是点对点的,并不是总线形,所以不用 CSMA/CD 协议,自然就没有最短帧,所以数据部分是 0-1500B
(4)PPP 帧实现透明传输

1)面向字节的异步链路使用字节填充法
- 发送方处理:
- 将数据载荷中出现的每一个 0x7E 减去 0x20【相当于异或 0x20】,然后在其前面插入转义字符 0x7D,变成 7D5E
- 若数据载荷中原来就含有 0x7D,则把每一个 0x7D 减去 0x20,然后在其前面插入转义字符 0x7D,变成 7D5D
- 将数据载荷中出现的每一个ASCII 码控制字符【即数值小于 0x20 的字符】,加上 0x20【相当于异或 0x20,将其转换成非控制字符】,然后在其前面插入转义字符 0x7D

- 接收方处理:只需要反变换可恢复出原来的帧的数据部分
2)面向比特的同步链路使用零比特填充来实现透明传输
- 发送方处理:对帧的数据载荷进行扫描【一般由硬件完成】,每出现5 个连续的比特 1,则在其后填充一个比特 0
- 接收方处理:对帧的数据载荷进行扫描,每出现5 个连续的比特 1时,就把其后的一个比特 0 删除

(5)PPP 帧实现差错检测

(6)PPP 协议的特点
- PPP 提供差错检测但是不提供纠错功能,只保证无差错接收(CRC 校验),它是不可靠的传输协议,因此也不使用序号和确认机制
- PPP 仅支持点对点的链路通信,不支持多点线路【PPP 属于广域网,这点就属于广域网和局域网的区别了】
- PPP 只支持全双工链路
- PPP 两端可以运行不同的网络层协议,但仍然可以使用同一个 PPP 进行通信
- PPP 是面向字节的,因此所有 PPP 帧的长度都是整数个字节
八、数据链路层设备
1、网桥
(1)基本概念
- 网桥(Bridge)工作在数据链路层(包含其下的物理层),因此网桥具备属于数据链路层相关能力
- 网桥在数据链路层扩展以太网:
- 原来的每个以太网称为一个网段
- 各个网段相互独立
- 网桥具有识别帧和转发帧的能力:
- 根据帧首部中的目的 MAC地址和网桥自身的帧转发表来转发或丢弃所收到的帧
- 起到了过滤通信量的功能

(2)主要结构和基本工作原理
-
转发表是网桥转发帧的依据:记录各个主机的 MAC 地址与自己各接口的对应关系

-
网桥转发和丢弃帧:

-
网桥转发广播帧,是不查转发表的

(3)透明网桥的自学习和转发帧流程
- 透明网桥通过自学习算法建立转发表
- 透明网桥中的透明:是指以太网中的各站点并不知道自己所发送的帧将会经过哪些网桥的转发,最终到达目的站点。也就是说,以太网中的各网桥对于各站点而言是看不见的
- 透明网桥的标准是 IEEE 802.1D,它通过一种自学习算法基于以太网中各站点间的相互通信逐步建立起自己的转发表
- 流程:
- 网桥收到帧后进行登记(自学习),自学习的内容为帧的源 MAC 地址和进入网桥的接口号
- 网桥根据帧的目的 MAC 地址和网桥的转发表对帧进行转发,包括以下三种情况:
- 明确转发:网桥知道应当从哪个接口转发帧
- 盲目转发:网桥不知道应当从哪个接口转发帧,只能将其通过除进入网桥的接口外的其他所有接口转发
- 丢弃:网桥知道不应该转发该帧,将其丢弃



- 注意:
- 如果网桥收到有误码的帧则直接丢弃
- 如果网桥收到一个无误码的广播帧,则不用进行查找,而是直接转发
- 转发表中的每条记录都有其有效时间,到期自动删除,这是因为各站点的 MAC 地址与网桥接口的对应关系并不是永久性的【例如某个站点更换了网卡,其 MAC 地址就会改变】
(4)透明网桥的生成树协议 STP
-
为了提高以太网的可靠性,有时需要在两个以太网之间使用多个透明网桥来提供冗余链路
-
在增加冗余链路提高以太网可靠性的同时,却给网络引入了环路
-
网络中的广播帧将在环路中永久兜圈,造成广播帧充斥整个网络,网络资源被白白浪费,而网络中的主机之间无法正常通信

-
透明网桥使用生成树协议(STP):
- 可以在增加冗余链路来提高网络可靠性的同时又避免网络环路带来的各种问题
- 不管网桥之间连接成了怎样复杂的带环拓扑接,网桥之间通过交互网桥协议单元(BPDU)找出原网络中拓扑的一个连通子集【生成树】,在这个子集里整个连通的网络中不存在环路
- 最终生成树的逻辑拓扑要确保连通整个网络
- 当首次连接交换机或网络物理拓扑发生变化时【有可能是人为改变或故障】,网桥 【交换机】都将进行生成树重新计算

2、以太网交换机
(1)交换式以太网
- 网桥的接口数量很少,通常只有2~4个,一般只用来连接不同的网段
- 仅使用交换机(而不使用集线器)的以太网就是交换式以太网

(2)交换机的原理和特点
- 本质上是一个多接口的网桥
- 当交换机的接口直接与主机或其他交换机连接时,工作在全双工方式,并能同时连通多对接口,使每对相互通信的主机都能像独占通信介质那样,无冲突地传输数据,**具有并行性
- 当交换机的接口连接集线器时,只能使用 CSMA/CD 协议且只能工作在半双工方式
- 交换机一般都具有多种速率的接口,例如 10 Mb/s、100 Mb/s、1 Gb/s 甚至 10 Gb/s 的接口,大部分接口支持多速率自适应
- 交换机因为使用专用交换结构芯片,交换速率较高
- 交换机独占传输介质的带宽:
- 使用集线器的共享式 10 Mb/s 以太网,若有 N 个用户,每个用户的平均带宽为(10 Mb/s)的 1/N
- 使用以太网交换机(全双工方式),每个接口到主机的带宽还是 10 Mb/s,但是因为一个用户通信时独占带宽,则拥有 N 个接口的交换机的总容量为 10N Mb/s
- 交换机每个接口是一个独立的冲突域

(3)交换机自学习和转发帧流程(参考网桥)

(4)交换机工作方式
- 直通交换方式:
- 只检查帧的目的 MAC 地址,以决定该帧的转发接口
- 优点:交换时延非常小
- 缺点:不检查差错就直接转发,因此可能将一些无效帧转发给其他站
- 不适用于需要速率匹配、协议转换或差错检测的线路
- 存储转发交换方式:
- 先将接收到的帧缓存到高速缓存器中,并检查数据是否正确,确认无误后通过查找表转换为输出接口,以便将该帧发送出去,若发现帧有错,则将其丢弃
- 优点:可靠性高,且能支持不同速率接口间的转换
- 缺点:时延较大
(5)交换机端口类型
- Access、Trunk、Hybird(华为私有)
- 具体内容见湖科大 ppt


(6)共享式以太网与交互式以太网的对比(集线器和交互机的对比)
-
单播帧:
- 共享式以太网:集线器将帧转发到其他所有接口,其他各主机中的网卡根据帧的目的 MAC 地址决定接收或丢弃该帧
- 交换式以太网:交换机收到帧后,根据帧的目的 MAC 地址和自身的交换表将帧明确地转发给目的主机

-
广播帧:
- 尽管集线器和交换机对于广播帧的效果是相同的,但是它们的工作原理不同
- 共享式以太网,集线器只工作在物理层:
- 并不能识别帧首部中的目的 MAC 地址,因为这属于数据链路层的范畴
- 将帧转发到其他所有接口
- 其他各主机中的网卡检测到帧的目的 MAC 地址是广播地址时,就接收
- 交换式以太网,交换机工作在数据链路层:
- 可以识别帧的结构,从帧首部中提取出目的 MAC 地址,知道这是一个广播帧,从其他所有接口转发该帧(不查转发表)
- 其他主机收到该广播帧后,就接收

-
多主机同时通信:
- 共享式以太网:必然产生冲突
- 交换式以太网:交换机能实现多对接口的高速并行交换,不会冲突

-
使用集线器和交换机扩展共享式以太网的区别:
- 集线器既扩大了广播域又扩大了冲突域
- 交换机扩大了广播域,隔离了冲突域

(7)例题






第4章 网络层
一、网络层概述
1、基本概念
- 网络层提供主机到主机的通信服务
- 主要任务:将分组从源主机经过多个网络和多段链路传输到目的主机【分组转发和路由选择】
- OSI 参考模型的网络层提供面向连接的虚电路服务
- TCP/IP 体系的网络层提供无连接的数据报服务:
- 所传送的分组可能出错、丢失、重复、失序或超时
- 通信的可靠性由传输层负责
- 路由器做得比较简单,网络造价降低,运行方式灵活,能够适应多种应用
2、主要功能
(1)异构网络互连
- 网络互连:指将两个以上的计算机网络,通过一定的方法,用一些中继系统相互连接起来,以构成更大的网络系统
- 根据所在的层次,中继系统分为:
- 物理层:转发器,集线器
- 数据链路层:网桥或交换机
- 网络层:路由器
- 网络层以上:网关
- 注意:
- 使用物理层或数据链路层的中继系统时,只是把一个网络扩大了,从网络层的角度看,它仍然是同一个网络,一般并不称为网络互连
- 因此网络互连通常是指用路由器进行网络连接和路由选择

- TCP/IP 体系在网络互连上采用的做法是在网络层采用标准化协议(IP 协议),但相互连接的网络可以是异构的
- 虚拟互连网络:
- 互连起来的各种物理网络的异构性【拓扑结构、寻址方案、差错处理方法、路由选择机制等】是客观存在的
- 通过 IP 协议可使这些网络在网络层看起来像是一个统一的网络【IP 网络】
(2)路由与转发
- 路由选择:根据路由协议构造路由表,同时经常或定期地与相邻路由器交换信息,获取网络最新拓扑,动态更新维护路由表,以决定分组到达目的地结点的最优路径
- 分组转发:路由器根据转发表将分组从合适的端口转发出去
(3)拥塞控制
- 拥塞:
- 在通信子网中,因出现过量的分组而引起网络性能下降的现象
- 此时所有节点都来不及接受分组,而要丢弃大量分组
- 判断是否拥塞的方法:
- 观察网络吞吐量与网络负载的关系:
- 随着网络负载的增加,吞吐量明显小于正常标准,进入轻度拥塞
- 网络的吞吐量随着网络负载的增大而下降,可能已经进入拥塞状态
- 轻度拥塞--->拥塞---->死锁
- 观察网络吞吐量与网络负载的关系:
- 拥塞控制的作用:
- 确保网络能够承载所达到的流量
- 全局性过程:涉及网络中所有的主机、路由器及导致网络传输能力下降的所有因素
- 拥塞控制的方法:
- 开环控制【静态】:
- 在设计网络时事先考虑可能发生拥塞的情况,一旦系统启动并运行,就不修改
- 手段包括:确定何时可接收新流量、何时可丢弃分组及丢弃哪些分组,确定何种调度策略等
- 闭环控制【动态】:
- 采用监测网络监视哪里发生了拥塞,动态调整网络系统运行
- 基于反馈环路的概念
- 开环控制【静态】:
3、网络层提供的两种服务
| 数据报服务 | 虚电路服务 | |
|---|---|---|
| 连接的地址 | 不需要 | 必须 |
| 目的地址 | 每个分组都有完整的目的地址 | 仅在连接建立阶段使用,之后每个分组使用长度较短的虚电路号 |
| 路由选择 | 每个分组独立地进行路由选择和转发 | 属于同一条虚电路的分组按照同一路由转发 |
| 分组顺序 | 不保证有序 | 有序 |
| 可靠性 | 不保证可靠通信,可靠性由用户主机保证 | 可靠性由网络保证 |
| 对网络故障的适应性 | 出故障的结点丢失分组,其他分组路径选择发生变化时可以正常传输 | 所有经过故障结点的虚电路均不能工作 |
| 差错处理和流量控制 | 由用户主机进行流量控制,不保证数据报的可靠性 | 可由分组交换网负责,也可由用户主机负责 |
(1)面向连接的虚电路服务
- 当两台计算机进行通信时,先建立网络层的连接----虚电路 VC
- 连接一旦建立,就固定了虚电路对应的物理路径
- 三个阶段:虚电路建立、数据传输、虚电路释放
- 每次建立虚电路时,将一个未用过的虚电路号 VCID分配给该虚电路
- 分组的首部仅在连接建立时使用完整的目的地址,之后每个分组的首部只需携带一条虚电路的编号
- 虚电路网络中的每个结点上都维持一张虚电路表:
- 表中每项记录一个打开的虚电路的信息
- 包括在接收链路和发送链路上的虚电路号、前一结点和下一结点的标识

- 特点:
- 提供了可靠的通信功能
- 通信链路的建立和拆除需要时间开销:
- 对长时间、频繁的数据交换效率高
- 对交互式应用和少量的短分组开销大
- 分组首部不包含目的地址,包含的是虚电路号
- 路由选择体现在连接建立阶段
- 当网络中某个结点或链路出现故障而失效时,将会造成全局破坏
(2)无连接的数据报服务
- 网络在发送分组前不需要建立连接
- 源主机的高层协议将报文拆成若干较小的数据段,并加上地址等控制信息后构成分组
- 中间结点存储分组很短一段时间,找到最佳的路由后,尽快转发每个分组
- 网络本身不提供端到端的可靠传输服务,这就使网络中的路由器可以做得比较简单,而且价格低廉【与电话网络相比】

- 特点:
- 发送分组前不需要建立连接
- 网络尽最大努力交付,传输不保证可靠性【误码、丢失、重复、失序】
- 每个分组的首部必须包括发送方和接收方的完整地址,以便独立传输
- 分组在交换结点存储转发时,需要排队等候处理,带来一定时延
- 网络具有冗余路径,当某个结点或链路出现故障,可相应地更新转发表,寻找其他路径
- 收发双方不独占某条链路,资源利用率高
因特网采用了这种设计思想,也就是将复杂的网络处理功能置于因特网的边缘 (用户主机和其内部的运输层),而将相对简单的尽最大努力的分组交付功能置于因特网核心
4、SDN 的基本概念
- 将网络层抽象地划分为:
- 数据平面:实现转发
- 控制平面:实现路由选择
- 软件定义网络 SDN:
- 采用集中式的控制平面和分布式的数据平面来控制网络,两个平面相互分离
- 控制平面利用控制 - 数据接口对数据平面上的路由器进行集中式控制,方便软件控制网络
- 路由器的工作仅为:收到分组、查找转发表、转发分组
- 远程控制器:
- 在控制平面上
- 掌握各主机和整个网路的状态,为每个分组计算出最佳路由
- 通过 Openflow 协议将转发表【SDN 中称为流表】下发给路由器

- SDN 通过为开发者提供强大的编程接口,使得网络具有很好的编程性:
- 北向接口:
- SDN 提供的编程接口
- 提供了一系列丰富的 API,开发者可以在此基础上设计自己的应用
- 南向接口:
- SDN 控制器和转发设备建立双向会话的接口
- 使用南向接口协议【如 openflow】,SDN 控制器可兼容不同的硬件设备,同时在设备中实现上层应用的逻辑
- 东西向接口:
- SDN 控制器集群内部控制器之间的通信接口
- 用于增强整个控制平面的可靠性和可拓展型
- 北向接口:
- SDN 的优点:
- 全局集中式控制和分布式高速转发,既利于控制平面的全局优化,又利于高性能的网络转发
- 灵活可编程与性能的平衡,控制和转发功能分离后,使得网络可以由专有的自动化工具以编程方式配置
- 降低成本,控制和数据平面分离后,尤其是在使用开放的接口协议后,就实现了网络设备的制造与功能软件的开发相分离,从而有效降低了成本
- SDN 的问题:
- 安全风险:集中管理容易受攻击,若崩溃,则整个网络会受到影响
- 瓶颈问题:原本分布式的控制平面集中化后,随着网络规模扩大,控制器可能成为网络性能的瓶颈
二、IPv4
- IPv 4 地址是给因特网(Internet)上的每一个主机(或路由器)的每一个接口分配的一个在全世界范围内唯一的 32 比特的标识符
- IPv 4 即现在普遍使用的 IP 协议(版本 4)
- IP 协议定义数据传送的基本单元——IPv 4 分组及其确切的数据格式
- IP 协议也定义一些规则包括:
- 指明分组如何处理、错误怎样控制
- 特别是 IP 协议还包括非可靠投递的思想,以及与此关连的分组路由选择的思想
1、IPv4 分组
- 在 TCP/IP 标准中,各种数据格式常常以
32比特【4字节】为单位来描述
(1)IPv4 分组的格式
- 一个 IP 分组【IP 数据报】由首部和数据部分组成:
- 首部:前一部分的长度固定【共
20 B】,后面是一些可选字段,用来提供错误检测及安全等机制

- 首部:前一部分的长度固定【共
- 版本:占
4比特,IPv4 数据报中该字段值是 4 - 首部长度:占
4比特,以4 B为单位- 最小取值为
0101【十进制为5】,表示 IP 数据报首部只有20 B【 固定部分4 B单位,所以取值5对应20 B】 - 最大取值为
1111【十进制取值为15】,表示 IP 数据报首部长度为60 B【20 B固定部分和最大40 B可变部分】
- 最小取值为
- 区分服务 :占
8比特,一般情况下不使用该字段 - 总长度:
- 占
16比特,以1 B为单位 - 表示
IP数据报的总长度【首部+数据载荷】 - 最大取值:2^{16}-1(十进制
65535)

- 占
- 标识:
- 占
16比特,属于同一个数据报的各分片数据报应该具有相同的标识 IP软件维持一个计数器,每产生一个数据报,计数器值+1,并将此值赋给标识字段- 当一个数据报的长度超过网络的 MTU 时,必须分片,此时每个分片都复制一次标识号,便于重组
- 占
- 标志 :占
3比特,各比特含义如下- 最低位 MF:
1表示后面还有分片,0表示这是最后一个分片 - 中间位 DF:
1表示不允许分片,0表示允许分片 - 最高位为保留位:必须为
0
- 最低位 MF:
- 片偏移【必须是整数】:
- 占
13比特,指出分片数据报的数据载荷部分偏移其在原数据报的位置有多少单位 - 以
8 B为偏移单位 - 除最后一个分片外,每个分片的长度是 8 B 的整数倍
- 占
- 生存时间 TTL:
- 占
8比特,最初以秒为单位,最大生存周期为11111111【十进制255秒】 - 路由器转发
IPv4数据报时,将IP数据报首部中的该字段值减去IP数据报在本路由器上耗费的时间,若不为0【说明路由器消耗时间后还活着】就转发,否则丢弃
- 现在以"跳数"为单位,路由器转发 IP 数据报时,将 IP 数据报首部中的该字段值减 1,若不为 0 就转发,否则丢弃【防止兜圈】
- 占
- 协议:占
8比特,指明IPv4数据报的数据载荷是何种协议数据单元 PDU

- 首部检验和:
- 占
16比特,用来检测首部在传输过程中是否出现差错, - 比
CRC检验码简单,称为因特网检验和 IP数据报每经过一个路由器,路由器都要重新计算首部检验和,因为某些字段【生存时间、标志、片偏移等】的取值可能发生变化- 由于
IP层本身不提供可靠传输服务,并且计算首部校验和是一项耗时的操作,因此在IPv6中,路由器不再计算首部校验和,从而更快转发IP数据报



- 占
- 源 IP 地址和目的 IP 地址:各占
32比特,用来填写发送该IP数据报的源主机IP地址和接收该IP数据报的目的主机 - 可选字段:
- 长度从
1-40 B不等 - 用来支持排错、测量及安全等措施,增加了
IP数据报的功能 - 增加了每一个路由器处理 IP 数据报的开销,实际上很少被使用
- 长度从
- 填充字段:确保首部长度为
4 B长度的整数倍,使用全0进行填充
(2)IP 数据报分片
- 标识、标志、片偏移区分出了一个 IP 数据报分片:
- 最大传送单元 MTU:
- 一个链路层数据帧能承载的最大数据量
- IP 数据报封装在链路层的帧中,因此链路层的 MTU 严格限制了 IP 数据报的长度
- 在 IP 数据报的源与目的地路径上的各段链路可能使用不同的链路层协议,有不同的 MTU
- 当 IP 数据报长度超过 MTU 时,无法封装成帧,需要将原 IP 数据报分片为若干个更小的 IP 数据报
- 片在目的地的网络层被重新组装

举例



2、IPv4 地址与 NAT
(1)IPv4 地址
-
IPv4地址就是因特网上的每一台主机(或路由器)的每一个接口分配一个在全世界范围内是唯一的32比特【4 B】 的标识符 -
IPv4地址由因特网名字和数字分配机构ICANN进行分配 -
IPV 4 地址的编址方法经历了三个阶段

-
无论哪一类 IP 地址,都由主机号和网络号组成
- 主机号:
- 标志主机【或路由器】的接口
- 同一个网络中,不同主机【或路由器】的接口的 IPv4 地址的主机号必须各不相同,以便区分各主机(或路由器)的接口
- 网络号:
- 标志主机【或路由器】的接口所连接到的网络
- 同一个网络中,不同主机【或路由器】的接口的 IPv4 地址的网络号必须相同,表示它们属于同一个网络

- 主机号:
-
IPv4 地址的表示方法——点分十进制表示方法

(2)早期 IPv4 编址:分类编址
-
A 类、B 类和 C 类地址都是单播地址,只有单播地址可以分配给网络中的主机【或路由器】的各接口

-
特殊的 IP 地址:
- 主机号全 0 标识网络本身,如 202.98.174.0
- 主机号全 1 标识本网络的广播地址【直接广播地址】,如 202.98.174.255
- 环回自检地址:
- 127.x.x.x ,表示网络本身
- 目的地址为环回地址的 IP 数据报永远不会出现在任何网络上
- 32 位全为 0,即 0.0.0.0 表示本网络上的主机
- 32 位全为 1,即 255.255.255.255 表示整个 TCP/IP 网络的广播地址【受限广播地址】
实际使用时,由于路由器对广播域的隔离,255.255.255.255 等效为本网络的广播地址
- A 类地址可用网络数:2^{8-1}-2=126 【减 2 是去掉最小网络号 0 和最大网络号 127】
- A 类网络中可分配的地址数量为 2^{24-1}-2=16777214 【减 2 是去掉主机号为全 0 的网络地址和全 1 的广播地址】
- 最小网络号为 0,表示本网络,不能指派
- 最大网络号为 127,作为本地环回测试地址,不能指派
- 最小的本地环回测试地址为 127.0.0.1
- 最大的本地环回测试地址为 127.255.255.254
- 最小可指派的网络号为 1,网络地址为 1.0.0.0
- 最大可指派的网络号为 126,网络地址为 126.0.0.0

例题

- IP 地址的重要特点:

(3)网络地址转换 NAT 和私有 IP 地址
-
网络地址转换 NAT:
- 通过将专用网络地址转换为公用地址,从而对外隐藏内部管理的 IP 地址
- 能使大量使用内部专用地址的专用网络用户共享少量外部全球地址来访问因特网上的主机和资源
- 专用网本地 IP 地址是可重用的,可缓解
IPv4地址空间即将耗尽的问题 - 隐藏了内部网络结构,从而降低了内部网络受到攻击的风险。
-
私有 IP 地址:
- 为了网络的安全,划出部分 IP 地址
- 只用于 LAN,而不用于 WAN
- 允许私有 IP 地址被 LAN 重复使用
- 也可称为可重用地址
- 必须通过网关利用 NAT 把私有 IP 地址转换为 Internet 中合法的全球 IP 地址才能出现在 Internet 上
- 在因特网中的所有路由器,对目的地址是私有的一律不进行转发
- 采用私有 IP 地址的互联网称为专用互联网或本地互联网
-
私有 IP 地址网段:
- A 类【1 个】:10.0.0.0 —— 10.255.255.255
- B 类【16 个】:172.16.0.0 —— 172.31.255.255
- C 类【256 个】:192.168.0.0 —— 192.168.255.255
-
使用 NAT 时需要在专用网络连接到因特网的路由器上安装 NAT 软件:
-
装有 NAT 软件的路由器称为 NAT 路由器,至少要有一个有效的外部全球地址 IP
-
所有使用内部专用地址的主机在和外部因特网通信时,都要在 NAT 路由器上将其内部专用地址转换成 IP
-
注意:
- 普通路由器在转发 IP 分组时,其源 IP 地址和目的 IP 地址都不会改变
- NAT 路由器在转发 IP 分组时,一定要更换其 IP 地址【转换源 IP 地址或目的 IP 地址】
- 普通路由器仅工作在网络层
- NAT 路由器转发数据报时需要查看和转换传输层的端口号

-
**网络地址与端口号转换 NAPT:
- 由于绝大多数的网络应用都是使用运输层协议
TCP或UDP来传送数据,因此可以利用运输层的端口号和 IP 地址一起进行转换 - 用一个全球 IP 地址就可以使多个拥有本地地址的主机同时和因特网上的主机进行通信
- 由于绝大多数的网络应用都是使用运输层协议
3、划分子网与路由聚合
(1)划分子网
- 两级 IP 地址的缺点:
- IP 地址利用率有时会很低
- 给每个物理网络分配一个网络号会使路由表变得太大而使网络性能变得太坏
- 两级的 IP 地址不够灵活

- 划分子网的基本思路:
- 划分子网纯属于一个单位内部的事情,单位对外仍然表现为没有划分子网的网络
- 从主机号借用若干比特作为子网号,主机号也就减少了相同的比特
- 路由器转发分组根据的仍然是 IP 数据报的目的网络号
- 注意:
- 划分子网只是把 IP 地址的主机号这部分进行划分,而不改变 IP 地址原来的网络号,因此,从一个 IP 地址本身无法判断主机所连接的网络是否进行了子网划分
- 子网中主机号全 1 或全 0 的地址不能随意指派:
- 全 0 作子网的网络号
- 全 1 作子网的广播地址
- 划分子网增加了灵活性,但减少了能够连接在网络上的主机总数
(2)子网掩码和默认网关
- 32 比特的子网掩码:可以表明分类 IP 地址的主机号部分被借用了几个比特作为子网号
- 子网掩码使用左起多个连续的比特 1 来对应网络号和子网号
- 子网掩码使用连续的比特 0 来对应主机号
- 通过逻辑与运算得到 IPv4 地址所在子网的网络地址【掩码为 1 的部分】


-
在使用子网掩码的情况下:
- 一台主机在设置 IP 地址信息的同时,必须设置子网掩码
- 同属于一个子网的所有主机及路由器的相应端口,必须设置相同的子网掩码
- 路由器的路由表中所包含的信息主要内容有目的网络地址、子网掩码、下一跳地址
-
默认子网掩码:指在未划分子网的情况下使用的子网掩码

举例


(3)无分类编址 CIDR
- 无分类域间路由选择 CIDR:
- 消除了传统的
A类、B类和C类地址,以及划分子网的概念,因此可以更有效的分配地址空间 - 使用 CIDR 记法:在
IPv4地址后面加上斜线"/",在斜线后面写上网络前缀所占比特数量

- 消除了传统的

- CIDR 地址块:网络前缀都相同的连续 IP 地址
- 只要知道 CIDR 地址块中的任何一个地址,就可以知道:
- 地址块中的最小地址
- 地址块中的最大地址
- 地址块中的地址数量 2^n,实际可指派 2^n-2
- 地址块中聚合某类网络(A、B、C)的数量
- 地址掩码

- 主机号全 0 或全 1 的地址一般不使用,通常只使用在这两个特殊地址之间的地址
(4)路由聚合
- 因为一个 CIDR 地址块中有很多地址,所以在路由表中就可利用 CIDR 地址块来查找目的网络,这种地址的聚合称为路由聚合,也称构成超网
- 使得路由表中的一个项目可以表示多个原来传统分类地址的路由
- 有利于减少路由器之间的信息交换,提高网络性能
如路由器
A上连接同一网络的多台主机,路由器B与A相连。若A将所有主机的具体IP地址都报给B,则路由器B中会增加多项路由条目。可实际上B向A中任意一个主机转发数据的时都是走同一个端口,因此我们可以将这些网络的共同前缀提取出来成为新的网络号,同时将剩余主机号置0放入路由器B中如:
A连接了172.1.4.0/25和172.1.7.0/24,则提取公共前缀聚合后变为172.1.4.0/22

- 最长前缀匹配:
- 若路由器查表转发分组时发现有多条路由条目匹配,则选择网络前缀最长的那条路由条目
- 网络前缀越长,地址块越小,路由越具体
- CIDR 查找路由表的方法:
- 将无分类编址的路由表存放在一种层次式数据结构【通常采用二叉线索】
- 自上而下地按层次进行查找



(5)子网划分的应用

1)采用定长的子网掩码
- 使用同一个子网掩码来划分子网
- 子网划分方式不灵活,只能划分出 2^n 个子网
- 每个子网所分配的 IP 地址数量相同,容易造成 IP 地址浪费

2)采用变长的子网掩码
- 使用不同的子网掩码来划分子网
- 子网划分方式灵活:可以按需分配
- 每个子网所分配的 IP 地址数量可以不同,尽可能减少对 IP 地址的浪费


例题

4、网络层转发分组的过程
- 同一个网络之间的主机可以直接通信,不同网络之间的主机通信需要路由器中转
- IP 数据报的发送和转发过程包括以下两个过程:
1)主机发送 IP 数据报
- 源主机判断目的主机和自己在同一个网络:
- 将自身的
IP地址与子网掩码相与得到自身的网络号1 - 再将目的
IP地址与自身子网掩码相与得到网络号2 - 若两个网络号相等,说明处在同一个网络,则直接交付
- 若两个网络号不相等,则间接交付

- 将自身的

- 间接交付时,主机选择路由器交付 IP 数据报:
- 设置默认网关【路由器】:当路由表中查不到数据时会将数据发往的路由器端口
IP地址

- 设置默认网关【路由器】:当路由表中查不到数据时会将数据发往的路由器端口
- 路由表中可增加两种特殊路由:
- 默认路由:
- 用特殊前缀 0.0.0.0/0 表示,全 0 掩码与任何目的地址进行按位与运算的结果必为 0
- 通常用于路由器到互联网的路由
- 特定主机路由:
- 对特定目的主机的 IP 地址专门指明一个路由,以方便网络管理员控制和测试网络
- 默认路由:
2)路由器转发 IP 数据报
-
路由器收到 IP数据报 后转发:
- 检查收到的 IP 数据报是否正确【生存时间是否结束,首部是否误码】
- 若不正确,则丢弃该 IP 数据报,并向发送该 IP 数据报的源主机发送差错报告

-
基于 IP 数据报首部中的目的 IP 地址在路由表中进行查找:
- 若找到匹配的路由条目,则按该路由条目的指示进行转发
- 否则丢弃该 IP 数据报,并向发送该 IP 数据报的源主机发送差错报告

-
注意:
- 得到下一跳路由器的 IP 地址后,并不是直接将该地址填入待发送的数据报,而是将该 IP地址转换成 MAC 地址【通过 ARP 】
- 将MAC 地址填入 MAC 帧首部,然后根据这个 MAC 地址找到下一跳路由器
- 在不同网络中传送时,MAC 帧的源地址和目的地址要发生变化
-
广播 IP 数据报的情况:

5、地址解析协议 ARP
(1)IP 地址与 MAC 地址
-
IP 地址:是网络层即网络层以上使用的地址,是分层的
-
MAC 地址【硬件地址】:是数据链路层使用的地址,是平面式的
-
封装位置:

-
数据报传输过程中的变化情况:
- 源 IP 地址和目的 IP 地址保持不变
- 源 MAC 地址和目的 MAC 地址逐链路(或逐网络)改变

例题

- IP 地址与 MAC 地址的关系:
- 如果仅使用 MAC 地址进行通信,则会出现以下主要问题:
- 因特网中的每台路由器的路由表中就必须记录因特网上所有主机和路由器各接口的 MAC 地址
- 手工给各路由器配置路由表几乎是不可能完成的任务,即使使用路由协议让路由器通过相互交换路由信息来自动构建路由表,也会因为路由信息需要包含海量的 MAC 地址信息而严重占用通信资
- 包含海量 MAC 地址的路由信息需要路由器具备极大的存储空间,并且会给分组的查表转发带来非常大的时延
- 因特网的网际层使用 IP 地址进行寻址,就可使因特网中各路由器的路由表中的路由记录的数量大大减少,因为只需记录部分网络的网络地址,而不是记录每个网络中各通信设备的各接口的 MAC 地址
- 如果仅使用 MAC 地址进行通信,则会出现以下主要问题:
(2)ARP 工作原理
- 地址解析协议 ARP:解决同一局域网上的主机或路由器的 IP 地址和硬件地址的映射问题
- 每台主机都有一个 ARP 高速缓存:
- 存放本局域网上各主机和路由器的的 IP 地址到 MAC 地址的映射表【ARP 表】
- 动态类型:通过 ARP 自动获取,生命周期默认为两分钟
- 静态类型:手工配置,不同操作系统下的生命周期不同【例如系统重启后不存在或系统重启后依然有效】

-
ARP 请求报文:只在子网广播发送

-
ARP 响应报文:单播发送


- ARP 过程:
- 目的主机在本局域网:
- 先在 ARP 高速缓存中查看有无目的 IP 地址与 MAC 地址的映射
- 若有,则把硬件地址写入 MAC 帧,然后通过局域网把该 MAC 帧发往此硬件地址
- 若无,则通过广播 ARP 请求分组,在获得目的主机的 ARP 响应分组后,将目的主机的 IP 地址与硬件地址写入 ARP 告诉缓存
- 目的主机不在本局域网:
- 先通过上述方式获得路由器的 IP 地址和硬件地址的映射关系,将 IP 分组发送给本局域网的路由器
- 剩下的工作交给路由器完成

- 目的主机在本局域网:
6、动态主机配置协议 DHCP
(1)基本概念
- DHCP:
- 常用于给主机动态地分配 IP 地址
- 提供了即插即用的连网机制
- 应用层协议,基于 UDP

(2)工作原理
- 使用客户/服务器模型
- 需要 IP 地址的主机在启动时就向 DHCP 服务器广播发送发现报文,这时该主机就成为 DHCP 客户
- 本地网络只有 DHCP 服务器才能回答此广播报文
- DHCP 服务器先在其数据库中查找该计算机的配置信息:
- 若找到,则返回找到的信息
- 若找不到,则从服务器的 IP 地址池中取一个地址分配给该计算机
- DHCP 服务器的回答报文称为提供报文

- 注意:
- DHCP 允许网络上配置多台 DUCP 服务器
- DHCP 服务器分配给 DHCP 客户的 IP 地址是临时的,这段时间称为租用期【由 DHCP 服务器决定,也可 DHCP 客户在报文中提出要求
- DHCP 客户和服务器通过广播方式来进行交互【初始时 IP 地址都是未知的】
7、网际控制报文协议 ICMP
(1)基本概念
- 网际控制报文协议 ICMP
- 为了更有效地转发 IP 数据报以及提高 IP 数据报交付成功的机会
- 主机或路由器使用 ICMP 报告差错和异常情况
- ICMP 报文被封装在 IP 数据报中发送

(2)ICMP 报文类型
1)差错报告报文
- 用于目的主机或到目的主机路径上的路由器,向源主机报告差错和异常情况
-
终点不可达:当路由器或主机不能交付数据报时,就向源点发送终点不可达报文

-
源点抑制:当路由器或主机由于拥塞而丢弃数据报时,就向源点发送源点抑制报文,使源点知道应当把数据报发送速率放慢

-
时间超过:
- 当路由器收到一个目的
IP地址不是自己的IP数据报,会将其生存时间 TTL 字段值减1。若结果不为0,则将该IP数据报转发出去;若结果为 0,除丢弃该 IP 数据报外,还要向源点发送时间超过报文 - 当终点在预先规定的时间内不能收到一个数据报的全部数据报片时,就把已收到的数据报片都丢弃,也会向源点发送时间超过报文

- 当路由器收到一个目的
-
参数问题:当路由器或目的主机收到
IP数据报后,根据其首部中的检验和字段发现首部在传输过程中出现了误码,就丢弃该数据报,并向源点发送参数问题报文

-
改变路由【重定向】:路由器把改变路由报文发送给主机,让主机知道下次应将数据报发送给另外的路由器 【可通过更好的路由】

- 以下情况不应发送
ICMP差错报告报文:- 对 ICMP 差错报告报文,不再发送 ICMP 差错报告报文
- 对第一个分片的 IP 数据报片的所有后续数据报片,都不发送 ICMP 差错报告报文
- 对具有多播地址的 IP 数据报,都不发送 ICMP 差错报告报文
- 对具有特殊地址【如 127.0.0.0 或 0.0.0.0】的 IP 数据报,不发送 ICMP 差错报告报文
2)询问报文
-
回送请求和回答:
- 由主机或路由器向一个特定的目的主机发出的询问
- 收到此报文的主机必须给源主机或路由器发送
ICMP回送回答报文 - 这种询问报文用来测试目的站是否可达及了解其有关状态
-
. 时间戳请求和回答:
- 用来请某个主机或路由器回答当前的日期和时间
- 在
ICMP时间戳回答报文中有一个32比特的字段,其中写入的整数代表从1900年1月1日起到当前时刻一共有多少秒 - 这种询问报文用来进行时钟同步和测量时间
(3)ICMP应用举例
-
分组网间探测 PING:
- 用来测试主机或路由器之间的连通性
- 使用的 ICMP 报文类型为回送请求和回答
-
跟踪路由 traceroute:
- 用于探测 IP 数据报从源主机到达目的主机要经过哪些路由器
- 在UNIX版本中,具体命令为“traceroute”,其在运输层使用UDP 协议,在网络层使用ICMP 报文类型只有差错报告报文
- 在Windows版本中,具体命令为“tracert”,其应用层直接使用网际层的 ICMP 协议,所使用的ICMP 报文类型有回送请求和回答报文、差错报告报文
三、IPv6
1、IPv 6 的主要特点

2、IPv6 数据报的首部
- 包括:
- 基本首部
- 有效载荷:由零个或多个扩展首部【不属于 IPv6 数据报的首部】即其后面的数据部分组成

(1)IPv6 数据报的基本首部

- 版本:长度为
4比特,用来表示IP协议的版本,对于IPv6该字段的值是6 - 通信量:长度为
8比特,该字段用来区分不同的IPv6数据报的类别或优先级 - 流水号:长度为
20比特- IPv6 提出了流的抽象概念
- 流:因特网上从特定源点到特定终点【单播或多播】的一系列 IPv6 数据报
- 所经过的路径上的所有路由器都保证指明的服务质量
- 所有属于同一个流的
IPv6数据报都具有同样的流标号 - 流标号用于资源分配
- 流标号对于实时音视频数据的传送特别有用【对于传统的非实时数据,没有用处,把流标号字段的值置为
0】
- 有效载荷长度:长度为
16比特- 指明
IPv6数据报基本首部后面的有效载荷【包括扩展首部和数据部分】的字节数量 - 以字节为单位,最大取值为
65535,
- 指明
- 下一个首部:长度为
8比特- 相当于
IPv4数据报首部中的协议字段或可选字段 - 当
IPv6数据报没有扩展首部时,与IPv4的协议字段一样,其值指出了IPv6数据报基本首部后面的数据是何种协议数据单元PDU - 当
IPv6数据报基本首部后面带有扩展首部时,其值就标识后面第一个扩展首部的类型

- 相当于
- 跳数限制:长度为
8比特- 用来防止
IPv6数据报在因特网中永久兜圈 - 源点在每个
IPv6数据报发出时即设定某个跳数限制【最大 255 跳】 - 每个路由器在转发
IPv6数据报时,要先把跳数限制字段中的值减1。当跳数限制的值为0时,就把这个IPv6数据报丢弃
- 用来防止
- 源地址和目的地址:长度都为
128比特- 分别用来填写
IPv6数据报的发送端的IPv6地址和接收端的IPv6地址
- 分别用来填写
(2)IPv6 数据报的扩展首部
IPv4数据报如果在其首部中使用了选项字段,则在数据报的整个传送路径中的全部路由器,都要对选项字段进行检查,这就降低了路由器处理数据报的速度
- 为了提高路由器对数据包的处理效率,
IPv6把原来IPv4首部中的选项字段都放在了扩展首部中,由路径两端的源点和终点的主机来处理,而数据报传送路径中的所有路由器都不处理这些扩展首部【除逐跳选项扩展首部】
在[RFC 2460]中定义了以下六种扩展首部
- 逐条选项
- 路由选择
- 分片
- 鉴别
- 封装安全有效载荷
- 目的站选项
- 每一个扩展首部都由若干个字段组成,它们的长度也各不相同
- 所有扩展首部中的第一个字段都是
8比特的下一个首部字段【该字段的值指出在该扩展首部后面是何种扩展首部】 - 当使用多个扩展首部时,应按以上的先后顺序出现
(3)IPv4 和 IPv6 数据报首部格式对比

IPv6将IPv4数据报首部中不必要的功能取消了,这使得IPv6数据报基本首部中的字段数量减少到只有8个- 但由于
IPv6地址的长度扩展到了128比特,因此使得IPv6数据报基本首部的长度反而增大到了40字节,比IPv4数据报首部固定部分的长度(20字节)增大了20字节 - 取消了首部长度字段,因为 IPv 6 数据报的首部长度是固定的 40 字节
- 取消了区分服务(服务类型)字段,因为 IPv 6 数据报首部中的通信量类和流标号字段实现了区分服务字段的功能
- 取消了总长度字段,改用有效载荷长度字段。这是因为 IPv 6 数据报的首部长度是固定的 40 字节,只有其后面的有效载荷长度是可变的
- 取消了标识、标志和片偏移字段,因为这些功能已包含在 IPv 6 数据报的分片扩展首部中
- 把生存时间 TTL 字段改称为跳数限制字段,这样名称与作用更加一致
- 取消了协议字段,改用下一个首部字段
- 取消了首部检验和字段,这样可以加快路由器处理 IPv 6 数据报的速度
- 取消了选项字段,改用扩展首部来实现选项功能
3、IPv6 地址
(1)IPv6 地址空间
- 在
IPv6中,每个地址占128个比特,地址空间大小为 2^{128} IPv6地址表示方法:冒号十六进制记法- “左侧零”省略:指两个冒号间的十六进制数中最前面的一串 0 可以省略不写
- “连续零”压缩:指一连串连续的 0 可以用一对冒号取代
- 在一个
IPv6地址中只能使用一次“连续零”压缩,否则会导致歧义 - 冒号十六进制记法还可结合点分十进制的后缀【这在
IPv4向IPv6过渡阶段非常有用】 CIDR的斜线表示法在IPv6中仍然可用




(2)IPv6 地址的分类
1) IPv6 数据报的目的地址
- 单播(unicast):传统的点对点通信
- 多播(multicast):
- 一点对多点的通信,数据报发送到一组计算机中的每一个
IPv6没有采用广播的术语,而将广播看作多播的一个特例
- 任播(anycast):
IPv6新增的一种类型- 任播的终点是一组计算机,但数据报只交付其中的一个,通常是按照路由算法得出的距离最近的一个
IPv6地址分类:





4、从 IPv 4 向 IPv 6 过渡
(1)使用双协议栈
- 双协议栈(Dual Stack)是指在完全过渡到 IPv 6 之前,使一部分主机或路由器装有
IPv4和IPv6两套协议栈 - 双协议栈主机或路由器既可以和
IPv6系统通信,又可以和IPv4系统通信 - 双协议栈主机或路由器记为
IPv6/IPv4,表明它具有一个IPv6地址和一个IPv4地址 - 转换过程中一些字段无法转换,因此信息损失是无法避免的

- 双协议栈主机通过域名系统
DNS查询目的主机采用的IP地址- 若
DNS返回的是IPv4地址,则双协议栈的源主机就使用IPv4地址 - 若
DNS返回的是IPv6地址,则双协议栈的源主机就使用IPv6地址
- 若
(2)使用隧道技术
- 当
IPv6数据报要进入IPv4网络时,将IPv6数据报重新封装成IPv4数据报,即整个IPv6数据报成为IPv4数据报的数据载荷 - 封装有
IPv6数据报的IPv4数据报在IPv4网络中传输 - 当
IPv4数据报要离开IPv4网络时,再将其数据载荷(即原来的IPv6数据报)取出并转发到IPv6网络

四、路由算法与路由协议
1、路由算法
- 路由选择协议的核心是路由算法,即需要何种算法来获得路由表中的各个项目
(1)静态路由和动态路由
从能否随网络的通信量或拓扑自适应地进行调整变化来划分,路由算法可以分为如下两大类:
- 静态路由算法【非自适应路由算法】:
- 指由网络管理员手工配置的路由信息【网络路由、默认路由和特定主机路由等】
- 简单、开销小,但不能及时适应网络状态(流量、拓扑等)的变化【网络管理员需要手工去修改路由表中相关的静态路由信息】
- 一般只在小规模网络中采用



0.0.0.0/0(相应的地址掩码为0.0.0.0) 是默认路由条目中最短的网络前缀
192.168.2.1/32(相应地址掩码为255.255.255.255) 是特定主机路由条目中的最长网络前缀路由器在查找转发表转发 IP 数据报时,遵循“最长前缀匹配”的原则,因此默认路由条目的匹配优先级最低
- 动态路由算法【自适应路由算法】:
- 根据网络流量负载和拓扑结构的变化来动态调整路由表
- 路由器通过路由选择协议自动获取路由信息
- 比较复杂、开销比较大,但能较好地适应网络状态的变化
- 适用于大规模网络
(2)距离-向量路由算法(动态)
- 基于 Bellman-Ford 算法,用于计算单源最短路径

- 所有结点都定期地将它们的整个路由选择表传送给所有与之直接相邻的结点
- 路由选择表包含:每条路径的目的地【另一结点】、路径的代价【距离】
- 所有结点都必须参与距离向量交换,以保证路由的有效性和一致性
注意:这里的代价是一个抽象的概念,如
RIP就将距离定义为“跳数”跳数指从源端口到达目的端口所经过的路由器个数,每经过一个路由器,跳数加1
(3)链路状态路由算法(动态)
- 要求每个参与该算法的结点都具有完全的网络拓扑信息,并执行下列两项任务:
- 主动测试所有相邻结点的状态
- 定期地将链路状态传播给所有其他结点
- 结点每收到一个链路状态报文,路由结点便使用这些状态信息去更新自己的网络拓扑和状态“视野图”
- 一旦链路状态发生变化,结点就使用 Dijkstra 最短路径算法重新计算到达所有结点的最短路径
- 优点:
- 每个路由结点都使用同样的原始状态数据独立地计算路径,而不依赖中间节点的计算
- 链路状态不加以改变地传播,易于查找故障
- 应用:由于一个路由器的链路状态只涉及相邻路由器的连通状态,而与整个互联网的规模并无直接关系,因此链路状态路由算法可以用于大型的或路由信息变化聚敛的互联网环境
- 比较:
- 在距离 - 向量算法中:每个结点仅与它的直接邻居交谈,向它的邻居发送自己的路由表,其大小取决于网络中的结点数目,代价较大
- 在链路状态算法中:每个结点通过广播的方式与所有其他结点交谈,但它只告诉它们与它直接相连的链路的费用
- 典型的链路状态算法是 OSPF 算法
2、分层次的路由选择协议
- 因特网所采取的路由选择协议具有三个主要特点
- 自适应:动态路由选择,能较好地适应网络状态的变化
- 分布式:各路由器通过相互间的信息交互,共同完成路由信息的获取和更新
- 分层次:将整个因特网划分为许多较小的自治系统 AS【在自治系统内部和外部采用不同类别的路由选择协议,分别进行路由选择】

- 注意:
- 外部网关协议
EGP和内部网关协议IGP只是路由选择协议的分类名称,而不是具体的路由选择协议 - 外部网关协议和内部网关协议名称中使用的是“网关”这个名词,是因为在因特网早期的 RFC 文档中,没有使用“路由器”而使用的是“网关”这一名词
- 外部网关协议
3、路由信息协议 RIP
- RIP 是一种分布式的基于距离向量的路由选择协议
(1)RIP 的规定
- 要求自治系统
AS内的每一个路由器,都要维护从它自己到AS内其他每一个网络的距离记录,即距离向量 - 使用跳数【距离】来衡量到达目的网络的距离:
- 路由器到直连网络的距离定义为
1 - 路由器到非直连网络的距离定义为所经过的路由器数
+1
- 路由器到直连网络的距离定义为
- 允许一条路径最多只能包含
15个路由器:- 距离等于 16 时相当于不可达【防止分组在环路上循环,避免网络拥塞】
RIP只适用于小型互联网

RIP认为好的路由就是距离短的路由,也就是所通过路由器数量最少的路由

- 当到达同一目的网络有多条距离相等的路由时,可以进行等价负载均衡,也就是将通信量均衡地分布到多条等价的路径上
- 每个路由表项含三个关键字段:目的网络 N、距离 d、下一跳路由器地址 X
(2)RIP 的特点
- 和谁交换信息:仅和相邻路由器
- 交换什么信息:交换的是各自路由表的信息
- 何时交换信息:
- 周期性交换【如 30 秒】
- 触发更新:为了加快 RIP 的收敛速度,当网络拓扑发生变化时,路由器要及时向相邻路由器通告拓扑变化后的路由信息
(3)RIP的基本工作过程
- 路由器刚开始工作时,只知道自己到直连网络的
RIP距离为1

- 每个路由器仅和相邻路由器周期性地交换并更新路由信息
- 若干次交换和更新后,每个路由器都知道到达本自治系统
AS内各网络的最短距离和下一跳路由器,称为收敛

(4)RIP 的距离向量算法
1)基本更新过程
-
C 向 D 发送封装有路由信息的
RIP更新报文

-
D 收到 C 的路由表后,对其进行修改


-
根据修改后的 C 的路由表,更新 D 的路由表

2)更新时的情况
- 到达目的网络,相同的下一跳,最新消息,要更新
RIP变大了也要更新,因为这是最新消息
| 目的网络 | RIP 距离 | 下一跳 | |
|---|---|---|---|
| C 的路由表 | N 2 | 5 | C |
| D 的路由表(更新前) | N 2 | 2 | C |
| D 的路由表(更新后) | N 2 | 5 | C |
- 发现了新的网络,要更新【添加】
| 目的网络 | RIP 距离 | 下一跳 | |
|---|---|---|---|
| C 的路由表 | N 3 | 9 | C |
| D 的路由表(更新前) | Null | Null | Null |
| D 的路由表(更新后) | N 3 | 9 | C |
- 到达目的网络,不同的下一跳,新路由优势,要更新
| 目的网络 | RIP 距离 | 下一跳 | |
|---|---|---|---|
| C 的路由表 | N 6 | 5 | C |
| D 的路由表(更新前) | N 6 | 8 | F |
| D 的路由表(更新后) | N 6 | 5 | C |
- 到达目的网络,不同的下一跳,RIP 距离相等,可以等价负载均衡
| 目的网络 | RIP 距离 | 下一跳 | |
|---|---|---|---|
| C 的路由表 | N 8 | 4 | C |
| D 的路由表(更新前) | N 8 | 4 | E |
| D 的路由表(更新后) | N 8 | 4 | C,E |
3)不更新的情况
- 到达目的网络,不同的下一跳,新路由劣势,不更新
| 目的网络 | RIP 距离 | 下一跳 | |
|---|---|---|---|
| C 的路由表 | N 9 | 6 | C |
| D 的路由表(不更新) | N 9 | 4 | F |
- 除了上述 RIP 路由条目更新规则,在 RIP 的距离向量算法中还包含以下一些时间参数:
- 路由器每隔大约 30 秒向其所有相邻路由器发送路由更新报文
- 若 180秒【默认】没有收到某条路由条目的更新报文,则把该路由条目标记为无效【即把 RIP 距离设置为 16,表示不可达】
- 若再过一段时间【如 120 秒】,还没有收到该路由条目的更新报文,则将该路由条目从路由表中删除
(5)RIP 的优缺点



-
坏消息传播得慢:
- 又称为路由环路【两个路由器相互学习错误路由,造成循环】
- 或距离无穷计数问题,这是距离向量算法的一个固有问题
-
可以采取多种措施减少出现该问题的概率或减小该问题带来的危害
- 限制最大路径距离为
15【16表示不可达】 - 当路由表发生变化时就立即发送更新报文 【触发更新】,而不是周期性发送
- 让路由器记录收到某特定路由信息的接口,而不让同一路由信息再通过此接口反方向传送【水平分割】
- 限制最大路径距离为
(6)RIP 版本和相关报文的封装
- 现在较新的
RIP版本是 1998 年 11 月公布的RIP2 - 与
RIP1相比,RIP2可以支持变长子网掩码和 CIDR RIP2还提供简单的鉴别过程并支持多播RIP相关报文使用运输层的用户数据报协议UDP进行封装,使用的UDP端口号为520- 从
RIP报文封装的角度看,RIP属于 TCP/IP 体系结构的应用层 - 但
RIP的核心功能是路由选择,这属于 TCP/IP 体系结构的网际层
(7)例题


4、开放最短路径优先协议 OSPF
(1)基本概念
-
链路状态
LS:指本路由器都和哪些路由器相邻,以及相应链路的代价【费用、距离、时延、带宽】

-
Hello分组:- 建立和维护邻居关系
- 封装在
IP数据报中,发往组播地址224.0.0.5 IP数据报首部中的协议号字段的取值为89,表明 IP 数据报的数据载荷为OSPF分组

- 发送周期为
10秒 - 40 秒未收到来自邻居路由器的
Hello分组,则认为该邻居路由器不可达 - 每个路由器都会建立一张邻居表

-
链路状态通告 LSA:使用
OSPF的每个路由器都会产生,包含- 直连网络的链路状态信息
- 邻居路由器的链路状态信息
-
链路状态更新分组 LSULSA 被封装在LSU中,采用可靠的洪泛法发送
- 洪泛法的要点是路由器向自己所有的邻居路由器发送链路状态更新分组,收到该分组的各路由器又将该分组转发给自己所有的邻居路由器【其上游路由器除外】,以此类推
- 可靠是指收到链路状态更新分组后要发送确认,收到重复的更新分组无需再次转发,但要发送一次确认
-
链路状态数据库 LSDB:
- 使用
OSPF的每个路由器都有一个,用于存储LSA - 通过各路由器洪泛法发送封装有自己
LSA的LSU分组,各路由器的LSDB最终达到一致 - 使用
OSPF的各路由器基于LSDB进行最短路径优先计算,构建出各种到达其他各路由器的最短路径,即构建各自的路由表

- 使用
(2)OSPF 与 RIP
OPSF协议克服了RIP的缺点,两者区别如下:
| OSPF | RIP | |
|---|---|---|
| 发送信息方式 | 向本自治系统中所有路由器【洪泛法】 | 仅向自己相邻的路由器 |
| 发送信息内容 | 与本路由器相邻的所有路由器的链路状态【路由器所知道的部分信息】 | 本路由器所知道的全部信息【整个路由表】 |
| 更新时期 | 只有当链路状态发生变化时,并且更新过程收敛得快【不会出现 “坏消息传得慢”】 | 不管网络拓扑是否发生变化,路由器之间都要定期交换路由表的信息 |
| 所属层次 | 网络层协议,直接用 IP 数据报传送【协议字段为 89】 | 应用层协议,在传输层使用 UDP |
- OSPF 还具有以下特点:
- OSPF 允许对每条路由设置成不同的代价,对于不同类型的业务可计算出不同的路由
- 若到同一个目的网络有多条相同代价的路径,则可将通信量分配给这几条路径
- OSPF 分组具有鉴别功能,从而保证仅在可信赖的路由器之间交换链路状态信息
- OSPF 支持可变长度的子网划分和无分类编址 CIDR
- 每个链路状态都带上一个 32 位的序号,序号越大,状态就越新
(3)OSPF 五种分组
- 问候Hello分组:用来发现和维护邻居路由器的可达性
- 数据库描述分组:向邻居路由器给出自己的链路状态数据库中的所有链路状态项目的摘要信息
- 链路状态请求信息分组:向邻居路由器请求发送某些链路状态项目的详细信息
- 链路状态更新分组:路由器使用这种分组将其链路状态进行洪泛发送
- 链路状态确认分组:对链路状态更新分组的确认分组
(4)OSPF 基本工作过程
- 相邻路由器之间周期性发送问候分组 Hello,以便建立和维护邻居关系
- 建立邻居关系后,给邻居路由器发送数据库描述分组 DD,也就是将自己链路状态数据库中的所有链路状态项目的摘要信息发送给邻居路由器
- 收到数据库描述分组后,若发现自己缺少其中某些链路状态项目,则会发送链路状态请求分组 LSR
- 对方收到链路状态请求分组后,则会将其所缺少的链路状态项目的详细信息封装在链路状态更新分组 LSU 中发送回去
- 收到链路状态更新分组后,将这些信息添加到自己的链路状态数据库中

(5)多点接入网络中的 OSPF 路由器
一条总线上有多台主机,则它们互为邻居,因此每个路由器都要向其他路由器发送问候分组和链路状态更新分组
为了减少所发送分组的数量,则需要用相应方法对邻居关系进行删减
OSPF采用选举指定路由器 DR 和备用的指定路由器 BDR的方法减少邻居数目
- 所有的非
DR/BDR只与DR/BDR建立邻居关系 - 非
DR/BDR之间通过DR/BDR交换信息 - 当
DR失效时由BDR顶上

(6)OSPF 划分区域
- 为了使 OSPF 协议能够用于规模很大的网络,OSPF把一个自治系统 AS 再划分为若干个更小的范围,称为区域

- 自治系统边界路由器 ASBR:R6
- 主干路由器 BBR:R3、R4、R5、R6 和 R7
- 区域内路由器 IR:区域 1 内的 R1 和 R2,区域 2 内的 R8,区域 3 内的 R9
- 区域边界路由器 ABR:R 3、R 4 和 R 7
(7)例题

5、边界网关协议 BGP
(1)基本概念
- 边界网关协议 BGP:属于外部网关协议
EGP这个类别,用于自治系统 AS 之间的路由选择协议

- 使用 BGP 的环境因素:
- 不同 AS 内,度量路由的代价【距离,宽带,费用等】可能不同
- AS 之间的路由选择必须考虑政治】安全或经济等有关因素
(2)工作原理
- 在配置
BGP时,每个AS的管理员要选择至少一个路由器作为该AS的BGP 发言人 - 一般来说,两个
BGP发言人都是通过一个共享网络连接在一起的,而BGP 发言人往往就是 BGP 边界路由器 - 使用
TCP连接交换路由信息的两个 BGP 发言人,彼此称为对方的邻站或对等站 BGP发言人除了运行BGP协议外,还必须运行自己所在AS所使用的内部网关协议IGP【例如RIP或OSPF】BGP发言人交换网络可达性的信息【要到达某个网络所要经过的一系列自治系统】- 当
BGP发言人互相交换了网络可达性的信息后,各BGP发言人就根据所采用的策略从收到的路由信息中找出到达各自治系统的较好路由【构造出树形结构且不存在环路的自治系统连通图】


(3)BGP 的特点
- BGP 交换路由信息的结点数量级是 AS 个数的数量级,这要比这些 AS 中的网络数少很多
- 每个 AS 中 BGP 发言人【或边界路由器】的数目是很少的,使得 AS 之间的路由选择不致过分复杂
- BGP 支持 CIDR,因此 BGP 的路由表也就应当包括目的网络前缀、下一跳路由器、到达该目的网络所要经过的各个自治系统序列
- 当 BGP 刚运行时,BGP 的邻站交换整个 BGP 路由表,但以后只需要在发生变化时更新有变化的部分
(4)BGP-4 的 4 中报文
- OPEN (打开) 报文:用来与相邻的另一个
BGP发言人建立关系,使通信初始化 - UPDATE (更新) 报文:用来通告某一路由的信息,以及列出要撤销的多条路由
- KEEPALIVE (保活) 报文:用来周期性地证实邻站的连通性
- NOTIFICATION (通知) 报文:用来发送检测到的差错
(5)RIP、OSPF 与 BGP 的比较

(6)例题


五、IP 多播
1、基本概念
- 多播:
- 让源主机一次发送的单个分组可以抵达用一个组地址标识的若干目的主机,即一对多通信
- 与传统单播“一对一”通信相比,多播可以极大地节省网络资源
- 在因特网上进行的多播,称为IP 多播
- 多播需要路由器的支持才能实现,能够运行多播协议的路由器称为多播路由器

2、IP 多播地址
- 多播数据报的源地址是源主机的 IP 地址,目的地址是 IP 多播地址
- IP 多播地址就是 IPv4 中的 D 类地址
- 多播地址只能用作目的地址,而不能用作源地址
- 每一个 D 类地址来标识一个多播组,使用同一个 IP 多播地址接收 IP 多播数据报的所有主机就构成了一个多播组
- 每个多播组的成员是可以随时变动的,一台主机可以随时加入或离开多播组
- 多播组成员的数量和所在的地理位置也不受限制,一台主机可以属于几个多播组
- 非多播组成员也可以向多播组发送 IP 多播数据报

- 与 IP 数据报相同,IP 多播数据报也是“尽最大努力交付”,不保证一定能够交付给多播组内的所有成员
- IPv 4 多播地址又可分为预留的多播地址【永久多播地址】、全球范围可用的多播地址以及本地管理的多播地址

IP多播可分为以下两种:- 只在本局域网上进行的硬件多播
- 在因特网上进行的多播
3、在局域网上进行硬件多播
-
利用硬件多播来实现局域网内的 IP 多播的原理:
- MAC 地址有多播 MAC 地址这种类型,因此只要把 IPv4 多播地址映射成多播 MAC 地址,即可将 IP 多播数据报封装在局域网的 MAC 帧中
- MAC 帧首部中的目的 MAC 地址字段的值设置为由 IPv4 多播地址映射成的多播 MAC 地址
- 当给某个多播组的成员主机配置其所属多播组的 IP 多播地址时,系统就会根据映射规则从该 IP 多播地址生成相应的局域网多播 MAC 地址

-
因特网号码指派管理局 IANA,将自己从 IEEE 注册管理机构申请到的以太网 MAC 地址块中从
01-00-5E-00-00-00到01-00-5E-7F-FF-FF的多播 MAC 地址,用于映射 IPv4 多播地址 -
这些多播 MAC 地址的左起前 25 个比特都是相同的,剩余 23 个比特可以任意变化,因此共有 2^{23} 个

-
由于
IP多播地址可变化的28比特的前5个比特无法映射到MAC多播地址,这会造成IP多播地址与多播MAC地址的映射关系并不是唯一的 -
因此,收到 IP 多播数据报的主机还要在网际层利用软件进行过滤,把不是主机要接收的 IP 多播数据报丢弃

举例


4、IGMP 与多播路由协议
(1)网际组管理协议 IGMP
1)基本概念
-
IGMP:
- TCP/IP 体系结构网际层中的协议
- 作用:让连接在本地局域网上的多播路由器知道本局域网上是否有主机【实际上是主机中的某个进程】加入或退出了某个多播组
- 仅在本网络有效,使用 IGMP 并不能知道多播组所包含的成员数量,也不能知道多播组的成员都分布在哪些网络中
-
IGMP 报文类型:
- 成员报告报文
- 成员查询报文
- 离开组报文
-
IGMP 报文被封装在 IP 数据报中传送,但它也向 IP 提供服务
-
不把 IGMP 视为一个单独的协议,而视为整个网际协议 IP 的一个组成部分

-
IGMP 的工作可分为两个阶段:
- 第一阶段:
- 当某台主机加入新的多播组时,该主机应向多播组的多播地址发送一个 IGMP 报文,声明自己要成为该组的成员
- 本地的多播路由器收到 IGMP 报文后,还要利用多播路由选择协议,把这种组成员关系转发给互联网上的其他多播路由器
- 第二阶段
- 组成员关系是动态的,本地多播路由器要周期性地探询本地局域网上的主机,以便知道这些主机是否仍继续是组的成员
- 只要对某个组有一台主机响应,多播路由器就认为这个组是活跃的
- 一个组在经过几次探询后仍然没有一台主机响应,多播路由器就认为本网络上的主机都已离开了这个组,就不再把这个组的成员关系转发给其他的多播路由器
2)基本工作原理【看湖科大】
-
加入多播组

-
监视多播组的成员变化
- IGMP 成员查询报文的内容可以是 0.0.0.0,表示全部多播组
- IP 多播数据报的目的地址:224.0.0.1:特殊的 IP 多播地址,在本网络中所有参加多播的主机和路由器的网际层都会接受该多播数据报


- 同一网络中的多播路由器可能不止一个,但没有必要每个多播路由器都周期性地发送
IGMP成员查询报文 - 只要在这些多播路由器中选择一个作为查询路由器,由查询路由器发送
IGMP成员查询报文,而其他的多播路由器仅被动接收响应并更新自己的多播组列表即可 - 选择查询路由器的方法:
- 每个多播路由器若监听到源 IP 地址比自己的 IP 地址小的
IGMP成员查询报文则退出选举 - 最后,网络中只有
IP地址最小的多播路由器成为查询路由器
- 每个多播路由器若监听到源 IP 地址比自己的 IP 地址小的
- 退出多播组

(2)多播路由选择协议【看湖科大】
-
作用:连接在局域网上的多播路由器还必须和因特网上的其他多播路由器协同工作,以便把 IP 多播数据报用最小的代价传送给所有的多播组成员【实现在因特网上进行 IP 多播】
-
主要任务:在多播路由器之间为每个多播组建立一个多播转发树:
- 多播转发树连接多播源和所有拥有该多播组成员的路由器
- IP 多播数据报只要沿着多播转发树进行洪泛,就能被传送到所有拥有该多播组成员的多播路由器
- 之后,在多播路由器所直连的局域网内,多播路由器通过硬件多播,将 IP 多播数据报发送给该多播组的所有成员
- 针对不同的多播组需要维护不同的多播转发树,而且必须动态地适应多播组成员的变化,但此时网络拓扑并不一定发生变化,因此**多播路由选择协议要比单播路由选择协议(例如 RIP、OSPF 等)复杂得多
- 为了覆盖多播组的所有成员,多播转发树可能要经过一些没有多播组成员的路由器**

-
目前有两种方法来构建多播转发树:
- 基于源树(Source-Base Tree) 多播路由选择
- 组共享树(Group-Shared Tree)多播路由选择
六、移动 IP
1、基本概念
-
移动 IP:
- 使得移动主机在各网络之间漫游时,仍然能够保持其原来的 IP 地址不变
- 为因特网中的非移动主机提供了相应机制,使得它们能够将 IP 数据报正确发送到移动主机

-
归属网络:每个移动主机都有一个默认连接的网络或初始申请接入的网络,称为归属网络
(Home Network) -
归属地址:移动主机在归属网络中的
IP地址在其整个移动通信过程中是始终不变的,因此称为永久地址(Permanent Address)或归属地址(Home Address) -
归属代理:
- 在归属网络中,代表移动主机执行移动管理功能的实体称为归属代理
(Home Agent) - 通常就是连接在归属网络上的路由器,然而它作为代理的特定功能则是在网络层完成的
- 在归属网络中,代表移动主机执行移动管理功能的实体称为归属代理
-
外地网络:移动主机当前漫游所在的网络称为外地网络
(Foreign Network)或被访网络(Visited Network) -
外地代理:
- 在外地网络中,帮助移动主机执行移动管理功能的实体称为外地代理
(Foreign Agent) - 通常就是连接在外地网络上的路由器
- 在外地网络中,帮助移动主机执行移动管理功能的实体称为外地代理
-
转交地址:外地代理会为移动主机提供一个临时使用的属于外地网络的转交地址
(Care-of Address)
2、通信过程
-
代理发现与注册
- 移动主机 A 通过自己的代理发现协议,与外地代理建立联系,并从外地代理获得一个属于该外地网络的转交地址【例如 175.1.1.1/16】,同时向外地代理注册自己的永久地址、归属代理地址
- 外地代理将移动主机 A 的永久地址记录在自己的注册表中,并向移动主机的归属代理注册该移动主机的转交地址【也可由移动主机直接进行注册】
- 归属代理会将移动主机 A 的转交地址记录下来,此后归属代理会代替移动主机接收所有发送给该移动主机的 IP 数据报,并利用 IP 隧道技术将这些数据报转发给外地网络中的移动主机
- 当移动主机不在归属网络时,归属代理会以自己的 MAC 地址应答所有对该移动主机的 ARP 请求,即归属代理采用 ARP 代理技术
- 为了使归属网络中其他各主机和路由器能够尽快更新各自的 ARP 高速缓存,归属代理还会主动发送 ARP 广播,并声称自己是该移动主机。这样,所有发送给该移动主机的 IP 数据报都会发送给归属代理

-
固定主机向移动主机发送 IP 数据报
- 当外地代理和移动主机不是同一台设备时,转交地址实际上是外地代理的地址而不是移动主机的地址,转交地址既不会作为移动主机发送 IP 数据报的源地址,也不会作为移动主机所接收的 IP 数据报的目的地址
- 转交地址仅仅是归属代理到外地代理的 IP 隧道的出口地址
- 所有使用同一外地代理的移动主机都可以共享同一个转交地址


-
移动主机向固定主机发送 IP 数据报
- 由于 IP 路由器并不关心 IP 数据报的源地址,因此该 IP 数据报被直接路由到固定主机 B,而无须再通过归属代理进行转发
- 移动主机可以将外地代理作为自己的默认路由器,也可以通过代理发现协议从外地代理获取外地网络中其他路由器的地址,并将其设置为自己的默认路由器

-
同址转交地址方式
- 移动主机需要运行额外的外地代理软件
- 外地网络也需要提供相应机制,使移动主机能够自动获取一个外地网络中的地址作为自己的 IP 地址和外地代理的地址,被称为同址转交地址(Co-Located Care-of Address)
-
三角形路由问题

- 解决方法:
- 给固定主机配置一个通信代理,固定主机发送给移动主机的 IP 数据报,都要通过该通信代理转发
- 通信代理先从归属代理获取移动主机的转交地址,之后所有发送给移动主机的 IP 数据报,都利用转交地址直接通过 IP 隧道发送给移动主机的外地代理,而无须再通过移动主机的归属代理进行转发
- 这种方法以增加复杂性为代价,并要求固定主机也要配置通信代理,也就是对固定主机不再透明
七、网络层设备
1、冲突域和广播域
- 域:冲突或广播在其中发生并传播的区域
- 冲突域:
- 连接到同一物理介质上的所有节点的集合,这些节点之间存在介质争用的现象
- OSI 中被视为第 1层概念
- 第 1 层设备:集线器、中继器不能划分冲突域
- 第 2 层设备:网桥、交换机,第 3 层设备:路由器,能划分冲突域
- 广播域:
- 接受同样广播消息的结点集合,在该集合中的任何一个结点发送一个广播帧,其他能收到这个帧的结点都被认为是该广播帧的一部分
- OSI 中被视为第 2 层概念
- 第 1、2 层设备不能划分广播域
- 第 3 层设备能划分冲突域
- 通常所说的局域网 LAN 特指使用路由器分割的网络,也就是广播域
2、路由器的组成和功能
(1)基本概念
- 路由器:
- 是一种具有多个输入/输出端口的专用计算机
- 主要实现物理层,数据链路层,网络层的功能
- 是网络层设备
- 任务:连接异构网络并完成分组转发
- 在多个逻辑网络【即多个广播域】互连时必须使用路由器
(2)路由器的组成
-
路由选择部分:
- 包括:路由选择处理机、路由选择协议、路由表
- 也称:控制部分,核心是路由选择处理机
- 任务:
- 根据所选定的路由选择协议构造出路由表
- 同时经常或定期地和相邻路由器交换路由信息更新和维护路由表
-
分组转发部分:
- 包括:交换结构【一个在路由器中的网络】、一组输入端口、一组输出端口
- 也称:交换组织
- 作用:根据转发表对分组进行处理,将某个输入端口进入的分组从一个合适的输出端口转发出去

-
路由器的端口中都有物理层、数据链路层和网络层的处理模块
-
输入端口在物理层接收比特流,在数据链路层提取出帧,剥去帧的首部和尾部后,分组就被送入网络层的处理模块,输出端口执行相反的操作
-
端口在网络层的处理模块中都设有一个缓冲队列,用来暂存等待处理或已处理完毕待发送的分组,还可用来进行必要的差错检测
-
路由器的端口一般都具有输入和输出功能
3、路由表与分组转发
-
路由表:
- 根据路由选择算法得出的,主要用途是路由选择
- 组成:目的网络的IP地址、子网掩码、下一跳IP地址、接口

-
转发表:
- 从路由表得出,其表项和路由表项有直接的对应关系
- 组成:一个分组将要发往的目的地址、分组的下一跳【下一步接收者的目的地址,实际为 MAC 地址】
- 可使用一个默认路由【优先级比其他项目低】代替所有具有相同“下一跳”的项目,以减少重复项
- 可以用软件或特殊的硬件实现

-
转发与路由选择的区别:
- 转发:路由器根据转发表把收到的 IP 数据报从合适的端口转发出去,仅涉及一个路由器
- 路由选择:涉及很多路由器,路由表是许多路由器协同工作的结果
-
路由表不等于转发表,分组的实际转发是靠直接查找转发表,而不是直接查找路由表
第5章 传输层
一、传输层概述
1、基本概念

- 物理层、数据链路层以及网络层它们共同解决了将主机通过异构网络互联起来所面临的的问题,实现了主机到主机的通信
- 实际上在计算机网络中进行通信的真正实体是位于通信两端主机中的进程
- 为运行在不同主机上的应用进程提供直接的通信服务是传输层的任务
- 传输层协议又称端到端协议

2、传输层的功能
(1)应用进程之间的通信

(2)复用和分用
- 复用:发送方不同的应用进程都可以使用同一传输层协议传输数据
- 分用:接收方的传输层在剥去报文的首部之后能够把这些数据正确交付到目的应用进程


- 注意:
- 网络层的复用:发送方不同协议的数据都可被封装成 IP 数据报发送出去
- 网络层的分用:接收方的网络层在剥去首部后把数据交付给相应的协议
(3)差错检测
- 网络层只检查 IP 数据的首部,不检验数据部分
- **传输层对报文(首部和数据部分)**进行差错检测
(4)提供面向连接和无连接的传输协议
- 面向连接的 TCP 协议:为其上层提供的是面向连接的可靠的数据传输服务
- 无连接的 UDP 协议:为其上层提供的是无连接的不可靠的数据传输服务


- 注意:
- 网络层无法同时实现两种协议,即要么只提供面向连接的服务【如虚电路】,要么只提供无连接服务【如数据报】,而不可能在网络层中同时存在这两种形式
- IP 数据报和 UDP 数据报的区别:
- IP 数据报在网络层要经过路由器的存储转发
- UDP 数据报在传输层的端到端的逻辑信道中传输,封装成 IP 数据报在网络层传输时,UDP数据报的信息对路由器是不可见的
- TCP 和网络层虚电路的区别:
- TCP 报文段在传输层抽象的逻辑信道中传输,对路由器不可见
- 虛电路所经过的交换结点都必须保存虚电路状态信息
- 在网络层若采用虚电路方式,则无法提供无连接服务
- 传输层采用 TCP 不影响网络层提供无连接服务
3、传输层的寻址与端口
(1)端口的作用
- 端口:
- 传输层服务访问点(TSAP)
- 能让应用层的各种进程将其数据通过端口向下交付给传输层
- 让传输层知道应当将其报文段的数据向上通过端口交付给应用层相应的进程

(2)端口号
- 运行在计算机上的进程是使用进程标识符 PID来标识的
- 因特网上的计算机并不是使用统一的操作系统,不同的操作系统使用不同格式的进程标识符
- 为了使运行不同操作系统的计算机的应用进程之间能进行网络通信,必须使用统一的方法对 TCP/IP 体系的应用进程进行标识,即端口号
- 端口号只具有本地意义,即端口号只是为了标识本计算机应用层中的各进程
- 在因特网中,不同计算机中的相同的端口号是没有联系的
- TCP 和 UDP 端口号之间也是没有关系的
- 端口号使用16 比特表示,取值范围
0~65535,根据端口号范围将端口分为两类:- 服务端使用端口号:
- 熟知端口号:
0~1023,IANA把这些端口号指派给了TCP/IP体系中最重要的一些应用协议,让所有用户都知道 - 登记端口号:
1024~49151,为没有熟知端口号的应用程序使用,必须在IANA按照规定的手续登记,以防止重复【如Microsoft RDP微软远程桌面使用的端口是3389】

- 熟知端口号:
- 客户端使用端口号:
49152~65535- 仅在客户进程运行时才动态地选择,又称短暂(临时)端口号
- 当服务器进程收到客户进程的报文时,就知道了客户进程所使用的的动态端口号
- 通信结束后,这个端口号可供其他客户进程以后使用
- 服务端使用端口号:
(3)套接字
- 套接字:
- 实际上是一个通信端点
- 唯一地标识网络中的一台主机上的一个应用进程
二、UDP 协议
1、UDP 数据报
(1)UDP 概述
- UDP 仅在 IP 的数据报服务之上增加了两个最基本的服务:复用和分用,差错检测
- 特点:
- 无须建立连接
- 无连接状态:当某些专用服务器使用 UDP 时,一般都能支持更多的活动客户机
- 首部开销小:仅有 8 B
- 没有拥塞控制,网络中的拥塞不会影响源主机的发送速率
- 支持单播、多播和广播
- 不保证可靠交付:可靠性由用户在应用层维护
- 面向应用报文:收到应用层报文后直接为报文添加 UDP 首部就进行发送
- 适用场景:
- 一次性传输较少数据的网络应用【DNS、SNMP 等】
- 多媒体应用【IP 电话、实时视频会议、流媒体等】
(2)UDP 首部格式
- UDP 数据报包含两部分:
- 首部:8 B
- 数据部分

- 源端口和目的端口:
- UDP 分用:基于目的端口
- UDP 复用:基于源端口
- 目的端口号不正确:丢弃报文,并有 ICMP 发送“端口不可达”差错报文给发送方
- 长度:包括首部和数据,最小是
8【仅有首部】 - 校验和(可选):
- 检测 UDP 数据报是否有错,有就丢弃
- 当源主机不想计算校验和时,令该字段为全 0
2、UDP 校验
- UDP 检验和提供差错检测功能
- 在计算校验和时,要在 UDP 用户数据报之前增加 12 B的伪首部【既不向下传送也不向上递交】
- 源 IP 地址和目的 IP 地址:和 IP 数据一样,各占 4 B
- 伪首部第 3 个字段是全 0
- 协议字段:值是 17
- UDP 长度:UDP 用户数据报长度【首部长度和数据部分长度之和】

- 校验过程:
- 将校验和字段置位 0
- 将伪首部和 UDP 用户数据报【首部和数据部分】看成是以 16 位为单位的二进制组成,依次进行二进制反码求和
- 将求和的结果的反码写入校验和字段

- 注意:
- 检验时,若 UDP 数据报部分的长度不是偶数个字节,则需填入一个全 0 字节【此字节和伪首部一样,是不发送的】
- 若 UDP 检验和检验出 UDP 数据报是错误的,则可以丢弃,也可以交付给上层,但是需要附上错误报告,即告诉上层这是错误的数据报
- 通过伪首部,不仅可以检查源端口号、目的端口号和 UDP 用户数据报的数据部分,还可以检查 IP 数据报的源 IP 地址和目的地址。
三、TCP 协议
1、TCP 协议的特点
- TCP 是在不可靠的 IP 层之上实现的可靠传输协议
- TCP 主要解决:传输的可靠、有序、无丢失和不重复问题
- 主要特点:
- 面向连接:发送数据前需要"三报文握手"建立连接,数据传输结束后需要"四报文挥手"释放连接
- 仅支持单播:每一条 TCP 连接是点对点(一对一)的
- 提供全双工通信:允许通信双方的应用进程在任何时候都能发送数据,为此TCP 连接的两端都设有发送缓存和接收缓存
- 发送缓存暂存:
- 发送应用程序传送给发送方 TCP 准备发送的数据
- TCP 已发送但尚未收到确认的数据
- 接收缓存暂存:
- 按序到达但尚未被接收应用程序读取的数据
- 不按序到达的数据
- 发送缓存暂存:
- 面向字节流:虽然实际上 TCP 的交互是数据块之间,但是 TCP 其将应用进程交付下来的数据块仅视为一连串无结构的字节流
2、TCP 报文段
- TCP 传送的数据单元称为报文段
- TCP 报文段既可以用来运载运载数据,又可以用来建立连接、释放连接和应答
- TCP 首部最短是
20B,后面有4N字节是可选的,长度是4B的整数倍

- 源端口:占
2B,写入源端口号,用来标识发送该 TCP 报文段的应用进程 - 目的端口:占
2B,写入目的端口号,用来标识接收该 TCP 报文段的应用进程 - 序号:占
4B,取值范围 [0,2^{32}-1]- 每个字节按顺序编号,序号增加到最后一个后,下一个序号就又回到
0 - 用于指出本 TCP 报文段数据载荷的第一个字节的序号
- 每个字节按顺序编号,序号增加到最后一个后,下一个序号就又回到
- 确认号:占
4B- 是期望收到对方下一个报文段的第一个数据字节的序号
- 可理解为若确认号=n,则表明到序号 n-1 为止的所有数据都已正确接收,期望接收序号为 n 的数据
- 保留字段:占
6比特,保留为今后使用,但是目前应置为0 - 数据偏移:占
4比特,并以 4B 为单位- 指出
TCP报文段的数据载荷部分的起始处距离TCP报文段的起始处有多远 - 实际上是指出 TCP 报文段的首部长度
- 首部固定长度为 20 字节,因此数据偏移字段的最小值
0101 - 首部最大长度为 60 字节,因此数据偏移字段最大值为
1111
- 指出
- 窗口:占
2B,取值范围 [0,2^{16}-1], 以字节为单位- 指出发送本报文段的一方的接收窗口的大小,即接收缓存的可用空间大小,这用来表征接收方的接收能力
- 检验和:占
2B- 检测范围包括 TCP 报文段的首部和数据载荷两部分
- 在计算校验和时,要在
TCP报文段的前面加上12B的伪首部
- 确认标志位 ACK:
- 取值为
1时确认号字段才有效,为0时确认号字段无效 TCP规定:在 TCP 连接建立后,所有传送的 TCP 报文段都必须把 ACK 置1
- 取值为
- 同步标志位 SYN:
- 在
TCP连接建立时用来同步序号 - 当SYN=1 且 ACK=0时,表明这是一个 TCP 连接请求报文段
- 对方若同意建立连接,则在响应的 TCP 报文段的首部中使SYN=1 且 ACK=1
- 综上,SYN=1 的 TCP 报文段要么是一个连接请求报文段,要么是一个连接响应报文段
- 在
- 终止标志位 FIN:
- 用来释放
TCP连接 - 当
FIN=1时,表明此 TCP 报文段的发送方已将全部数据发送完毕,现在要求释放 TCP 连接
- 用来释放
- 复位标志位 RST:
- 用来复位
TCP连接 - 当
RST=1时,表明TCP连接出现了异常,必须释放连接,然后再重新建立连接 RST置1还用来拒绝一个非法的报文段或拒绝打开一个TCP连接
- 用来复位
- 推送标志位 PSH:
- 接收方的
TCP收到PSH=1的报文段会尽快上交应用进程,而不必等到接收缓存都填满后再向上交付
- 接收方的
- 紧急标志位 URG:
- 当
URG=1时紧急指针字段有效,告诉系统此报文段中有紧急数据应尽快传送【高优先级,插入到报文段数据的最前面】 - 当
URG=0时紧急指针字段无效
- 当
- 紧急指针:占
2B,以字节为单位- 指出本报文段中的紧急数据的字节数
- 窗口为 0 时也可以发送紧急数据
- 选项:以增加
TCP的功能- 最大报文段长度 MSS 选项:
TCP报文段数据载荷部分的最大长度 - 窗口扩大选项:为了扩大窗口 (提高吞吐率)
- 时间戳选项:
- 用来计算往返时间
RTT - 用于处理序号超范围的情况,又称为防止序号绕回
PAWS
- 用来计算往返时间
- 选择确认选项:实现选择确认功能
- 最大报文段长度 MSS 选项:
- 填充:由于选项长度可变,使首部长度是
4B的整数倍
3、TCP 连接管理
- TCP 是面向连接的协议,它基于运输连接来传送 TCP 报文段
- TCP 运输连接的建立和释放,是每一次面向连接的通信中必不可少的过程
- TCP 运输连接有以下三个阶段:
- 通过“三报文握手”来建立 TCP 连接
- 基于已建立的 TCP连接进行可靠的数据传输
- 在数据传输结束后,还要通过“四报文挥手”来释放 TCP连接

(1)TCP 连接建立(三次握手)
- 在 TCP 连接建立的过程中,要解决以下三个问题:
- 使 TCP 双方能够确知对方的存在
- 使 TCP 双方能够协商一些参数(例如最大报文段长度、最大窗口大小、时间戳选项等)
- 使 TCP 双方能够对运输实体资源进行分配和初始化。运输实体资源包括缓存大小、各状态变量、连接表中的项目等
过程

- 第一次握手:
- 客户发送 TCP 连接请求报文段进入 SYN-SENT【同步已发送】状态
- 同步位 SYN=1,选择一个初始序号 seq=x
- SYN=1 的报文段不能携带数据,但消耗一个序号 x
- TCP 客户进程下一次发送的 TCP 报文段的数据载荷的第一个字节的序号为 x+1
- 第二次握手:
- 服务器收到连接请求报文段,若同意建立连接,向客户返回 TCP 连接请求确认报文段,并为 TCP 连接分配缓存和变量
- 服务器进程进入 SYN-RCVD【同步已接收】状态
- 同步位 SYN=1,确认位 ACK=1,确认号 ack=x+1,为自己选择一个初始序号 seq=y
- SYN=1 的报文段不能携带数据,但消耗一个序号 y
- 第三次握手:
- 客户端返回连接请求确认报文段的普通 TCP 确认报文段,并为 TCP 连接分配缓存和变量
- 客户端进入 ESTABLISHED【连接已建立】状态
- 确认位 ACK=1,确认号 ack=y+1,序号 seq=x+1
- 此时 TCP 连接已经建立,服务器收到客户端的确认后,进入 ESTABLISHED 状态
- 注意:
- 服务端的资源是完成第二次握手时分配的
- 客户端的资源是完成第三次握手时分配的
- 使用“三报文握手”而不是“两报文握手”的原因:为了防止已失效的 TCP 连接请求报文段突然又传送到了 TCP 服务器进程,因而导致错误

例题


(2)TCP 连接释放(四次挥手)

- 第一次挥手:
- 客户端向服务端发送 TCP 连接释放报文段,并停止发送数据,主动关闭连接
- 客户端进入 FIN-WAIT-1【终止等待 1 】状态
- 终止位 FIN=1,序号 seq=u【等于之前已传送的数据的最后一个字节的序号+1】
- 确认位 ACK=1,确认号 ack=v【等于之前已收到的数据的最后一个字节的序号+1】
- FIN=1 的报文段即使不携带数据,也要消耗掉一个序号 u
- 第二次挥手:
- 服务器收到连接释放报文段后,发送 TCP 普通确认报文段
- 务器进入 CLOSE-WAIT【关闭等待】状态
- 确认位 ACK=1,确认号 ack=u+1,序号 seq=v【等于之前已传送过的数据最后一个字节的序号+1】
- 此时 TCP 连接处于半关闭状态:
- 从客户端到服务器方向的连接释放
- 服务器还可以向客户端发送文件,且客户端需接受
- 客服端收到服务器的确认,进入 FIN-WAIT-2【终止等待 2】状态,等待服务器发出的连接释放报文段
- 第三次挥手:
- 服务器发送 TCP 连接释放报文段,进入 LAST-ACK【最后确认】状态,等待客户端的确认
- 终止位 FIN=1,序号 seq=w【在半关闭状态下服务器可能又发送了一些数据】
- 服务器重复发送上次已发送到确认号 ack=u+1
- 第四次挥手:
- 客户端返回连接释放确认报文段的普通 TCP 确认报文段
- 客户端进入 TIME-WAIT【时间等待】状态
- 确认位 ACK =1,确认号 ack=w+1,序号 seq=u+1
- 服务器收到该报文段后进入 CLOSED【关闭】状态
- 在经过时间等待计时器设置的世界 2 MSL【最大报文段寿命】后,客户端进入 CLOSED 【关闭】状态
-
客户机还要要等到一段时间
2MSL后完全关闭的原因:- 处于 TIME-WAIT【时间等待】状态后要经过
2MSL时长,可以确保 TCP 服务器进程能够收到最后一个 TCP 确认报文段而进入 CLOSED【关闭】状态 - TCP 客户进程在发送完最后一个 TCP 确认报文段后,再经过
2MSL时长,就可以使本次连接持续时间内所产生的的所有报文段都从网络中消失,这样就可以使下一个新的 TCP 连接中不会出现旧连接中的报文段

- 处于 TIME-WAIT【时间等待】状态后要经过
-
TCP 保活计时器的作用

例题





4、TCP 可靠传输
- TCP 提供的可靠数据传输保证接收方进程从缓存区读出的字节流与发送方发出的字节流完全一样
- TCP 使用校验【与UDP一致】、序号、确认、重传来达到这个目的
(1)序号
-
TCP 首部的序号字段用来保证数据能有序提交给应用层
-
TCP 把数据视作一个无结构但有序的字节流
-
序号建立在传送的字节流之上,而不建立在报文段之上
-
序号字段的值是指本报文段所发送的数据的第一个字节的序号
-
注意:
ackn在选择重传协议与 TCP 协议中并不完全相同- 在选择重传协议中,
ackn表明序号到n为止的数据已正确接收,现在期望收到序号为n+1的数据 - 在 TCP 协议中,
ackn表明序号到n-1为止的数据已正确接收,现在期望收到序号为n的数据

- 在选择重传协议中,
-
使用三个指针 P1、P2、P3 分别指向相应的字节序号:
- P1 指向发送窗口内已发送但还未收到确认的第一个数据的序号
- P2 指向发送窗口内还未发送的第一个数据的序号
- P3 指向发送窗口前沿外的第一个数据的序号



(2)确认
- TCP 首部的确认号是期望收到对方的下一个报文段的数据的第一个字节的序号
- TCP 默认使用累计确认,即 TCP 只确认数据流中至第一个丢失字节为止的字节
- TCP 可以使用选择确认【SACK】


(3)重传
1)超时
- 超时计时器设置的重传时间到期但还未收到确认时,就要重传这一报文段
- 报文段的往返时间 RTT:一个报文段发出时间和收到相应确认时间之差
- 加权平均往返时间 RTT_S:随新测量 RTT 样本值的变化而变化
- 超时重传时间 RTO:略大于 RTT_S【过大,报文段丢失时,不能立即重传,导致数据传输时延大】


- 往返时间测量问题:


2)冗余 ACK
- 再次确认某个报文段的 ACK,而发送方先前已经收到过该报文段的确认
- TCP 规定每当比期望序号大的失序报文到达时,就发送一个冗余 ACK,指明下一个期待字节的序号
- TCP 规定当发送方收到对同一个报文段的 3 个冗余 ACK 时,就可以认为跟在这个被确认报文段之后的报文段已经丢失
- 快速重传:只要某个报文段丢失,就立即重传
(4)检验



5、TCP 流量控制
(1)基本概念
- 流量控制:解决因发送方发送数据太快而导致接收方来不及接收,造成接收方的接收缓存溢出的问题
- 流量控制的基本方法:接收方根据自己的接收能力【接收缓存的可用空间大小】控制发送方的发送速率

- TCP 利用滑动窗口机制实现对发送方的流量控制
- TCP 的窗口单位是字节
- 发送窗口 swnd的上限值=min(rwnd, cwnd)
| 拥塞窗口 cwnd | 接收窗口 rwnd |
|---|---|
| 发送方根据当前网络拥塞程度估计而确认的窗口值 | 接收方允许连续接收的能力,用来动态地调整发送方的发送窗口大小 |
(2)TCP 的流量控制方法
- 发送方窗口随着接收方窗口变化而变化【通过确认报文将rwnd 告知发送方】
- 发送方发送完窗口内数据后需要等到确认报文才会滑动窗口并继续发送
- 若窗口内的某个值很久没有收到回答报文,则超时重传报文

-
持续计时器:只要 TCP 连接的一方收到对方的零窗口通知,就启动

-
**若发送的零窗口探测报文也丢失了,是否会造成新死锁
不会,因为零窗口探测报文也有超时重传机制
例题

6、TCP 拥塞控制
(1)基本概念
-
拥塞:在某段时间,若对网络中某一资源的需求超过了该资源所能提供的可用部分,网络性能就要变坏
-
若出现拥塞而不进行控制,整个网络的吞吐量将随输入负荷的增大而下降

-
流量控制与拥塞控制的区别:
- 流量控制:
- 以接收方的接收能力控制发送方(源点)的发送速率
- 只与特定的点对点通信的发送方和接收方之间的流量有关
- 拥塞控制:
- 源点根据各方面因素,按拥塞控制算法自行控制发送速率
- 全局性问题,涉及网络中所有的主机、路由器等
- 流量控制:
(2)基本方法
-
开环控制:
- 试图用良好的设计来解决问题
- 从一开始就保证问题不会发生
- 一旦系统启动并运行起来,就不需要中途修正
- 当网络的流量特征可以准确规定且性能要求可以事先获得时,适合使用开环控制
-
闭环控制:
- 基于反馈的控制方法,包括以下三个部分
- 监测网络拥塞在何时、何地发生
- 把拥塞发生的相关信息传送到可以采取行动的地方
- 调整网络的运行以解决拥塞问题
- 当网络的流量特征不能准确描述或者当网络不提供资源预留时,适合使用闭环控制
- 因特网采用的就是闭环控制方法
- 基于反馈的控制方法,包括以下三个部分
-
衡量网络拥塞的指标:

-
根据拥塞信息的反馈形式,可将闭环拥塞控制算法分为
- 显示反馈算法:从拥塞节点【即路由器】向源点提供关于网络中拥塞状态的显式反馈信息
- 隐式反馈算法:源点自身通过对网络行为的观察【例如超时重传或往返时间 RTT】来推断网络是否发生了拥塞,TCP 采用的就是隐式反馈算法
-
进行拥塞控制是需要付出代价的:
- 可能需要在节点之间交换信息和各种命令,以便选择拥塞控制的策略并实施控制,这样会产生额外开销
- 可能需要预留一些资源用于特殊用户或特殊情况,这样就降低了网络资源的共享程度
(3)TCP 的四种拥塞控制方法
1)慢开始和拥塞避免(TCP 连接建立和网络出现超时)
- 发送方维护一个叫做拥塞窗口 cwnd的状态变量,其值取决于网络的拥塞程度,并且动态变化
- 拥塞窗口 cwnd 的维护原则:只要网络没有出现拥塞,拥塞窗口就再增大一些 【确认报文段窗口大小】,但只要网络出现拥塞,拥塞窗口就减少一些
- 判断出现网络拥塞的依据:没有按时收到应当到达的确认报文 【发送超时重传】

- 不考虑流量控制时,发送方将拥塞窗口作为发送窗口 swnd,即
swnd = cwnd - 维护一个慢开始门限 ssthresh状态变量:
- 当
cwnd < ssthresh时,使用慢开始算法 - 当
cwnd > ssthresh时,停止使用慢开始算法而改用拥塞避免算法 - 当
cwnd = ssthresh时,既可使用慢开始算法,也可以使用拥塞避免算法
- 当
- 慢开始算法:
- 拥塞窗口从 1 开始,根据应答报文大小来扩大拥塞窗口【2 倍】
- 如发送方窗口 2,应答大小 2,则下次发送大小为 4
- 指一开始向网络注入的报文段少,而并不是指拥塞窗口 cwnd 的值增长速度慢
- 拥塞避免算法:
- 当窗口增加到一定大小,发送方发送的报文出现了超时重传,则判断网络可能出现了拥塞,此时将拥塞窗口初始化为 1
- 同时将慢开始门限 ssthresh 设置为发生拥塞时窗口大小的一半,拥塞窗口每次只扩大 1,而不是向慢开始那样根据发送方的返回窗口进行增加
- 并非指完全能够避免拥塞,而是指在拥塞避免阶段将 cwnd 值控制为按线性规律增长,使网络比较不容易出现拥塞

- 在慢开始和拥塞避免算法中使用了“乘法减小”和“加法增大”方法:
- 乘法减小:
- 指不论是在慢开始阶段还是在拥塞避免阶段,只要出现超时【即很可能出现了网络拥塞】,就把慢开始门限值 ssthresh 设置为当前拥塞窗口的一半,并执行慢开始算法
- 当网络频繁出现拥塞时,ssthresh 值就下降得很快,以大大减少注入网络的分组数
- 加法增大:
- 指执行拥塞避免算法后,在收到对所有报文段的确认后【即经过一个 RTT】,就把拥塞窗口 cwnd 增加一个 MSS 大小,使拥塞窗口缓慢增大,以防止网络过早出现拥塞
- 乘法减小:
2)快重传和快恢复(发送方接收到冗余 ACK)
-
快重传算法:使发送方尽快进行重传,而不是等重传计时器超时再重传
- 要求接收方不用等待自己发送数据时才进行捎带确认,而是要立即发送确认,即使收到了失序的报文段也要立即发出对已收到的报文段的重复确认
- 发送方一旦收到 3 个连续的重复确认,就将相应的报文段立即重传,而不是等该报文段的超时重传计时器超时再重传

-
快恢复算法:发送方一旦收到 3 个重复确认,就知道现在只是丢失了个别报文段,于是不启动慢开始算法,而执行快恢复算法
- 发送方将慢开始门限 ssthresh 值和拥塞窗口 cwnd 值调整为当前窗口的一半,开始执行拥塞避免算法
- 由于跳过了拥塞窗口
cwnd从1起始的慢开始过程,所以被称为快恢复 - 也有的快恢复实现是把快恢复开始时的拥塞窗口
cwnd值再增大一些【cwnd=新 ssthresh+3】:- 既然发送方收到 3 个重复的确认,就表明有 3 个数据报文段已经离开了网络
- 这 3 个报文段不再消耗网络资源而是停留在接收方的接收缓存中
- 可见现在网络中不是堆积了报文段而是减少了 3 个报文段,因此可以适当把拥塞窗口扩大些

(4)例题





第6章 应用层

一、网络应用模型
1、应用层概述
- 应用层是计算机网络体系结构的最顶层,是设计和建立见算计网络的最终目的

2、客户/服务器方式(C/S)
- C/S 模型:有一个总是打开的主机称为服务器,它服务于许多来自其他客户机的主机请求,工作流程:
- 服务器处于接收请求的状态
- 客户机发出服务请求,并等待接收结果
- 服务器收到请求后,分析请求,进行必要的处理,得到结果并发送给客户机

- C/S 主要特征:
- 客户和服务器是指通信中所涉及的两个应用进程
- 该方式所描述的是进程之间服务和被服务的关系
- 客户是服务请求方,服务器是服务提供方【最主要】
- 服务器总是处于运行状态,并等待客户的服务请求
- 服务器特点:
- 提供永久服务
- 服务器 IP 地址固定不变
- 客户端特点:
- 与服务器通信,使用服务器提供的服务
- 间歇性接入网络
- 可能使用动态的 IP 地址
- 不与其他客户端直接通信
- 常见应用:
- 通常是服务集中型的,即应用服务集在网络中比客户计算机少得多的服务器计算机上
- 如:Web、文件传输协议 FTP、远程登录、电子邮件等
- 由于一台服务器计算机要为多个客户机提供服务,在
C/S应用中,常会出现服务器计算机跟不上众多客户机请求的情况
- 其他特点:
- 网络中各计算机的地位不平等,服务器可通过对用户权限的限制来达到管理客户机的目的
- 整个网络的管理工作由少数服务器担当,因此网络的管理非常集中和方便
- 可扩展性不佳,受服务器硬件和网络带宽的限制,服务器支持的客户机数有限
2、对等方式(P2P)
- P2P 模型:
- 没有固定的服务请求者和服务提供者,分布在网络边缘各端系统中的应用进程是对等的,被称为对等方
- 对等方相互之间直接通信,每个对等方既是服务的请求者,又是服务的提供者

- 主要特点:
- 减轻了服务器的计算压力,消除了对某个服务器的完全依赖,可以将任务分配到各个结点上,因此大大提高了系统效率和资源利用率
- 多个客户机之间可以直接共享文档
- 可扩展性好,传统服务器有响应和带宽的限制,因此只能接受一定数量的请求
- 网络健壮性强,单个结点的失效不会影响其他部分的结点
- 缺点:在获取服务的同时,还要给其他结点提供服务,因此会占用较多的内存,影响整机速度
- 常见应用:
- 基于 P2P 的应用是服务分散型的,因为服务不是集中在少数几个服务器计算机中,而是分散在大量对等计算机中
- 如:P2P 文件共享、即时通信、P2P 流媒体、分布式存储等
二、域名系统 DNS
1、基本概念
- 城名系统 DNS:
- 是因特网使用的命名系统
- 将网址映射成 IP 地址
- 采用客户/服务器模型
- 其协议运行在 UDP 之上,使用 53 号端口
- 从概念上可将 DNS 分为三部分:层次域名空间、域名服务器和解析器
2、层次域名空间
-
域名:任何一个连接到因特网的主机或路由器,都有一个唯一的层次结构名称
-
域:名字空间中一个可被管理的部分

-
顶级域名(Top Level Domain,TLD)分为以下三类:
- 国家顶级域名 nTLD:如:cn 表示中国,us 表示美国,uk 表示英国、等等
- 通用顶级域名 gTLD:如:com(公司企业)、net(网络服务机构)、org(非营利性组织)、int(国际组织)、edu(美国教育机构)、gov(美国政府部门)、mil(美国军事部门)
- 基础结构域名 arpa:用于反向域名解析,即 IP 地址反向解析为域名
-
二级域名:
- 在国家顶级域名下注册的二级域名均由该国家自行确定
- 例如,顶级域名为 jp 的日本,将其教育和企业机构的二级域名定为 ac 和 co,而不用 edu 和 com
- 我国则将二级域名划分为以下两类:
- 类别域名【7 个】:ac(科研机构)、com(工、商、金融等企业)、edu(教育机构)、gov(政府部门)、net(提供网络服务的机构)、mil(军事机构)和 org(非营利性组织)
- 行政区域名【34 个】:适用于我国的各省、自治区、直辖市,如:bj 为北京市、sh 为上海市、js 为江苏省

3、域名服务器
- 域名到 IP 地址的解析是由运行在域名服务器上的程序完成的
- 一个服务器所负责管辖的【或有权限的)】范围称为区【小于或等于域】,一个区中的所有结点必须是能够连通的
- 每个区设置相应的权限域名服务器,用来保存该区中的所有主机的域名到 IP 地址的映射
- 每个域名服务器不但能够进行一些域名到 IP 地址的解析,而且还必须具有连向其他域名服务器的信息

(1)根域名服务器

(2)顶级域名服务器

(3)权限域名服务器(授权域名服务器)

(4)本地域名服务器

4、域名解析过程
- 域名解析:
- 指把域名转化为 IP 地址的过程
- 当客户端需要域名解析时,通过本机的 DNS 客户端构造一个 DNS 请求报文,以 UDP 数据报方式发往本地域名服务器
(1)递归查询

(2)迭代查询
- 流程:
- 主机 m.xyz.com 向其本地域名服务器 dns.xyz.com 发出 DNS 请求报文【递归查询】
- 本地域名服务器先查询本地缓存,若无,以 DNS 客户身份向根域名服务器发出查询解析报文【迭代查询】
- 根域名服务器判断该域名属于 .com 域,将对应的顶级域名服务器 dns.com 的 IP 地址返回给本地域名服务器
- 本地域名服务器向顶级域名服务器 dns.com 发出解析请求报文【迭代查询】
- 顶级域名服务器 dns.com 判断该域名属于 abc.com 域,将对应的权限服务器 dns.abc.com 的 IP 地址返回给本地域名服务器
- 本地域名服务器向权限域名服务器 dns.abc.com 发出解析请求报文【迭代查询】
- 权限域名服务器 dns.abc.com 将查询结果返回给本地域名服务器
- 本地域名服务器将查询结果保存到本地缓存,同时返回给主机

- 8 个步骤共要使用 8 个 UDP 报文
- 4 个查询报文、4 个回答报文
- 使用 UDP 是为了减少开销
- 本地域名服务器经过三次迭代查询后,从权限域名服务器 dns.abc.com 得到了域名 y.abc.com 主机的IP地址
- 高速缓存:
- 用来存放最近查询过的域名以及从何处获得域名映射信息的记录
- 提高 DNS 的查询效率,并减轻根域名服务器的负荷和减少因特网上的 DNS 查询报文数量
- 由于域名到 IP 地址的映射关系并不是永久不变,为保持高速缓存中的内容正确,域名服务器应为每项内容设置计时器并删除超过合理时间的项【例如,每个项目只存放两天】
- 用户主机在启动时从本地域名服务器下载域名和 IP 地址的全部数据库,维护存放自己最近使用的域名的高速缓存,并且只在从缓存中找不到域名时才向域名服务器查询
例题


三、文件传输协议 FTP
1、FTP 的工作原理
- 文件传送:将某台计算机中的文件通过网络传送到可能相距很远的另一台计算机中,是一项基本的网络应用
- FTP:因特网上最广泛的文件传输协议
- 提供交互式访问,允许客户指明文件的类型与格式,允许文件具有存取权限
- 屏蔽了各计算机系统的细节,适合在异构网络中的任意计算机之间传送文件
- FTP 功能:
- 提供不同种类主机系统【软硬件都可】之间的文件传输能力
- 以用户权限管理的方式提供用户对远程 FTP 服务器的文件管理能力
- 以匿名 FTP 的方式提供公用文件共享的能力
- FTP 工作方式:
- 采用客户/服务器的工作方式,使用 TCP 的可靠传输服务
- 一个 FTP 服务器进程可同时为多个客户进程提供服务
- FTP 服务器进程的组成:
- 一个主进程,负责接收新的请求
- 若干从属进程,负责处理单个请求
- FTP 服务器进程的工作步骤:
- 打开熟知端口 21 (控制端口),使客户进程能够连接上
- 等待客户进程发连接请求
- 启动从属进程处理客户进程发来的请求,从属进程对客户进程的请求处理完毕后即终止
- 回到等待状态,继续接收其他客户进程的请求【主进程与从属进程是并发执行的】
- 注意:
- FTP 服务器必须在整个会话期间保留用户的状态信息
- FTP 服务器必须把指定的用户账户与控制连接联系起来,服务器必须追踪用户在远程目录树上的当前位置
2、控制连接与数据连接
- FTP 在工作时使用两个并行的 TCP 连接
- 使用两个不同的端口号可以使协议更容易实现

(1)控制连接
- 服务器监听端口号 21,等待客户连接,建立在这个端口上的连接称为控制连接
- 用来传输控制信息【如连接请求、传送请求等】
- 在整个会话期间一直保持打开状态
(2)数据连接
- 服务器端的控制进程在接收到 FTP 客户发送来的文件传输请求后,就创建“ 数据传送进程”和“数据连接”
- 数据连接用来连接客户端和服务器端的数据传送进程
- 数据传送进程实际完成文件的传送,在传送完毕后关闭“数据传送连接”并结束运行
- 数据连接的两种传输模式:
- 主动模式 PORT:数据传送由服务器连接到客户端的端口
- 客户端连接到服务器的 21 端口,登录成功后要读取数据时,客户端随机开放一个端口,并发送命令告知服务器
- 服务器收到 PORT 命令和端口号后,通过 20 端口和客户端开放的端口连接,发送数据
- 被动模式 PASV:数据传送由客户端连接到服务器的端口
- 客户端要读取数据时,发送 PASV 命令到服务器,服务器在本地随机开放一个端口,并告知客户端
- 客户端再连接到服务器开放的端口进行数据传输

- 主动模式 PORT:数据传送由服务器连接到客户端的端口
例题


3、文件修改
- FTP 使用了一个分离的控制连接,所以也称 FTP 的控制信息是带外 (Out-of-band) 传送的
- 使用 FTP 时,要修改服务器上的文件,就需要先将此文件传送到本地主机,然后将修改后的文件副本传送到原服务器,来回传送耗费很多时间
- 网络文件系统 NFS:
- 允许进程打开一个远程文件,并能在该文件的某个特定位置开始读写数据
- NFS 可使用户只复制一个大文件中的一个很小的片段,而不需要复制整个大文件
四、电子邮件
1、电子邮件系统的组成结构
- 电子邮件系统是一种异步通信方式
- 电子邮件系统的三个主要组成构件:用户代理,邮件服务器,以及电子邮件所需的协议
- 用户代理 UA:
- 用户与电子邮件系统的接口
- 至少应当具有撰写、显示和邮件处理的功能
- 通常情况下,UA 就是一个运行在 PC 上的程序【电子邮件客户端软件】
- 如 Outlook 和 Foxmail
- 邮件服务器:
- 电子邮件系统的基础设施
- 因特网上所有的
ISP都有邮件服务器 - 功能是发送和接收邮件,同时向发件人报告邮件传送的情况【已交付、被拒绝、丢失等】
- 以客户/服务器模式工作,并能同时充当客户和服务器
- 协议:
- 邮件发送协议:
- 用于用户代理向邮件服务器发送邮件或在邮件服务器之间发送邮件
- 如 SMTP
- 邮件读取协议:
- 用于用户代理从邮件服务器读取邮件
- 如 POP3,IMAP

- 邮件发送协议:
- 用户代理 UA:
- 注意:邮件是直接传送给接收端服务器的,而不会在互联网的某个中间邮件服务器落地
2、电子邮件格式与 MIMIE
(1)电子邮件格式
- 电子邮件:信封+内容
- 邮件内容:首部【RFC 822 规定】+ 主体【用户自由撰写】
- 首部的关键字:
- From: 必填,由邮件系统自动填入
- To:必填,后面填入一个或多个收件人的电子邮件地址
- Subject:可选,是邮件的主题,反映了邮件的主要内容

(2)多用途因特网邮件扩展 MIME
- SMTP 协议只能传送 7 位 ASCII 码文本数据,不能传送可执行文件或其他的二进制对象
- SMTP 不能满足传送多媒体邮件【例如带有图片、音频或视频数据】的需要
- 因此,提出了多用途因特网邮件扩展 MIME:
- 5 个新的邮件首部字段,包括 MIME 版本、内容描述、内容标识、传送编码和内容类型
- 定义了许多邮件内容的格式,对多媒体电子邮件的表示方法进行了标准化
- 定义了传送编码,可对任何内容格式进行转换,而不会被邮件系统改变

例题




3、发送和读取协议
(1)SMTP
- 简单邮件传输协议 SMTP:一种提供可靠且有效的电子邮件传输协议
- 采用 C/S 方式
- 使用 TCP 连接
- 端口号 25
- 只支持传输 7 比特 ASCII 码内容
- SMTP 通信过程:
- 连接建立
- 邮件发送
- 连接释放

- 详细过程见王道 P281

(2)POP3
- 邮局协议 POP:一个非常简单但功能有限的邮件读取协议,现在使用 POP3 版本
- 采用 C/S 模式
- 使用 TCP 连接
- 端口号 110
- 工作方式:
- 下载并保留:用户从邮件服务器上读取邮件后,邮件依然会保存在邮件服务器上,用户可再次从服务器上读取该邮件
- 下载并删除:邮件一旦被读取,就被从邮件服务器上删除
(3)IMAP
- 因特网报文存取协议 IMAP:
- 为用户提供了联机命令:用户在自己的计算机上就可以操控邮件服务器中的邮箱
- 创建文件夹
- 在不同文件夹之间移动邮件
- 在远程文件夹中查询邮件
- IMAP 服务器维护了会话用户的状态信息
- 允许用户代理之获取报文的某些部分【例如只读取一个报文的首部】或多部分 MIME 报文的一部分
- 使用 TCP 连接
- 端口号 143
- 适用于:
- 低宽带情况
- 包含很多音频或视频的大邮件
- 为用户提供了联机命令:用户在自己的计算机上就可以操控邮件服务器中的邮箱
4、基于万维网的电子邮件
- 用户浏览器与 Gmail 的邮件服务器用 HTTP 发送或接收邮件
- 仅在不同邮件服务器之间传送用 SMTP

五、万维网 WWW
1、WWW 的概念与组成结构
- WWW 是一个分布式,联机式的信息存储空间
- WWW 组成部分:
- 统一资源定位符 URL:
- 负责标识万维网上的各种文档
- 使每个文档在整个万维网的范围内具有唯一的标识符 URL
- 超文本传送协议 HTTP:
- 面向事务的应用层协议,使用 TCP 连接进行可靠传输
- 规定了浏览器和服务器之间的请求和响应的格式与规则
- 超文本标记语言 HTML:
- 一种文档结构的标记语言
- 使用一些约定的标记对页面上的各种信息【包括文字、声音、图像、视频等】、格式进行描述
- 统一资源定位符 URL:
- URL 的形式:
- <协议>://<主机>:<端口>/<路径>
- 如 https:ddy-ddy.com/login, https:172.16.86.81:80/login
- 不区分大小写
- WWW 工作方式:采用 C/S 模式
- Web 用户使用浏览器【指定 URL】 与 Web 服务器建立连接,并发送浏览请求
- Web 服务器把 URL 转换为文件路径,并返回信息给 Web 浏览器
- 通信完成,关闭连接
2、超文本传输协议 HTTP
(1)HTTP 的操作过程
- 从协议执行过程来说,浏览器要访问 WWW 服务器时:
- 首先要完成对 WWW 服务器的域名解析
- 一旦获得了服务器的 IP 地址,浏览器就通过 TCP 向服务器发送连接建立请求

- 每个万维网站点都有一个服务器进程,它不断地监听 TCP 的端口 80【默认】,当监听到连接请求后便与浏览器建立 TCP 连接
- 然后,浏览器就向服务器发送请求获取某个 Web 页面的 HTTP请求
- 服务器收到请求后,将构建所请求 Web 页的必需信息,并通过 HTTP 响应返回给浏览器
- 浏览器再将信息进行解释,然后将 Web 页显示给用户
- 最后,TCP 连接释放

(2)HTTP 的特点
1)基本特点
- HTTP 使用面向连接的 TCP 作为传输层协议,保证了数据的可靠传输
- HTTP 协议本身是无连接的:通信双方在交换 HTTP 报文之前不需要先建立 HTTP 连接
- HTTP 协议是无状态的:
- 同一个客户第二次访问同一个服务器上的页面时,服务器的响应与第一次被访问时相同
- 简化了服务器的设计,使其更容易支持大量并发的请求
- 在实际应用中,通常使用 Cookie 加数据库的方式来跟踪用户的活动【如记录用户最近浏览的商品等】
2)Cookie
- Cookie 是网站为了辨别用户身份,进行会话跟踪而存储在客户端上的数据
- Cookie 保存在浏览器【客户端】

3)HTTP/1.0 和 HTTP/1.1
-
非持续连接:
- HTTP/1.0 支持
- 每个网页元素对象的传输都需要单独建立一个TCP 连接【第三次握手的报文段中捎带了客户对万维网文档的请求】
- 每次建立新的 TCP 连接都要分配缓存和变量,使万维网服务器的负担很重
-
持续连接:
- HTTP/1.1 默认使用
- 非流水线方式:
- 客户在收到前一个响应后才能发出下一个请求
- 服务器在发送完一个对象后,其TCP 连接就处于空闲状态,浪费了服务器资源
- 每个对象都必须有 1 个 RTT 延迟
- 流水线方式:
- 客户可以连续发出对各个对象的请求,服务器就可连续响应这些请求
- 若所有的请求和响应都是连续发送的,则引用所有对象共计经历 1 个 RTT 延迟
- 减少了 TCP 连接中的空闲时间,提高了效率
- 服务器在每个 RTT 连续发送的数据量受到 TCP 发送窗口的限制
| 非持续连接 | 持续连接 | |
|---|---|---|
| 示意图 | ![]() | ![]() |
| 传输时间 | 2 RTT+文档的传输时间【一个 RTT 用于 TCP 连接,另一个 RTT 用于请求和接收文档】 | 1 RTT |
| Connection 状态 | 标志为 close | 标志为 keep-alive |
(3)HTTP 的报文结构
-
HTTP 是面向文本的,其报文中的每一个字段都是一些 ASCII 码串,并且每个字段的长度都是不确定的
-
两类 HTTP 报文:
- 请求报文:从客户向服务器发送的请求报文
- 响应报文:从服务器到客户的回答

-
报文组成:
- 开始行:请求行/状态行
- 首部行
- 实部主体
-
请求报文中的方法:

-
请求报文实例:

-
响应报文中的状态码:

-
响应报文常见状态行:





