计算机网络复习整理
计算机网络复习整理
概述
计算机网络在信息时代的作用
互联网(Internet) \(\ne\) 互连网(internet)
互连网的两个重要基本特点
连通性:使上网用户之间可以非常便捷、非常经济地交换各种信息,好像这些用户终端都彼此直接连通一样
资源共享:信息共享、软件共享、硬件共享,由于网络的存在,这些资源好像就在用户身边一样地方便使用
这两个特点是 Internet 提供许多服务的基础
互联网概述
网络的网络
计算机网络:由若干节点和连接这些节点的链路组成。节点可以是计算器、集线器、交换机或路由器等
互连网:多个网络通过一些路由器互相连接起来,构成了一个覆盖范围更大的计算机网络,“网络的网络”
网络把许多计算机连接在一起
互连网把许多网络通过一些路由器连接在一起
互连网基础结构发展三个阶段

ARPANET:最初只是一个单个的分组交换网,不是一个互连网
1983 年,TCP/IP 协议成为 ARPANET 上的标准协议,使得所有使用 TCP/IP 协议的计算机都能利用互连网相互通信
人们把 1983 年作为互联网的诞生时间
国家科学基金网 NSFNET的三级结构:主干网、地区网和校园网(或企业网)

第三阶段出现了互联网服务提供者 ISP (Internet Service Provider),可以提供接入到互联网的服务
互联网交换点 IXP (Internet eXchange Point):允许两个网络直接相连并快速交换分组,常采用工作在数据链路层的网络交换机
内容提供者 (Content Provider):在互联网上向所有用户提供视频等内容的公司。不向用户提供互联网的转接服务
互联网的标准化工作
所有因特网标准都是以RFC的形式在因特网上发布
RFC:Request For Comments (请求评论)
但并非所有的 RFC 文档都是互联网标准。只有很少部分的 RFC 文档最后才能变成互联网标准
互联网组成
互联网边缘部分: 由所有连接在互联网上的主机组成,由用户直接使用,用来进行通信(传送数据、音频或视频)和资源共享
互联网核心部分:由大量网络和连接这些网络的路由器组成,为边缘部分提供服务(提供连通性和交换)

互联网边缘部分
处在互联网边缘部分的就是连接在互联网上的所有的主机,这些主机又称为端系统 (end system)
端系统之间两种通信方式
客户/服务器方式
Client / Server 方式,简称为 C/S 方式
客户/服务器方式所描述的是进程之间服务和被服务的关系
客户是服务的请求方,服务器是服务的提供方
客户与服务器的通信关系建立后,通信可以是双向的,客户和服务器都可发送和接收数据
客户程序:被用户调用后运行,需主动向远地服务器发起通信(请求服务)。必须知道服务器程序的地址,不需要特殊的硬件和很复杂的操作系统
服务器程序:一直不断地运行着,被动地等待并接受来自各地的客户的通信请求。不需要知道客户程序的地址,一般需要强大的硬件和高级的操作系统支持,可同时处理多个客户请求
对等方式
Peer to Peer 方式,简称为 P2P 方式
两台主机在通信时不区分服务请求方和服务提供方
只要都运行了 P2P 软件,就可以进行平等的、对等连接通信
对等方式从本质上看仍然是使用客户服务器方式,只是对等连接中的每一个主机既是客户又是服务器
互连网核心部分
是互联网中最复杂的部分
向网络边缘中的主机提供连通性,使任何一台主机都能够向其他主机通信
在网络核心部分起特殊作用的是路由器 (router)
路由器是实现分组交换 (packet switching) 的关键构件,其任务是转发收到的分组
互联网的核心部分采用分组交换技术,分组转发是网络核心部分最重要的功能
典型交换技术
电路交换

\(N\) 部电话机两两直接相连,需 \(N(N –1)/2\) 对电线

每一部电话都直接连接到交换机上,而交换机使用交换的方法,让电话用户彼此之间可以很方便地通信,这种交换方式就是电路交换 (circuit switching)
转接:把一条电话线转接到另一条电话线,使它们连通起来
从通信资源的分配角度来看,就是按照某种方式动态地分配传输线路的资源
电路交换的三个阶段
建立连接:建立一条专用的物理通路(占用通信资源)
通话:主叫和被叫双方互相通电话(一直占用通信资源)
释放连接:释放刚才使用的专用的物理通路(归还通信资源)
这种必须经过“ 建立连接(占用通信资源)、通话(一直占用通信资源)、释放连接(归还通信资源)”三个步骤的交换方式称为电路交换
电路交换的特点
通话的两个用户始终占用端到端的通信资源
分组交换
互联网的核心部分采用分组交换技术
分组交换以“分组”作为数据传输单元
分组交换的主要特点
分组交换的主要特点:采用存储转发技术
在发送端,先把较长的报文划分成更小的等长数据段

数据段前面添加首部就构成了分组 (packet)
分组又称为“包”,而分组的首部也可称为“包头”

分组交换以“分组”作为数据传输单元
互联网采用分组交换技术,分组是在互联网中传送的数据单元
发送端依次把各分组发送到接收端
接收端收到分组后剥去首部,还原成原来的报文
分组的存储转发过程
根据首部中包含的目的地址、源地址等重要控制信息进行转发
每一个分组在互联网中独立选择传输路径
位于网络核心部分的路由器负责转发分组,即进行分组交换
路由器要创建和动态维护转发表

分组交换优点
高效:动态分配传输带宽,对通信链路是逐段占用
灵活:为每一个分组独立地选择最合适的转发路由
迅速:以分组作为传送单位,可以不先建立连接就能向其他主机发送分组
可靠:保证可靠性的网络协议
分组交换缺点
排队延迟:分组在各路由器存储转发时需要排队
不保证带宽:动态分配
增加开销:各分组必须携带控制信息;路由器要暂存分组,维护转发表等
报文交换
电报通信就采用了基于存储转发原理的报文交换
以报文为单位
三种交换技术的比较

若要连续传送大量的数据,且其传送时间远大于连接建立时间,则电路交换的传输速率较快
报文交换和分组交换不需要预先分配传输带宽,在传送突发数据时可提高整个网络的信道利用率
由于一个分组的长度往往远小于整个报文的长度,因此分组交换比报文交换的时延小,同时也具有更好的灵活性
计算机网络类别
分类方法
按照网络的作用范围进行分类
WAN (Wide Area Network):广域网(远程网)
MAN (Metropolitan Area Network):城域网
LAN (Local Area Network) :局域网
PAN (Personal Area Network) :个人区域网
若中央处理机之间的距离非常近(如仅 1 米甚至更小些),则一般就称之为多处理机系统,而不称它为计算机网络
按照网络的使用者进行分类
公用网 (public network)
专用网 (private network)
用来把用户接入到互联网的网络
接入网 AN (Access Network),又称为本地接入网或居民接入网
用于将用户接入互联网

实际上就是本地 ISP 所拥有的网络,它既不是互联网的核心部分,也不是互联网的边缘部分
是从某个用户端系统到本地 ISP 的第一个路由器(也称为边缘路由器)之间的一种网络
计算机网络的性能
计算机网络的性能指标
速率
最重要的一个性能指标
指的是数据的传送速率,也称为数据率 (data rate) 或比特率 (bit rate)
单位:bit/s,或 kbit/s、Mbit/s、 Gbit/s 等
速率往往是指额定速率或标称速率,非实际运行速率
带宽
频域解释:某信道允许通过的信号频带范围称为该信道的带宽(或通频带)
频域单位是赫(或千赫、兆赫、吉赫等)
时域解释:网络中某通道传送数据的能力,表示在单位时间内网络中的某信道所能通过的“最高数据率”
时域单位是数据率的单位 bit/s
两者本质相同,一条通信链路的“带宽”越宽,其所能传输的“最高数据率”也越高
吞吐量
单位时间内通过某个网络(或信道、接口)的实际数据量
受网络的带宽或网络的额定速率的限制
额定速率是绝对上限值,可能会远小于额定速率,甚至下降到零
有时可用每秒传送的字节数或帧数来表示
时延
总时延 = 发送时延 + 传播时延 + 处理时延 + 排队时延
一般说来,小时延的网络要优于大时延的网络
在某些情况下,一个低速率、小时延的网络很可能要优于一个高速率但大时延的网络(必须指出,在总时延中,究竟是哪一种时延占主导地位,必须具体分析)
发送时延
也称作传输时延,是主机或路由器发送数据帧所需要的时间,也就是从发送数据帧的第一个比特算起,到该帧的最后一个比特发送完毕所需的时间 \[ \begin{align*} 发送时延=\frac{数据帧长度(bit)}{发送速率(bit/s)} \end{align*} \]
传播时延
是电磁波在信道中传播一定的距离需要花费的时间 \[ \begin{align*} 传播时延&=\frac{信道长度(m)}{信号在信道上的传播速率(m/s)}\\\\ 电磁波传播速率:\\ 自由空间的传播速率是光速 &= 3.0 \times 10^5 km/s\\ 在铜线电缆中的传播速率约 &= 2.3 \times 10^5 km/s\\ 在光纤中的传播速率约 &= 2.0 \times 10^5 km/s\\ \end{align*} \]
注意:发送时延与传播时延有本质上的不同
发送时延发生在机器内部的发送器中,与传输信道的长度(或信号传送的距离)没有任何关系
传播时延则发生在机器外部的传输信道媒体上,而与信号的发送速率无关。信号传送的距离越远,传播时延就越大
处理时延
主机或路由器在收到分组时,为处理分组(例如分析首部、提取数据、差错检验或查找路由)所花费的时间
排队时延
分组在路由器输入输出队列中排队等待处理和转发所经历的时延
排队时延的长短往往取决于网络中当时的通信量。当网络的通信量很大时会发生队列溢出,使分组丢失,这相当于排队时延为无穷大
四种时延

以下说法是错误的:“在高速链路(或高带宽链路)上,比特会传送得更快些”
对于高速网络链路,我们提高的仅仅是数据的发送速率,而不是比特在链路上的传播速率
提高数据的发送速率只是减小了数据的发送时延
时延带宽积
\(时延带宽积 = 传播时延 \times 带宽\)

链路的时延带宽积又称为以比特为单位的链路长度
管道中的比特数表示从发送端发出但尚未到达接收端的比特数,只有在代表链路的管道都充满比特时,链路才得到了充分利用
往返时间 RTT (Round-Trip Time)
表示从发送方发送完数据,到发送方收到来自接收方的确认总共经历的时间


注意:\(t_{TA}\)不算在内
利用率
信道利用率:某信道有百分之几的时间是被利用的(即有数据通过),完全空闲的信道的利用率是零
网络利用率:全网络的信道利用率的加权平均值
计算机网络体系结构
计算机网络体系结构的形成
最初的 ARPANET 设计时提出了分层的设计方法
分层:将庞大而复杂的问题,转化为若干较小的局部问题
1974 年,IBM 按照分层的方法制定并提出了系统网络体系结构 SNA (System Network Architecture)
此后,其他一些公司也相继推出了具有不同名称的体系结构
ISO (国际标准化组织) 提出的 OSI/RM (Open Systems Interconnection Reference Model) 是使各种计算机在世界范围内互连成网的标准框架
OSI/RM 是个抽象的概念
1983年,形成了著名的 ISO 7498 国际标准,即七层协议的体系结构
OSI 试图达到一种理想境界:全球计算机网络都遵循这个统一标准,因而全球的计算机将能够很方便地进行互连和交换数据
OSI失败:没有商业驱动力,过分复杂,周期太长,层次划分也不太合理
TCP/IP获得广泛应用
协议与划分层次
网络协议 (network protocol):简称为协议,是为进行网络中的数据交换而建立的规则、标准或约定
网络协议是计算机网络的不可缺少的组成部分
协议三个组成要素:
串讲强调 \[ \color{red}协议三要素:语法,语义,同步 \]
语法:数据与控制信息的结构或格式
语义:需要发出何种控制信息,完成何种动作以及做出何种响应
同步:事件实现顺序的详细说明

分层优缺点
优点:各层之间是独立的,灵活性好,结构上可分割开,易于实现和维护,能促进标准化工作
缺点:有些功能会重复出现,因而产生了额外开销
注意:每一层的功能应非常明确
各层完成的主要功能
差错控制:使相应层次对等方的通信更加可靠
流量控制:发送端的发送速率必须使接收端来得及接收,不要太快
分段和重装:发送端将要发送的数据块划分为更小的单位,在接收端将其还原
复用和分用:发送端几个高层会话复用一条低层的连接,在接收端再进行分用
连接建立和释放:交换数据前先建立一条逻辑连接,数据传送结束后释放连接
体系结构与实现
网络的体系结构 (Network Architecture) 是计算机网络的各层及其协议的集合,就是这个计算机网络及其构件所应完成的功能的精确定义(不涉及实现)
实现 (implementation) 是遵循这种体系结构的前提下,用何种硬件或软件完成这些功能的问题
体系结构是抽象的,而实现则是具体的,是真正在运行的计算机硬件和软件
具有五层协议的体系结构

OSI/RM:七层
TCP/IP:四层
五层体系结构各层
应用层
任务:通过应用进程间的交互来完成特定网络应用
协议:定义的是应用进程间通信和交互的规则
把应用层交互的数据单元称为报文(message)
例如:DNS,HTTP,SMTP
运输层
任务:负责向两台主机中进程之间的通信提供通用的数据传输服务
具有复用和分用的功能
主要使用两种协议: 传输控制协议 TCP 和 用户数据报协议 UDP
TCP: 提供面向连接的、可靠的数据传输服务,数据传输的单位是报文段 (segment)
UDP: 提供无连接的尽最大努力 (best-effort) 的数据传输服务(不保证数据传输的可靠性),数据传输的单位是用户数据报
网络层
为分组交换网上的不同主机提供通信服务
两个具体任务:
路由选择:通过一定的算法,在互联网中的每一个路由器上,生成一个用来转发分组的转发表
转发:每一个路由器在接收到一个分组时,要依据转发表中指明的路径把分组转发到下一个路由器
互联网使用的网络层协议是无连接的网际协议 IP (Internet Protocol) 和许多种路由选择协议,因此互联网的网络层也叫做网际层或 IP 层
IP 协议分组也叫做 IP 数据报,或简称为数据报
数据链路层
任务:实现两个相邻节点之间的可靠通信
在两个相邻节点间的链路上传送帧(frame)
如发现有差错,就简单地丢弃出错帧
如果需要改正出现的差错,就要采用可靠传输协议来纠正出现的差错。这种方法会使数据链路层协议复杂
物理层
任务:实现比特(0 或 1)的传输
确定连接电缆的插头应当有多少根引脚,以及各引脚应如何连接
注意:传递信息所利用的一些物理媒体,如双绞线、同轴电缆、光缆、无线信道等,并不在物理层协议之内,而是在物理层协议的下面
各层数据单元总结
应用层:报文
运输层:报文段、用户数据报
网络层:分组
数据链路层:帧
物理层:01比特
数据在各层之间传输

对等层与协议数据单元
OSI 参考模型把对等层次之间传送的数据单位称为该层的协议数据单元 PDU (Protocol Data Unit)
任何两个同样的层次把 PDU (即数据单元加上控制信息)通过水平虚线直接传递给对方,这就是所谓的“对等层”之间的通信
各层协议实际上就是在各个对等层之间传递数据时的各项规定
实体、协议、服务和服务访问点
实体 (entity) :表示任何可发送或接收信息的硬件或软件进程
协议:控制两个对等实体进行通信的规则的集合
在协议的控制下,两个对等实体间的通信使得本层能够向上一层提供服务
要实现本层协议,还需要使用下层所提供的服务
协议和服务在概念上是不一样的
协议水平,服务垂直

在同一系统中相邻两层的实体进行交互(即交换信息) 的地方,通常称为服务访问点 SAP (Service Access Point)
SAP 是一个抽象的概念,它实际上就是一个逻辑接口
OSI 把层与层之间交换的数据的单位称为服务数据单元 SDU (Service Data Unit)
(OSI 参考模型把对等层次之间传送的数据单位称为该层的协议数据单元 PDU (Protocol Data Unit))
SDU 可以与 PDU 不一样
例如:可以是多个 SDU 合成为一个 PDU,也可以是一个 SDU 划分为几个 PDU
相邻两层之间关系

TCP/IP 的体系结构
TCP/IP 是四层体系结构

路由器在转发分组时最高只用到网际层,没有使用运输层和应用层
沙漏计时器形状的TCP/IP协议族

物理层
基本概念
物理层考虑的是怎样才能在连接各种计算机的传输媒体上传输数据比特流,而不是指具体的传输媒体
作用:尽可能屏蔽掉不同传输媒体和通信手段的差异
用于物理层的协议也常称为物理层规程 (procedure)
主要任务:确定与传输媒体的接口的一些特性
\(\color{red}物理层四个特性\)(串讲强调)
4 个特性:
机械特性:指明接口所用接线器的形状和尺寸、引线数目和排列、固定和锁定装置等
电气特性:指明在接口电缆的各条线上出现的电压的范围
功能特性:指明某条线上出现的某一电平的电压的意义
过程特性:指明对于不同功能的各种可能事件的出现顺序
数据通信的基础知识
数据通信系统的模型
三大部分:源系统(或发送端、发送方)、传输系统(或传输网络)和目的系统(或接收端、接收方)

消息(message):如话音、文字、图像、视频等
数据 (data): 运送消息的实体。有意义的符号序列
信号 (signal):数据的电气的或电磁的表现
模拟信号 (analogous signal):代表消息的参数的取值是连续的
数字信号 (digital signal):代表消息的参数的取值是离散的
码元:在使用时间域(简称为时域)的波形表示数字信号时,代表不同离散数值的基本波形
使用二进制编码时,只有两种不同的码元:0 状态,1 状态
有关信道的概念
信道:一般用来表示向某一个方向传送信息的媒体
基带信号(即基本频带信号):来自信源的信号。包含有较多的低频成分,甚至有直流成分
调制:
基带调制:仅对基带信号的波形进行变换,把数字信号转换为另一种形式的数字信号(数字转数字)。把这种过程称为编码 (coding)
带通调制:使用载波 (carrier)进行调制,把基带信号的频率范围搬移到较高的频段,并转换为模拟信号。经过载波调制后的信号称为带通信号(即仅在一段频率范围内能够通过信道)
信道分类
单向通信(单工通信):只能有一个方向的通信,没有反方向的交互
双向交替通信(半双工通信):通信的双方都可以发送信息,但双方不能同时发送(当然也就不能同时接收)
双向同时通信(全双工通信):通信的双方可以同时发送和接收信息
常用编码方式
编码方式
\(\color{red}常用编码方式\)(串讲强调)
不归零制:正电平代表 1,负电平代表 0
归零制:正脉冲代表 1,负脉冲代表 0
曼彻斯特编码:位周期中心的向上跳变代表 0,位周期中心的向下跳变代表 1。但也可反过来定义
差分曼彻斯特编码:在每一位的中心处始终都有跳变。位开始边界有跳变代表 0,而位开始边界没有跳变代表 1

编码方式对比
信号频率:
曼彻斯特编码和差分曼彻斯特编码产生的信号频率比不归零制高
自同步能力:
不归零制不能从信号波形本身中提取信号时钟频率(这叫做没有自同步能力)
曼彻斯特编码和差分曼彻斯特编码具有自同步能力
基本的带通调制方法
基带信号往往包含有较多的低频成分,甚至有直流成分,而许多信道并不能传输这种低频分量或直流分量,必须对基带信号进行调制 (modulation)
最基本的调制方法有以下几种:
调幅(AM) :载波的振幅随基带数字信号而变化
调频(FM) :载波的频率随基带数字信号而变化
调相(PM) :载波的初始相位随基带数字信号而变化

信道的极限容量
数字信号通过实际的信道,会导致失真

任何实际的信道都不是理想的,都不可能以任意高的速率进行传送
码元传输的速率越高,或信号传输的距离越远,或噪声干扰越大,或传输媒体质量越差,在接收端的波形的失真就越严重
限制码元在信道上的传输速率的两个因素
限制码元在信道上的传输速率的两个因素:信道能够通过的频率范围,信噪比
信道能够通过的频率范围
具体的信道所能通过的频率范围总是有限的,信号中的许多高频分量往往不能通过信道
码间串扰:接收端收到的信号波形失去了码元之间的清晰界限
奈氏准则:码元传输的最高速率 = 2W (码元/秒)
超过奈氏准则会产生码间串扰
在带宽为 W (Hz) 的低通信道中,若不考虑噪声影响,则码元传输的最高速率是 2W (码元/秒)。传输速率超过此上限,就会出现严重的码间串扰的问题,使接收端对码元的判决(即识别)成为不可能
信噪比
信噪比就是信号的平均功率和噪声的平均功率之比。常记为 S/N,并用分贝 (dB) 作为度量单位 \[ \begin{align*} 信噪比(dB) = 10 \log_{10}(\frac{S}{N}) \quad (dB) \end{align*} \]
例如:当 S/N =10 时,信噪比为10dB,而当 S/N =1000 时,信噪比为30dB
香农公式
信道的极限信息传输速率 C 可表达为 \[ \begin{align*} C=W\log_2(1+\frac{S}{N}) \quad (bit/s) \end{align*} \] W 信道的带宽 (Hz)
S 为信道内所传信号的平均功率
N 为信道内部的高斯噪声功率
信道的带宽或信道中的信噪比越大,则信息的极限传输速率就越高
只要信息传输速率低于信道的极限信息传输速率,就一定可以找到某种办法来实现无差错的传输
提高信息的传输速率的方法
方法:用编码的方法让每一个码元携带更多比特的信息量

奈氏准则和香农公式对比
奈氏准则:激励工程人员不断探索更加先进的编码技术,使每一个码元携带更多比特的信息量(超过上限2W会码间串扰)
香农公式:告诫工程人员,在实际有噪声的信道上,不论采用多么复杂的编码技术,都不可能突破信息传输速率的绝对极限
物理层下面的传输媒体
传输媒体是数据传输系统中在发送器和接收器之间的物理通路
分为两大类:
导引型传输媒体:电磁波被导引沿着固体媒体(铜线或光纤)传播
非导引型传输媒体:指自由空间。非导引型传输媒体中电磁波的传输常称为无线传输
引导型传输媒体
双绞线
最古老但又最常用的传输媒体
把两根互相绝缘的铜导线并排放在一起,然后用规则的方法绞合 (twist) 起来就构成了双绞线,绞合度越高,可用的数据传输率越高
分为两大类:无屏蔽双绞线 UTP,屏蔽双绞线 STP
UTP:无屏蔽层,价格较便宜

STP:带屏蔽层,都必须有接地线

无论是哪种类别的双绞线,衰减都随频率的升高而增大
双绞线的最高速率还与数字信号的编码方法有很大的关系
双绞线标准 EIA/TIA-568
568-A,568-B标准
同轴电缆
由内导体铜质芯线(单股实心线或多股绞合线)、绝缘层、网状编织的外导体屏蔽层(也可以是单股的)以及保护塑料外层所组成
具有很好的抗干扰特性,被广泛用于传输较高速率的数据

光纤
光纤是光纤通信的传输媒体。通过传递光脉冲来进行通信,其传输带宽远远大于目前其他各种传输媒体的带宽
发送端:要有光源(发光二极管,半导体激光器等),在电脉冲的作用下能产生出光脉冲
接收端:要有光检测器,利用光电二极管做成,在检测到光脉冲时还原出电脉冲
光线在纤芯中传输的方式是不断地全反射
多模光纤
可以存在多条不同角度入射的光线在一条光纤中传输
光脉冲在多模光纤中传输时会逐渐展宽,造成失真,只适合于近距离传输
单模光纤
其直径减小到只有一个光的波长(几个微米),可使光线一直向前传播,而不会产生多次反射
制造成本较高,但衰耗较小
光源要使用昂贵的半导体激光器,不能使用较便宜的发光二极管

光缆

优点
通信容量非常大
传输损耗小,中继距离长,对远距离传输特别经济
抗雷电和电磁干扰性能好
无串音干扰,保密性好,不易被窃听或截取数据
体积小,重量轻
非导引型传输媒体
利用无线电波在自由空间的传播可较快地实现多种通信,因此将自由空间称为“非导引型传输媒体”
无线电微波通信在空间主要是直线传播
多径效应
基站发出的信号可以经过多个障碍物的数次反射,从多条路径、按不同时间等到达接收方。多条路径的信号叠加后一般都会产生很大的失真,这就是所谓的多径效应
微波接力
微波接力:中继站把前一站送来的信号放大后再发送到下一站
特点:通信信道的容量很大,微波传输质量较高,建设投资少,见效快,易于实施
缺点:相邻站之间必须直视,没有障碍物,否则存在多径效应;受到恶劣气候的影响;微波通信的隐蔽性和保密性较差;使用和维护要耗费较多的人力和物力
卫星通信
通信容量大,通信距离远,通信比较稳定,通信费用与通信距离无关,但传播时延较大:在 250~300 ms之间
请注意:“卫星信道的传播时延较大”并不等于“用卫星信道传送数据的时延(传输时延)较大”
保密性相对较差,造价较高
信道复用技术
复用 (multiplexing) :允许用户使用一个共享信道进行通信

(串讲强调)
\(\color{red}常用信道复用技术:频分复用,时分复用,波分复用,码分复用\)
频分复用
频分复用 FDM (Frequency Division Multiplexing)
最基本
将整个带宽分为多份,用户在分配到一定的频带后,在通信过程中自始至终都占用这个频带
所有用户在同样的时间占用不同的带宽(即频带)资源

时分复用
时分复用 TDM (Time Division Multiplexing)
将时间划分为一段段等长的时分复用帧(TDM帧)
每一个时分复用的用户在每一个 TDM 帧中占用固定序号的时隙
每一个用户所占用的时隙是周期性地出现(其周期就是TDM帧的长度)的
TDM 信号也称为等时 (isochronous) 信号
所有用户在不同的时间占用同样的频带宽度
时分复用会导致信道利用率不高


频分多址与时分多址
可让 N 个用户各使用一个频带,或让更多的用户轮流使用这 N 个频带。这种方式称为频分多址接入 FDMA (Frequency Division Multiple Access),简称为频分多址
可让 N 个用户各使用一个时隙,或让更多的用户轮流使用这 N 个时隙。这种方式称为时分多址接入 TDMA (Time Division Multiple Access),简称为时分多址
波分复用
波分复用 WDM (Wavelength Division Multiplexing) :光的频分复用。使用一根光纤来同时传输多个光载波信号

码分复用
每一个用户可以在同样的时间使用同样的频带进行通信
各用户使用经过特殊挑选的不同码型,因此不会造成干扰
当码分复用 CDM (Code Division Multiplexing) 信道为多个不同地址的用户所共享时,就称为码分多址 CDMA (Code Division Multiple Access)
数字传输系统
早期,电话网长途干线采用频分复用 FDM 的模拟传输方式
目前,大都采用时分复用 PCM(Pulse Code Modulation) 的数字传输方式(脉冲编码调制)
现代电信网业务括话音、视频、图像和各种数据业务。因此需要一种能承载来自其他各种业务网络数据的传输网络
在数字化的同时,光纤开始成为长途干线最主要的传输媒体
早期数字传输系统的缺点
速率标准不统一
不是同步传输
同步光纤网
同步光纤网 SONET (Synchronous Optical Network)
各级时钟都来自一个非常精确的主时钟
为光纤传输系统定义了同步传输的线路速率等级结构
传输速率以 51.84 Mbit/s 为基础
同步数字系列
同步数字系列 SDH (Synchronous Digital Hierarchy)
与 SONET 的主要不同:SDH 的基本速率为 155.52 Mbit/s
宽带接入技术
从宽带接入的媒体来看,划分为 2 大类:
有线宽带接入
无线宽带接入
(串讲强调)
\(\color{red}常用宽带接入技术:ADSL, 光纤同轴混合网,FTTx\)
ADSL技术
非对称数字用户线 ADSL (Asymmetric Digital Subscriber Line) 技术:用数字技术对现有的模拟电话用户线进行改造,使它能够承载宽带业务
ADSL 技术把 0~4 kHz 低端频谱留给传统电话使用,而把原来没有被利用的高端频谱留给用户上网使用
非对称:下行(从 ISP 到用户)带宽远大于上行(从用户到 ISP)带宽
ADSL 调制解调器
采用离散多音调 DMT(Discrete Multi-Tone)调制技术
DMT 调制技术采用频分复用 FDM 方法
相当于在一对用户线上使用许多小的调制解调器并行地传送数据
ADSL 不能保证固定的数据率
ADSL组成
3 大组成部分:
数字用户线接入复用器 DSLAM(DSL Access Multiplexer),用户线,用户家中的一些设施
ADSL好处
可以利用现有电话网中的用户线(铜线),而不需要重新布线
光纤同轴混合网(HFC 网)
HFC (Hybrid Fiber Coax) 网基于有线电视网 CATV 网
改造:把原有线电视网中的同轴电缆主干部分改换为光纤
HFC 网具有双向传输功能,扩展了传输频带
机顶盒与电缆调制解调器(set-top box)
机顶盒(set-top box):
连接在同轴电缆和用户的电视机之间
使现有的模拟电视机能够接收数字电视信号
电缆调制解调器(cable modem):
将用户计算机接入互联网
在上行信道中传送交互数字电视所需的一些信息
不需要成对使用,而只需安装在用户端
复杂,必须解决共享信道中可能出现的冲突问题
FTTx技术
代表多种宽带光纤接入方式
FTTx 表示 Fiber To The…(光纤到…)
光纤到户 FTTH (Fiber To The Home):在光纤进入用户的家门后,才把光信号转换为电信号
光纤到小区 FTTZ (Fiber To The Zone)等
光配线网 ODN (Optical Distribution Network)
光配线网 ODN (Optical Distribution Network):位于光纤干线和广大用户之间
无源的光配线网常称为无源光网络 PON (Passive Optical Network)
采用波分复用 WDM,上行和下行分别使用不同的波长
2 种最流行的无源光网络 PON (Passive Optical Network)
以太网无源光网络 EPON (Ethernet PON)
吉比特无源光网络 GPON (Gigabit PON)
数据链路层
数据链路层信道类型
点对点信道:使用一对一的点对点通信方式

广播信道:使用一对多的广播通信方式,必须使用专用的共享信道协议来协调这些主机的数据发送

数据链路层地位
网络中的主机、路由器等都必须实现数据链路层
局域网中的主机、交换机等都必须实现数据链路层
注意:不同的链路层可能采用不同的数据链路层协议
使用点对点信道的数据链路层
数据链路和帧
链路 (link) :一条无源的点到点的物理线路段,中间没有任何其他的交换结点,一条链路只是一条通路的一个组成部分
或物理链路
数据链路 (data link):把实现控制数据传输的协议的硬件和软件加到链路上,就构成了数据链路
或逻辑链路
典型实现:适配器(即网卡)
数据链路层协议数据单元:帧
三个基本问题
(串讲强调)
\(\color{red}数据链路层三个基本问题:封装成帧,透明传输,差错控制\)
封装成帧
封装成帧 (framing):在一段数据的前后分别添加首部和尾部,构成一个帧
首部和尾部的一个重要作用就是进行帧定界(即确定帧的界限)

最大传送单元 MTU (Maximum Transfer Unit) :规定了所能传送的帧的数据部分长度上限
用控制字符作为帧定界符
控制字符 SOH (Start Of Header) 放在一帧的最前面,表示帧的首部开始
控制字符 EOT (End Of Transmission) 放在一帧的末尾,表示帧的结束

透明传输
问题:如果数据中的某个字节的二进制代码恰好和 SOH 或 EOT 一样,数据链路层就会错误地“找到帧的边界”,导致错误
即数据部分恰好出现与 EOT 一样的代码

透明的概念: 指某一个实际存在的事物看起来却好像不存在一样
“在数据链路层透明传送数据”表示:无论发送什么样的比特组合的数据,这些数据都能够按照原样没有差错地通过这个数据链路层。
用“字节填充”或“字符填充”法解决透明传输的问题

差错控制
在传输过程中可能会产生比特差错:1 \(\rightarrow\) 0, 0 \(\rightarrow\) 1
在一段时间内,传输错误的比特占所传输比特总数的比率称为误码率 BER (Bit Error Rate)
循环冗余检验 CRC (Cyclic Redundancy Check) 原理
在发送端,先把数据划分为组,假定每组 k 个比特
CRC 运算在每组 M 后面再添加供差错检测用的 n 位冗余码,然后构成一个帧发送出去。一共发送 (k + n) 位

CRC冗余码计算
(串讲强调)
参考:CRC校验演示,manim动画太牛逼了

PPT上的讲法
原始数据和除数都是给定的
n=除数的位数-1
1,用二进制的模 2 运算进行 \(2^n\) 乘 M 的运算,这相当于在 M 后面添加 n 个 0
2,得到的 (k + n) 位的数除以事先选定好的长度为 (n + 1) 位的除数 P,得出商是 Q ,余数是 R,余数 R 比除数 P 少 1 位,即 R 是 n 位
3,将余数 R 作为冗余码拼接在数据 M 后面,一起发送出去。
视频里的讲法

视频的讲法更易懂
先从多项式得到CRC除数,从最低位开始向右写系数即可

再在源数据末尾加0,多项式最高次为多少就加几个0

最后用加过0的数据串除除数即可,这里用异或作为每一位的运算

最后保留多项式最高次项位数,这里保留6位

将其作为FCS加在源数据后面

注意:最后的冗余码位数一定与多项式最高次项位数一致,如果位数不够,就在前面补上0
一个示例



在数据后面添加上的冗余码称为帧检验序列 FCS (Frame Check Sequence)
循环冗余检验 CRC 和帧检验序列 FCS 并不等同
CRC 是一种常用的检错方法,而 FCS 是添加在数据后面的冗余码
FCS 可以用 CRC 这种方法得出,但 CRC 并非用来获得 FCS 的唯一方法
注意
最后的冗余码位数一定与多项式最高次项位数一致,如果位数不够,就在前面补上0
仅用循环冗余检验 CRC 差错检测技术只能做到无差错接受 (accept)
即:“凡是接受的帧(即不包括丢弃的帧),我们都能以非常接近于 1 的概率认为这些帧在传输过程中没有产生差错”
即:“凡是接收端数据链路层接受的帧均无差错”
“无比特差错”与“无传输差错”是不同的
可靠传输:数据链路层的发送端发送什么,在接收端就收到什么
传输差错可分为两大类:
比特差错
传输差错:帧丢失、帧重复或帧失序等
数据链路层使用 CRC 检验,能够实现无比特差错的传输,但这还不是可靠传输
要做到可靠传输,还必须再加上帧编号、确认和重传等机制
点对点协议 PPP
PPP协议的特点
对于点对点的链路,目前使用得最广泛的数据链路层协议是点对点协议 PPP (Point-to-Point Protocol)
用户到 ISP 的链路使用 PPP 协议

PPP协议的需求
1,简单 ——首要要求
2,封装成帧 —— 必须规定特殊的字符作为帧定界符
3,透明性 —— 必须保证数据传输的透明性
4,多种网络层协议 —— 能够在同一条物理链路上同时支持多种网络层协议
5,多种类型链路 —— 能够在多种类型的链路上运行
6,差错检测 —— 能够对接收端收到的帧进行检测,并立即丢弃有差错的帧
7,检测连接状态 —— 能够及时自动检测出链路是否处于正常工作状态
8,最大传送单元 —— 必须对每一种类型的点对点链路设置最大传送单元 MTU 的标准默认值,促进各种实现之间的互操作性
9,网络层地址协商 —— 必须提供一种机制使通信的两个网络层实体能够通过协商知道或能够配置彼此的网络层地址
10,数据压缩协商 —— 必须提供一种方法来协商使用数据压缩算法
PPP 协议不需要的功能
纠错 : PPP协议只进行检错,也就是说PPP协议是不可靠传输协议
流量控制 : 端到端的流量控制由TCP负责,PPP协议不必重复
序号 : PPP不是可靠传输协议,因此不需要使用帧的序号
多点线路 : PPP协议不支持多点线路,只支持点对点的链路通信
半双工或单工链路 : PPP协议只支持全双工链路
PPP 协议的组成
三个组成部分:
一个将 IP 数据报封装到串行链路的方法
一个链路控制协议 LCP (Link Control Protocol)
一套网络控制协议 NCP (Network Control Protocol)
PPP协议的帧格式
PPP 是面向字节的,所有的 PPP 帧的长度都是整数字节

各字段的意义
首部:4 个字段
标志字段 F: 0x7E 。连续两帧之间只需要用一个标志字段,长度为1个字节
地址字段 A:只置为 0xFF。实际上不起作用,长度为1个字节
控制字段 C:通常置为 0x03,长度为1个字节
协议字段,长度为2个字节
尾部:2 个字段
FCS使用CRC校验码,长度为2个字节
PPP 有一个 2 个字节的协议字段:其值
若为 0x0021,则信息字段就是 IP 数据报
若为 0x8021,则信息字段是网络控制数据
若为 0xC021,则信息字段是 PPP 链路控制数据
若为 0xC023,则信息字段是鉴别数据
解决透明传输问题
当 PPP 用在异步传输时,使用字节填充法:

当 PPP 用在同步传输链路时,采用零比特填充法:

PPP协议的工作状态
PPP 链路初始化过程:
用户拨号接入 ISP 后,就建立了一条从用户个人电脑到 ISP 的物理连接
用户个人电脑向 ISP 发送一系列的链路控制协议 LCP 分组(封装成多个 PPP 帧),以便建立LCP连接
之后进行网络层配置。网络控制协议 NCP 给新接入的用户个人电脑分配一个临时的 IP 地址
当用户通信完毕时,NCP 释放网络层连接,收回原来分配出去的IP地址。LCP 释放数据链路层连接。最后释放的是物理层的连接
PPP 协议的状态图:

使用广播信道的数据链路层
局域网的数据链路层
局域网最主要的特点:
网络为一个单位所拥有
地理范围和站点数目均有限
局域网具有如下主要优点:
具有广播功能,从一个站点可很方便地访问全网
便于系统的扩展和逐渐地演变,各设备的位置可灵活调整和改变
提高了系统的可靠性、可用性和生存性
局域网拓扑结构:
星星网
总线网
环形网

共享信道带来的问题
问题:若多个设备在共享的广播信道上同时发送数据,则会造成彼此干扰,导致发送失败

媒体共享技术
静态划分信道:
频分复用
时分复用
波分复用
码分复用
动态媒体接入控制(多点接入):
随机接入:所有的用户可随机地发送信息
受控接入:用户必须服从一定的控制,如轮询(polling)
以太网的两个标准
DIX Ethernet V2:世界上第一个局域网产品(以太网)的规约
IEEE 802.3:第一个 IEEE 的以太网标准
以太网:局域网的一种技术,最普遍的局域网技术
这两种标准的硬件实现可以在同一个局域网上互操作
这两个标准标准只有很小的差别,因此很多人也常把 802.3局域网简称为“以太网”
局域网数据链路层分为2个子层

逻辑链路控制 LLC (Logical Link Control) 子层:与传输媒体无关
媒体接入控制 MAC (Medium Access Control) 子层:与传输媒体有关
适配器的作用
进行串行/并行转换
对数据进行缓存
在计算机的操作系统安装设备驱动程序
实现以太网协议

计算机通过适配器和局域网进行通信
CSMA/CD 协议
最早的以太网:将许多计算机都连接到一根总线上
总线特点:易于实现广播通信,简单,可靠
为了实现一对一通信,将接收站的硬件地址写入帧首部中的目的地址字段中
仅当数据帧中的目的地址与适配器硬件地址一致时,才能接收这个数据帧

总线缺点:多个站点同时发送时,会产生发送碰撞或冲突,导致发送失败

以太网采取的 2 种重要措施
- 采用较为灵活的无连接的工作方式
不必先建立连接就可以直接发送数据
对发送的数据帧不进行编号,也不要求对方发回确认

- 发送的数据都使用曼彻斯特 (Manchester) 编码

曼彻斯特编码缺点:所占的频带宽度比原始的基带信号增加了一倍
CSMA/CD 协议的要点
CSMA/CD (Carrier Sense Multiple Access with Collision Detection) :载波监听多点接入 / 碰撞检测
多点接入:说明这是总线型网络。许多计算机以多点接入的方式连接在一根总线上
载波监听:即“边发送边监听”。不管在想要发送数据之前,还是在发送数据之中,每个站都必须不停地检测信道
碰撞检测:适配器边发送数据,边检测信道上的信号电压的变化情况。电压摆动值超过一定的门限值时,就认为总线上至少有两个站同时在发送数据,表明产生了碰撞(或冲突)
检测到碰撞后
适配器立即停止发送,等待一段随机时间后再次发送
CSMA/CD 协议工作流程

进行碰撞检测的原因
因为信号传播时延对载波监听产生了影响

A 需要单程传播时延的 2 倍的时间,才能检测到与 B 的发送产生了冲突
可见:每一个站在自己发送数据之后的一小段时间内,存在着遭遇碰撞的可能性
争用期
以太网的端到端往返时延 \(2\tau\) 称为争用期,或碰撞窗口
具体的争用期时间 \(= 51.2 \mu s\)
经过争用期这段时间还没有检测到碰撞,才能肯定这次发送不会发生碰撞
碰撞后重传的时机
采用截断二进制指数退避 (truncated binary exponential backoff) 确定
发生碰撞的站停止发送数据后,要退避一个随机时间后再发送数据
基本退避时间 : \(2\tau\)
从整数集合 \([0, 1, … , (2^k - 1)]\) 中随机地取出一个数,记为 \(r\)
\(重传所需的时延 = r \times 基本退避时间\)
参数 \(k = Min[重传次数, 10]\)
当重传达 16 次仍不能成功时即丢弃该帧,并向高层报告
重传时机举例:

若连续多次发生冲突,表明可能有较多的站参与争用信道
上述退避算法可使重传需要推迟的平均时间随重传次数而增大(称为动态退避),因而减小发生碰撞的概率,有利于整个系统的稳定
使用集线器的星形拓扑
传统以太网传输媒体:粗同轴电缆 \(\rightarrow\) 细同轴电缆 \(\rightarrow\) 双绞线
采用双绞线的以太网采用星形拓扑
在星形的中心则增加了一种可靠性非常高的设备,叫做集线器 (hub)
传统以太网使用同轴电缆,采用总线形拓扑结构

采用双绞线的以太网采用星形拓扑

每个站到集线器的距离不超过100 m
1990 年,IEEE 制定出采用双绞线的星形以太网 10BASE-T 的标准 802.3i

集线器的一些特点
使用电子器件来模拟实际电缆线的工作,因此整个系统仍然像一个传统的以太网那样运行
使用集线器的以太网在逻辑上仍是一个总线网,各工作站使用的还是 CSMA/CD 协议,并共享逻辑上的总线
很像一个多接口的转发器,工作在物理层
采用了专门芯片,进行自适应串音回波抵消,减少了近端串音
以太网的信道利用率
多个站在以太网上同时工作就可能会发生碰撞,当发生碰撞时,信道资源实际上是被浪费了。因此,当扣除碰撞所造成的信道损失后,以太网总的信道利用率并不能达到 100%
假设:单程端到端传播时延 \(= \tau\) ,则争用期长度 \(= 2\tau\) 。检测到碰撞后不发送干扰信号
设:帧长 \(= L (bit)\),数据发送速率 \(= C (bit/s)\),则帧的发送时间 \(T_0 = L/C (s)\)
以太网信道被占用的情况

注意:成功发送一个帧需要占用信道的时间是 \(T_0 + \tau\) ,比帧的发送时间要多一个单程端到端时延 \(\tau\)
参数 a 与利用率
要提高以太网的信道利用率,就必须减小 \(\tau\) 与 \(T_0\) 之比
在以太网中定义了参数 a = 以太网单程端到端时延 \(\tau\) 与帧的发送时间 \(T_0\) 之比: \[ \begin{align*} a=\frac{\tau}{T_0} \end{align*} \] \(a \rightarrow 0\),表示一发生碰撞就立即可以检测出来, 并立即停止发送,因而信道利用率很高
\(a\) 越大,表明争用期所占的比例增大,每发生一次碰撞就浪费许多信道资源,使得信道利用率明显降低
对以太网参数 a 的要求
为提高利用率,以太网的参数 a 的值应当尽可能小些
当数据率一定时,以太网的连线的长度受到限制,否则 \(tau\) 的数值会太大
以太网的帧长不能太短,否则 \(T_0\) 的值会太小,使 a 值太大
信道利用率的最大值 Smax
\[ \begin{align*} S_{max}&=\frac{T_0}{T_0+\tau}\\\\ &=\frac{1}{1+a} \end{align*} \]
只有当参数 a 远小于 1 才能得到尽可能高的极限信道利用率
据统计,当以太网的利用率达到 30% 时就已经处于重载的情况
以太网的 MAC 层
MAC层的硬件地址
硬件地址又称为物理地址,或 MAC 地址
IEEE 802 标准为局域网规定了一种 48 位的全球地址(简称为地址)是指局域网上的每一台计算机中固化在适配器的 ROM 中的地址
注意:如果连接在局域网上的主机或路由器安装有多个适配器,这样的主机或路由器就有多个“地址”。更准确些说,这种 48 位“地址”应当是某个接口的标识符
48位的MAC地址

IEEE 注册管理机构 RA 负责向厂家分配前 3 个字节 (即高 24 位),称为组织唯一标识符 OUI (Organizationally Unique Identifier)
厂家自行指派后 3 个字节 (即低 24 位),称为扩展标识符 (extended identifier)
必须保证生产出的适配器没有重复地址
地址被固化在适配器的 ROM 中
单站地址,组地址,广播地址
IEEE 规定地址字段的第 1 字节的最低位为 I/G (Individual / Group) 位
单站地址:I/G 位 = 0
组地址:I/G 位 = 1,组地址用来进行多播
广播地址:所有 48 位都为 1(全 1),只能作为目的地址使用
全球管理与本地管理
IEEE 把地址字段第 1 字节的最低第 2 位规定为 G/L (Global / Local) 位
全球管理:G/L 位 = 0。厂商向 IEEE 购买的 OUI 都属于全球管理
本地管理:G/L 位 = 1。 这时用户可任意分配网络上的地址
适配器具有过滤功能
每收到一个 MAC 帧,先用硬件检查帧中的 MAC 地址
如果是发往本站的帧则收下,然后再进行其他的处理
否则就将此帧丢弃,不再进行其他的处理
“发往本站的帧”包括以下三种:
单播 (unicast)帧(一对一)
广播 (broadcast)帧(一对全体)
多播 (multicast)帧(一对多)
以混杂方式 (promiscuous mode) 工作的以太网适配器只要“听到”有帧在以太网上传输就都接收下来
MAC帧的格式
常用的以太网 MAC 帧格式有 2 种标准:
DIX Ethernet V2 标准
IEEE 的 802.3 标准
最常用的 MAC 帧是以太网 V2 的格式
以太网 V2 的 MAC 帧格式

有效MAC帧:数据字段46-1500字节
无效的 MAC 帧:
数据字段的长度与长度字段的值不一致、
帧的长度不是整数个字节
用收到的帧检验序列 FCS 查出有差错
数据字段的长度不在 46 ~ 1500 字节之间
有效的 MAC 帧长度为 64 ~ 1518 字节之间
对于检查出的无效 MAC 帧就简单地丢弃
以太网不负责重传丢弃的帧
IEEE 802.3 MAC 与以太网 V2 MAC 帧格式的区别

当“长度/类型”字段值大于 0x0600 时,表示“类型”;小于 0x0600 时,表示“长度”
当“长度/类型”字段值小于 0x0600 时,数据字段必须装入逻辑链路控制 LLC 子层的 LLC 帧
在 802.3 标准的文档中,MAC 帧格式包括了 8 字节的前同步码和帧开始定界符
现在市场上流行的都是以太网 V2 的 MAC 帧,但大家也常常把它称为 IEEE 802.3 标准的 MAC 帧
扩展的以太网
在物理层扩展以太网
物理层扩展以太网方法:光纤,集线器
使用光纤扩展

使用集线器扩展

用集线器扩展以太网优缺点
优点
使原来属于不同碰撞域(冲突域)的计算机能够跨碰撞域通信
扩大了以太网覆盖的地理范围
缺点
碰撞域增大了,总的吞吐量未提高
如果使用不同的以太网技术(如数据率不同),那么就不能用集线器将它们互连起来
碰撞域
碰撞域(collision domain)又称为冲突域,指网络中一个站点发出的帧会与其他站点发出的帧产生碰撞或冲突的那部分网络
碰撞域越大,发生碰撞的概率越高

在数据链路层扩展以太网
(串讲强调)
数据链路层扩展以太网方法:以太网交换机
更为常用。早期使用网桥,现在使用以太网交换机

网桥与以太网交换机
网桥
工作在数据链路层
根据MAC帧的目的地址对收到的帧进行转发和过滤,或者转发,或者丢弃
交换机
工作在数据链路层
多端口的网桥
明显提高以太网性能
以太网交换机的特点
实质上是一个多接口网桥,通常有十几个或更多的接口
每个接口都直接与一个单台主机或另一个以太网交换机相连,并且一般都工作在全双工方式
以太网交换机具有并行性
能同时连通多对接口,使多对主机能同时通信
相互通信的主机都独占传输媒体,无碰撞地传输数据
每一个端口和连接到端口的主机构成了一个碰撞域

接口有存储器
即插即用,其内部的帧交换表(又称为地址表)是通过自学习算法自动地逐渐建立起来的。这种交换表就是一个内容可寻址存储器CAM (Content addressable Memory)
使用专用的交换结构芯片,用硬件转发,其转发速率要比使用软件转发的网桥快很多
以太网交换机的性能远远超过普通的集线器,而且价格并不贵
以太网交换机的优点
集线器:
N 个用户共享集线器提供的带宽 B
平均每个用户仅占有 B/N 的带宽

交换机:
交换机为每个端口提供带宽 B
N 个用户,每个用户独占带宽 B
交换机总容量达 B × N

以太网交换机的交换方式
存储转发方式:把整个数据帧先缓存,再进行处理
直通 (cut-through) 方式
接收数据帧的同时立即按数据帧的目的 MAC 地址决定该帧的转发接口
缺点:不检查差错就直接将帧转发出去,有可能转发无效帧
以太网交换机的自学习功能
(串讲强调)

开始时,交换表是空的
A 先向 B 发送一帧。该帧从接口 1 进入到交换机
交换机收到帧后,先查找交换表。没有查到应从哪个接口转发这个帧给 B
交换机把这个帧的源地址 A 和接口 1 写入交换表中
交换机向除接口 1 以外的所有的接口广播这个帧

由于与该帧的目的地址不相符,C 和 D 将丢弃该帧
B 向 A 发送一帧。该帧从接口 3 进入到交换机
交换机收到帧后,先查找交换表。发现交换表中的 MAC 地址有 A,表明要发送给 A 的帧应从接口 1 转发出去。于是就把这个帧传送到接口 1 转发给 A
交换机把这个帧的源地址 B 和接口 3 写入交换表中

考虑到可能有时要在交换机的接口更换主机,或者主机要更换其网络适配器,这就需要更改交换表中的项目。为此,在交换表中每个项目都设有一定的有效时间,过期的项目就自动被删除
这种自学习方法使得以太网交换机能够即插即用,不必人工进行配置
2 台以太网交换机互连,可能存在“回路”问题,导致数据帧循环绕圈
消除回路:使用生成树协议(SPT)
生成树协议 STP (Spanning Tree Protocol) 要点:
不改变网络的实际拓扑,但在逻辑上则切断某些链路,使得从一台主机到所有其他主机的路径是无环路的树状结构,从而消除了兜圈子现象

从总线以太网到星形以太网
早期:无源总线结构
使用CSMA/CD协议,半双工模式工作
现在:以太网交换机为中心的星形结构
不使用共享总线,没有碰撞问题,不使用CSMA/CD协议,全双工工作
仍采用以太网帧结构

虚拟局域网
针对交换机
以太网存在问题
广播风暴
安全问题
管理困难等
广播风暴
一个以太网是一个广播域
广播域(broadcast domain):指这样一部分网络,其中任何一台设备发出的广播通信都能被该部分网络中的所有其他设备所接收

交换机之间的冗余链路形成广播风暴

安全问题
交换机每个接口都处于一个独立的碰撞域(或冲突域)中,但所有计算机都处于同一个广播域中,无法隔离不同部门的通信

虚拟局域网 VLAN
利用以太网交换机可以很方便地实现虚拟局域网 VLAN (Virtual LAN)
IEEE 802.1Q 对虚拟局域网 VLAN 的定义:
虚拟局域网 VLAN 是由一些局域网网段构成的与物理位置无关的逻辑组,而这些网段具有某些共同的需求。每一个 VLAN 的帧都有一个明确的标识符,指明发送这个帧的计算机是属于哪一个 VLAN
虚拟局域网其实只是局域网给用户提供的一种服务,并不是一种新型局域网

B1 发送数据时,VLAN1 和 VLAN3 中的工作站 A1,A2 和 C1 等都不会收到 B1 发出的广播信息
虚拟局域网限制了接收广播信息的工作站数,使得网络不会因传播过多的广播信息 (即“广播风暴”) 而引起性能恶化
虚拟局域网优点
虚拟局域网(VLAN)技术具有以下主要优点:
改善了性能
简化了管理
降低了成本
改善了安全性
划分虚拟局域网的方法
基于交换机端口
基于计算机网卡的 MAC 地址
基于协议类型
基于 IP 子网地址
基于高层应用或服务
虚拟局域网使用的以太网帧格式

标准以太网帧插入 4 字节的 VLAN 标记后变成了 802.1Q 帧(或带标记的以太网帧)
以太网 MAC 帧的最大帧长从原来的 1518 字节变为 1522 字节

高速以太网
100BASE-T 以太网
又称为快速以太网 (Fast Ethernet)
在双绞线上传送 100 Mbit/s 基带信号的星形拓扑以太网
仍使用 IEEE 802.3 的 CSMA/CD 协议
1995 定为正式标准:IEEE 802.3u
特点:
可在全双工方式下工作而无冲突发生
在全双工方式下工作时,不使用 CSMA/CD 协议
使用 IEEE 802.3 协议规定的 MAC 帧格式
保持最短帧长不变,但将一个网段的最大电缆长度减小到 100 米
帧间时间间隔从原来的 \(9.6 \mu s\) 改为现在的 \(0.96\mu s\)
(串讲强调)
\(\color{red}100 Mbit/s 以太网的 3 种不同的物理层标准\)

吉比特以太网
特点:
允许在 1 Gbit/s 下以全双工和半双工 2 种方式工作
使用 IEEE 802.3 协议规定的 MAC 帧格式
在半双工方式下使用 CSMA/CD 协议,而在全双工方式不使用 CSMA/CD 协议
与 10BASE-T 和 100BASE-T 技术向后兼容
将争用时间增大为 512 字节
10 吉比特以太网 (10GE) 和更快的以太网
特点:
万兆比特
与 10、100 Mbit/s 和 1 Gbit/s 以太网的帧格式完全相同
保留了 IEEE 802.3 标准规定的以太网最小和最大帧长
只使用光纤作为传输媒体
只工作在全双工方式,没有争用问题,不使用 CSMA/CD 协议
使用以太网进行宽带接入
特点:
可以提供双向的宽带通信
可以根据用户对带宽的需求灵活地进行带宽升级
可以实现端到端的以太网传输,中间不需要再进行帧格式的转换
但不支持用户身份鉴别
网络层
网络层提供的两种服务
网络层的主要任务是通过路由选择算法,为分组通过互联网络选择适当的路径
网络层要实现路由选择与网络互联等基本功能
网络层使用了数据链路层的服务,同时向运输层的端到端传输连接提供服务
争论:让网络负责可靠交付和网络提供数据报服务
让网络负责可靠交付
计算机网络模仿电信网络,使用面向连接的通信方式
通信之前先建立虚电路 VC (Virtual Circuit) (即连接),以保证双方通信所需的一切网络资源
虚电路服务

网络提供数据报服务
网络层要设计得尽量简单,向其上层只提供简单灵活的、无连接的、尽最大努力交付的数据报服务
由主机中的运输层负责可靠的通信
数据报服务

虚电路服务与数据报服务的对比

网络层的两个层面
不同网络中的两个主机之间的通信,要经过若干个路由器转发分组来完成
在路由器之间传送的信息有以下 2 大类:
数据
路由信息(为数据传送服务)

数据层面
路由器根据本路由器生成的转发表,把收到的分组从查找到的对应接口转发出去
独立工作
采用硬件进行转发,快
控制层面
根据路由选择协议所用的路由算法计算路由,创建出本路由器的路由表
许多路由器协同动作
采用软件计算,慢
软件定义网络 SDN 中远程控制器:
计算出最佳的路由,在每一个路由器中生成其正确的转发表
网际协议IP
网际协议IP是TCP/IP体系中两个最主要的协议之一,也是最重要的互联网标准协议之一
(串讲强调)
\(\color{red}与IP协议配套使用的还有三个协议: ARP, ICMP, IGMP\)
地址解析协议ARP (Address Resolution Protocol)
网际控制报文协议ICMP (Internet Control Message Protocol)
网际组管理协议IGMP (Internet Group Management Protocol)

虚拟互连网络
网络互相连接起来要使用一些中间设备
中间设备又称为中间系统或中继(relay)系统。根据中间设备所在的层次,可以有以下五种不同的中间设备:
物理层中继系统:转发器(repeater)
数据链路层中继系统:网桥或桥接器(bridge)
网络层中继系统:路由器(router)
网络层以上的中继系统:网关(gateway)
网桥和路由器的混合物:桥路器(brouter)
网络互连是指使用路由器
原因:
当中继系统是转发器或网桥时,一般并不称之为网络互连,因为这仅仅是把一个网络扩大了,而这仍然是一个网络
网关由于比较复杂,目前使用得较少
互联网都是指用路由器进行网络互连和路由选择
由于历史的原因,许多有关 TCP/IP 的文献将网络层使用的路由器称为网关
互连网络与虚拟互连网络

虚拟互连网络的意义
所谓虚拟互连网络也就是逻辑互连网络,它的意思就是互连起来的各种物理网络的异构性本来是客观存在的,但是我们利用IP协议就可以使这些性能各异的网络从用户看起来好像是一个统一的网络
使用IP协议的虚拟互连网络可简称为IP网
使用虚拟互连网络的好处是:当互联网上的主机进行通信时,就好像在一个网络上通信一样,而看不见互连的各具体的网络异构细节
如果在这种覆盖全球的IP网的上层使用TCP协议,那么就是现在的互联网 (Internet)
分组在互联网中的传送

互联网可以由多种异构网络互连组成
如果我们只从网络层考虑问题,那么IP数据报就可以想象是在网络层中传送
传输路径可以省略路由器之间的网络以及连接在这些网络上的许多无关主机,使问题的讨论更加简单

IP地址
IP层转发分组的过程
在 TCP/IP 体系中,IP 地址是一个最基本的概念
没有IP地址,就无法和网上的其他设备进行通信
IP 地址及其表示方法
IP 地址:32 位二进制代码
分为每 8 位为一组,将每 8 位的二进制数转换为十进制数,采用点分十进制记法

互联网上的每台主机(或路由器)的每个接口分配一个在全世界唯一的 IP 地址
由互联网名字和数字分配机构 ICANN (Internet Corporation for Assigned Names and Numbers) 进行分配
IP地址采用两级结构
2 级结构,即2 个字段:网络号和主机号

IP地址在整个互联网范围内是唯一的
IP 地址指明了连接到某个网络上的一个主机
分类的 IP 地址
标准分类

D类E类用不到
规定A类前八位第一位是0
主机号和网络号都不能取全0或全1,这两个是特殊的,全0指网络号,全1是广播地址(出不了路由器)
即A类网络包含了\(2^7-2\)个网络号,最大主机数为\(2^{24}-2\)
B类网络包含了\(2^{14}-1\)个网络号,最大主机数为\(2^{16}-2\)
C类网络包含了\(2^{21}-1\)个网络号,最大主机数为\(2^8-2\)
各类 IP 地址的指派范围

注意:指派时要扣除全 0 和全 1 的主机号

一般不使用的特殊 IP 地址
(串讲强调)

分类的 IP 地址的优点和缺点
优点
管理简单
使用方便
转发分组迅速
划分子网,灵活地使用
缺点
设计上不合理:
大地址块,浪费地址资源
即使采用划分子网的方法,也无法解决 IP 地址枯竭的问题
无分类编址 CIDR
CIDR (Classless Inter-Domain Routing) :无分类域间路由选择
消除了传统的 A 类、B 类和 C 类地址以及划分子网的概念,可以更加有效地分配 IPv4 的地址空间,但无法解决 IP 地址枯竭的问题
要点:
网络前缀
地址块
地址掩码
网络前缀
CIDR 记法:斜线记法 (slash notation)
a.b.c.d / n:二进制 IP 地址的前 n 位是网络前缀
例如:128.14.35.7/20:前 20 位是网络前缀
2 级结构
2 个字段:网络前缀和主机号

地址块
CIDR 把网络前缀都相同的所有连续的 IP 地址组成一个 CIDR 地址块
一个 CIDR 地址块包含的 IP 地址数目,取决于网络前缀的位数

注意:
128.14.35.7/20:是 IP 地址,同时指明了网络前缀为 20 位,该地址是 128.14.32.0/20 地址块中的一个地址
128.14.32.0/20:是包含有多个 IP 地址的地址块,同时也是这个地址块中主机号为全 0 的 IP 地址
128.14.35.7:是 IP 地址,但未指明网络前缀长度,不知道其网络地址
128.14.32.0:不能指明一个网络地址,因为无法知道网络前缀是多少
地址掩码
又称为子网掩码 (subnet mask)
位数:32 位
目的:让机器从 IP 地址迅速算出网络地址
由一连串 1 和接着的一连串 0 组成,而 1 的个数就是网络前缀的长度
/20 地址块的地址掩码:11111111 11111111 11110000 00000000
点分十进制记法:255.255.240.0
CIDR 记法:255.255.240.0/20
标准分类的地址掩码

网络地址 = (二进制的 IP 地址) AND (地址掩码)

例:已知 IP 地址是 128.14.35.7/20。求网络地址

构造超网
每一个 CIDR 地址块中的地址数一定是 2 的整数次幂
除最后几行外,CIDR 地址块都包含了多个 C 类地址(是一个 C 类地址的 2n 倍,n 是整数)
因此在文献中有时称 CIDR 编址为“构造超网”
三个特殊的CIDR地址块

路由聚合

举例:

IP 地址的特点
- 每个 IP 地址都由网络前缀和主机号两部分组成
IP 地址是一种分等级的地址结构
方便了 IP 地址的分配和管理
实现路由聚合,减小了转发表所占的存储空间,以及查找转发表的时间
- IP 地址是标志一台主机(或路由器)和一条链路的接口
当一台主机同时连接到两个网络上时,该主机就必须同时具有两个相应的 IP 地址,其网络号必须是不同的。这种主机称为多归属主机 (multihomed host)
一个路由器至少应当连接到两个网络,因此一个路由器至少应当有两个不同的 IP 地址
- 转发器或交换机连接起来的若干个局域网仍为一个网络
按照互联网的观点,一个网络(或子网)是指具有相同网络前缀的主机的集合
转发器或交换机连接起来的若干个局域网都具有同样的网络号,它们仍为一个网络
具有不同网络号的局域网必须使用路由器进行互连
交换机连的同一个网络,路由器连的不同网络
- 在 IP 地址中,所有分配到网络前缀的网络都是平等的
互联网同等对待每一个 IP 地址,不管是范围很小的局域网,还是可能覆盖很大地理范围的广域网
注意:路由器的每个接口都有一个不同网络号的IP地址
IP地址与MAC地址
IP地址
虚拟地址、软件地址、逻辑地址
网络层和以上各层使用
放在 IP 数据报的首部
MAC地址
固化在网卡上的 ROM 中
硬件地址、物理地址
数据链路层使用
放在 MAC 帧的首部
区别
IP 地址放在 IP 数据报的首部,MAC 地址则放在 MAC 帧的首部


如图,不同层次、不同区间使用的源地址和目的地址

传输过程中,IP始终不变,MAC一直在变
尽管互连在一起的网络的 MAC 地址体系各不相同,但 IP 层抽象的互联网却屏蔽了下层这些很复杂的细节
只要我们在网络层上讨论问题,就能够使用统一的、抽象的 IP 地址研究主机和主机或路由器之间的通信
地址解析协议ARP
实现IP通信时使用了两个地址:
IP 地址(网络层地址)
MAC 地址(数据链路层地址)

ARP作用:从 IP 地址解析出 MAC 地址
ARP 用于解决同一个局域网上的主机或路由器的 IP 地址和 MAC 地址的映射问题
ARP 高速缓存 (ARP cache)
存放 IP 地址到 MAC 地址的映射表
映射表动态更新(新增或超时删除)
映射表:< IP 地址;MAC 地址;生存时间 (Age);类型等 >

超过生存时间的项目都从高速缓存中删除,以适应网络适配器变化
ARP工作
当主机 A 欲向本局域网上的某个主机 B 发送 IP 数据报时:

ARP 查找IP地址对应的MAC地址
本局域网上广播发送 ARP 请求(路由器不转发 ARP 请求)
ARP 请求分组:包含发送方硬件地址 / 发送方 IP 地址 / 目标方硬件地址(未知时填 0) / 目标方 IP 地址
单播 ARP 响应分组:包含发送方硬件地址 / 发送方 IP地址 / 目标方硬件地址 / 目标方 IP 地址
ARP 分组封装在以太网帧中传输

注意广播和单播
ARP 高速缓存的作用
存放最近获得的 IP 地址到 MAC 地址的绑定
减少 ARP 广播的通信量
为进一步减少 ARP 通信量,主机 A 在发送其 ARP 请求分组时,就将自己的 IP 地址到 MAC 地址的映射写入 ARP 请求分组
当主机 B 收到 A 的 ARP 请求分组时,就将主机 A 的 IP 地址及其对应的 MAC 地址映射写入主机 B 自己的 ARP 高速缓存中,不必再发送 ARP 请求
ARP 用于解决同一个局域网上的主机或路由器的 IP 地址和 MAC 地址的映射问题
若两台主机不在同一个局域网

A先广播ARP,找路由器R1

路由器R1单播A

路由器R1广播ARP,找B

B单播路由器R1

使用 ARP 的四种典型情况
1.发送方是主机,要把 IP 数据报发送到本网络上的另一个主机。这时用 ARP 找到目的主机的硬件地址
2.发送方是主机,要把 IP 数据报发送到另一个网络上的一个主机。这时用 ARP 找到本网络上的一个路由器的硬件地址。剩下的工作由这个路由器来完成
3.发送方是路由器,要把 IP 数据报转发到本网络上的一个主机。这时用 ARP 找到目的主机的硬件地址
4.发送方是路由器,要把 IP 数据报转发到另一个网络上的一个主机。这时用 ARP 找到本网络上另一个路由器的硬件地址。剩下的工作由这个路由器来完成
为什么要使用两种地址
由于全世界存在着各式各样的网络,它们不同使用不同的 MAC 地址。MAC 地址之间的转换非常复杂
对以太网 MAC 地址进行寻址也是极其困难的
IP 编址把这个复杂问题解决了
连接到互联网的主机只需各自拥有一个唯一的 IP 地址,它们之间的通信就像连接在同一个网络上那样简单方便,即使必须多次调用 ARP 来找到 MAC 地址,但这个过程都是由计算机软件自动进行的,对用户来说是看不见的
因此,在虚拟的 IP 网络上用 IP 地址进行通信非常方便
IP数据报格式

版本:占 4 位,指 IP 协议的版本,目前的 IP 协议版本号为 4 (即 IPv4)
首部长度:占 4 位,可表示的最大数值是 15 个单位(一个单位为 4 字节),因此 IP 的首部长度的最大值是 60 字节
区分服务:占 8 位,用来获得更好的服务,在旧标准中叫做服务类型,但实际上一直未被使用过,1998 年这个字段改名为区分服务,只有在使用区分服务(DiffServ)时,这个字段才起作用,在一般的情况下都不使用这个字段
总长度:占 16 位,指首部和数据之和的长度,单位为字节,因此数据报的最大长度为 65535 字节,总长度必须不超过最大传送单元 MTU
标识(identification):占 16 位,它是一个计数器,用来产生数据报的标识
标志(flag):占 3 位,目前只有前两位有意义,分别是MF和DF
标志字段的最低位是 MF (More Fragment),MF = 1 表示后面“还有分片”;MF = 0 表示最后一个分片
标志字段中间的一位是 DF (Don't Fragment) ,只有当 DF = 0 时才允许分片
片偏移:12 位,指出:较长的分组在分片后某片在原分组中的相对位置,片偏移以 8 个字节为偏移单位
片偏移例:

生存时间:8 位,记为 TTL (Time To Live),数据报在网络中可通过的路由器数的最大值
协议:8 位,指出此数据报携带的数据使用何种协议,以便目的主机的 IP 层将数据部分上交给哪个处理过程
协议字段例:


首部检验和:16 位,只检验数据报的首部,不检验数据部分,这里不采用 CRC 检验码而采用简单的计算方法
计算方法:

数据报每经过一个路由器,路由器都要重新计算一下首部检验和
源地址和目的地址都各占 4 字节
可变部分
IP 首部的可变部分就是一个选项字段,用来支持排错、测量以及安全等措施,内容很丰富
选项字段的长度可变,从 1 个字节到 40 个字节不等,取决于所选择的项目
增加首部的可变部分是为了增加 IP 数据报的功能,但这同时也使得 IP 数据报的首部长度成为可变的。这就增加了每一个路由器处理数据报的开销
实际上这些选项很少被使用
IP层转发分组的过程
基于终点的转发
分组在互联网中是逐跳转发的
基于终点的转发:基于分组首部中的目的地址传送和转发
为了压缩转发表的大小,转发表中最主要的路由是(目的网络地址,下一跳地址) ,而不是(目的地址,下一跳地址)
查找转发表的过程就是逐行寻找前缀匹配

举例:

主机 H1 发送出的、目的地址是 128.1.2.132 的分组是如何转发的?
1.H1 首先检查 128.1.2.132 是否连接在本网络上,如果是,则直接交付;否则,就送交路由器 R1

2.路由器 R1 收到分组后查找转发表,先检查第 1 行
255.255.255.192 AND 128.1.2.132 = 128.1.2.128 /26,不匹配

3.再检查第二行
255.255.255.128 AND 128.1.2.132 = 128.1.2.128 /25,匹配
进行分组的直接交付(通过路由器 R1 的接口 1)
最长前缀匹配
使用 CIDR 时,在查找转发表时可能会得到不止一个匹配结果
最长前缀匹配 (longest-prefix matching) 原则:选择前缀最长的一个作为匹配的前缀
网络前缀越长,其地址块就越小,因而路由就越具体
把前缀最长的排在转发表的第 1 行

路由器 R1 如何转发目的地址是 128.1.2.194 的分组?
1.路由器 R1 收到分组后查找转发表,先检查第 1 行
255.255.255.192 AND 128.1.2.194 = 128.1.2.192 /26,匹配
2.接着检查第 2 行
255.255.255.128 AND 128.1.2.194 = 128.1.2.128 /25,匹配
3.接着检查第 3 行
255.255.255.192 AND 128.1.2.194 = 128.1.2.192 /26,不匹配
有两个匹配结果,问题:从哪个接口向外转发分组?
用接口0,即/26的,因为网络前缀长,路由更具体

转发表中的 2 种特殊的路由
主机路由 (host route) ,又叫做特定主机路由
是对特定目的主机的 IP 地址专门指明的一个路由
网络前缀就是 a.b.c.d/32
放在转发表的最前面
默认路由 (default route)
不管分组的最终目的网络在哪里,都由指定的路由器 R 来处理
用特殊前缀 0.0.0.0/0 表示
默认路由例子:

路由器分组转发算法

使用二叉线索查找转发
二叉线索 (binary trie):一种特殊结构的树,可以快速在转发表中找到匹配的叶节点
从二叉线索的根节点自顶向下的深度最多有 32 层,每一层对应于 IP 地址中的一位
为简化二叉线索的结构,可以用唯一前缀 (unique prefix) 来构造二叉线索
为了提高二叉线索的查找速度,广泛使用了各种压缩技术
例子:

规则:先检查 IP 地址左边的第一位,如为 0,则第一层的节点就在根节点的左下方;如为 1,则在右下方。然后再检查地址的第二位,构造出第二层的节点。依此类推,直到唯一前缀的最后一位。每个叶节点代表一个唯一前缀
为检查网络前缀是否匹配,必须使二叉线索中的每一个叶节点包含所对应的网络前缀和子网掩码
若找到了一个叶节点
将目的 IP 地址和该叶节点的子网掩码进行按位 AND 运算,看结果是否与叶节点的网络前缀相匹配
若匹配,就按下一跳的接口转发该分组。否则,就丢弃该分组
若找不到,说明这个地址不在这个二叉线索中
检查是否存在默认路由。若有,把分组传送到指明的默认路由器,否则丢弃该分组
网际控制报文协议ICMP
ICMP (Internet Control Message Protocol) 允许主机或路由器报告差错情况和提供有关异常情况的报告
ICMP 是互联网的标准协议
但 ICMP 不是高层协议,而是 IP 层的协议
ICMP报文装在IP数据报中,算IP数据报的数据部分
ICMP 报文的格式

ICMP报文种类
(串讲强调)
\(\color{red}各类型的值要记\)
ICMP报文有2 种:差错报告报文,询问报文

差错报告有四种:
终点不可达:路由器或主机不能交付数据报时,向源点发送
时间超过:路由器收到生存时间为0的数据报时,除丢弃以外,还要向源点发送时间超过报文;终点在预定时间内不能收到数据报的全部数据报片时,把已收集的数据报全部丢弃,还要向源点发送时间超过报文
参数问题:路由器或目的主机收到数据报的首部有字段值不正确,丢弃并发送
改变路由:路由器把改变路由报文发给主机
ICMP 差错报告报文的数据字段的内容
把收到的需要差错报告的IP数据报首部和数据字段的前8个字节提取出来,作为ICMP报文的数据字段,再加上ICMP差错报告报文的前8个字节,就构成了ICMP差错报告报文

不应发送 ICMP 差错报告报文的几种情况
对 ICMP 差错报告报文不再发送 ICMP 差错报告报文
对第一个分片的数据报片的所有后续数据报片都不发送 ICMP 差错报告报文
对具有多播地址的数据报都不发送 ICMP 差错报告报文
对具有特殊地址(如127.0.0.0 或 0.0.0.0)的数据报不发送 ICMP 差错报告报文
常用ICMP 询问报文
- 回送请求和回答
由主机或路由器向一个特定的目的主机发出的询问
收到此报文的主机必须给源主机或路由器发送 ICMP 回送回答报文
这种询问报文用来测试目的站是否可达,以及了解其有关状态
- 时间戳请求和回答:
请某台主机或路由器回答当前的日期和时间
时间戳回答报文中有一个 32 位的字段,其中写入的整数代表从1900 年 1 月 1 日起到当前时刻一共有多少秒
时间戳请求与回答可用于时钟同步和时间测量
ICMP应用举例
PING (Packet InterNet Groper) :分组网间探测
用来测试两个主机之间的连通性
使用了 ICMP 回送请求与回送回答报文
是应用层直接使用网络层 ICMP 的例子,没有通过运输层的 TCP 或 UDP
Traceroute
IPV6
了解即可
使用隧道技术进行从 IPv4 到 IPv6 的过渡
互联网的路由选择协议
有关路由选择协议的几个概念
理想的路由算法
算法必须是正确的和完整的。分组一定能够到达目的网络和目的主机
算法在计算上应简单 不应增加太多的额外开销
算法应能适应通信量和网络拓扑的变化 这就是说,要有自适应性,有时也称为“稳健性”
算法应具有稳定性
算法应是公平的
算法应是最佳的
关于“最佳路由”
不存在一种绝对的最佳路由算法
所谓“最佳”只能是相对于某一种特定要求下得出的较为合理的选择而已
路由选择非常复杂
需要所有节点共同协调工作的
环境不断变化,而这种变化有时无法事先知道
当网络发生拥塞时,很难获得所需的路由选择信息
路由算法分类
静态路由选择策略
非自适应路由选择
不能及时适应网络状态的变化
简单,开销较小
动态路由选择策略
自适应路由选择
能较好地适应网络状态的变化
实现较为复杂,开销较大
分层次的路由选择协议
互联网:
采用自适应的(即动态的)、分布式路由选择协议
把整个互联网划分为许多较小的自治系统 AS,采用分层次的路由选择协议
分为 2 个层次:

自治系统之间的路由选择 或 域间路由选择 (interdomain routing)
自治系统内部的路由选择 或 域内路由选择 (intradomain routing)
自治系统
自治系统 AS (Autonomous System) :是在单一技术管理下的许多网络、IP地址以及路由器,而这些路由器使用一种自治系统内部的路由选择协议和共同的度量。每一个 AS 对其他 AS 表现出的是一个单一的和一致的路由选择策略
2 大类路由选择协议
内部网关协议 IGP
Interior Gateway Protocol
在一个自治系统内部使用的路由选择协议
常用:RIP,OSPF
外部网关协议 EGP
External Gateway Protocol
在不同自治系统之间进行路由选择时使用的协议
使用最多:BGP-4
自治系统之间的路由选择也叫做域间路由选择 (interdomain routing)
自治系统内部的路由选择叫做域内路由选择 (intradomain routing)
内部网关协议RIP
RIP (Routing Information Protocol):路由信息协议,是一种分布式的、基于距离向量的路由选择协议
互联网的标准协议
最大优点:简单
要求网络中的每个路由器都要维护从它自己到其他每一个目的网络的距离记录
RIP协议,即按固定时间间隔与相邻路由器交换信息,每次发送自己的路由表
协议RIP工作原理
RIP“距离”的定义
路由器到直接连接的网络的距离 = 1
路由器到非直接连接的网络的距离 = 所经过的路由器数 + 1
RIP 协议中的“距离”也称为“跳数”(hop count),每经过一个路由器,跳数就加 1

好路由 = “距离短”的路由
最佳路由 = “距离最短”的路由(如上图,最佳路由为A-B-E)
一条路径最多只能包含 15 个路由器
“距离”的最大值为 16 时即相当于不可达
RIP 不能在两个网络之间同时使用多条路由,只选择距离最短的路由
RIP 协议的三个特点
仅和相邻路由器交换信息
交换的信息是当前本路由器所知道的全部信息,即自己的路由表
按固定时间间隔交换路由信息,例如,每隔 30 秒。当网络拓扑发生变化时,路由器也及时向相邻路由器通告拓扑变化后的路由信息
路由表的建立
路由器在刚刚开始工作时,路由表是空的
然后,得到直接连接的网络的距离(此距离定义为 1)
之后,每一个路由器也只和数目非常有限的相邻路由器交换并更新路由信息
经过若干次更新后,所有的路由器最终都会知道到达本自治系统中任何一个网络的最短距离和下一跳路由器的地址
RIP 协议的收敛 (convergence) 过程较快。“收敛”就是在自治系统中所有的结点都得到正确的路由选择信息的过程
路由表主要信息
目的网络、距离(最短)、下一跳地址

路由表更新规则
使用距离向量算法找出到达每个目的网络的最短距离
距离向量算法
对每个相邻路由器(假设其地址为 X)发送过来的 RIP 报文,路由器:
修改此 RIP 报文中的所有项目:把“下一跳”字段中的地址都改为 X,并把所有的“距离”字段的值加 1。每一个项目都有三个关键数据:到目的网络N,距离是d,下一跳路由器是X
对修改后的RIP报文中每一个项目,进行以下步骤:
1 | if(原来的路由表中没有目的网络N) |
总结一下:
先把发来的路由表全部距离+1,并且下一跳地址改为发来的路由器,即X
若发来的路由表中包含自己路由表没有的目的网络,则直接添加到自己的路由表中
若发来的路由表中含有自己路由表已有的目的网络,并且自己路由表中到这个目的网络的下一跳地址也是X,则直接更新自己的路由表(因为这是最新的消息,要以最新的消息为准,到,目的网络的距离可能增大,可能减小,也可能不变)
若下一跳地址不是X,则比较距离,更新表项为最小的距离对应的项目(若距离相同,则不更新)
若三分钟还没有收到相邻路由器的更新路由表,则把此相邻路由器记为不可达的路由器,即把距离设置为16
返回
例子:

RIP2报文
现在较新的RIP版本是RIP2
RIP2 支持无分类域间路由选择 CIDR,提供简单的鉴别,支持多播
RIP2报文格式:

组成:首部和路由 2 个部分
路由部分:由若干个路由信息组成。每个路由信息共 20 个字节
地址族标识符(又称为地址类别)字段用来标志所使用的地址协议
路由标记填入自治系统的号码
后面为具体路由,指出某个网络地址、该网络的子网掩码、下一跳路由器地址以及到此网络的距离
首部4字节,路由部分最多20*25个字节
即RIP报文最大长度为4+20*25=504字节,如果超过,则必须再用一个RIP报文传送
RIP2 具有简单的鉴别功能
坏消息传得慢

正常情况:
R1到网 1 的距离是 1,是直接交付
R2到网 1 的距离是2,经过R1交付
当网1出现故障:

R1更新路由表,把到网1的距离设置为16,即不可到达
但R2的路由表还是到网1经过R1,距离2
R2会将这个路由表用RIP发给路由器R1,R1更新自己的路由表,循环到16

坏消息传的慢是RIP的一个主要缺点
RIP协议优缺点
优点:
实现简单,开销较小
缺点:
网络规模有限。最大距离为 15(16 表示不可达)
交换的路由信息为完整路由表,开销较大
坏消息传播得慢,收敛时间过长
内部网关协议OSPF
开放最短路径优先 OSPF (Open Shortest Path First)是为克服 RIP 的缺点在 1989 年开发出来的
原理很简单,但实现很复杂
使用了 Dijkstra 提出的最短路径算法 SPF
采用分布式的链路状态协议 (link state protocol)
现在使用 OSPFv2
OSPF工作原理
OSPF三个主要特点
采用洪泛法 (flooding),向本自治系统中所有路由器发送信息
发送的信息是与本路由器相邻的所有路由器的链路状态,但这只是路由器所知道的部分信息
链路状态:说明本路由器都和哪些路由器相邻,以及该链路的度量 (metric)
当链路状态发生变化或每隔一段时间(如30分钟),路由器才用洪泛法向所有路由器发送此信息
链路状态数据库 (link-state database)
每个路由器最终都能建立
全网的拓扑结构图
在全网范围内是一致的(这称为链路状态数据库的同步)
每个路由器使用链路状态数据库中的数据构造自己的路由表(例如,使用Dijkstra的最短路径路由算法)
链路状态数据库能较快地进行更新,使各个路由器能及时更新其路由表
重要优点:OSPF 更新过程收敛速度快
划分区域
OSPF 将自治系统划分为两种不同的区域 (area)

主干区域 (backbone area) 标识符= 0.0.0.0
作用:用来连通其他下层区域
分层次划分区域好处
使每一个区域内部交换路由信息的通信量大大减小,因而使 OSPF 协议能够用于规模很大的自治系统中
划分区域优缺点
优点:
减少了整个网络上的通信量
减少了需要维护的状态数量
缺点:
交换信息的种类增多了
使 OSPF 协议更加复杂了
OSPF其他特点
对于不同类型的业务可计算出不同的路由
可实现多路径间的负载均衡(load balancing)
所有在 OSPF 路由器之间交换的分组都具有鉴别的功能
支持可变长度的子网划分和无分类编址 CIDR
32 位的序号,序号越大状态就越新。全部序号空间在 600 年内不会产生重复号
OSPF五种分组类型
问候 (Hello) 分组
数据库描述 (Database Description) 分组
链路状态请求 (Link State Request) 分组
链路状态更新 (Link State Update) 分组
链路状态确认 (Link State Acknowledgment) 分组
OSPF分组用IP数据报传送

其 IP 数据报首部的协议字段值为 89
OSPF工作过程
1.确定邻站可达
相邻路由器每隔 10 秒钟要交换一次问候分组
若有 40 秒钟没有收到某个相邻路由器发来的问候分组,则可认为该相邻路由器是不可达的
2.同步链路状态数据库
同步:指不同路由器的链路状态数据库的内容是一样的
两个同步的路由器叫做完全邻接的 (fully adjacent) 路由器
不是完全邻接的路由器:它们虽然在物理上是相邻的,但其链路状态数据库并没有达到一致
3.更新链路状态
只要链路状态发生变化,路由器就使用链路状态更新分组,采用可靠的洪泛法向全网更新链路状态
为确保链路状态数据库与全网的状态保持一致,OSPF 还规定:每隔一段时间,如 30 分钟,要刷新一次数据库中的链路状态
OSPF 链路状态只涉及相邻路由器,与整个互联网的规模并无直接关系,因此当互联网规模很大时,OSPF 协议要比距离向量协议 RIP 好得多。OSPF 没有“坏消息传播得慢”的问题,收敛数度快

指定的路由器DR
多点接入的局域网采用了指定的路由器 DR (designated router) 的方法,使广播的信息量大大减少
指定的路由器代表该局域网上所有的链路向连接到该网络上的各路由器发送状态信息
外部网关协议BGP
主要特点
用于自治系统 AS 之间的路由选择
只能是力求选择出一条能够到达目的网络且比较好的路由(不能兜圈子),而并非要计算出一条最佳路由
互联网的规模太大,使得自治系统AS之间路由选择非常困难
自治系统AS之间的路由选择必须考虑有关策略
采用了路径向量 (path vector) 路由选择协议
路由器构成
路由器工作在网络层,用于互连网络
是互联网中的关键设备
路由器的主要工作:转发分组
把从某个输入端口收到的分组,按照分组要去的目的地(即目的网络),把该分组从路由器的某个合适的输出端口转发给下一跳路由器
网络层后面自学
IP多播
虚拟专用网VPN和网络地址转换NAT
多协议标签交换MPLS
软件定义网络SDN简介
传输层
运输层协议概述
进程间的通信

网络层作用:为主机之间的通信提供服务
运输层作用:为应用层进程之间的通信提供服务,提供应用进程间的逻辑通信
运输层向高层用户屏蔽了下面网络核心的细节(如网络拓扑、所采用的路由选择协议等),使应用进程看见的就是好像在两个运输层实体之间有一条端到端的逻辑通信信道
面向连接协议:全双工可靠信道,如TCP
无连接协议:不可靠信道,如UDP
运输层两个主要协议
互联网的正式标准
用户数据报协议 UDP (User Datagram Protocol)
传输控制协议 TCP (Transmission Control Protocol)
运输协议数据单元
两个对等运输实体在通信时传送的数据单位叫作运输协议数据单元 TPDU (Transport Protocol Data Unit)
TCP 传送的数据单位协议是 TCP 报文段 (segment)
UDP 传送的数据单位协议是 UDP 报文或用户数据报
UDP与TCP的区别
UDP
传送数据之前不需要先建立连接
收到 UDP 报后,不需要给出任何确认
不提供可靠交付,但是一种最有效的工作方式
TCP
提供可靠的、面向连接的运输服务(面向连接三个阶段:建立、维持、释放)
不提供广播或多播服务
开销较多

运输层端口
运输层的分用和复用
复用
在发送方不同的应用进程都可以使用同一个运输层协议传送数据(加上适当的首部)
应用进程都可以通过运输层再传送到 IP 层(网络层)
分用
接收方的运输层在剥去报文的首部后能够把这些数据正确交付目的应用进程
运输层从 IP 层收到发送给应用进程的数据后,必须分别交付给指明的各应用进程
需要考虑的问题
进程的创建和撤销都是动态的,因此发送方几乎无法识别其他机器上的进程
我们往往需要利用目的主机提供的功能来识别终点,而不需要知道具体实现这个功能的进程是哪一个
有时我们会改换接收报文的进程,但并不需要通知所有的发送方
端口号
解决方法:在运输层使用协议端口号 (protocol port number),或通常简称为端口 (port),把端口设为通信的抽象终点
软件端口和硬件端口
软件端口
协议栈层间的抽象的协议端口
是应用层的各种协议进程与运输实体进行层间交互的地点
不同系统实现端口的方法可以不同
硬件端口
不同硬件设备进行交互的接口
TCP/IP 运输层端口的标志
端口用一个 16 位端口号进行标志,允许有 65,535 个不同的端口号
端口号只具有本地意义,只是为了标志本计算机应用层中的各进程
在互联网中,不同计算机的相同端口号没有联系

两大类、三种类型的端口
服务器端使用的端口号(熟知端口号或系统端口号):0-1023
登记端口号:1024-49151
客户端使用的端口号(短暂端口号):49152-65535

常用的熟知端口
(串讲强调)

FTP: 21
TELNET: 23
SMTP: 25
HTTP: 80
DNS: 53
用户数据报协议 UDP
UDP概述
UDP 只在 IP 的数据报服务之上增加了一些功能:
复用和分用
差错检测
UDP主要特点
UDP 通信的特点:简单方便,但不可靠
无连接。发送数据之前不需要建立连接
使用尽最大努力交付。即不保证可靠交付
面向报文。UDP 一次传送和交付一个完整的报文
没有拥塞控制。网络出现的拥塞不会使源主机的发送速率降低。很适合多媒体通信的要求
支持一对一、一对多、多对一、多对多等交互通信
首部开销小,只有 8 个字节
UDP面向报文

发送方:UDP 对应用层交下来的报文,既不合并,也不拆分,按照样发送
接收方:UDP 对 IP 层交上来的 UDP 用户数据报,去除首部后就原封不动地交付上层的应用进程,一次交付一个完整的报文
故应用程序必须选择合适大小的报文
若报文太长,IP 层在传送时可能要进行分片,降低 IP 层的效率
若报文太短,会使 IP 数据报的首部的相对长度太大,降低 IP 层的效率
UDP 通信和端口号的关系

复用:将 UDP 用户数据报组装成不同的 IP 数据报,发送到互联网
分用:根据 UDP 用户数据报首部中的目的端口号,将数据报分别传送到相应的端口,以便应用进程到端口读取数据
UDP首部格式

首部字段:8 个字节,4 个字段,每个字段为 2 个字节
源端口:源端口号。在需要对方回信时选用。不需要时可用全0
目的端口:目的端口号。终点交付报文时必须使用
长度:UDP 用户数据报的长度,其最小值是 8(仅有首部)
检验和:检测 UDP 用户数据报在传输中是否有错。有错就丢弃
UDP基于端口的分用

接收方 UDP 根据首部中的目的端口号,把报文通过相应的端口上交给应用进程
如果接收方 UDP 发现收到的报文中的目的端口号不正确(即不存在对应于该端口号的应用进程),就丢弃该报文,并由 ICMP 发送“端口不可达”差错报文给发送方
计算UDP检验和
在计算检验和时,临时把 12 字节的“伪首部”和 UDP 用户数据报连接在一起
伪首部仅仅是为了计算检验和

计算方法与IP数据报首部检验类似
但UDP检验和是把首部和数据部分一起检验,而IP只检验首部
UDP伪首部第三个字段全0

传输控制协议 TCP 概述
TCP最主要的特点
TCP 是面向连接的运输层协议,在无连接的、不可靠的 IP 网络服务基础之上提供可靠交付的服务。为此,在 IP 的数据报服务基础之上,增加了保证可靠性的一系列措施
TCP 是面向连接的运输层协议
每一条 TCP 连接只能有两个端点 (endpoint),每一条 TCP 连接只能是点对点的(一对一)
TCP 提供可靠交付的服务
TCP 提供全双工通信
面向字节流
TCP 中的“流”(stream) 指的是流入或流出进程的字节序列
面向字节流:虽然应用程序和 TCP 的交互是一次一个数据块,但 TCP 把应用程序交下来的数据看成仅仅是一连串无结构的字节流
TCP面向流的概念
TCP 不保证接收方应用程序所收到的数据块和发送方应用程序所发出的数据块具有对应大小的关系
但接收方应用程序收到的字节流必须和发送方应用程序发出的字节流完全一样

TCP 不关心应用进程一次把多长的报文发送到 TCP 缓存
TCP 根据对方给出的窗口值和当前网络拥塞程度来决定一个报文段应包含多少个字节,形成 TCP 报文段
TCP的连接
TCP 把连接作为最基本的抽象
TCP 连接的端点:套接字 (socket) 或插口
每一条 TCP 连接有两个端点
套接字(socket)
套接字 socket = (IP地址 : 端口号)
例如(192.169.1.20 : 2028)
每一条 TCP 连接唯一地被通信两端的两个端点(即两个套接字)所确定
TCP 连接 ::= {socket1, socket2} = {(IP1: port1),(IP2: port2)}
TCP连接
TCP 连接就是由协议软件所提供的一种抽象
TCP 连接的端点是抽象的套接字,即(IP 地址:端口号)
同一个 IP 地址可以有多个不同的 TCP 连接
同一个端口号也可以出现在多个不同的 TCP 连接中
可靠传输的工作原理
理想传输条件的特点
传输信道不产生差错
不管发送方以多快的速度发送数据,接收方总是来得及处理收到的数据
在理想传输条件下,不需要采取任何措施就能够实现可靠传输
但实际网络都不具备理想传输条件。必须使用一些可靠传输协议,在不可靠的传输信道实现可靠传输
停止等待协议
每发送完一个分组就停止发送,等待对方的确认。在收到确认后再发送下一个分组
全双工通信的双方既是发送方也是接收方
假设仅考虑 A 发送数据,而 B 接收数据并发送确认。因此 A 叫做发送方,而 B 叫做接收方
无差错情况

出现差错情况
两种情况:
B 接收 M1 时检测出了差错,就丢弃 M1,其他什么也不做(不通知 A 收到有差错的分组)
M1 在传输过程中丢失了,这时 B 当然什么都不知道,也什么都不做
在这两种情况下,B 都不会发送任何信息
问题:A 如何知道 B 是否正确收到了 M1 呢?
解决方法:超时重传
A 为每一个已发送的分组设置一个超时计时器
A 只要在超时计时器到期之前收到了相应的确认,就撤销该超时计时器,继续发送下一个分组 M2
若 A 在超时计时器规定时间内没有收到 B 的确认,就认为分组错误或丢失,就重发该分组

确认丢失和确认迟到
确认丢失
若 B 所发送的对 M1 的确认丢失了,那么 A 在设定的超时重传时间内将不会收到确认,因此 A 在超时计时器到期后重传 M1
假定 B 正确收到了 A 重传的分组 M1。这时 B 应采取两个行动:
丢弃这个重复的分组 M1,不向上层交付
向 A 发送确认
确认迟到
B 对分组 M1 的确认迟到了,因此 A 在超时计时器到期后重传 M1
B 会收到重复的 M1,丢弃重复的 M1,并重传确认分组
A 会收到重复的确认。对重复的确认的处理:丢弃

信道利用率

假设A发送分组的时间是\(T_D\), B发送确认分组需要时间\(T_A\)
\(RTT\)即往返时间
信道利用率: \[ \begin{align*} U=\frac{T_D}{T_D+RTT+T_A} \end{align*} \]
当往返时间 RTT 远大于分组发送时间 TD 时,信道的利用率会非常低
停止等待协议优缺点
优点:简单
缺点:信道利用率太低
停止等待协议要点
停止等待。发送方每次只发送一个分组。在收到确认后再发送下一个分组
暂存:在发送完一个分组后,发送方必须暂存已发送的分组的副本,以备重发
编号。对发送的每个分组和确认都进行编号
超时重传。发送方为发送的每个分组设置一个超时计时器。若超时计时器超时位收到确认,发送方会自动超时重传分组
超时计时器的重传时间应当比数据在分组传输的平均往返时间更长一些,防止不必要的重传
简单,但信道利用率太低
流水线传输
提高传输效率:流水线传输

流水线传输:在收到确认之前,发送方连续发出多个分组
由于信道上一直有数据不间断地传送,流水线传输可获得很高的信道利用率
连续 ARQ 协议和滑动窗口协议采用流水线传输方式
连续ARQ协议
发送窗口:发送方维持一个发送窗口,位于发送窗口内的分组都可被连续发送出去,而不需要等待对方的确认
发送窗口滑动:发送方每收到一个确认,就把发送窗口向前滑动一个分组的位置
累积确认:接收方对按序到达的最后一个分组发送确认,表示:到这个分组为止的所有分组都已正确收到了


累积确认
优点:容易实现,即使确认丢失也不必重传
缺点:不能向发送方反映出接收方已经正确收到的所有分组的信息
连续 ARQ 协议采用 Go-back-N(回退N)
Go-back-N(回退N):表示需要再退回来重传已发送过的 N 个分组
当通信线路质量不好时,连续 ARQ 协议会带来负面的影响
TCP 报文段的首部格式
TCP 虽然是面向字节流的,但 TCP 传送的数据单元却是报文段
一个 TCP 报文段分为首部和数据两部分,而 TCP 的全部功能都体现在它首部中各字段的作用
TCP 报文段首部的前 20 个字节是固定的,后面有 4n 字节是根据需要而增加的选项 (n 是整数)
因此 TCP 首部的最小长度是 20 字节

源端口和目的端口字段:各占2字节。端口是运输层与应用层的服务接口,运输层的复用和分用功能都要通过端口才能实现
序号字段:占4字节。TCP连接中传送的数据流中的每一个字节都编上一个序号。首部序号字段的值则指的是本报文段所发送的数据的第一个字节的序号,例如:

确认号字段:占4字节,是期望收到对方的下一个报文段的数据的第一个字节的序号
数据偏移(即首部长度):占4位,它指出TCP报文段的数据起始处距离TCP报文段的起始处有多远,这个字段实际上是指出TCP报文段的首部长度。“数据偏移”的单位是32位字(以4字节为计算单位)
保留字段:占6位,保留为今后使用,但目前应置为0
紧急URG:当URG=1时,表明紧急指针字段有效。它告诉系统此报文段中有紧急数据,应尽快传送(相当于高优先级的数据)
确认ACK:只有当ACK=1时确认号字段才有效。当ACK=0 时,确认号无效
推送PSH(PuSH):接收TCP收到PSH=1的报文段,就尽快地交付接收应用进程,而不再等到整个缓存都填满了后再向上交付
复位RST(ReSeT):当RST=1时,表明TCP连接中出现严重差错(如由于主机崩溃或其他原因),必须释放连接,然后再重新建立运输连接
同步SYN:同步SYN=1表示这是一个连接请求或连接接受报文
终止FIN(FINis):用来释放一个连接。FIN=1表明此报文段的发送端的数据已发送完毕,并要求释放运输连接
窗口字段:占2字节,用来让对方设置发送窗口的依据,单位为字节
检验和:占2字节。检验和字段检验的范围包括首部和数据这两部分。在计算检验和时,要在TCP报文段的前面加上12字节的伪首部
紧急指针字段:占 16 位,指出在本报文段中紧急数据共有多少个字节(紧急数据放在本报文段数据的最前面)
选项字段:长度可变。TCP最初只规定了一种选项,即最大报文段长度MSS。MSS告诉对方TCP:“我的缓存所能接收的报文段的数据字段的最大长度是MSS个字节。”
(MSS (Maximum Segment Size)是 TCP 报文段中的数据字段的最大长度,数据字段加上 TCP 首部才等于整个的 TCP 报文段)
其他选项:
窗口扩大选项:占3字节,其中有一个字节表示移位值S。新的窗口值等于TCP首部中的窗口位数增大到(16+S),相当于把窗口值向左移动S位后获得实际的窗口大小
时间戳选项:占10字节,其中最主要的字段时间戳值字段(4字节)和时间戳回送回答字段(4字节)
选择确认选项:在后面的5.6.3 节介绍
填充字段:这是为了使整个首部长度是4字节的整数倍
TCP 可靠传输的实现
以字节为单位的滑动窗口
TCP 使用流水线传输和滑动窗口协议实现高效、可靠的传输
TCP 的滑动窗口是以字节为单位的
发送方 A 和接收方 B 分别维持一个发送窗口和一个接收窗口
发送窗口:在没有收到确认的情况下,发送方可以连续把窗口内的数据全部发送出去。凡是已经发送过的数据,在未收到确认之前都必须暂时保留,以便在超时重传时使用
接收窗口:只允许接收落入窗口内的数据
发送窗口
A 根据 B 给出的窗口值,构造出自己的发送窗口
发送窗口里面的序号表示允许发送的序号
窗口越大,发送方就可以在收到对方确认之前连续发送更多的数据,因而可能获得更高的传输效率

假定 A 发送了序号为 31 ~ 41 共 11 个字节的数据:

P1 = 后沿,P2 = 当前,P3 = 前沿
P3 – P1 = A 的发送窗口(又称为通知窗口)
P2 – P1 = 已发送但尚未收到确认的字节数
P3 – P2 = 允许发送但尚未发送的字节数(又称为可用窗口)
接收窗口

B 收到了序号为 32 和 33 的数据,但未收到序号为 31 的数据。因此,因此发送的确认报文段中的确认号是 31(即期望收到的序号)
窗口的滑动

A收到以后再给B

此时B收到31,32,33,接收窗口前移,发送窗口还没移动

A收到确认号为34时,这个是累积确认,于是发送窗口前移至34,并给B发送序号34
如果发送窗口的可用窗口=0,即已发送但未确认的字节占满了整个发送窗口,则原因可能有:
1.B未发送确认
2.B已发送,但是未到达A
为保证可靠传输,A 只能认为 B 还没有收到这些数据
A 经过一段时间后(由超时计时器控制)就重传这部分数据,重新设置超时计时器,直到收到 B 的确认为止
如果 A 按序收到落在发送窗口内的确认号, 就使发送窗口向前滑动,并发送新的数据
发送缓存与发送窗口
发送方的应用进程把字节流写入 TCP 发送缓存

暂时存放:
发送应用程序传送给发送方 TCP 准备发送的数据
TCP 已发送出但尚未收到确认的数据
发送方应用程序不能发送太快,否则发送缓存会溢出
缓存中的字节数 = 发送应用程序最后写入缓存的字节 - 最后被确认的字节
接收缓存与接收窗口
接收方的应用进程从 TCP 接收缓存中读取尚未被读取的字节

暂时存放:
按序到达的、但尚未被接收应用程序读取的数据
未按序到达的数据
若不能及时读取,缓存最终会被填满,使接收窗口减小到零
如果能够及时读取,接收窗口就可以增大,但最大不能超过接收缓存的大小
三点注意
第一,发送窗口是根据接收窗口设置的,但在同一时刻,发送窗口并不总是和接收窗口一样大(因为有一定的时间滞后)
第二,TCP 标准没有规定对不按序到达的数据应如何处理。通常是先临时存放在接收窗口中,等到字节流中所缺少的字节收到后,再按序交付上层的应用进程
第三,TCP 要求接收方必须有累积确认的功能,以减小传输开销。接收方可以在合适的时候发送确认,也可以在自己有数据要发送时把确认信息顺便捎带上。但接收方不应过分推迟发送确认,否则会导致发送方不必要的重传,捎带确认实际上并不经常发生
超时重传时间的选择
TCP 发送方在规定的时间内没有收到确认就要重传已发送的报文段
但重传时间的选择是 TCP 最复杂的问题之一
互联网环境复杂,IP 数据报所选择的路由变化很大,导致运输层的往返时间 (RTT) 的变化也很大
TCP 超时重传时间设置
不能太短,否则会引起很多报文段的不必要的重传,使网络负荷增大
不能过长,会使网络的空闲时间增大,降低了传输效率
TCP 采用了一种自适应算法,它记录一个报文段发出的时间,以及收到相应确认的时间
这两个时间之差就是报文段的往返时间 RTT
加权平均往返时间 \(RTT_S\)
加权平均往返时间 \(RTT_S\) 又称为平滑的往返时间 \[ \begin{align*} 新的RTT_S=(1-\alpha)\times(旧的RTT_S)+\alpha\times(新的RTT_S样本) \end{align*} \] 其中,0≤α<1
若α→0,表示RTT值更新较慢
若α→1,表示RTT值更新较快
RFC 6298推荐的α值为1/8,即0.125
超时重传时间RTO
Karn算法
选择确认SACK
TCP 的流量控制
利用滑动窗口实现流量控制
流量控制 (flow control) :让发送方的发送速率不要太快,使接收方来得及接收
利用滑动窗口机制可以很方便地在 TCP 连接上实现对发送方的流量控制
TCP窗口单位是字节,不是报文段

rwnd为0时就不再接收了
如果此时B又有了一些空间,给A发送rwnd=100,但是传送过程中丢失了
A一直在等B的非零窗口通知,B一直等A的数据,就死锁了
解决方法如下
持续计时器
持续计时器 (persistence timer):只要 TCP 连接的一方收到对方的零窗口通知,就启动该持续计时器
若持续计时器设置的时间到期,就发送一个零窗口探测报文段(仅携带 1 字节的数据),对方在确认这个探测报文段时给出当前窗口值
若窗口仍然是零,收到这个报文段的一方就重新设置持续计时器
若窗口不是零,则死锁的僵局就可以打破了
TCP的传输效率
控制TCP发送报文段的时机:三种机制
TCP 维持一个变量,它等于最大报文段长度 MSS。只要缓存中存放的数据达到 MSS 字节时,就组装成一个 TCP 报文段发送出去
由发送方的应用进程指明要求发送报文段,即 TCP 支持的推送 (push) 操作
发送方的一个计时器期限到了,这时就把当前已有的缓存数据装入报文段(但长度不能超过 MSS)发送出去
TCP 的拥塞控制
拥塞控制的一般原理
在某段时间,若对网络中某资源的需求超过了该资源所能提供的可用部分,网络的性能就要明显变坏,整个网络的吞吐量将随输入负荷的增大而下降。这种现象称为拥塞 (congestion)
最坏结果:系统崩溃
拥塞产生原因
由许多因素引起。例如:
节点缓存容量太小
链路容量不足
处理机处理速率太慢
拥塞本身会进一步加剧拥塞
出现网络拥塞的条件: \[ \begin{align*} \sum对资源需求 > 可用资源 \end{align*} \]
增加资源不能解决拥塞
增加资源不能解决拥塞,而且还可能使网络的性能更坏
例如:
增大缓存,但未提高输出链路的容量和处理机的速度,排队等待时间将会大大增加,引起大量超时重传,解决不了网络拥塞
提高处理机处理的速率会将瓶颈转移到其他地方
拥塞引起的重传并不会缓解网络的拥塞,反而会加剧网络的拥塞
拥塞控制与流量控制区别
拥塞控制
防止过多的数据注入到网络中,避免网络中的路由器或链路过载
是一个全局性的过程,涉及到所有的主机、路由器,以及与降低网络传输性能有关的所有因素
流量控制
抑制发送端发送数据的速率,以使接收端来得及接收
点对点通信量的控制,是个端到端的问题
拥塞控制起到的作用

拥塞控制的一般原理
拥塞控制的前提:网络能够承受现有的网络负荷
实践证明,拥塞控制是很难设计的,因为它是一个动态问题
分组的丢失是网络发生拥塞的征兆,而不是原因
在许多情况下,甚至正是拥塞控制本身成为引起网络性能恶化、甚至发生死锁的原因
开环控制和闭环控制
开环控制
在设计网络时,事先考虑周全,力求工作时不发生拥塞
思路:力争避免发生拥塞
但一旦整个系统运行起来,就不再中途进行改正了
闭环控制
基于反馈环路的概念
根据网络当前运行状态采取相应控制措施
思路:在发生拥塞后,采取措施进行控制,消除拥塞
闭环控制措施
监测\(\rightarrow\)传送\(\rightarrow\)调整
监测
监测网络系统,检测拥塞在何时、何处发生
主要指标有:
由于缺少缓存空间而被丢弃的分组的百分数
平均队列长度
超时重传的分组数
平均分组时延
分组时延的标准差,等等
这些指标的上升都标志着拥塞的增长
传送
将拥塞发生的信息传送到可采取行动的地方
将拥塞发生的信息传送到产生分组的源站
在路由器转发的分组中保留一个比特或字段,用该比特或字段的值表示网络没有拥塞或产生了拥塞
周期性地发出探测分组等
调整
调整网络系统的运行以解决出现的问题
过于频繁,会使系统产生不稳定的振荡
过于迟缓,不具有任何实用价值
选择正确的时间常数是相当困难的
TCP拥塞控制方法
TCP 采用基于滑动窗口的方法进行拥塞控制,属于闭环控制方法
TCP 发送方维持一个拥塞窗口 cwnd (Congestion Window)
拥塞窗口的大小取决于网络的拥塞程度,并且是动态变化的
发送端利用拥塞窗口根据网络的拥塞情况调整发送的数据量
发送窗口大小不仅取决于接收方窗口,还取决于网络的拥塞状况
真正的发送窗口值: \[ \begin{align*} 真正的发送窗口值 = Min (接收方通知的窗口值,拥塞窗口值) \end{align*} \] 即发送端的发送窗口不能超过拥塞窗口cwnd和接收端窗口rwnd中的最小值
控制拥塞窗口变化的原则
只要网络没有出现拥塞,拥塞窗口就可以再增大一些,以便把更多的分组发送出去,提高网络的利用率
但只要网络出现拥塞或有可能出现拥塞,就必须把拥塞窗口减小一些,以减少注入到网络中的分组数,缓解网络出现的拥塞
发送方判断拥塞的方法:隐式反馈
因传输出差错而丢弃分组的概率很小(远小于1 %)
因此,发送方在超时重传计时器启动时,就判断网络出现了拥塞
四种拥塞控制算法
慢开始 (slow-start)
目的:探测网络的负载能力或拥塞程度
算法:由小到大逐渐增大注入到网络中的数据字节,即:由小到大逐渐增大拥塞窗口数值
2 个控制变量
拥塞窗口cwnd
初始值:2 种设置方法
1 至 2 个最大报文段 MSS (旧标准)
2 至 4 个最大报文段 MSS(RFC 5681)
慢开始门限 ssthresh
防止拥塞窗口增长过大引起网络拥塞
慢开始方法
发送方每收到一个对新报文段的确认(重传的不算在内)就使 cwnd 加 1

每经过一个传输轮次,拥塞窗口就加倍
窗口大小按指数增加,并不慢
传输轮次
一个传输轮次所经历的时间其实就是往返时间RTT
传输轮次强调:把拥塞窗口 cwnd 所允许发送的报文段都连续发送出去,并收到了对已发送的最后一个字节的确认
例如:拥塞窗口 cwnd = 4,这时的往返时间 RTT 就是发送方连续发送 4 个报文段,并收到这 4 个报文段的确认,总共经历的时间
慢开始门限ssthresh
防止拥塞窗口 cwnd 增长过大引起网络拥塞
用法:
当 cwnd < ssthresh 时,使用慢开始算法
当 cwnd > ssthresh 时,停止使用慢开始算法,改用拥塞避免算法
当 cwnd = ssthresh 时,既可使用慢开始算法,也可使用拥塞避免算法
拥塞避免 (congestion avoidance)
目的:让拥塞窗口 cwnd 缓慢地增大,避免出现拥塞
拥塞窗口 cwnd 增大:每经过一个往返时间 RTT(不管在此期间收到了多少确认),发送方的拥塞窗口 cwnd = cwnd + 1
具有加法增大 AI (Additive Increase) 特点:使拥塞窗口 cwnd 按线性规律缓慢增长
注意:
拥塞避免并非完全避免拥塞,而是让拥塞窗口增长得缓慢些,使网络不容易出现拥塞
拥塞避免方法
每经过一个往返时间 RTT,发送方就把拥塞窗口 cwnd 加 1

当网络出现拥塞时
无论在慢开始阶段还是在拥塞避免阶段,只要发送方判断网络出现拥塞(重传定时器超时):
1.ssthresh = max (cwnd/2,2)
2.cwnd = 1
3.执行慢开始算法
目的:迅速减少主机发送到网络中的分组数,使得发生拥塞的路由器有足够时间把队列中积压的分组处理完毕
慢开始和拥塞避免算法的实现举例

当TCP连接进行初始化时,将拥塞窗口置为1。图中的窗口单位不使用字节而使用报文段
慢开始门限的初始值设置为16个报文段,即ssthresh=16
发送端的发送窗口不能超过拥塞窗口cwnd和接收端窗口rwnd中的最小值
我们假定接收端窗口足够大,因此现在发送窗口的数值等于拥塞窗口的数值
在执行慢开始算法时,拥塞窗口cwnd的初始值为1,发送第一个报文段M0
发送端每收到一个确认,就把cwnd加1,于是发送端可以接着发送M1和M2两个报文段
接收端共发回两个确认。发送端每收到一个对新报文段的确认,就把发送端的cwnd加1。现在cwnd从2增大到4,并可接着发送后面的4个报文段
指数增长到慢开始门限:16,然后采用拥塞避免算法,即每个RTT后cwnd自增
假定拥塞窗口的数值增长到24时,网络出现超时,表明网络拥塞了(只要超时,就设置ssthresh = max (cwnd/2,2),cwnd设置1)
更新后的ssthresh值变为12(即发送窗口数值24的一半),拥塞窗口再重新设置为1,并执行慢开始算法
快重传 (fast retransmit)
目的:让发送方尽早知道发生了个别报文段的丢失
发送方只要连续收到三个重复的确认,就立即进行重传(即“快重传”),这样就不会出现超时
使用快重传可以使整个网络的吞吐量提高约 20%
快重传算法要求接收方立即发送确认,即使收到了失序的报文段,也要立即发出对已收到的报文段的重复确认(应该是没有累积确认)
注意:
快重传并非取消重传计时器,而是在某些情况下可以更早地(更快地)重传丢失的报文段
快重传举例

快恢复 (fast recovery)
当发送端收到连续三个重复的确认时,不执行慢开始算法,而是执行快恢复算法 FR (Fast Recovery) 算法:
慢开始门限 ssthresh = 当前拥塞窗口 cwnd / 2
乘法减小 MD (Multiplicative Decrease) 拥塞窗口,即新拥塞窗口 cwnd = 慢开始门限 ssthresh
即新拥塞窗口 cwnd = 当前拥塞窗口 cwnd / 2 = 慢开始门限 ssthresh
执行拥塞避免算法,使拥塞窗口缓慢地线性增大(加法增大 AI)
二者合在一起就是所谓的 AIMD 算法,使 TCP 性能有明显改进
例子:

当拥塞窗口 cwnd = 16 时,发送方连续收到 3 个对同一个报文段的重复确认(记为 3-ACK)。发送方改为执行快重传和快恢复算法
执行快重传和快恢复算法:发送方调整门限值 ssthresh = cwnd / 2 = 8,设置拥塞窗口 cwnd = ssthresh = 8,开始执行拥塞避免算法
TCP拥塞控制流程

发送窗口上限
发送窗口的上限值 = Min [rwnd, cwnd]
当 rwnd < cwnd 时,是接收方的接收能力限制发送窗口的最大值
当 cwnd < rwnd 时,是网络拥塞限制发送窗口的最大值
主动队列管理AQM
自学
TCP 的运输连接管理
TCP的连接建立
TCP 是面向连接的协议
TCP 连接有三个阶段:
连接建立
数据传送
连接释放
TCP 的连接管理就是使 TCP 连接的建立和释放都能正常地进行
TCP 连接建立过程中要解决的三个问题
要使每一方能够确知对方的存在
要允许双方协商一些参数(如最大窗口值、是否使用窗口扩大选项和时间戳选项以及服务质量等)
能够对运输实体资源(如缓存大小、连接表中的项目等)进行分配
TCP 连接的建立采用客户服务器方式
主动发起连接建立的应用进程叫做客户 (client)
被动等待连接建立的应用进程叫做服务器 (server)
TCP 建立连接的过程叫做握手
采用三报文握手:在客户和服务器之间交换三个 TCP 报文段,以防止已失效的连接请求报文段突然又传送到了,因而产生 TCP 连接建立错误
三次握手
假设A为客户端,B为服务器端
B 的 TCP 服务器进程先创建传输控制块 TCB,准备接受客户进程的连接请求
第一次握手:A 的 TCP 向 B 主动发出连接请求报文段,其首部中的同步位 SYN = 1,并选择序号 seq = x,表明传送数据时的第一个数据字节的序号是 x
注意:TCP规定,SYN 报文段(即SYN = 1的报文段)不能携带数据,但要消耗掉一个序号
B 的 TCP 收到连接请求报文段后,如同意,则发回确认
第二次握手:B 在确认报文段中应使 SYN = 1,使 ACK = 1,其确认号 ack = x + 1,自己选择的序号 seq = y
这个报文段也不能携带数据,但同样要消耗掉一个序号
第三次握手:A 收到此报文段后向 B 给出确认,其 ACK = 1,确认号 ack = y + 1
A 的 TCP 通知上层应用进程,连接已经建立
TCP 标准规定:ACK 报文段可以携带数据
但如果不携带数据,则不消耗序号。下一个数据报文段的序号仍是 seq = x + 1
B 的 TCP 收到主机 A 的确认后,也通知其上层应用进程:TCP 连接已经建立。双方可以开始数据传送

TCP的连接释放
TCP 连接释放过程比较复杂
数据传输结束后,通信的双方都可释放连接
TCP 连接释放过程是四报文握手
四次挥手
假设A为客户端,B为服务器端
第一次挥手:A 的应用进程先向其 TCP 发出连接释放报文段,并停止再发送数据,主动关闭 TCP 连接
A 把连接释放报文段首部的 FIN = 1,其序号seq = u,等待 B 的确认
TCP规定:FIN 报文段即使不携带数据,也消耗掉一个序号
第二次挥手:B 发出确认,ACK=1,确认号 ack = u+1,这个报文段的序号 seq = v
TCP 服务器进程通知高层应用进程
从 A 到 B 这个方向的连接就释放了,TCP 连接处于半关闭 (half-close) 状态。B 若发送数据,A 仍要接收
第三次挥手:若 B 已经没有要向 A 发送的数据,其应用进程就通知 TCP 释放连接
FIN=1,ACK=1,确认号 ack = u+1
第四次挥手: A 收到连接释放报文段后,必须发出确认
ACK=1,确认号 ack=w+1,自己的序号 seq = u + 1
请注意:此时 TCP 连接还没有释放掉。必须经过时间等待计时器 (TIME-WAIT timer) 设置的时间 2MSL 后,A 才释放 TCP 连接

必须等待2MSL时间
第一,保证发送的最后一个 ACK 报文段能够到达 B
第二,防止“已失效的连接请求报文段”出现在本连接中
保活计时器
用来防止在 TCP 连接出现长时期空闲
通常设置为 2 小时
若服务器过了 2 小时还没有收到客户的信息,它就发送探测报文段
若发送了 10 个探测报文段(每一个相隔 75 秒)还没有响应,就假定客户出了故障,因而就终止该连接
TCP的有限状态机

应用层
精确定义不同主机中的多个应用进程之间的通信规则
DNS
使用UDP通信
域名采用层次树状结构的命名方法
任何一个连接在互联网上的主机或路由器,都有一个唯一的层次结构的名字,即域名
域名结构:层次结构。由标号 (label) 序列组成,各标号之间用点(.)隔开,各标号分别代表不同级别的域名


DNS 是一个联机分布式数据库系统,采用客户服务器方式
域名到 IP 地址的解析是由若干个域名服务器程序共同完成
域名服务器程序在专设的结点上运行,运行该程序的机器称为域名服务器
域名服务器类型
根据所起的作用,分为四种类型:
根域名服务器
顶级域名服务器
权限域名服务器
本地域名服务器
域名解析过程
递归查询
迭代查询
FTP
文件传送协议 FTP (File Transfer Protocol) 是互联网上使用得最广泛的文件传送协议
提供交互式的访问,允许客户指明文件的类型与格式,并允许文件具有存取权限
屏蔽了各计算机系统的细节,因而适合于在异构网络中任意计算机之间传送文件
是文件共享协议的一个大类
只提供文件传送的一些基本服务,它使用 TCP 可靠的运输服务
主要功能:减少或消除在不同操作系统下处理文件的不兼容性
使用客户服务器方式
一个 FTP 服务器进程可同时为多个客户进程提供服务
FTP 的服务器进程由两大部分组成:
一个主进程,负责接受新的请求,端口21
若干个从属进程,负责处理单个请求,端口20
WWW
以客户服务器方式工作
访问方法:链接
提供分布式服务
是超文本 (hypertext) 系统的扩充
超文本:由多个信息源链接成。是万维网的基础
超媒体与超文本的区别:文档内容不同
万维网必须解决的问题
- 怎样标志分布在整个互联网上的万维网文档?
使用统一资源定位符 URL (Uniform Resource Locator)
使每一个文档在整个互联网的范围内具有唯一的标识符 URL
- 用什么协议来实现万维网上的各种链接?
使用超文本传送协议 HTTP (HyperText Transfer Protocol)
HTTP 是一个应用层协议,使用 TCP 连接进行可靠的传送
超文本传输协议HTTP,协议本身无连接的,无状态的
- 怎样使不同作者创作的不同风格的万维网文档都能在互联网上的各种主机上显示出来,同时使用户清楚地知道在什么地方存在着链接?
使用超文本标记语言 HTML (HyperText Markup Language)
- 怎样使用户能够很方便地找到所需的信息?
使用各种的搜索工具(即搜索引擎)
URL格式

电子邮件
邮件发送和读取使用不同的协议
简单邮件发送协议 SMTP:用于在用户代理向邮件服务器 或 邮件服务器之间发送邮件
邮局协议 POP3:用于用户代理从邮件服务器读取邮件
邮件服务器必须能够同时充当客户和服务器
SMTP 和 POP3(或 IMAP)都使用 TCP 连接可靠地传送邮件


SMTP
POP
总结
串讲强调内容
概述
互联网组成(工作方式上分类):边缘部分,核心部分
边缘部分:主机
主机之间通信方式:对等方式,客户与服务器模式
交换方式:电路交换,分组交换,报文交换
核心部分:路由器
IP数据报转发交换方式:直接交换(与路由器直接连接的网络),间接交换(先交给下一个路由器,然后再交给下一个路由器)
计算机网络性能指标(计算题):带宽、时延、时延带宽积(信道容量,信道里bit的总数)
体系结构(五层体系结构,OSI/RM七层体系结构,TCP/IP四层体系结构 )
五层体系结构:物理层,数据链路层,网络层,运输层,应用层
OSI七层体系结构:物理层,数据链路层,网络层,运输层,会话层,表示层,应用层(把五层体系结构的应用层分为会话层,表示层,应用层)
TCP/IP四层体系结构:网络接口层,网际层,运输层,应用层(把五层体系结构的物理层和数据链路层合成网络接口层)
沙漏计时器形状的TCP/IP协议族
协议三要素:语法,语义,同步
应用层协议
运输层两个协议:TCP(三次握手,四次挥手), UDP
SYN=1:请求连接建立或接受连接请求报文
控制字段6个控制位
面向连接三个阶段:连接建立阶段、连接维持阶段(传输数据阶段)、连接释放阶段
网络层:路由,网络互连
与IP协议配合使用的协议:ARP(地址解析协议),ICMP(报文只能作为IP数据报的数据部分,不能单独传输),IGMP
物理层
物理接口四个特性:机械特性,电气特性,功能特性,过程特性
通信基本模型:源系统、传输系统、目的系统
常用编码方式:不归零,归零,曼彻斯特,差分曼彻斯特
以太网里的编码主要是曼彻斯特编码
物理层下面的传输媒体:导引型,非导引型
有线:双绞线(568-A, 568-B),光纤,同轴电缆
信道复用技术(为了提高信道利用率):频分,时分,波分,码分
信道极限传输速率和两个定理:奈氏准则和香农定理
常用宽带接入技术:ADSL(非对称用户数据线,对电话线改造)、有线电视网改造(光纤同步混合网)、FTTx
数据链路层
数据链路层以帧为单位
链路:从一个节点到相邻节点的一段物理线路(有线或无线),中间没有任何其他交换节点
数据链路:把实现控制数据传输协议的硬件和软件加到链路上,构成了数据链路
信道两类:点对点,广播信道
数据链路层解决三个基本问题:封装成帧,透明传输,差错检测
透明传输两种:字符填充,0比特填充
0比特填充(0比特插入或删除):发送端对数据帧的数据部分扫描,发现5个连续1就在后面加0,接收端先确定完整数据帧(通过标志字段),扫描数据部分,5个连续1,后面0删掉,如果是5个连续1,后面还是1,就是标志字段
差错检测:CRC循环冗余码(只有数据链路层加尾部)
两个主要协议:PPP(帧的格式,首部4个字段5个字节,尾部2个字段3个字节,数据部分最大长度1500字节,看清问题),CSMA/CD(工作原理:先听后发,边听边发,冲突停止,延迟重发)
CSMA/CD:发送数据首先通过网卡,首先封装成帧,放进缓存里,等待发送;对信道进行监听,直到信道空闲;发送过程继续监听看是否冲突;如果冲突是在\(2\tau\)时间内就失败,不然就成功;出现冲突时发送人为干扰信号加强冲突,等随机时间(二进制指数退避算法)重传
局域网底两层:LLC(逻辑电路控制子层),MAC(介质访问控制子层)
MAC地址48位二进制数
MAC帧格式:首部(3个字段14个字节),尾部(1个字段4个字节),数据部分(最小长度46字节,最大长度1500字节),即有效MAC帧长度最小46+18=64字节,最大1500+18=1518字节
CSMA/CD协议发送MAC帧
收到MAC帧首先检查帧的长度,如果小于64字节就直接丢弃,然后看目的MAC地址,如果与本机相同就接受,如果不同就丢弃
扩展以太网:
物理层扩展(集线器,是冲突域也是广播域,多个集线器连起来就将多个较小冲突域变成较大冲突域)
数据链路层扩展(以太网交换机(多端口网桥),作用是扩大以太网,对数据帧有转发和过滤作用)
交换机与集线器差异很大,交换机任意两个端口都可以构成逻辑电路,而且是无碰撞传输,交换机每个端口都有缓存
以太网交换机对数据转发,通过转发表,转发表的构造通过自学习算法(端口收到数据帧,首先取出原地址,看看转发表有没有原地址对应的端口,如果没有就写进去,再取出目的端口地址,在转发表中找,如果有,转到相应端口去;如果没有,除了进入的端口以外,广播到所有的端口上去;最后构成完整转发表)
生成树:防止环路兜圈子,只保留一条链路
实验做了端口聚合,将多个物理端口聚合为一个逻辑端口,具有负载均衡
虚拟局域网,不是特殊局域网,是局域网的应用,对工作组重新划分,主要针对交换机(用交换机端口来划分)
实习做过单交换机、跨交换机(交换机必须连通)
高速以太网,3个物理层的规范:100BASE-TX(铜缆,最大100m), 100BASE-T4(铜缆,最大100m), 100BASE-FX(光纤,最大2000m)
千兆以太网,4种
网络层
网络层提供的两种服务:虚电路服务,数据报服务
虚拟互联网
IP协议屏蔽了各种异构网络之间的差异
标准分类的IP地址,使用的只有ABC类,D类是广播地址
标准分类IP地址:网络号,主机号
1-127:A类
128-191:B类
192-223:C类
特殊IP地址:
网络号 | 主机号 | 代表的意思 |
---|---|---|
0 | 0 | 在本网络上的本主机 |
0 | host-id | 在本网络上的某台主机 |
全1 | 全1 | 只在本网络上广播 |
net-id | 全1 | 对net-id上所有主机广播 |
127 | 非全0或全1的任何数 | 用于本地软件环回测试 |
广播地址就是主机号全为1
无分类编址技术CIDR:构造超网
地址块:网络前缀相同的所有连续IP地址
划分子网(大的网络化为小的网络,从主机号里从左向右依次取若干位做子网号),构成超网(将多个小的C类网络合并成逻辑的B类网络,从网络号从右往左取若干位)
将一个网络划分成6个子网:从主机号开始从左向右划分3位
网络号不能全取0,主机号也不能取全0
划分子网:把两级地址结构化为三级:网络号,子网号,主机号
子网掩码:网络号,子网号位取1,主机号位取0
网络层转发分组的过程:基于终点(根据网络号)的转发,最长前缀匹配
ARP协议(将IP地址映射成MAC地址)
ICMP协议,两类报文:ICMP差错报告报文,ICMP询问报文
差错报告报文:终点不可达,时间超过,参数问题,改变路由(重定向)
询问报文:回送回答(ping应用,检查可达性),时间戳回答
互联网路由选择协议:IGP(内部网关协议,自治系统内部),EGP(外部网关协议,自治系统之间)
内部网关协议:RIP, OSPF
路由协议解决三个问题:和谁交换信息,交换谁的信息,怎么交换
RIP:只与相邻路由器交换,交换整个路由表,每间隔一段时间交换
OSPF:洪泛法,广播方式,交换部分信息(链路状态),链路状态变化时或每隔一段时间才交换
外部网关协议BGP:基于路径向量(主要考内部网关协议)
运输层
端口号:熟知端口号,系统端口号,短暂端口号
常用的熟知端口号:FTP(21), TELNET(23), SMTP(25), HTTP(80), DNS(53)
两个协议:UDP,TCP
UDP无连接,不可靠,尽最大努力交付
UDP报文格式:首部(4个字段,8个字节),数据部分
首部校验和计算时,要加12个字节的伪首部,不使用CRC,搞清楚计算过程
目的端口号要是熟知端口号,就是从客户端发往服务器端
源端口号要是熟知端口号,就是从服务器发往客户端
TCP协议,面向连接,可靠协议
可靠传输工作原理:停止等待协议
TCP实现可靠传输:滑动窗口
TCP面向字节流,可能合并也可能拆分,一个TCP报文段的数据可能是一个应用进程的数据,也可能是多个应用进程的数据,有也可能是一个应用进程数据的一部分,受发送窗口制约
发送窗口受接收窗口制约,拥塞控制以后,发送窗口值取通知窗口与拥塞窗口的最小值
四种拥塞控制算法:慢开始(慢开始门限,并不慢,一个传输轮次就加倍,只是开始比较少,开始为1),拥塞避免(每一个传输轮次后+1,出现拥塞时,修改慢开始门限变量,为拥塞时拥塞窗口值的一半,再慢开始,拥塞窗口设为1),快重传(让发送方尽早知道丢失),快恢复(3个重复,慢开始门限设为当前拥塞窗口的一半,将拥塞窗口设为慢开始门限变量,并执行拥塞避免算法)
流量控制:滑动窗口
三次握手,四次挥手
累积确认,选择确认
应用层
DNS
域名解析过程:通过域名服务器
域名服务器分为四类:根域名服务器,顶级域名服务器,权限域名服务器,本地域名服务器
域名解析过程分为两种:递归,迭代
文件传输两个熟知端口号:21(建立控制连接,是主进程的端口号),20(建立数据连接,是从属进程的端口号)
WWW
HTTP
电子邮件SMTP, POP
各种协议
协议三要素:语法,语义,同步
对等层之间传输的数据单位为“协议数据单元”
点对点协议PPP
不可靠协议,只检错,不纠错
PPP协议帧格式

首部:4个字段,5个字节
数据部分:最多不超过1500字节
尾部:2个字段,3个字节
PPP协议最长:5+1500+3=1508字节
透明传输:字节填充和零比特填充
PPP协议工作状态:
链路控制协议 LCP,网络控制协议 NCP

CSMA/CD协议
CSMA/CD传输的MAC帧
MAC帧格式

首部3个字段14个字节
数据部分46-1500个字节
尾部1个字段4个字节
有效MAC帧长度:64-1518个字节
CSMA/CD工作流程:

碰撞后的重传时机由“二进制指数退避算法”决定
基本退避时间:\(2\tau\)
重传时机举例:

生成树协议
用于以太网交换机之间,防止形成环路
网际协议IP
IP数据报格式

首部:固定部分20字节
数据部分:长度人为规定
转发IP分组的过程:基于终点(根据网络号)的转发,最长前缀匹配
举例:

主机 H1 发送出的、目的地址是 128.1.2.132 的分组是如何转发的?
1.H1 首先检查 128.1.2.132 是否连接在本网络上,如果是,则直接交付;否则,就送交路由器 R1

2.路由器 R1 收到分组后查找转发表,先检查第 1 行
255.255.255.192 AND 128.1.2.132 = 128.1.2.128 /26,不匹配

3.再检查第2行
255.255.255.128 AND 128.1.2.132 = 128.1.2.128 /25,匹配
进行分组的直接交付(通过路由器 R1 的接口 1)
要是有两个匹配结果,就用网络前缀长的,因为路由更具体(最长前缀匹配)
地址解析协议ARP
ARP作用:从 IP 地址解析出 MAC 地址
ARP工作:

例如主机A查找主机B的MAC地址:
若两台主机在同一个局域网:
主机A在本局域网上广播发送ARP请求分组,然后主机B单播给主机A对应的MAC地址
若两台主机不在同一个局域网:
A先广播ARP,找路由器
路由器单播A,告知路由器的MAC地址
路由器在另一个网络广播ARP找B
B单播路由器,给出对应MAC地址
使用ARP的四种情况:
发送方是主机,要把 IP 数据报发送到本网络上的另一个主机。这时用 ARP 找到目的主机的硬件地址
发送方是主机,要把 IP 数据报发送到另一个网络上的一个主机。这时用 ARP 找到本网络上的一个路由器的硬件地址。剩下的工作由这个路由器来完成
发送方是路由器,要把 IP 数据报转发到本网络上的一个主机。这时用 ARP 找到目的主机的硬件地址
发送方是路由器,要把 IP 数据报转发到另一个网络上的一个主机。这时用 ARP 找到本网络上另一个路由器的硬件地址。剩下的工作由这个路由器来完成
网际控制报文协议ICMP
两种ICMP协议报文:差错报告报文、询问报文
差错报告报文有:时间不可达(3),时间超过(11),参数问题(12),重定向(5)
询问报文有:回送请求或回答(8或0),时间戳请求或回答(13或14)
应用:PING
内部网关协议RIP
三个特点:只与相邻路由器交换信息,交换整张路由表,每间隔一段时间交换
距离向量算法:
对每个相邻路由器(假设其地址为 X)发送过来的 RIP 报文,路由器:
修改此 RIP 报文中的所有项目:把“下一跳”字段中的地址都改为 X,并把所有的“距离”字段的值加 1。每一个项目都有三个关键数据:到目的网络N,距离是d,下一跳路由器是X
对修改后的RIP报文中每一个项目,进行以下步骤:
先把发来的路由表全部距离+1,并且下一跳地址改为发来的路由器,即X
若发来的路由表中包含自己路由表没有的目的网络,则直接添加到自己的路由表中
若发来的路由表中含有自己路由表已有的目的网络,并且自己路由表中到这个目的网络的下一跳地址也是X,则直接更新自己的路由表(因为这是最新的消息,要以最新的消息为准,到,目的网络的距离可能增大,可能减小,也可能不变)
若下一跳地址不是X,则比较距离,更新表项为最小的距离对应的项目(若距离相同,则不更新)
若三分钟还没有收到相邻路由器的更新路由表,则把此相邻路由器记为不可达的路由器,即把距离设置为16
返回
例子:

坏消息传的慢
内部网关协议OSPF
三个特点:洪泛法,交换部分信息(链路状态),链路改变或间隔一段时间发送消息
TCP协议
UDP协议
英文简写
Internet:互联网
ISP (Internet Service Provider):互联网服务提供者
IXP (Internet eXchange Point):互联网交换点
WWW(World Wide Web):万维网
RFC(Request For Comments):请求评论
C/S(Client / Server):客户/服务器方式
P2P(Peer to Peer):对等方式
WAN (Wide Area Network):广域网(远程网)
MAN (Metropolitan Area Network):城域网
LAN (Local Area Network) :局域网
PAN (Personal Area Network) :个人区域网
AN (Access Network):接入网
RTT (Round-Trip Time):往返时间
SNA (System Network Architecture) :系统网络体系结构
ISO (International Organization for Standardization):国际标准化组织
OSI/RM (Open Systems Interconnection Reference Model):开放系统互连参考模型
TCP(Transmission Control Protocol):传输控制协议
UDP(User Datagram Protocol):用户数据报协议
IP (Internet Protocol) :网际协议
PDU (Protocol Data Unit):协议数据单元
SAP (Service Access Point):服务访问点
SDU (Service Data Unit):服务数据单元
UTP (Unshielded Twisted Pair):非屏蔽双绞线
STP (Shielded Twisted Pair):屏蔽双绞线
FDM (Frequency Division Multiplexing):频分复用
TDM (Time Division Multiplexing):时分复用
FDMA (Frequency Division Multiple Access):频分多址接入
TDMA (Time Division Multiple Access):时分多址接入
WDM (Wavelength Division Multiplexing) :波分复用
CDM (Code Division Multiplexing) :码分复用
CDMA (Code Division Multiple Access):码分多址
SONET (Synchronous Optical Network) :同步光纤网
SDH (Synchronous Digital Hierarchy) :同步数字系列
ADSL (Asymmetric Digital Subscriber Line):非对称数字用户线
DMT(Discrete Multi-Tone):离散多音调
DSLAM(DSL Access Multiplexer):数字用户线接入复用器
HFC (Hybrid Fiber Coax) :光纤同轴混合网
FTTx (Fiber To The…):多种宽带光纤接入方式
ODN (Optical Distribution Network):光配线网
PON (Passive Optical Network):无源光网络
MTU (Maximum Transfer Unit):最大传送单元
SOH (Start Of Header) :控制字符,帧开始符
EOT (End Of Transmission) :控制字符,帧结束符
BER (Bit Error Rate):误码率
CRC (Cyclic Redundancy Check):循环冗余检验
FCS (Frame Check Sequence):帧检验序列
PPP (Point-to-Point Protocol):点对点协议
LCP (Link Control Protocol): 链路控制协议
NCP (Network Control Protocol): 网络控制协议
LLC (Logical Link Control): 逻辑链路控制
MAC (Medium Access Control): 媒体接入控制
CSMA/CD (Carrier Sense Multiple Access with Collision Detection) :载波监听多点接入 / 碰撞检测
OUI (Organizationally Unique Identifier):组织唯一标识符
CAM (Content addressable Memory):内容可寻址存储器
STP (Spanning Tree Protocol) :生成树协议
VLAN (Virtual LAN):虚拟局域网
VC (Virtual Circuit):虚电路
SDN (Software Defined Network):软件定义网络
ARP (Address Resolution Protocol):地址解析协议
ICMP (Internet Control Message Protocol):网际控制报文协议
IGMP (Internet Group Management Protocol):网际组管理协议
ICANN (Internet Corporation for Assigned Names and Numbers):互联网名字和数字分配机构
CIDR (Classless Inter-Domain Routing) :无分类域间路由选择
TTL (Time To Live): 生存时间
PING (Packet InterNet Groper):分组网间探测
AS (Autonomous System) : 自治系统
IGP (Interior Gateway Protocol):内部网关协议
EGP (External Gateway Protocol):外部网关协议
RIP (Routing Information Protocol):路由信息协议
OSPF (Open Shortest Path First):开放最短路径优先
ABR (area border router):区域边界路由器
BR (backbone router):主干路由器
ASBR (AS border router):自治系统边界路由器
DR (designated router) :指定的路由器
UDP (User Datagram Protocol):用户数据报协议
TCP (Transmission Control Protocol):传输控制协议
TPDU (Transport Protocol Data Unit):运输协议数据单元
ARQ(Automatic Repeat reQuest):连续自动重传请求协议
MSS(Maximum Segment Size): 最大报文段长度
RTO (Retransmission Time-Out) :超时重传机制
rwnd (receiver window):接收窗口
cwnd (Congestion Window):拥塞窗口
ssthresh:慢开始门限
AI (Additive Increase) :加法增大
FR (Fast Retransmission) :快重传
FR (Fast Recovery):快恢复
DNS (Domain Name System):域名系统
FTP (File Transfer Protocol) :文件传输协议
URL (Uniform Resource Locator) :统一资源定位符
HTTP (HyperText Transfer Protocol):超文本传送协议
HTML (HyperText Markup Language) :超文本标记语言
参考资料
课程PPT