计算机网络 授课教师:刘轶 E-mail: yi.liu@buaa.edu.cn
考核方式
- 平时成绩:10%
- 期末考试:90%
- 考试时间在 6 月上旬
课本
- 《计算机网络》(第 8 版)谢系仁
参考书
- Computer Networks
第一章 概述
Host: 主机,在网络中的设备 AP: 进程
1.1 计算机网络的定义与分类
一、计算机网络的定义
- 计算机网络 (Computer Network) 是一些互相连接的、自治的计算机的集合。
- 网络的功能
- 连通性
- 资源共享
- 计算机网络与分布式系统 (distributed system)
- 分布式系统建立在网络之上
- 计算机网络没有统一性
二、计算机网络的分类
- 按作用范围(或覆盖范围)分类
- 广域网 WAN (Wide Area Network)
- 作用范围几十到几千公里
- 局域网 LAN (Local Area Network)
- 局限在一个建筑物或一个单位内
- 城域网 MAN (Metropolitan Area Network)
- 作用范围通常为一座城市
- 采用局域网技术建立
- 个人区域网 PAN (Personal Area Network)
- 在个人区域内实现各种设备互联的网络,如蓝牙
- 广域网 WAN (Wide Area Network)
- 按网络的使用者进行分类
- 公用网 (public network)
- 专用网 (private network)
1.2 计算机网络与 Internet 发展概述
一、计算机网络发展的三个阶段
- 主机-终端时代 (20 世纪 50-60 年代)
- 计算机以大型主机的形式存在
- 终端通过专用线路或通信网络链接到主机上,实现多用户远程共享主机计算资源
- 主机互联时代 (20 世纪 60-70 年代)
- 分布在各地的大型主机通过通信网络实现互连
- 1969 年,ARPANET 建立
- 网络时代 (20 世纪 70 年代之后)
二、Internet 发展概述
- 第一阶段:ARPANET $\rightarrow$ 网际互联发展
- 军事产物
- 第二阶段:建成三级结构的 Internet
- 网络分为主干网、地区网和校园网(或企业网)
- 第三阶段:形成多层次 ISP 结构的 Internet
- 商业化极大推动 Internet 发展
- IP 地址、域名管理等均交由专门企业运营
- 商业化极大推动了 Internet 的发展
Internet 特指现在的互联网(又称因特网),internet 指多个网络互联形成的网络。
1.3 计算机网络的性能
一、性能指标
- 速率
- 传送数据的速率,即数据速率 (data rate) 或比特率 (bit rate)
- 单位:b/s,也写为 bps (bit per second), kb/s, Mb/s, Gb/s, …
- 带宽 (bandwidth)
- 指通信线路传送数据的能力,即最高数据率
- 单位:Hz, kHz
- 吞吐量 (throughput)
- 单位时间内通过网络的数据量
- 常用作实际网络的测量指标
- 时延 (delay, latency)
- 网络从一端传到另一端的时间,又称为延迟
- 组成:
- 发送时延 = 数据块长度(b) / 发送速率 (b/s)
- 传播时延 = 信道长度(m) / 电磁波在信道上的传播速率 (m/s)
- 处理时延
- 排队时延
- 时延带宽积 = 传播时延 $\times$ 带宽
- 又称为以比特位单位的链路长度
- 往返时间 (RTT, Round Trip Time)
- 又称为环路时延、回路时延
- 从发送方发出数据到收到接收方应答所经历的时间。$\not ={2\times delay}$
- 利用率
- 包括信道利用率和网络利用率
- 信道利用率指出某信道有百分之几是被利用的(有数据通过)
- 网络利用率是全网的信道利用率的加权平均值
二、非性能指标
- 费用
- 质量
- 标准化
- 可靠性
- 可扩展性和可升级性
- 易于管理和维护
1.4 计算机网络体系结构
一、网络体系结构概述
- 计算机网络体系结构 (architecture) 是计算机网络的各层及其协议的集合。
- OSI 体系结构
- 分层原因:分层可以讲复杂问题简单化、局部化
二、具有七层和五层协议的体系结构
- OSI 体系结构(从上到下)
- 应用层 (application layer)
- 表示层 (presentation layer)
- 会话层 (session layer)
- 传输层 (transport layer)
- 网络层 (network layer)
- 数据链路层 (data link layer)
- 物理层 (physical layer)
- TCP / IP 体系结构(从上到下)
- 应用层(包含应用层、表示层和会话层)
- 传输层
- 网际层
- 网络接口层
- 五层体系结构(从上到下, 现实世界中没有相关标准,但方便讲解)
- 应用层(包含应用层、表示层和会话层)
- 传输层
- 网际层
- 数据链路层
- 物理层
- 协议数据单元 (PDU, Protocol Data Unit):对等层次之间传送的数据单位
三、实体、协议、服务和服务访问点
- 若干概念
- 实体 (entity):任何可发送或接受信息的硬件或软件进程
- 协议 (protocol):控制两个对等实体进行通信的规则的集合
- 在协议的控制下,两个对等实体间的通信使得本层能够向上一层提供服务 (service);要实现本层协议,还需要使用下层所提供的服务
- 统一系统相邻两层的实体进行交互的地方,成为服务访问点 SAP (Service Access Point)
- 协议对上层的服务用户是透明的,服务只能看到下层提供的服务
- 协议的设计还需要考虑异常情况
四、TCP / IP
1.5 网络标准化
一、概述
- 标准化对于计算机网络至关重要
- 标准的分类
- 法定标准:由权威机构制定的、正式的、合法的标准
- 事实标准
三、标注化组织
- ITU-T
- ISO
- 国际标准化组织
- IEEE
- IETF
第二章 物理层
2.1 物理层的基本概念
- 物理层的主要任务 在传输介质上传输比特流
- 物理层涉及的四个特性
- 机械特性
- 接口所用接线器的形状和尺寸、引线数目和排列、固定和锁定装置等等
- 电气特性
- 在接口电缆的各条线上出现的电压的范围
- 功能特性
- 某条线上出现的某一电平的电压表示何种意义
- 过程特性
- 不同功能的各种可能事件的出现顺序
- 机械特性
2.2 数据通信的基础知识
一、数据通信系统的模型
调制解调器
数据通信系统包含
- 信源
- 发送器
- 传输系统
- 接收器
- ……
二、若干术语和概念
- 信道一般表示向某一方向传送信息的介质
- 通信的目的是为了传送消息(message)
- 消息的实体是数据(data)
- 信号(signal)是数据的电气或电磁的表示,分为模拟信号和数字信号两大类
- 在使用时间域的波形表示数字信号时,代表不同离散数值的基本波形称为码元
- 码元速率:单位时间内通过信道的码元个数,单位为波特(baud)
- 数据速率:单位时间内通过信道的信息量(比特数),单位 b/s 或 bps
- 注意:码元速率和数据速率是两个不同的概念,对于同一信道,仅当使用二进制编码时两者相等
- 希望一个码元尽可能携带多个比特,以提高信道的数据速率
- 通信双方的交互方式
- 单向通信(单工通信,simplex)
- 只有一个方向可以发送信息
- 双向交替通信(半双工通信,half-duplex)√
- 双方都能发送信息,但不能同时发送信息
- 双向同时通信(双工通信,duplex)
- 双方可以同时发送和接受信息
- 单向通信(单工通信,simplex)
- 基带 (baseband) 信号和带通 (band pass) 信号
- 基带信号,即基本频带信号:来自信源的信号,计算机输出的代表各种文字或图像文件的数据信号都属于基带信号。
- 基带信号是来自信源的信号,常常包含较多的低频成分,且可能为直流
- 必须对基带信号进行调制
- 带通信号是基带信号经过调制后的信号
- 最基本的二元制调制方法
- 调幅 (AM):载波的振幅随基带数字信号而变化
- 调频 (FM):载波的频率随基带数字信号而变化
- 调相 (PM):载波的初始相位随基带数字信号而变化
- 为了获得更高的传输速率,常采用多元制混合的调制方法,如振幅和相位相结合的正交振幅调制(QAM, Quadrature Amplitude Modulation)
三、信道的极限容量
- 信号的失真问题
- 码元的传输速率越高,或信号传输的距离越远,再信号输出端的波形失真就越严重
- 信号能够通过的频率范围
- 奈奎斯特定理 (Nyquist)
- 理想低通信道最大数据传输率 = $2H\log_2 V$ (bps)
- H:信道带宽
- V:信号电平的级数(信号的状态数)
- 在任何信道中,码元传输的速率是有上限的
- 理想低通信道最大数据传输率 = $2H\log_2 V$ (bps)
- 信道的频带越宽,能够通过的信号高频分量越多,就可以用更高的速率传送码元而不出现码间串扰
- 奈奎斯特定理 (Nyquist)
- 信噪比
- 信号的平均功率与噪声的平均功率之比,常记为:S/N。以分贝 (dB) 为计量单位
- 信噪比 = $10\log_{10}(S/N)$
- 信噪比(dB,分贝) = $10 \log_10(S/N)$
- 香农公式
- 信道的极限信息传输速率 C(有噪声)
- $C = W\log_2(1+S/N)$ b/s
- W:信道带宽(单位:Hz)
- S:信道内所传信号的平均功率
- N:信道内部的高频噪声功率
- 信噪比越大,信息极限传输速率越高
2.3 物理层下面的传输介质
介质 media
- 传输介质,又称为传输媒体或传输媒介,指数据传输系统中发送器与接收器之间的物理通路
- 分类
- 导引型传输介质
- 非导引型传输介质
一、导引型传输介质
- 双绞线:通过两根绝缘线绞合,减少相互干扰
- 分类
- 屏蔽双绞线 STP(Shielded Twisted Pair)(外面带有铜网)
- 无屏蔽双绞线 UTP(Unshielded Twisted Pair)(外面无铜网)
- 价格便宜,便于安装使用,传输距离较短
- 局域网布线系统常使用 8 芯非屏蔽双绞线
- 分类
- 同轴电缆(coaxial cable)
- 内导体铜质芯线外包裹网状编织的屏蔽层
- 抗干扰能力和传输速率均高于双绞线,但造价较高,大规模安装使用不变
- 光纤 (fiber optics)
- 由非常透明的石英玻璃拉成的细丝,由纤芯包层构成双层通信圆柱体
- 分类
- 多模 (multi-mode) 光纤:多条不同入射角度的光纤在一条光纤中传输,距离短,成本低
- 单模 (single-mode) 光纤:光纤直径 = 光波波长,光纤成为波导,此时光纤沿直线传播,不会反射,适用于长距离传输
- 优点
- 通信容量大
- 传输损耗小、距离长
- 抗干扰能力强
- 保密性好
- 体积小、重量轻
- 缺点
- 安装较为复杂(光纤连接需专门设备),价格较高
- 广泛用于长途干线传输、局域网 / 城域网的干线、高带宽且高可靠的网络连接
二、非导引型传输介质
- 非导引型传输介质指可传播无线电波的自由空间
- 无线电波适用于
- 偏远地区通信
- 城市中布线较为困难的场合
- 移动设备
- 主要分类
- 短波通信
- 通过电离层反射,传输距离长,通信质量较差,传输速率低
- 微波通信和卫星通信
- 频率高于 100MHz 的电磁波几乎按直线传播,可使用抛物面天线将能量聚集成束,从而获得较高的信噪比
- 分为地面微波通信和卫星通信
- 地面微波通信
- 长距离传输时,每隔一定距离需建立中继站,进行接力转发
- 优点
- 信道频段范围宽,容量大
- 在无线通信中抗干扰能力较强
- 与线缆通信相比,建设速度快,成本低
- 缺点
- 相邻站需直视,易受地理或建筑物影响
- 有时受气候影响
- 隐秘性和保密性较差
- 中继站维护需要消耗人力物力
- 短波通信
- 关于无线频谱政策
- 多数无线频段由政府管理和分配,需获得许可才能使用
- 预留了无需许可即可免费使用的频段,即 ISM 频段
- ISM – Industrial, Science, Medical
- 限制:发射功率 < 1Watt
- 极大的促进了短距离无线通信的应用
- 使用 ISM 频段的设备:WLAN、Bluetooth、无线鼠标、无绳电话、……
- 卫星通信
- 通过位形进行微波信号转发
- 优点
- 通信距离原,覆盖范围广
- 通信容量较大
- 缺点
- 传播时延较大
- 除地球同步卫星外,低轨道卫星在数据通信领域发展较快
- 卫星造假和发射成本低
- 传输距离短,信号衰减小,可与地面手持设备通信
- 时延较小
- 其他通信手段:红外通信、激光通信
- 易受天气和可见光影响,通常用于近距离或室内通信
2.4 信道复用技术
一、频分复用与时分复用
- 复用 (multiplexing) 就是在一个信道上传输多路信号
- 最基本的复用方法
- 频分多路复用(FDM, Frequency Division Multiplexing)
- 不同用户占用不同的频带资源
- 时分多路复用(TDM, Time Division Multiplexing)
- 分时间片 (Time Slot)
- 将时间划分成一段等长的时隙,每个用户使用不同的时隙
- 便于数字传输
- 频分多路复用(FDM, Frequency Division Multiplexing)
二、波分复用 (WDM, Wavelength Division Multiplexing)
- 实际上是光的频分复用
- 专门用于光纤通信,由于光纤中光载波频率很高,人们习惯于使用波长来表示光载波
光调制器 -> 复用器 -> 分用器 -> 光解调器
复用器与分用器的本质是棱镜 密集波分复用 (DWDM, Dense WDM)
三、码分复用(CDM, Code Division Multiplexing)
- 码分多址:CDMA, Code Division Multiplexing Access
- 用于无线通信
- 基本原理
- 每个比特时间划分为 $m$ 个短间隔,称为码片 (chip)(==比特时间是发送 1 比特所需要的时间==)
- 每个站点分配一个唯一的 $m$ bit 码片序列,各站的码片必须相互正交 (orthogonal)
- 正交:两个向量规格化内积为 0
- 向量规格化内积:向量内积除以向量长度
- 使用扩频通信 (Spread spectrum) 方法,每 bit 转换为 $m$ bit 码片
- 发送的信号有很强的干扰能力,其频谱类似于白噪声
2.5 数字传输系统
一、脉码调制系统 (PCM, Pulse Code Modulation)
- 用于电话交换系统,在数字传输系统中进行多路话音的变换与传输
- 话音由模拟 $\rightarrow$ 数字的变换;对模拟话音按周期采样和 A/D 变换
- 采样频率 8000 次/s,采样数据用 8 bit 表示
- 话音数据速率:64kb/s
- 数字化的话音数据进行时分多路复用
- 欧洲体制
- 北美体制
二、同步光纤网 SONET 和同步数字系列 SDH
- 用于高速干线传输,特别是光纤传输
2.6 宽带接入技术
接入:access 通常指远程用户(计算机)访问网络的技术 接入服务器 access server 宽带没有严格的定义,宽带接入泛指超越传统的 modem + 电话线拨号上网(最高 56kbps)的技术
一、xDSL 技术 (Digital Subscribe Line)
- “最后一英里” (last mile)
- 通常指通信运营商局端到家庭用户之间的本地回路
- 对此线路进行数字化改造代价高昂,普遍采用模拟传输方式
- “最后一英里”是宽带接入技术需要面对的核心问题之一
- xDSL 通过改造现有的模拟电话用户线的传输方式,使其能够承载宽带业务
- 分类
- ASDL (Asymmetric)
- HDSL (High speed DSL)
- SDSL (Single-line DSL)
- VDSL (Very high speed DSL)
- ADSL 的特点
- 依然使用电话线
- 下载(下行)带宽大,上传(上行)带宽小,适应普通用户上网特点
- 离散多音调 DMT(Discrete Multi-Tone) 调制技术
- 采用频分复用
- 每个字信道占据 4kHz 带宽
- 用户线彼此差异很大
二、HFC (Hybrid Fiber Coax) 光纤混合同轴网
- Hybrid Fiber Coax 光纤混合同轴网
- 以有线电视网 CATV 为基础的宽带接入技术
- 主要特点
- 主干线路采用光纤
- 采用结点体系结构
- 具有比 CATV 网更宽的频谱,有双向传输的功能
- 每个家庭要安装一个用户接线盒 UIB(User Interface Box)
三、基于光纤的宽带接入 FTTx
- 基于光纤传输的宽带接入技术
- FTTH (Fiber To The Home) 光纤到户(终极解决方案)
- FTTB (Fiber To The Building) 光纤到大楼
- FTTC (Fiber To The Curb) 光纤到路边
- 目前用于光纤到户的技术:无源光网络 PON (Passive Optical Network)
- 光纤配线网无需供电,运营维护成本低,上下行使用波分复用
- EPON (Ethernet Passive Optical Network)
- GPON (Gigabit-capable Passive Optical Network)
第三章 数据链路层
3.1 数据链路层的设计要点
一、数据链路层概述
- 物理层实现了比特流的传输,数据链路层在其基础上实现帧(frame)的传输
- 数据链路层传输的协议数据单元 (PDU) 是帧
- 数据链路层信道类型
- 点对点信道
- 使用一对一的点对点通信方式
- 广播信道
- 使用一对多的广播通信方式
- 广播信道上连接多个主机,必须采用专门的共享信道协议来协调数据发送
- 点对点信道
- 数据链路层涉及的问题
- 成帧 (framing):怎样组成、怎样识别帧
- 差错控制:帧在传输过程中出错的检测
- 流量控制及可靠传输:仅是数据链路层的选项
- 广播信道中的介质访问控制
二、成帧方法
- 成帧需要考虑的问题:接收方如何考虑帧的边界?
- 常用成帧方法(其中两种填充首位定界法在现实中有使用)
- 字符计数法
- 在帧头部字段中指明本帧的字节数,接收方通过该字段得知该接受多少字节
- 字符填充的首尾定界法
- 定义专门的字符作为帧的起始和结束标值,并使用字符填充方式将标志字符与数据分开
- 比特填充的首位定界法
- 定义专门的比特作为帧的起始和结束标值,并使用比特填充方式将标志字符与数据分开
- 物理编码违例法
- 使用无效的物理编码作为帧的开始 / 结束标值,供接收方识别(如既非 0 也非 1 的物理编码)
- 字符计数法
3.2 错误检测和纠正
一、检错编码 (Error detecting code)
- 任何通信链路在传输数据时都可能出错
- 一段用误码率 BER(Bit Error Rate) 表示链路的可靠性
- $误码率 = \frac{出错的比特数}{传输的总比特数}$
- 处理方法
- 使用可检测并纠正错误的编码:纠错码
- 使用可检测错误的编码 + 重传:检错码
- 常用的检错编码方法
- 奇偶校验 (增加校验位使得数据中有奇数 / 偶数个 1,可以用硬件检测)
- 简单累加和(软件检测,忽略溢出)
- 循环冗余校验 CRC(Cyclic Redundancy Check)(用硬件电路实现)
- 发送方把数据划分为组,每组 k 个比特,在后面填上 n 为冗余码(n 个 0)
- 得到的 (k+n) 位的树处理事先商定的长度为 (n+1) 位的除数 P,得出的商是 Q,余数是 R(n 位,比 P 少一位)
- 将余数 R 拼接在原数据后,得到 (k+n) 位数
- 通常用生成多项式 $P(x)$ 表示除数 P
- 如:P = 1101 表示为:$P(x) = x^3+x^2+1$
- 在具体实现时,通常采用硬件电路生成 CRC 校验和 (checksum)
二、纠错编码 (Error correcting code)
- 检错码只能发现数据出现了错误,无法得知哪个比特出错
- 纠错编码通过增加冗余信息使得能够检测错误发生所在,以便于纠正,又称为前向纠错 (forward error correcting)
- 海明编码
通过检错码 / 纠错码可以做到帧的无差错接受,或者说“无比特差错” 但并不意味着可靠传输,因为还可能出现帧丢失、帧重复、帧失序
3.3 基本数据链路协议
一、无限制的单工协议
- 假设前提
- 单向传输
- 理想信道(无错误)
- 发送方总有数据传送
- 接收方总能即时处理所收到的数据
未考虑接收方的处理速度,设想:发送方发送 > 接收方处理速度
二、单工停-等协议 (Stop-and-wait)
- 按照上面的协议,若接收方处理速度不及发送方,则帧可能丢失
- 解决方法:增加流量控制 (flow control) 机制,得到单工停等协议
- 接收方每收到一帧,都向发送方返回一个应答帧
- 发送方每发送一帧,都等待来自接收方的应答帧,之后才发送下一帧
考虑了接收方的处理速度,但未考虑传输出错
三、有噪声信道的单工协议
- 在有噪声的信道中,帧在传输过程中可能出错
- 解决方法:ARQ (Automatic Repeat reQuest) 协议
- 校验和:接收方能检测帧是否出错
- 确认帧:发送方可以知道帧是否被正确接受
- 超时重发:发送方在规定时间内未收到确认帧,则重发帧
- 帧序号:保证接收方不会重复接受帧
- 协议设计需要考虑的三种情形
- 数据帧被正确接受
- 接收方返回确认帧,发送方收到后继续发送下一帧
- 数据帧出错或丢失
- 接收方未收到帧或校验出错丢弃该帧,发送方等待确认帧超时后,重发数据帧
- 确认帧出错或丢失
- 发送方未收到确认帧后重发,接收方检测到重复帧后不上传该帧,但重复发送确认帧。接收方收到后,检查序号重复,不上交该帧,只返回确认帧
- 数据帧被正确接受
3.4 滑动窗口协议
一、简介
问题:传输链路存在时延,而 ARQ 协议在同一时刻仅能有一个帧在链路上传输(数据帧或确认帧),其对信道的利用率较低。
信道利用率 U:
\[U = \frac{T_D}{T_D+RTT+T_A}\]- $T_D$:发送数据帧的时间
- $RTT$:往返时延 / 环路时延
- $T_A$:发送应答帧的时间
二、滑动窗口协议 (sliding window protocol)
- 滑动窗口协议的基本思想
- 允许发送方连续发送多个帧
- 允许滑动窗口实现流量控制
- 每个待发送的帧都有一个序列号
- 发送方维护一个发送窗口,它包含一组序列号 ,对应允许它发送的帧
- 接收方维护一个接收窗口
- 发送方
- 发送窗口内的序列号代表允许它发送的帧
- 接收方
- 接受窗口内的序列号代表它可以接收的帧
确定发送窗口与接受窗口宽度的方式
- 发送方
- 发送窗口内的序列号代表允许它发送的帧
- 窗口内最大的序列号成为窗口上边界,或窗口上沿、前沿
- 窗口内最小的序列号成为窗口下边界,或窗口下沿、后沿
- 每当从网络层得到一个数据包,将其组成帧发出后,发送窗口的上边界 + 1
- 发送窗口下边界的帧被接收方确认后,下边界 + 1
- 发送窗口内的序列号代表允许它发送的帧
- 接收方
- 接收窗口内的序列号代表它可以接收的帧
- 收到的帧学列好等于窗口下边界时,将该帧上交网络层,并返回确认帧时,同时整个窗口向前移动一个位置
- 如果收到的帧序列号落在接受窗口之外,则将其丢弃
- 注意:接收窗口总是保持固定大小
连续发送的多个帧中,某一个帧出错或丢失,但后续帧已被正确接收,如何处理?
- 方案一、【后退 N 帧】出错帧后的帧丢弃,从出错帧开始重新发送
- 方案二、【选择性重传】出错帧后的帧保留,只重发出错帧
二、后退 N 帧的滑动窗口协议(Go back N)
- 某帧出错时,该帧之后的帧全被丢弃,从出错帧开始重新发送
- 实际上此时的接收窗口宽度为 1
三、选择性重传的窗口滑动协议 (selected repeat)
- 当某帧出错时,只选择性重发该帧,该帧之后发送的帧由接收方数据链路层缓冲,收到重发的出错帧后上交给网络层
- 当接收方检测到出错帧时,发送一个否定的确认(NAK, Negative Acknowledgement)
- 带来的好处:发送方可以尽快重发出该帧,而不必等到超时
- 问:如果不是真出错而是丢失呢?如果是确认帧出错或丢失呢
- 该协议要求接收方能够临时性缓冲接收窗口内的帧
- ACKn 表示 n 及 n 以前的帧均已被正确接收
3.5 点对点协议 PPP
一、PPP 协议的特点
- PPP (Point-to-Point Protocol);一种数据链路层协议,广泛应用于点到点链路的数据传输
- 组成部分:
- 将 IP 数据报封装到串行链路的方法
- 链路控制协议 LCP (Link Control Protocol)
- 网络控制协议 NCP (Network Control Protocol)
二、PPP 的帧格式
- PPP 是面向字节的,所有 PPP 帧的长度都是整数字节
- 标志字段 F = 0x7E(二进制:01111110)
- 地址字段 A: 置为 0xFF,实际上不起作用
- 控制字段 C: 通常置为 0x03
- 协议字段:2 字节
- 0x0021: PPP 帧的信息字段的 IP 数据段
- 0xC021: 信息字段是 PPP 链路控制数据 (LCP)
- 0x8021: 信息字段是网络控制数据 (NCP)
- 校验字段 FCS:2 字节的 CRC 校验
- PPP 透明传输问题(帧边界识别)
- 同步传输:零比特填充
- 异步传输:字符填充
- ==字符填充==
- 替换信息字段的关键字
- 信息字段(载荷)中的每一个 0x7E -> 0x7D, 0x5E
- 信息字段中的每一个 0x7D -> 0x7D, 0x5D
- 信息字段中的每一个 ASCII 码控制字符(小于 0x20 的字符)前面加入 0x7D,且编码不变
- ==零比特填充==
- 发送端:只要发现有 5 个连续 1,则立刻填入一个 0
- 接收端:对帧中的比特流进行扫描,每当发现 5 个连续 1 时,就把这 5 个连续 1 后的一个 0 删除
三、PPP 协议的工作状态
3.6 介质访问控制
一、局域网的数据链路层
- 局域网的主要特点
- 网络为一个单位所拥有,且地理范围和站点数目均有限
- 局域网要解决的重要问题:介质访问技术(Media Access Control)
- 问题源由:局域网通常使用广播信道
- 静态划分信道
- 频分复用
- 时分复用
- 波分复用
- 码分复用
- 动态介质访问控制(多点访问)
- 随机访问:用户可随机发送信息,可能产生碰撞(冲突)
- 受控访问:如多点线路探询 (polling),或轮询
二、CSMA / CD 协议
- Carrier Sense Multiple Access with Collision Detection 载波监听多点访问/碰撞检测
- 核心概念
- 载波监听
- 结点在发送数据前先检测是否有其他结点在发送数据
- 碰撞检测
- 结点边发送数据边检测信道上是否发生碰撞
- 碰撞强化
- 发送方检测到碰撞后,立即停止发送
- 碰撞退避
- 载波监听
- 核心概念
三、CSMA / CD 协议
- 载波监听
- 节点在发送数据之前先检测一下总线上是否有其他节点正在发送数据,如有则暂时不要发送数据,以面发生碰撞【发送前先听】
- 碰撞检测
- 节点边发送数据边检测信道上是否发生了碰撞(监听总线上传输的信号)【边发送边听】
- 由于线路的传播时延,单纯靠载波监听并不能完全避免碰撞【碰撞仍有可能发生】
- 发生碰撞时,两个或更多的信号在总线上相互叠加,导致无法识别
- 碰撞强化
- 发送方检测到碰撞后,立刻停止发送,并发送 32 或 48 bit 的人为干扰信号 (jamming signal),以便让所有用户都知道已经发生了碰撞
- 碰撞退避
- 碰撞后,节点等待一段时间,重新开始载波检测和发送操作
- 为了避免退避后再次碰撞,冲突各方的等待时间应各不相同
- 以太网采用截断二进制指数退避算法 (truncated binary exponential backoff)
- ==退避时间 $T = 2\tau\times 倍数$==
- 倍数:在 0,1,…,2$^k$-1 之间取随机数,k = min(重传次数,10)
- 重传次数超过 16 后,丢弃该帧,并向上层报告
- 争用期
- 一个站点开始发送数据后,最多经过时间 $2\tau$(两倍端-端时延)就可以知道是否发生了碰撞
- 以太网的端到端往返时延 $2\tau$ 称为争用期,或碰撞窗口
- 如果经过争用期还没有检测到碰撞,就可以肯定这次发送不会发生碰撞
- 以太网的争用期
- 以太网的争用期长度:512 比特时间
- 对于 10Mb/s 以太网,在争用期内可发送 512 bit,即 64 字节
- 在发送数据时,若前 64 字节未发生碰撞,就不会发生碰撞
- 规定以太网中帧的长度 ≥ 64 个字节
- ==以太网帧最小间隔 96 比特时间==(检测到信道空闲后必须等待 96 比特时间后才能发送数据)
- CSMA/CD 协议的优缺点
- 网络负载较轻时效率高
- 硬软件实现简单、灵活
- 网络负载较重时,碰撞发生的概率增大,网络效率较低
- 由于存在多次冲突的可能,数据从发送方到达接收方的时间没有保证 $\rightarrow$ 实时性较差。
三、局域网技术标准
- IEEE 802 标准将局域网的数据链路分成两个子层
- 逻辑链路控制子层 LLC(Logic Link Control)
- 介质访问控制子层 MAX(Media Access Control)
- IEEE 802 系列局域网标准
3.7 以太网
一、以太网 (Ethernet) 简介
Ether: 以太
二、以太网物理层
- 最初的以以太网为总线结构,采用 50$\omega$ 同轴电缆,传输速率为 10Mbps
- 单点故障会导致全网瘫痪,成本较高
- 后发展为使用双绞线,物理上呈星形结构
- 曼彻斯特 (Manchester) 编码
- 用电平跳变表示 0 或 1,每个码元都有电平跳变
三、以太网的 MAC 层
-
以太网采用 CSMA/CD 介质访问控制协议
- MAC 地址
- 结点发送数据时,以太网总线结构,总线上所有结点都能收到帧
- 按照 IEEE 标准,每个结点分配唯一的 MAC 地址
- MAC 地址为 48bit,保证每个网络接口具有全球唯一的 MAC 地址
- 适配器每收到一个帧就检查帧中的目的 MAC 地址,如果是发往本站的帧则进行处理,否则丢弃
- “发往本站的帧”包括以下三种帧:
- 单播帧 (unicast) 帧(一对一)
- 广播帧 (broadcast) 帧(一对全体),MAC 地址为全 1 表示广播
- 组播 / 多播 (multicast) 帧(一对多)
- 以太网的帧格式(5 字段)
- 目的地址、源地址:各 6 字节的 MAC 地址
- 类型:2 字节
- 数据:网络层数据报,长度 46~1500 字节
- FCS:4 字节,帧校验序列,采用 CRC 校验
四、高速以太网
- 快速以太网 (Fast Ethernet)
- 千兆以太网 (Gigabit Ethernet)
- 万兆以太网 (10 Gbps 以太网)
- 更高速的以太网
3.8 局域网的互连
一、在物理层拓展局域网
- 使用中继器 (repeater) 或集线器 (HUB) 可实现局域网在物理层互连
- 优点:可以方便、低成本的实现网络扩展
- 缺点:碰撞域增大,碰撞发生概率增大,可能影响网络性能
二、在数据链路层扩展局域网
- 使用网桥 (bridge) 可实现局域网在数据链路的互连。
- 基本工作原理:
- 根据 MAC 帧的目的地址对收到的帧进行转发(有过滤功能:收到一个帧时,检查目的地址,判断是否需要转发,向哪转发)
- 用网桥实现局域网互连的观点
- 过滤通信量,增大吞吐量
- 各网段是独立的碰撞域
- 扩大了物理范围
- 可互连不同物理层、不同 MAC 子层和不同速率的局域网
- 过滤通信量,增大吞吐量
- 用网桥链接局域网互连的局限性
- 存储转发增加了时延
- 在 MAC 子层并没有流量控制功能
- 网桥只适合于用户数不太多和通信量不太大的局域网
- 广播风暴:因某些站点频繁发送广播帧产生网络拥塞
- 多接口网桥——交换机(switch)
- 内部原理是网桥,每个网络接口被视为一个网段,因此交换机是多接口网桥
- 与集线器相比
- ==交换机工作在数据链路层,每个接口为一个网段,可以大幅提高网络性能==
- ==集线器由所有接口共享传输介质的带宽,而交换机为每个接口独享带宽==
- 交换机按照自学习算法(self-learning)建立转发表
- 原理:若从 A 发出的帧从接口 x 进入了某网桥,那么从这个接口出发沿相反方向一定可把一个帧传送到 A
- 透明网桥使用生成树算法 (spanning tree)
- 用途:在局域网互连形成环路时,避免帧无休止转发
- 方法:建立生成树
- 互连在一起的网桥彼此通信后,能找出网络拓扑的一个子集。在该子集中,整个联通的网络中不存在回路,即在任何两个站之间只有一条路径
- 考虑到网络拓扑动态变化,生成树需定期更新
- 虚拟局域网 (VLAN)
- VLAN(Virtual LAN),在现有局域网基础上,通过将网络站点分组,构成若干逻辑上独立的虚拟局域网。
- 用途:便于管理、控制网络风暴、安全性
- 注意:帧不会再两个 VLAN 之间自动转发,包括广播帧
第四章 网络层
4.1 网络层提供的两种服务
- 面向连接的服务,即虚电路 (virtual circuit)
- 通信双方再开始数据传输前,先由网络建立连接,之后的数据均通过该连接进行,由网络保证数据传输的可靠性
- 虚电路只是一种逻辑连接,分组沿着这条逻辑按照存储转发方式传送,而不是真正建立了一条物理连接
- 无连接的服务,即数据报 (datagram)
- 网络在发送数据时不需要先建立连接,每一个分组在网络中独立传送
- 网络层不保证服务质量,分组柯南出错、丢失、重复和失序,也不保证分组传送的时限
- TCP/IP 采用数据报服务
4.2 网络协议 IP
一、IP (Internet Protocol) 简介
- 网际协议 IP 是 TCP/IP 体系中两个最主要的协议之一
- 配套使用的协议
- 地址解析协议 ARP(Address Resolution Protocol)
- 逆地址解析协议 RARP(Reverse Address Resolution Protocol)
- 网际控制报文协议 ICMP(Internet Control Message Protocol)
- 网际组管理协议 IGMP(Internet Group Management Protocol)
二、分类的 IP 地址
- IP 地址
- 分配给主机或路由器的标识符,目前使用的 IPv4 为 32 位 IP 地址
- IP 地址的分配由 ICANN (Internet Corporation for Assigned Names and Numbers)
- IP 地址的编址方法经历了三个阶段
- 分类的 IP 地址:最基本的编址方法
- 子网的划分:最基本编址方法的改进
- 构成超网:比较新的误分类编址方法
- 分类的 IP 地址
- IP 地址被分为 A, B, C, D, E 五类,每一类地址都包含网络号和主机号两个字段
- $IP 地址 = {<网络号>, <主机号>\}$主机号>网络号>
- 不同类的 IP 地址区别主要是网络号、主机号的长度不同
- IP 地址
- 目前使用 IPv4 为 32 位 IP 地址
- 表示方式:“点分十进制记法” (dotted decimal notation),用点分割,用十进制表示。
- 全 0 的表示本网络或本机,全 1 表示广播地址
三、IP 地址与硬件地址
- IP 地址
- 网络层及以上各层使用的地址,是一种逻辑地址
- 存放在 IP 包头部
- 物理地址
- 数据链路层及物理层使用的地址
- 存放在数据链路层的帧中
四、ARP 与 RARP 协议
- IP 地址与物理地址的相互转换问题
-
RFC 826: An Ethernet Address Resolution Protocol
- ARP 协议 (Address Resolution Protocol)
- 主机设有一个 ARP 高速缓存 (ARP cache),存有本地局域网各主机与路由器的 IP 地址与硬件地址的映射表。
- 当主机 A 欲向本局域网的主机 B 发送 IP 包时
- 其先在 ARP 缓存中查看有无主机 B 的地址
- 若有,就可查出其对应的硬件地址,再将此硬件地址写入 MAC 帧,通过局域网发送
- 若无,则在网络中广播一个 ARP 请求
- 当主机 B 收到 ARP 请求后,向主机 A 返回一个 ARP 应答,告知自己的物理地址。
- (如果目的主机不再本局域网内,IP 包需经由路由器转发)
五、IP 数据报格式
- 一个 IP 由头部和数据两部分构成
- 头部 (header):20 字节的固定字段 + 0 到多个可选字段(==IP 数据报固定首部长度为 20 字节==)
- 版本 (version): 4bit, IP 协议的版本,目前的 IP 协议版本号为 4(IPv4)
- IHL: 4bit, IP 包头长度(最小 5,最大 15,单位为字 (word)),因此 IP 包头最长 60 字节
- Type of service: 1 字节,服务类型,目前很多路由器忽略该字段
- Total length: 2 字节,IP 包总长度(含头部和数据,单位为字节),因此 IP 包最大长度为 65535 字节
- Identification: 2 字节,标识,用来产生 IP 包的标识
- DF: Don’t Fragment,当 DF = 0 时允许分片
- MF: More Fragment,MF = 1 表示后面还要分片,= 0 表示后面没有分片
- Fragment offset,13 bit,片偏移,某片在原分组中的位置,==以 8 字节为单位==。
- TTL (Time to Live),1 字节,生存时间,IP 包在网络中可通过路由器个数的最大值
- 实际实现时,IP 包每经过一个路由器 TTL 减一,为 0 则丢弃,并向源主机发送一个警告包
- Protocol: 8bit,协议字段,该包中数据部分的协议类型,即上层协议类型 -> 该字段决定了该报将交由哪里
- Header checksum: 2 字节,包头校验和(只针对包头)
- 校验和算法:类似累加和(软件校验,每 16 位求反,循环相加(进位加在末尾))
- Source address: 4 字节,源 IP 地址
- Destination address: 4 字节,目的 IP 地址
- 选项字段 (Options):以 4 字节为单位,最长 40 字节
4.3 划分子网和构造假网
一、划分子网
- 为什么要划分子网?
- 分类 IP 地址无法适应 Internet 快速发展需要
- 解决方法
- 划分子网
- 一个网络可划分为若干个子网(subnet)
- 常按物理网络或单位组织机构划分子网,直观且易于管理
- 问题:在何处体现子网信息?
- IP 地址总并不含有子网信息
- 解决办法:使用子网掩码(subnet mask)
- 一个网络可划分为若干个子网(subnet)
- 划分子网
- 子网掩码是一个网络或一个子网的重要属性,在路由寻址中发挥着重要的作用
- 对目的 IP 地址和子网掩码执行“按位与”操作,得到子网地址
二、使用子网掩码的分组转发过程
- 路由器中路由表项包含三项基本信息
- 目的网络地址
- 子网掩码
- 下一跳地址
- 转发流程
- 从收到分组的首部提取目的 IP 地址 D
- 先用与该路由器直接相连的各网络的子网掩码和 D 逐位相“与”,看看是否和相应的网络地址匹配,若匹配,则将分组直接交付;否则就是间接交付,执行 3
- 若路由表中有目的地址为 D 的特定主机路由,则将分组传送给指明的吓一跳路由器;否则执行 4
- 对路由表中的每一行的子网掩码和 D 逐位相与,若其结果与该执行的目的网络地址匹配,则将分组传送给该行指明的下一跳路由器,否则执行 5
- 若路由表中有一个默认路由,则将分组传送给路由表中指明的默认路由器,否则执行 6
- 报告转发分组出错
三、无分类编址 CIDR
- CIDR(Classless Inter-Domain Routing) 无分类域间路由
- CIDR 的主要特点
- 消除传统 A 类、B 类和 C 类地址以及划分子网的概念
- 使用各种长度的“网络前缀”(network-prefix)来代替分类地址中的网络号和子网号
- IP 地址从三级编址(使用子网掩码)又回到了两级编制
- $IP 地址 = {<网络前缀>, <主机号>\}$主机号>网络前缀>
- CIDR 还使用“斜线记法” (slash notation),又称为 CIDR 记法
- IP 地址后加一个斜线“/”,后跟网络前缀所占的位数
- 网络前缀相同的连续 IP 地址组成“CIDR”地址块
- 路由聚合 (route aggregation)
- 一个 CIDR 地址块有表示很多地址,这种地址的聚合称为路由聚合
- 路由聚合的好处:可以减少路由表中表项个数,并减少路由器间交换的路由信息量
- 路由聚合也称构成超网(supernetting)
- 称为超网是由于 CIDR 地址块大多包含多个 C 类地址
- 关于地址掩码
- CIDR 不使用子网,但仍使用“地址掩码”这一名词
- 例: /20 的地址掩码是
11111111 11111111 11110000 00000000
- CIDR 记法的其它形式
10.0.0.0/10
可简写位10/10
,即省略点分十进制中低位连续的 0- 网络前缀后跟星号 * 的表示方法
- 如
00001010 00*
,星号 * 之前为网络前缀,星号 * 为任意主机号
- 如
- 最长前缀匹配
- 使用 CIDR 时,路由表中的表项中的“目的网络地址”由固定长度变成了变长的“网络前缀”
- 在查找路由表时可能会得到不止一个匹配结果
- 最长前缀匹配原则 (longest-prefix matching)
- 从匹配结果中选择具有最长网络前缀的路由
- 网络前缀越长,其地址块就越小,其路由就越具体。
- 又称最长匹配或最佳匹配
4.4 网际控制报文协议 ICMP
一、ICMP 简介
- RFC 792: Internet Control Message Protocol
- 主要用于报告出错和测试等控制信息
- ICMP 位于 IP 层,ICMP 饱问是封装在 IP 报中传送的
二、ICMP 报文类型
- ICMP 报文有 9 种,可分为差错报告报文和询问报文两类
分类:
- 差错报告报文
- Destination unreachable:终点不可达,路由器或主机无法传输饱问时向源主机发送此报文
- Source quench:源点抑制,路由器或主机由于拥塞丢弃报文时,向源主机发送此报文,使其放慢发送速度
- Time exceeded: 超时,当饱问的 TTL 字段为 0 时,路由器丢弃报文,并向源主机发送此报文
- Parameter problem:参数问题,路由器或主机收到的报文中头部有非法字段时,丢弃数据包,并向源主机发送此报文
- Redirect:重定向,路由器向主机发送此报文告知路由改变,主机向此发送数据报给另外的路由器
- 询问报文
- Echo request / reply:回声探测,用于测试网络连通性
- Timestamp request / reply: 请求时间,可用于时间同步
三、ICMP 应用举例
- Ping
- 用来测试两个主机之间的连通性
- 采用 ICMP echo request / reply 报文
- 向目的主机发送 ICMP echo request 报文,对方收到后会回应 ICMP echo reply,根据能否收到应答后判断两台主机之间是否连通
- Traceroute / Tracert
- 用来测试到另一台主机所经过的路由信息
- 采用 ICMP 超时报告报文
- 逐个发出 UDP 报文,其 IP 包头中的 TTL 字段分别设为 1,2,3,…,直到到达目的主机
- 报文路由路径上的路由器会返回 ICMP 超时报文,从该报文即可得知路由器 IP 地址
4.5 路由算法及协议
一、路由算法简介
- 在网络中,路由器依据路由信息(路由表)转发分组,路由信息是路由协议生成的,路由算法是路由协议的基础和核心。
- 路由协议是用来生成路由信息(路由表)的,不是转发分组的
- 理想的路由算法
- 必须是正确的和完整的:按照得出的路由能够进行正确寻址
- 在计算上应简单:不增加过多开销
- 有自适应性:能够柑橘通信量和网络拓扑的变化调整路由
- 应具有稳定性:通信量和拓扑稳定时,能快速收敛
- 应是公平的:对所有用户公平
- 应是最佳的:能找出最好的路由(时延最小、吞吐量最大)
- 静态路由与动态路由
- 静态路由选择策略
- 非自适应路由选择
- 简单和开销较小,但不能适应网络状态的变化
- 适用于小规模且变化较少的网络,由人工设置路由
- 动态路由选择策略
- 自适应路由选择
- 能较好适应网络状态的变化,但实现起来较为复杂,开销也比较大
- 适用于较大规模、频繁变化的网络,通过专门的算法和协议进行路由的计算
- 静态路由选择策略
- 两类典型的动态路由算法
- 距离向量路由算法
- 链路状态路由算法
- Internet 采用分层次路由,原因:
- Internet 规模庞大,任何一台路由器都不可能获取和存储整个 Internet 的路由信息
- 接入 Internet 的众多网络(管理方)不希望外界了解字节网络的内部信息
- 自治系统 (AS-Autonomous System) 的概念
- 定义:在单一的技术管理下的一组路由器,而这些路由器使用一种 AS 内部的路由选择协议和共同的度量以确定分组在该 AS 内的路由,同时还使用一种 AS 之间的路由选择协议用以确定分组在 AS之间的路由
- 内部网关协议 IGP(Interior Gateway Protocol)
- 自适应系统内部使用的路由选择协议
- 这类路由协议使用的最多,如 RIP 和 OSPF 协议
- 外部网关协议 EGP(External Gateway Protocol)
- 若源站和目的站处在不同的自洽系统中,当数据报传到一个自洽系统的边界时,就需要使用一种协议将路由信息传递到另一个自洽系统中,这样的协议就是外部网关协议。
二、距离向量路由域 RIP 协议
- 距离向量路由(distance vector routing)
- 基于动态路由算法
- 也成为 Bellman-Ford 算法
- 距离向量路由基本思想
- 每个路由器维护一张表,表中给出了到每个目的地一致最佳距离和线路,并通过与相邻路由器交换距离信息来更新表
- 路由器周期性地向所有相邻路由器发送它的距离表,同时它也能接收每个邻居结点发来的距离表
- 相邻路由器 X 发来的表中,X 到路由器 i 的距离为 Xi,本路由器到 X 的距离为 m,则路由器经过 X 到 i 的距离为 Xi + m,根据不同邻居发来的信息,计算 Xi + m,并取最小值,更新本路由器的路由表。
- 距离向量路由的无穷计算问题
- 算法的缺陷:对好消息反应迅速,对坏消息反应迟钝
- RIP (Routing Information Protocol) 协议
- 属于距离向量路由协议
- 特点:简单、适用于小规模网络中的路由
- RIP 中的距离定义:路由器跳数 (hop count)
- 优点:便于计算
- 最长距离 15,即允许的最长路径中最多包含 15 个路由器
- 距离为 16 表示不可达
- 直接连接的距离为 0
- RIP 的三个要点
- 仅和相邻路由器交换信息
- 交换的信息是当前本路由器所知道的全部信息,即自己的路由表
- 按固定的时间间隔交换路由信息(典型值:每隔 30 秒)
- RIP 报文格式
- 收到相邻路由器发来 RIP 报文后的处理流程
- RIP 优缺点
- 优点
- 实现简单,开销较小
- 缺点
- 当网络出现故障时,要经过比较长的时间才能将此信息传送到所有的路由器(距离向量路由的故由缺点)
- 支持的网路规模有限,最大距离为 15(16 表示不可达)
- 路由器之间交换的路由信息是由路由器中的完整路由表,随着网络规模的扩大,开销随之增加
- 优点
三、链路状态路由域 OSPF 协议
- 链路状态路由 (link-state routing) 的基本思想
- 每个路由器完成 5 步工作:
- 发现它的邻居结点,并学习其网络地址
- 路由器启动后,通过发送 HELLO 包发现邻居结点
- 两个或多个路由器连在一个 LAN 时,引入人工结点
- 测量到各邻居结点的延迟或开销
- 构造一个分组,其中包含所有它刚刚知道的信息
- 将这个分组发送给其它所有路由器
- 计算出每一个其他路由器的最短路径
- 发现它的邻居结点,并学习其网络地址
- 各路由器之间动态交换链路状态信息,每个路由器都建立一个链路状态数据库
- “链路状态”即由本路由器都和哪些路由器相邻,以及该链路的“度量”
- 链路状态数据库实际上是全网的拓扑结构图,它在全网范围内是一致的(即链路状态数据库的同步)
- 各路由器根据网络拓扑使用 Dijkstra 算法计算从本路由器到其他结点的最佳路径,构成路由表
- 每个路由器完成 5 步工作:
- OSPF (Open Shortest Path First) 协议简介
- 属于链路状态路由协议
- 优点
- 收敛速度快
- 当链路状态发生变化时,结点会以洪泛 (flooding) 方式告知所有网络中其它结点
- 洪泛 (flooding):结点收到分组时,向除输入链路外的所有其他链路发送出去
- 适用于较大规模的网络
- 仅在链路状态发生变化时发送洪泛信息,不会产生很大通信量
- 为了管理大规模的网络,OSPF 将一个自治系统再划分为若干个区域 (area),一个区域内的路由器只知道本区域的完整网络拓扑,而不知道其他区域的网络拓扑
- 收敛速度快
- OSPF 不用 UDP 而是直接用 IP 数据报发送
- OSPF 的五种分组
- Hello 分组
- Database Description 分组
- Link State Request 分组
- Link State Update 分组,用洪泛法对全网更新链路状态
- Link State Acknowledgement 分组
四、外部网关路由协议 BGP
- BGP (Border Gateway Protocol) 简介
- BGP 是不同自治系统的路由器之间交换路由信息的协议
- BGP 环境的特殊性
- Internet 规模大,AS 之间的路由选择非常困难
- AS 之间的路由选择需要考虑多种策略
- BGP 难以找到最佳路由,只能寻找一条能够到达目的网络且比较好的路由(不能兜圈子)
- BGP 发言人
- 每个 AS 要选择至少一个路由器作为 “BGP speaker”
- 两个 BGP 发言人通过一个共享网络连接在一起
- BGP 发言人一般是 AS 边界路由器
- BGP 发言人与其他自治系统中的 BGP 发言人交换路由信息
- 路由信息交换通过 TCP 协议进行,利用 BGP 会话交换路由信息
- BGP 发言人除了运行 BGP 协议外,还要运行 AS 的内部网关路由协议
- 信息交换与路由生成
- BGP 所交换的网络可达性的信息就是要到达某个网络所要经过的一系列 AS
- 称为路径向量
- BGP 发言人互相交换网络可达性信息后,就根据所采用的策略从其中找出到达各 AS 的较好路由
- BGP 所交换的网络可达性的信息就是要到达某个网络所要经过的一系列 AS
- BGP-4 使用四种报文
- OPEN 报文:用来与相邻的另一个 BGP 发言人建立关系
- UPDATE 报文:用来发送每一路由的信息,以及列出要撤销的多条路由
- KEEPALIVE 报文:用来确认打开报文和周期性地证实邻站关系
- NOTIFICATION 报文:用来发送检测到的差错
- BGP发言人通过 OPEN 报文与另一发言人建立会话,对方同意则回应 KEEPALIVE 报文
- 双方周期性交换 KEEPALIVE 报文,以确认会话未终端
- 路由信息变化时,发送 UPDATE 报文
- BGP协议特点
- 交换路由信息的结点数量级与自治系统个数相当,大大少于这些自治系统中的网络数
- 每个自治系统中的 BGP 发言人的数目很少,使得自治系统间的路由选择不会过分复杂
- BGP 支持 CIDR,因此 BGP 路由表包括目的网络前缀、下一跳路由器,以及到达该目的网络要经过的各个自治系统序列
- 在 BGP 刚运行时,邻站交换完整的 BGP 路由表,以后只需要在发生变化时更新变动部分,有利于节省网络带宽和减少处理开销。
五、路由器
- 具有多个输入 / 输出端口的专用计算机,其任务是转发分组
- 路由器组成
- 路由选择部分:按照路由选择协议工作,构建路由表
- 分组转发部分:交换结构 (switching fabric) + 一组输入 / 端口
- 交换结构根据转发表进行分组的快速转发,转发表从路由表得到
- 路由器设计的关键之一是分组的高速转发
- 决定报文转发速率的因素有:
- 输入 / 输出端口的处理性能
- 交换机构的性能
- 线速 (line speed 或 wire speed):分组的处理速率能够达到线路上分组的传输速率
- 衡量路由器性能的指标:pps (packet per second)
- 决定报文转发速率的因素有:
六、网络的控制平面与数据平面
- 控制平面 (control plane)
- 生成路由表和转发表
- 数据平面 (data plane)
- 进行分组的快速转发
- 传统网络中,路由器继承了控制平面和数据平面,缺少灵活性
- 软件定义网络 (SDN, Software Defined Networking)
- 控制平面和数据平面分离
- 控制平面 -> 控制器 (controller)
- 数据平面 -> 路由器 (SDN 称为交换机)
- 优点:可以灵活、快速地控制路由 / 转发策略
- SDN 特别适用于路由策略变化频繁的网络
4.6 IP 组播
- 组播(multicast)又称为多播,用于实现一点对多点的数据传输
- 对于一些网络应用,采用组播可以大大减少网络流量
- 组播的典型应用示例:网络视频服务
- 使用 D 类 IP 地址作为组播地址
224.0.0.0—239.255.255.255
- 组播数据报:IP 包头的目的地址为 D 类地址,协议类型为 2
- 组播地址即为特定组播组的标识符,主机通过加入组播组来接收组播数据
- 组播分类:
- 在局域网中硬件组播
- 将 MAC 地址中的特定地址段作为组播地址,并与 IP 组播地址形成对应关系
- 在 Internet 中的组播
- 路由器需支持组播,即组播路由器
- 主机通过 IGMP 协议与组播路由器通信,加入 / 退出某个组播组
- 组播路由器之间通过组播路由协议实现组播数据报的传输
- 在局域网中硬件组播
4.7 网络地址转换 NAT 和虚拟专用网 VPN
一、网络地址转换 NAT
- 专用地址(保留地址)
- RFC1918 中定义了一系列专用地址 (private address)
10.0.0.0 - 10.255.255.255
172.16.0.0 - 172.31.255.255
192.168.0.0 - 192.168.255.255
- 这些地址只能用于机构的内部
- Internet 中的路由器不转发目的地址为专用地址的包
- RFC1918 中定义了一系列专用地址 (private address)
- 企业/机构内部网络使用专用地址的优点
- 减少 IP 地址空间的占用
- 可提高安全性
- 当内部网络使用专用地址时,与 Internet 的通信通过 NAT (Network Address Translation)
二、虚拟专用网 VPN
- VPN–Virtual Private Network 虚拟专用网
- 多个企业 / 机构的内部网络之间互连的实现方法
- 租用专用线路,形成专用网,成本高昂
- 基于公共网络,形成 VPN
- VPN 涉及的技术包括:隧道 (tennel)、加密、身份认证等
- 基于 Internet 建立 VPN 的两种情形
- 内部网络通过 Internet 互连
- 远程用户访问内部网 (remote access VPN)
- 典型的 VPN 实现技术
- 基于 IPSec:ESP 隧道模式
- 工作在网络层,适用于多种应用
- 基于 SSL:Web 浏览器内置 SSL 支持
- 客户端无需安装或配置软件
- 基于 IPSec:ESP 隧道模式
- 机构内部网络又称为 Intranet(内联网),外部网络称为 Extranet (外联网)
第五章 传输层
5.1 传输层协议概述
一、进程之间的通信
- 传输层 (Transport layer) 又称为运输层
- 传输层向它上面的应用层提供通信服务
- 实现可靠传输:差错控制、顺序控制、拥塞控制等
- 传输层 vs 网络层、
- 网络层实现主机之间的逻辑通信
- 传输层实现应用进程之间的逻辑通信
- 真正的端到端通信
- 复用 (multiplexing) 和解分 (demultiplexing)
- 传输层主要协议
- TCP 协议:可靠传输协议
- UDP 协议:不可靠传输协议
二、传输层的两个主要协议
- 传输层的两个主要协议
- 用户数据报协议 UDP (User Datagram Protocol)
- 传输控制协议 (Transmission Control Protocol)
- 传输的数据单位
- OSI 术语称为 TPDU(Transport Protocol Data Unit)
- TCP/IP 体系称为 TCP 报文段 (segment) 或 UDP 数据报
TCP 协议
- 可靠传输协议
- 提供面向连接的服务
- 传送数据前要先建立连接,传送结束后释放连接
- 需进行确认、流量控制、计时器、连接管理等,处理开销较大
- 基于 TCP 的典型应用协议:HTTP、TFP
UDP 协议
- 不可靠传输协议
- 传送数据时威建立连接
- 与 TCP 相比,效率更高,但可能出现数据错、丢包、顺序错等问题
- 基于 UDP 的典型应用协议:DNS、RIP
三、传输层的端口
- 传输层为多个应用提供服务 -> 复用与分用
- 应用层多个应用进程通过传输层发送数据 -> 复用
- 传输层收到的数据必须交付给指明的应用进程 -> 分用
- 传输层必须提供区分上层应用进程的手段:端口 (port)
- 注意:此端口为软件端口
- TCP/IP 使用 16 位整数作为端口号
- 源端口号、目的端口号
- 端口号分类
- 熟知 (well-known) 端口或系统端口号;数值一半为 0-1023
- 登记端口号,数值为 1024-49151
- 客户端口号或短暂端口号,数值为 49152-65535
- 客户端进程临时使用
5.2 用户数据报协议 UDP
一、UDP 概述
- UDP 只在 IP的数据报服务至上增加了很少一点的功能
- 端口和差错检测
- UDP 为不可靠传输协议,但具有自身特点,与 TCP 分别面对不同的应用·
- UDP 协议的特点
- 无连接,即发送数据之前不需要建立连接
- 使用尽最大努力交付,即不保证可靠交付,同时也不拥塞控制
- 是面向报文的。没有拥塞控制,很适合多媒体通信的要求
- 支持一对一、一对多、多对一、多对多的交互通信
- 首部开销小,只有 8 个字节
二、UDP 首部格式
- UDP 数据包包括两个字段:首部和数据字段
- 首部共 4 个字段,8 字节
- 首部各字段
- 源端口:源端口号
- 目的端口:目的端口号
- 长度:UDP 数据报长度==(包括首部的 8 字节,算数据长度时要减去 8)==
- 校验和:UDP 数据包的校验和
- 计算校验和时要添加伪头部,奇数字节需填充 0 字节
- IP 只计算包头校验和,UDP 计算整个数据报文的校验和
- 伪首部:尽在计算校验和时使用,不实际传输
网络中通常用big endian
- Little endian:低位字节在低地址(低字节在前)
- Big endian:高位字节在低地址(高位字节在前)
- 在接收方,如果在目的端口号上没有应用进程接收数据,则向源主机返回 ICMP 的”目的不可达“报文
5.3 传输控制协议 TCP 概述
一、TCP 的主要特点
- TCP 是面向连接的传输层协议
- 传输数据前必须先建立连接,数据传输完毕后要释放连接
- 每一条 TCP 连接只能有两个端点 (endpoint),每一条 TCP 连接只能是点对点的(一对一)
- TCP 提供可靠交付发服务
- 无差错、不丢失、不重复、按序可达
- TCP 提供全双工通信
- 在一个连接上,通信双方可同时向对方传输数据
- 面向字节流
- 认为在 TCP 连接上传输的是字节流
- 应用程序以数据块为单位与 TCP 交互,但 TCP 将其视为无结构的字节流
- 结果:发送方应用进程发出的数据块与接收方应用进程收到的数据块可能没有一一对应关系,但数据保证一致
- * 要注意的几点: * TCP 连接是一条虚连接而不是一条真正的物理连接 * TCP 对应用进程一次把多长的报文发送到 TCP 的缓存中是不关心的 * TCP 根据对方窗口值和当前网络拥塞程度来决定一个报文段应包含多少个字节 (UDP 发送的报文长度是应用进程给出的) * TCP 可把太长的数据块划分短一些再传送 * TCP 也可等待积累有足够多的字节后再构成报文段发送出去
二、TCP 的连接
- TCP 把连接作为最基本的抽象
- 每一条 TCP 连接有两个端点
- TCP 连接的端点叫做套接字 (socket) 或插口
- 不是主机、不是 IP 地址、不是应用进程、也不是传输层的协议端口
- 端口号拼接到 (contatenared with) IP 地址即构成了套接字
- $套接字 socket = (IP 地址: 端口号)$
- 每一条 TCP 连接唯一地被通信两端的两个端点(即两个套接字)所确定,即
- $TCP 连接={socket1, socket2} = {(IP1: prot1), (IP2: port2)}$
5.4 TCP 报文段的首部格式
- 源端口和目的端口字段:各 2 字节
- 序号 seq 字段:4 字节
- 在 TCP 连接中传送的数据流中的每一个字节都有序号
- 序号字段指本报文段所发送的数据的第一个字节的序号,以字节为单位
- 确认号 ack 字段:4 字节,期望收到对方的下一个报文段的数据的第一个字节的序号
- TCP 连接是全双工,通信双方可互相发送数据,因此应答与数据一同发给对方
- 数据偏移(首部长度):4 bit,TCP 报文段的数据起始位置的便宜,也就是首部的长度,==单位是 32 位字(4 字节)==
- 保留字段:6 bit,保留
- 紧急 URG:1 bit,为 1 时,紧急指针字段有效,表明有紧急数据,应尽快传送
- 确认 ACK:1 bit,为 1 时,确认号字段有效;为 0 时无效
- 推送 PSH:1 bit,为 1 时,接收方应尽快向应用进程交付此报文段,而不是等到整个缓存填满
- 复位 RST:1 bit,为 1 时,表明 TCP 连接出现严重差错(如由于主机崩溃),须释放连接后重新建立连接
- 同步 SYN:1 bit,为 1 时,表示这是一个连接请求或连接接收报文
- 终止 FIN:1 bit,为 1 时,表示要求释放 TCP 连接
- 窗口大小:2 字节,用来让对方设置发送窗口的依据,单位为字节
- 校验和:2 字节,伪首部 + 首部 + 数据的校验和
- 伪首部 (pseudoheader) 格式与 UDP 伪首部相同
- 紧急指针:2 字节,指出本报文段中紧急数据共有多少个字节(紧急数据放在数据的最前面)
- 选项:长度可变,最长 40 字节
- 最早定义的一种选项:最大报文段长度 MSS(Maximum Segment Size)
- 后续增加的选项:窗口扩大选项、时间戳选项、选择确认选项
- 填充字段:为了能使整个首部长度是 4 字节的整数倍
5.5 TCP 可靠传输的实现
一、以字节为单位的滑动窗口
- TCP 基于滑动窗口协议实现可靠传输和流量控制,滑动窗口以字节为单位
- 发送窗口
- 在没有收到对方应答的情况下,可以连续把窗口内的数据发送出去
- 即:窗口内的序号是允许发送的序号
- 窗口大小的确定:对方发来的窗口大小、拥塞控制
- 根据收到对方 TCP 报文段头部中 “acknowledge number” 字段,窗口向前滑动
- “acknowledge number” 字段表示在此序号之前的数据已被正确接收
- 在没有收到对方应答的情况下,可以连续把窗口内的数据发送出去
- 接收窗口
- 窗口内的数据是允许接收的
- 窗口后沿以外是已正确接收并交付上层的数据
- 发送缓存用来暂时存放:
- 发送应用进程传送给 TCP,但尚未发出的数据
- 已发送,但尚未收到确认的数据
- 接收缓存用来暂时存放:
- 按序到达的,但尚未被接收应用进程读取的数据
- 未按序到达的数据
- A 的发送窗口并不总和 B 的接收窗口一样大
- TCP 要求接收方必须有累积确认的功能,这样可以减小传输开销
二、超时重传时间的选择
- TCP 的可靠传输通过校验和 + 超时重传实现
- TCP 每发送一个报文段,就对这个报文段设置一次计时器
- 如果计时器设置的重传时间到,但还没有收到确认,就重传该报文段
- 超时时间的设置
- IP 层提供数据包服务,每个数据包所选择的路由都可能有变化
- 传输层的往返时间变化较大
- TCP 采用一种自适应算法计算超时重传时间
- 加权平均往返时间 RTTs (RTT– Round Trip Time)
- TCP 保留了 RTT 的一个加权平均往返时间 RTTs(又称为平滑的往返时间)
- 第一次测量到 RTT 样本时,RTTs 就取为该值
- 以后每测量到一个新的 RTT 样本,按下式重新计算
- $新的 RTTs = (1 - \alpha)\times 旧的 RTT_s +\alpha\times 新的 RTT 样本$
- 其中 $0 < \alpha < 1$,$\alpha$ 越小,RTT 值更新越慢,$\alpha$ 越大,RTT 值更新越快
- 超时重传时间 RTO (Retransmission Time-Out)
- RTO 应略大于 RTTs
- RFC 2988 建议使用下式计算 RTO
- $RTO = RTT_s + 4\times RTT_D$
- $RTT_D$ 是 RTT 偏差的加权平均值
-
$新的 RTT_D = (1-\beta)\times 旧的 RTT_D + \beta\times RTT_S - 新的 RTT 样本 $,其中 $\beta \in (0,1)$,推荐值是 1/4
5.6 TCP 的流量控制
一、利用滑动窗口实现流量控制
- 流量控制(flow control) 就是让发送方的发送速率不要太快,使接收方来得及接收
- 利用滑动窗口机制可以方便地在 TCP 连接上实现流量控制
- TCP 连接建立过程中,将字节的就接受窗口大小告知对方
- TCP 报头中都携带有窗口大小字段,告知对方自己接收窗口剩余大小(即可接收的字节数)
- 发送方的发送窗口应不大于接收方的接受窗口
- 持续计时器 (persistence timer)
- TCP 为每一个连接设有一个持续计时器
- 只要一方收到对方发零窗口通知,就启动持续计时器
- 若持续计时器设置的时间到,就发送一个零窗口探测报文段(仅携带 1 字节的数据),二对方在确认这个探测报文段时给出当前窗口值
- 若窗口仍然是零,则收到这个报文段的一方就重新设置持续计时器
- 若窗口不是 0,则死锁的僵局就可以打破了
二、传输效率
- 可以用不同的机制来控制 TCP 报文段的发送时机
- 缓存数据达到一定量就发送
- TCP 维持一个变量,它等于最大报文段长度 MSS
- 只要缓存中存放的数据达到 MSS 字节时,就组装成一个 TCP 报文段发送出去
- 应用进程控制
- 由发送方的应用进程指明要求发送报文段,即推送 (push) 操作
- 定时发送
- 发送方的一个计时器期限到了,这时就把当前已有的缓存数据装入报文段(但长度不能超过 MSS)发送出去
- 缓存数据达到一定量就发送
5.7 TCP 的拥塞控制
一、拥塞控制的一般原理
- 拥塞 (congestion) 概念和产生原因
- 在某段时间内,若对网络中某资源的需求超过了该资源所能提供的可用部分,网络的性能就要变坏,从而产生拥塞,即拥塞产生的条件:$\sum 对资源的需求 > 可用资源$
- 网络资源:链路带宽、路由结点缓存即处理能力等
- 网络拥塞的原因复杂,简单增加某种资源数量往往不能消除拥塞
- 网络拥塞的表现
- 网络性能下降,具体表现为网络吞吐量下降、报文传输时延增大、丢包率增加、用户端响应时间变长
- 拥塞常常会趋于恶化,即恶性循环
- 由TCP重传机制引起
- 拥塞控制与流量控制
- 拥塞控制:防止过多的数据注入到网络中,使网络中的路由器或链路不致过载
- 拥塞控制是全局性的过程,而流量控制是点对点通信量的控制,是端到端的问题
- 拥塞控制的作用
- 开环控制与闭环控制
- 开环控制
- 在设计网络时先将有关发生拥塞的因素考虑周到,力求网络在工作时不产生拥塞
- 闭环控制:基于反馈网络,有几种措施
- 监测网络系统以便检测到拥塞在何是、何处发生
- 将拥塞发生的信息传送到可采取行动的地方
- 调整网络系统的运行以解决出现的问题
- 四种拥塞控制的方法
- 慢启动 (slow start),又称为慢开始
- 拥塞避免 (congestion avoidance)
- 快重传 (fast retransmit)
- 快恢复 (fast recovery)
- 开环控制
二、==拥塞控制方法:慢启动和拥塞避免==
- 慢启动进行拥塞控制的基本思路
- 开始发送时,如果立即把大量数据注入网络,则可能导致拥塞
- 因为此时并不知道网络的负载状况
- 较好的方法是:试探性的从小到大逐渐增大发送窗口
- 开始发送时,如果立即把大量数据注入网络,则可能导致拥塞
- 拥塞窗口 cwnd (congestion window)
- 发送方维持拥塞窗口,它是一个状态变量
- 拥塞窗口的大小取决于网络的拥塞程度,并且动态的变化
- 发送方让自己的发送窗口等于拥塞窗口,如再考虑到接收方的接受能力,则发送窗口还可能小于拥塞窗口
- 发送方控制拥塞窗口的原则
- 只要没有出现拥塞,拥塞窗口就增大一些,以便更多的分组发送出去
- 一旦出现拥塞,拥塞窗口就减小一些,以减少注入到网络中的分组数
- 如何判断是否发生拥塞?
- 拥塞发生时路由器将丢弃分组
- 简单的主机端判断方法:只要没有收到确认,就认为发生了拥塞
- 慢启动的工作过程
- 开始发送报文段时,设置拥塞窗口 cwnd = 1,即设置为一个最大报文段 MSS 的数值
- 每收到一个新的报文段的确认后,将拥塞窗口加 1,即增加一个 MSS 的数值
- 用这样的方法逐步增大发送端拥塞窗口 cwnd,可用使分组注入到网络的速率更加合理
- 注意:TCP 中窗口大小是以字节为单位的,为方便起见,这里以 MSS 为单位讨论拥塞窗口大小
- 传输轮次 (transmission round)
- 使用慢启动时,每经过一个传输轮次,拥塞窗口 cwnd 就加倍
- 一个传输轮次所经历的时间其实就是往返时间 RTT
- 传输轮次更加强调:
- 把拥塞窗口 cwnd 所允许发送的报文段都发送出去,并收到了对已发送的最后一个字节的确认
- 为防止拥塞窗口 cwnd 增长过大导致拥塞,设置一个慢启动门限 ssthresh
- cwnd < ssthresh 时,使用慢启动算法
- cwnd > ssthresh 时,停止使用慢启动算法而改用拥塞避免算法
- cwnd = ssthresh 时,可使用慢启动算法或拥塞避免算法
- 拥塞避免算法的思路
- 让拥塞窗口 cwnd 缓慢的增大,即每经过一个往返时间 RTT 就把发送方的拥塞窗口 cwnd 加 1,而不是加倍,使拥塞窗口 cwnd 按线性规律缓慢增长
- 拥塞发生时的处理
- 无论在慢启动阶段还是拥塞避免阶段,只要发送方判断网络出现拥塞(没有按时收到确认),就要==把慢启动门限 ssthresh 改为出现拥塞时的发送方窗口值的一半(但不能小于 2)==
- 然后把拥塞窗口 cwnd 重新设置为 1,执行慢启动算法
- 这样做的目的:迅速减少注入网络中的分组数,使得发生拥塞的路由器有足够时间把队列中积压的分组处理完毕
- 乘法减小 (multiplicative decrease)
- 不论在慢启动阶段还是拥塞避免阶段,只要出现一次超时(即网络拥塞),就把慢启动门限 ssthresh 减小到拥塞窗口的一半
- 当网络频繁出现拥塞时,ssthresh 值下降的很快,以大大减少注入网络中的分组数
- 加法增大 (additive increase)
- 执行拥塞避免算法后,没经过一个往返时间 RTT,把拥塞窗口 cwnd 增加一个 MSS 大小,使拥塞窗口缓慢增大,以防止网络过早出现拥塞
三、拥塞控制方法:快重传和快恢复
- 快重传 (fast retransmit) 算法思路
- 如果发送方在超时时间内未收到确认报文,说明网络中发生了拥塞,此时发送方应尽早地减小窗口宽度
- 每当接收方收到一个失序的报文段,就发出重复确认,以便使发送方及早知道有报文段没有到达接收方
- 发送方只要接连收到三个重复确认就应当立即重传对方尚未接收到的报文段
- 快恢复 (fast recovery) 算法思路
- 当发送端收到连续三个重复的确认时,就进行“乘法减小”,把慢启动门限 ssthresh 减为当前拥塞窗口宽度的一半
- 接下来不执行慢启动算法,而是设置为慢启动门限 ssthresh 减半后的数值,然后开始执行拥塞避免算法(“加法增大”),使拥塞窗口缓慢地线性增大
- 发送方认为现在网络很可能没有发生拥塞(仅有拥塞征兆),因为拥塞时不会有连续多个报文段到达接收方
- 发送窗口的上限值
- 从流量控制角度考虑,发送窗口不能超过对方给出的接受窗口值
- 综合考虑流量控制和拥塞控制,发送方的发送窗口的上限值应当在接收方窗口 rwnd 和拥塞窗口 cwnd 两者中取较小的一个
- $发送窗口的上限值 = \min{[rwnde, cwnd]}$
- 当 rwnd < cwnd 时,是接受王的接受能力限制发送窗口的最大值
- 当 rwnd > cwnd 时,是网络的拥塞限制发送窗口的最大值
5.8 TCP 的连接管理
一、简介
- TCP 传输连接有三个阶段
- 数据建立
- 数据传送
- 连接释放
- 连接建立过程中要解决的三个问题
- 使每一方都能确知对方的存在
- 允许双方协商一些参数(如最大报文段长度、最大窗口大小、服务质量等)
- 能够对传输实体资源进行分配(如缓存、连接表中的项目等)
- TCP 连接的建立都是采用客户 / 服务器模式
- 客户 (client):主动发起连接建立的应用进程
- 服务器 (server):被动等待连接建立的应用进程
二、TCP的连接建立
- ==TCP 连接的建立采用三次握手(three-way handshake)==
- 步骤
- A 向 B 发出连接请求报文段,使首部中的 SYN = 1,并选择序列号 seq = x,表明传送数据时的第一个数据字节的序号是 x
- B 收到连接请求后,如同意,则发回确认,其中 SYN = 1,ACK = 1,确认号 ack = x + 1,自己选择的需要 seq = y
- A 收到后向 B 给出确认,其 ACK = 1,确认号 ack = y + 1
- B 收到后,TCP 连接建立
-
- 为什么三次握手而不是两次?
- 防止“失效的连接请求”在服务器端占用资源
- 客户端发出了连接请求,但该数据报在网络中某处滞留了
- 客户端等待超时后,重发连接请求,服务器响应,建立连接
- 滞留的连接请求又到达服务器,如果采用 2 次握手,服务器将建立一个连接,分配资源
- 防止“失效的连接请求”在服务器端占用资源
- 三次握手带来的安全问题:TCP SYN Flooding
- 攻击者若连续发送大量 SYN 报文,但却不对 SYN ACK 报文做出相应
- 结果:服务器内部数据结构端,无法相应正常用户的 TCP 连接请求
- 为什么三次握手而不是两次?
三、TCP 的连接释放
- 连接的释放可由任何一方发起
- (假定 A 主动关闭连接)A 发送报文段,其首部的 FIN = 1,序号 seq = u
- B 发出确认,ACK = 1,确认好 ack = u + 1,序号 seq = v
- A -> B 方向的连接被释放,此时连接处于半关闭状态,B 若发送数据,A 仍要接受
- 若 B 已经没有要向 A 发送的数据,就向 A 发送连接释放报文 (FIN = 1, ACK = 1)
- A 收到后,发出确认,其中 ACK = 1,确认号 ack = w + 1,序号 seq = u + 1
- TCP 连接必须经过时间 2MSL 后才真正释放掉
- 关于 MSL
- Maximum Segment Lifetime,报文段最大存活时间
- 关闭连接前等待 2MSL 时间的原因
- 为了保证 A 发送的最后一个 ACK 报文段能够到达 B
- 防止“已失效的连接请求报文段”出现在本连接中
- A 在发送完最后一个 ACK 报文段后,再经过时间 2MSL,就可以使本连接持续的时间内产生的所有报文段,都从网络中小时。这样就可以使下一个新的连接中不会出现这种旧的连接请求报文段
第六章 应用层
应用层协议特点
- 应用层协议是为了解决某类应用的问题
- 应用层的许多协议都是基于客户 / 服务器方式
- 客户 (client) 和服务器 (server) 都是指通信中所涉及的两个应用进程
- 客户/服务器方式所描述的是进程之间的服务和被服务的关系
- 客户是服务请求方,服务器是服务提供方
6.1 套接字编程接口
- 网络子系统作为操作系统的一部分,以应用编程接口的形式向应用程序提供调用接口
- 套接字 (socket) 是最常用的应用层编程接口
- 名称起源于 Berkeley Unix 操作系统
- 经典的 socket 编程接口采用同步调用方式(又称阻塞式)
- Windows 这种基于时间驱动的系统中,程序的执行由事件驱动,需要异步事件驱动方式的套接字编程接口
6.2 域名系统 DNS
一、域名系统概述
- 域名系统 (DNS, Domain Name System) 是 Internet 使用的命名系统。
- Internet 采用层次结构的命名树作为主机的名字,并使用分布式的域名系统 DNS
- 多个域名服务器上运行专门的域名服务器程序,完成域名 -> IP 地址的解析 (resolve)
- DNS 基于 UDP 协议实现
- 应用进程需要进行域名解析时,就调用域名解析程序 (resolver),它称为 DNS 的一个客户
- 向本地域名服务器发送域名解析请求 (UDP 报文),其中包含待解析的域名
- 本地域名服务器再查找域名后,返回应答报文,其中包含对应的 IP 地址
二、Internet 域名结构
- Internet 采用层次树形结构的命名方法
... . 三级域名.二级域名.顶级域名
- 顶级域名 TLD(Top Level Domain)
- 国家级域名:如 cn, us, uk 等
- 域名不区分大小写,长度不超过 255 字符
三、域名服务器
- 域名服务器分为 4 类
- 根域名服务器
- 根域名服务器知道所有的顶级域名服务器的域名和 IP 地址
- 当本地域名服务器无法解析域名时,就求助于根域名服务器
- 顶级域名服务器
- 负载管理再该顶级域名服务器注册的所有二级域名
- 权限域名服务器
- 负责一个区 (zone) 的域名服务器
- 本地域名服务器
- 有时也称为默认域名服务器
- 根域名服务器
- 域名服务器定期把数据复制到几个域名服务器来保存,其中的一个是主域名服务器,其他的是辅助域名服务器
- 树状结构的 DNS 域名服务器
- 主机向本地域名服务器的查询一般采用递归查询
- 如果本地域名服务器不知道被查询域名的 IP 地址,那么就以 DNS 客户的身份,向根域名服务器继续发出查询请求报文
- 本地域名服务器向根域名服务器的查询通常采用迭代查询
- 当根域名服务器收到本地域名服务器的迭代查询请求报文时
- 要么给出所要查询的 IP 地址
- 要么告诉本地域名服务器下一步应向哪一个域名服务器查询
- 本地域名服务器进行后续的查询
- 当根域名服务器收到本地域名服务器的迭代查询请求报文时
6.3 文件传送协议
6.4 万维网 WWW
一、万维网概述
- WWW——World Wide Web
二、同意资源定位符 URL (Uniform Resource Locator)
- URL 是对 Internet 上资源位置和访问方法的一种简介表示
- URL 的一般形式:
<协议>://<主机>:<端口>/<路径>
- 协议: ftp, http, News
- 主机:为存放资源的主机在 Internet 中的域名
- 端口:http 中省略端口则表明为熟知端口号 80
- 路径:http 中省略路径则表示主页 (home page)
- URL 不区分大小写
三、超文本传输协议 HTTP
- HTTP–HyperText Transfer Protocol
- 基于 TCP 协议,是万维网上可靠地交换文件的重要基础
- HTTP 是面向事务的客户 / 服务器协议
- HTTP 是无状态的 (stateless)
- 服务器不记录客户端的访问状态
- 基本工作原理
- Web 服务的熟知端口号是 80,服务器通常在该端口上监听
- 客户端需要请求某个页面时,与服务器建立 TCP 连接,之后请求传送文件,并进行文件的传送,传送完毕后释放 TCP 连接
- HTTP/1.1 协议使用持续连接 (persistent connection)
- 服务器发送响应后,在一段时间内保持连接,使客户与服务器可以继续传送后续的HTTP请求报文和响应报文
- HTTP 的报文类型:两类报文
- 请求报文——从客户端向服务器发送请求报文
- 响应报文——从服务器到客户的回答
- HTTP 的面向正文 (text-oriented) 的,报文中的字段都是 ASCII 码串,因而每个字段的长度都是不确定的
- 报文由三个部分组成,即开始行、首部行和实体主体
- 在请求报文中,开始行就是请求行
四、万维网的文档
- HTML–HyperText Markup Language
五、安全的 HTTP 协议:HTTPS
- HTTPS:安全的 HTTP 协议,建立在 SSL 基础上
- HTTPS 的熟知端口号为 443,而不是 80
- SSL–Secure Socket Layer,为 TCP 协议提供信息加密和完整性
6.5 电子邮件
一、概述
- 发送邮件的协议:SMTP
- 读取邮件的协议:POP3 和 IMAP
- 电子邮件系统的两种实体
- 用户代理 UA (User Agent)
- 是用户与电子邮件系统的接口,即电子邮件客户端软件
- 用户代理的功能:撰写、显示、处理和通信
- 邮件服务器
- 用于发送和接收邮件,并向发信人报告传送结果
- 邮件服务器按照客户 / 服务器方式工作
- 使用发送和读取两个不同的协议,即发送邮件的 SMTP 协议和客户端读取邮件的 POP3 协议
- 一个邮件服务器既可以作为客户,也可用作为服务器
- 用户代理 UA (User Agent)
二、简单邮件传送协议 SMTP
三、电子邮件的信息格式
四、MIME
第七章 IPV6
7.1 概述
- IPv6 引入的主要变化:
- 更大的地址空间
- 32 位 -> 128 位
- 扩展的地址层级结构
- 灵活的首部格式
- 改进的选项
- 允许协议继续扩充
- 支持即插即用(即自动配置)
- 支持资源的预分配
- 更大的地址空间
7.2 IPv6 地址
- IPv6 数据包的目的地址可以是三种基本类型地址之一
- 单播 (unicast):传统的点对点通信
- 组播 / 多播 (multicast):一点对多点的通信
- 任意播 (anycast):IPv6 增加的类型,任意播的目的站是一组计算机,但数据报在交付时只交付其中的一个,通常是距离最近的一个
- IPv6 地址为 128 位
- 地址空间 > 3.4 $\times 10^{38}$
- IPv6 地址采用冒号十六进制记法 (colon hexadecimal notation)
- 每个 16 位的值用 16 进制表示,各值之间用冒号分隔
- 例:
68E6:8C64:FFFF:FFFF:0:1180:960A:FFFF
- 例:
- 零压缩:即用一连串连续的 0 可以为一对冒号所取代
- 例:
FF05:0:0:0:0:0:0:B3
可以写成:FF05::B3
- 例:
- 冒号十六进制记法可结合点分十进制的后缀
- 例:
0:0:0:0:0:0:128.10.2.1
再使用零压缩即可得:::128.10.2.1
- 例:
- CIDR 的斜线表示法仍然可用
- 每个 16 位的值用 16 进制表示,各值之间用冒号分隔
7.3 IPv6 首部
一、IPv6 数据报结构
- 首部长度固定 40 字节,称为基本首部 (base header)
- 取消了不必要的功能,首部字段数减少到 8 个
- 取消了首部的校验和字段,加快了路由器处理数据报的速度
- 在基本首部的后面允许有零个或多个扩展首部
- 所有的扩展首部和数据合起来叫做数据包的有效载荷 (payload)
二、基本首部
- 版本:version:4 位,协议版本,对 IPv6 该字段为 6
- 流量类别 traffic class:8 位,用于区分 IPv6 数据报的类别或优先级
- 流标号 flow label:20 位:“流” 是从特定源点到特定重点的一系列数据报,“流”所经过路径上的路由器都保证制定的服务质量,所有属于同一个流的数据报具有相同的流标号
- 有效载荷长度 (payload length):16 位,表示数据报除基本首部以外的长度(字节数),最大值位 64KB
- 下一个首部 (next header):8 位,相当于 IPv4 的协议字段或可选字段
- 跳数限制 (hop limit):8 位,数据报发出时设定跳数限制,路由器在转发数据报时将该字段减 1,当其为 0 时,将此数据报丢弃
- 源地址:128 位,数据报的发送方的 IP 地址
- 目的地址 128 位:数据报的接收方的 IP 地址
三、扩展首部
- 简介
- 原 IPv4 首部中的选项功能都放在 IPv6 扩展首部中
7.4 IPv4 向 IPv6 过渡
一、简介
第八章 无线局域网 (WLAN)
8.1 概述
- 802.11 网络有两种使用模式
- 基础设施模式 / 有架构模式 (Infrastructure Mode)
- 每个客户端与一个接入点 (AP – Access Point) 连接,接入点与其他网络连接
- 几个接入点可通过有线网络连接形成扩展的 802.11 网络
- 基本服务集 (BSS, Basic Service Set):一个基站 (AP) + 若干个移动站
- BSS 内的站之间可通信,与 BSS 外的通信需通过基站进行
- 每个 AP 分配一个 ≤32 字节的服务集标识符 SSID 和一个信道(SSID: Sevice Set Identifier:相当于该基本服务集的名字)
- 自组织网络模式 (ad hoc mode)
- 多台计算机相互连接形成网络,相互间发送帧
- 无接入点
- 基础设施模式 / 有架构模式 (Infrastructure Mode)
- Wi-Fi 与 802.11
8.2 IEEE 802.11 的物理层
- 无线频段
- 多数无线频段由政府管理和分配,需 license 才可使用
- 预留了无需许可即可免费使用的频段
- ISM 频段:ISM–Industrial, Scientific, Medical
- 限制:发射功率