计算机网络
Chapter 1:计算机网络的概念
1.1 概念、组成、功能、分类
1.1.1 计算机网络的概念
- 计算机网络:是一个将分散的、具有独立功能的计算机系统,通过通信设备与线路连接起来,由功能完善的软件实现资源共享和信息传递的系统
- 计算机网络是互连的、自治的计算机集合
- 互联:互连互通,使用通信链路
- 自治:无主从关系
1.1.2 计算机网络的功能
- 数据通信:连通性
- 资源共享:硬件、软件、数据
- 分布式处理:多台计算机各自承担同一工作任务的不同部分
- 提高可靠性:一台计算机宕机了,可以由另一台计算机替代它
- 负载均衡:多台计算机相互配合
1.1.3 计算机网络的组成
组成部分:硬件、软件、协议
工作方式:
- 边缘部分:主机所在的部分,用户可以直接使用
C/S方式
P2P方式
- 核心部分:为边缘部分服务
- 边缘部分:主机所在的部分,用户可以直接使用
功能组成
- 通信子网:实现数据通信
- 资源子网:实现资源共享、数据处理
1.1.4 计算机网络的分类
按分布范围分:
- 广域网WAN:交换技术
- 城域网MAN
- 局域网WAN
- 个人区域网PAN:广播技术
按使用者分:
- 公用网:交钱就能进,如电信网
- 专用网:必须有特殊身份,如军队使用的网络
按交换技术分:
- 电路交换
- 报文交换
- 分组交换
按拓扑结构分:
- 总线型
- 星型
- 环型
- 网状型
按传输技术分:
- 广播式网络:共享公共通信信道
- 点对点网络:使用分组存储转发、路由选择的机制
1.1.5 总结
1.2 标准化工作及相关组织
1.2.1 标准的分类
- 法定标准
- 由权威机构制定的、正式的、合法的标准
- 如:OSI
- 事实标准
- 某些公司的产品在竞争中占据了主流,时间长了,这些产品中的技术和协议就成了标准
- 如:TCP/IP
1.2.2 RFC
- RFC:Request For Comments,是因特网标准的形式
- RFC上升为因特网正式标准的四个阶段
- 因特网草案(Internet Draft):这个阶段还不是RFC文档
- 建议标准(Proposed Standard):从这个阶段开始成为RFC文档
- 草案标准(Draft Standard):交给IEFT、IAB进行审核
- 因特网标准(Internet Standard):审核通过后,就成为因特网标准
1.2.3 标准化工作的相关组织
- 国际标准化组织ISO:
- OSI参考模型,HDLC协议
- 国际电信联盟ITU:
- 制定通信规则
- 电气电子工程师学会IEEE:
- 学术机构、IEEE802系列标准、5G
- Internet工程任务组IETF:
- 负责因特网相关标准的制定
1.2.4 总结
1.3 速率相关的性能指标
1.3.1 速率
速率、数据率、数据传输速率、比特率
- 连接在计算机网络上的主机在数字信道上传送数据位数的速率
- 单位:b/s, kb/s, Mb/s, Gb/s, Tb/s,依次递增103
1.3.2 带宽
带宽:单位时间内,从网络中某一点到另一点所能通过的最高数据率
- 网络设备所能支持的最高速度
- 单位:b/s, kb/s, Mb/s, Gb/s
带宽是链路的发送端发送数据的速率
- 传播速率一般都是2×108 m/s
带宽变大,会使链路发送数据的速率变大,但是不会影响数据传播的速率
1.3.3 吞吐量
吞吐量:单位时间内,通过某个网络(/信道/接口)的数据量
- 单位:b/s, kb/s, Mb/s
吞吐量受网络的带宽、网络的额定速率的限制
- 链路带宽:理想情况下,接收方接受数据的最高速率
- 吞吐量:多个发送方发来数据的速率之和,一般小于链路带宽
1.4 时延、时延带宽积、RTT、利用率
1.4.1 时延
时延:数据从网络的一端传送到另一端所需的时间,也叫延迟/迟延,单位是s
发送时延(传输时延):
- 从发送分组的第一个bit算起,到该分组的最后一个bit发送完毕的所需时间
- \(发送时延 = \frac{数据长度}{信道带宽(发送速率)}\)
- 发生在主机内
- 高速链路:提高了信道带宽(发送速率)
传播时延:
- 电磁波在信道上传播一定距离所需的时间
- \(传播时延 = \frac{信道长度}{电磁波在信道上的传播速率}\)
- 发生在信道上
排队时延:
- 等待输出/入链路所需的时间
- 发生在路由器,类似过安检排队
处理时延:
- 处理数据所需的时间
- 发送在路由器,类似过安检时的扫描
1.4.2 时延带宽积
- \(时延带宽积 = 传播时延 × 带宽\),单位为bit
- 也称为:以比特为单位的链路长度,即某段线路现在有多少比特,链路容量
1.4.3 往返时延RTT
- RTT:从发送方发送数据开始,到发送方收到接收方的确认(接收方收到数据后立即发送确认),总共经历的时延
- RTT越大,在收到确认之前,可发送的数据越多
- \(RTT = 传播时延×2+末端处理时间\)
- RTT不包括发送时延(传输时延)
1.4.4 利用率
- 信道利用率:\(信道利用率 = \frac{有数据通过的时间}{(有+无)数据通过的时间}\)
- 网络利用率:信道利用率的加权平均值
1.4.5 总结
1.5 分层结构、协议、接口、服务
1.5.1 分层的基本原则
- 各层之间相互独立,每层只实现一种相对独立的功能
- 每层之间界面自然清晰,易于理解,相互交流尽可能少
- 结构上可分割开,每层都采用最合适的技术来实现
- 保持下层对上层的独立性,上层单向使用下层提供的服务
- 整个分层结构应该能促进标准化工作
1.5.2 概念
- 实体:第n层中的活动元素称为n层实体
- 对等实体:同一层的实体
- 协议:为进行网络中的对等实体数据交换而建立的规则、标准、约定,称为网络协议【水平】
- 语法:规定传输数据的格式
- 语义:规定所要完成的功能
- 同步:规定各种操作的顺序
- 接口(访问服务点SAP):上层使用下层服务的入口
- 服务:下层为相邻上层提供的功能调用【垂直】
- SDU服务数据单元:为完成用户所要求的功能而应传送的数据
- PCI协议控制信息:控制协议操作的信息
- PDU协议数据单元:对等层次之间传送的数据单位
1.5.3 概念总结
1.5.4 总结
1.6 OSI参考模型
1.6.1 OSI提出的背景
- 目的:支持异构网络系统的互联互通
- ISO在1984年提出开放系统互联(OSI)参考模型
- 理论成功,市场失败
- 专家没有实操的经验
- OSI实现复杂,运行效率低
- 制定时间过长,没有及时进入市场
- 层次划分不合理,有些功能会在多个层次中多次出现
1.6.2 OSI七层结构
1.6.3 OSI参考模型解释通信过程
1.6.4 OSI不同分层
1.6.4.1 应用层
- 应用层:用户与网络的界面,即所有能和用户交互产生网络流量的程序
- 典型应用层服务
- 文件传输:FTP
- 电子邮件:SMTP
- 万维网:HTTP
1.6.4.2 表示层
- 表示层:用于处理在两个通信系统中交换信息的表示方式(语法和语义)
- 功能
- 数据格式的变换:翻译官
- 数据加密解密
- 数据压缩和恢复
1.6.4.3 会话层
- 会话层:向表示层实体/用户进程提供建立连接并在连接上有序地传输数据
- 会话,也叫建立同步SYN
- 功能:
- 建立、管理、终止会话
- 使用校验点,可使会话在通信失效时,从校验点/同步点继续恢复通信,实现数据同步
- 适用于传输大文件
- 主要协议:ADSP、ASP
1.6.4.4 传输层
- 负责主机中两个进程的通信,即端到端的通信。传输单位是报文段/用户数据报
- 功能
- 可靠传输、不可靠传输
- 差错控制
- 流量控制:接收端控制发送端发送的速率
- 复用分用
- 复用:多个应用层进程可同时使用下面运输层的服务
- 分用:运输层把收到的信息分别交付给上面应用层中相应的进程
- 主要协议:TCP、UDP
1.6.4.5 网络层
- 网络层:把分组从源端传送到目的端,为分组交换网上的不同主机提供通信服务
- 传输单位:数据报
- 功能
- 路由选择:最佳路径
- 差错控制
- 流量控制:协调发送端和接收端的速度,限制发送方的速度
- 拥塞控制:若所有结点都来不及接受分组,而要丢弃大量分组的话,网络就处于拥塞状"态。因此要采取一定措施,缓解这种拥塞
- 主要协议:IP、IPX、ICMP、IGMP、ARP、RARP、OSPF
1.6.4.6 数据链路层
- 数据链路层:把网络层传下来的数据报组装成帧
- 传输单位:帧
- 功能:
- 成帧:定义帧的开始和结束
- 差错控制:帧错、位错
- 流量控制
- 访问(接入)控制:控制对信道的访问
- 主要协议:SDLC、HDLC、PPP、STP
1.6.4.7 物理层
- 物理层:在物理媒体上实现比特流的透明传输
- 传输单位:比特
- 透明传输:不管所传的数据是什么比特组合,都能在链路上传送
- 功能:
- 定义接口特性
- 定义传输模式
- 单工:只有一个人能够说话
- 半双工:两个人均能说话,但同一时间只有一个人说话
- 双工:两个人均能说话
- 定义传输速率
- 比特同步
- 比特编码
- 主要协议:Rj45、802.3
1.6.3 总结
1.7 TCP/IP参考模型、5层参考模型
1.7.1 OSI与TCP/IP的共同点
- 都分层
- 基于独立的协议栈的概念
- 可以实现异构网络互联
1.7.2 OSI与TCP/IP的不同点
1.7.3 5层参考模型
1.7.4 5层参考模型的数据封装与解封装
1.8 第一章知识总结
Chapter 2:物理层
2.1 物理层的基本概念
- 物理层:解决如何在连接各种计算机的传输媒体上传输数据比特流,而不是具体的传输媒体
- 主要任务:确定与传输媒体接口有关的一些特性【定义标准】
- 机械特性:定义物理连接的特性,规定物理连接时所采用的规格、接口形状、引线数目、引脚数量、排列情况
- 电气特性:规定传输二进制位时,线路上信号的电压范围、阻抗匹配、传输速率、距离限制等
- 功能特性:指明某条线上出现某一电平表示何种意义,接口部件的信号线的用途
- 规程特性(过程特性):定义各条物理线路的工作规程和时序关系
2.2 数据通信的基础知识
2.2.1 典型的数据通信模型
2.2.2 相关术语
通信的目的:传送消息
数据:传送信息的实体,通常是有意义的符号序列
信号:数据的电气/电磁的表现,是数据在传输过程中的存在形式
- 数字信号:代表消息的参数取值是离散的
- 模拟信号:代表消息的参数取值是连续的
信源:产生和发送数据的源头
信宿:接收数据的终点
信道:信号传输的媒介。一般用来表示向某一个方向传送信息的介质,因此一条通信线路往往包含一条发送信道和一条接受信道
2.2.3 三种通信方式
- 单工通信:只有一个方向的通信而没有反方向的交互,仅需要一条信道
- 半双工通信:通信的双方都可以发送或接收消息,但任何一方都不能同时发送和接收,需要两条信道
- 全双工通信:通信双方可以同时发送和接收消息,也需要两条信道
2.2.4 两种数据传输方式
- 串行传输:速度慢,费用低,适合远距离
- 并行传输:速度快,费用高,适合近距离,用于计算机内部数据传输
2.3 码元、波特、速率、带宽(计算)
2.3.1 码元
- 码元是指用一个固定时长的信号波形(数字脉冲),代表不同离散数值的基本波形,是数字通信中数字信号的计量单位,这个时长内的信号称为k进制码元,而该时长称为码元宽度
- 当码元的离散状态有M个时(M大于2),此时码元为M进制码元
- 1码元可以携带多个比特的信息量。例如,在使用二进制编码时,只有两种不同的码元,一种代表0状态,另一种代表1状态
2.3.2 速率、波特、带宽
- 速率也叫数据率,是指数据的传输速率,表示单位时间内传输的数据量。可以用码元传输速率和信息传输速率表示。
- 码元传输速率:别名码元速率、波形速率、调制速率、符号速率等,它表示单位时间内数字通信系统所传输的码元个数(也可称为脉冲个数或信号变化的次数)
- 单位是波特(Baud)
- 1波特:表示数字通信系统每秒传输一个码元,1Baud = 1码元/s
- 这里的码元可以是多进制的,也可以是二进制的,但码元速率与进制数无关
- 信息传输速率:别名信息速率、比特率等,表示单位时间内数字通信系统传输的二进制码元个数(即比特数)
- 单位:比特/秒(b/s)
- 关系:若一个码元携带n bit的信息量,则M Baud的码元传输速率所对应的信息传输速率为\(M × n\) bit/s
- 带宽:表示在单位时间内从网络中的某一点到另一点所能通过的“最高数据率”,常用来表示网络的通信线路所能传输数据的能力
- 单位:比特/秒(b/s)
2.3.3 练习题
2.4 奈氏准则、香农定理(计算)
2.4.1 失真
影响失真程度的因素:
- 码元传输速率
- 信号传输距离
- 噪声干扰
- 传输媒体质量
2.4.2 失真的一种现象:码间串扰
- 信道带宽:信道能够通过的最高频率和最低频率之差
- 码间串扰:接收端收到的信号波形失去了码元之间清晰界限的现象
2.4.3 奈氏准则(奈奎斯特定理):极限码元传输速率
奈氏准则:在理想低通(无噪声,带宽受限)条件下,为了避免码间串扰,极限码元传输速率为2W (Baud)
- W:信道带宽,单位是Hz
理想低通信道下的极限数据传输率:2W log2V (b/s)
- W:信道带宽,单位是Hz
- V:几种码元/码元的离散电平数目
结论:
- 在任何信道中,码元传输的速率是有上限的。若传输速率超过此上限,就会出现严重的码间串扰问题,使接收端对码元的完全正确识别成为不可能
- 信道的频带越宽(即能通过的信号高频分量越多),就可以用更高的速率进行码元的有效传输
- 奈氏准则给出了码元传输速率的限制,但并没有对信息传输速率给出限制
- 由于码元的传输速率受奈氏准则的制约,所以要提高数据的传输速率,就必须设法使每个码元能携带更多个比特的信息量,这就需要采用多元制的调制方法
例:
2.4.4 香农定理:数据传输速率
噪声存在于所有的电子设备和通信信道中。由于噪声随机产生,它的瞬时值有时会很大,因此噪声会使接收端对码元的判决产生错误。但是噪声的影响是相对的,若信号较强,那么噪声影响相对较小。因此,信噪比就很重要
信噪比=\(\frac{信号的平均功率}{噪声的平均功率}\),记为S/N,用分贝db作为度量单位
- 信噪比(dB) = 10 log10(S/N)
香农定理:在带宽受限且有噪声的信道中,为了不产生误差,信息的数据传输速率有上限值
- 信道的极限数据传输速率 = W log2(1+S/N) (b/s)
- W:信道带宽,单位是Hz
- S/N:信噪比
- S:信道所传信号的平均功率
- N:信道内的高斯噪声功率
结论:
- 信道的带宽或信道中的信噪比越大,则信息的极限传输速率就越高
- 对一定的传输带宽和一定的信噪比,信息传输速率的上限就确定了
- 只要信息的传输速率低于信道的极限传输速率,就一定能找到某种方法来实现无差错的传输
- 香农定理得出的为极限信息传输速率,实际信道能达到的传输速率要比它低不少
- 从香农定理可以看出,若信道带宽w或信噪比S/N没有上限(不可能),那么信道的极限信息传输速率也就没有上限
例:
2.4.5 奈氏准则与香农定理
例:
2.4.6 采样定理
\[ f_{采样频率} ≥ 2f_{信号最高频率} \]
- 对于一个正弦波,我们只需要确定两个点,就可以确定其波形
- 因此只需要在一个正弦波周期中,取到两个点,就可以得到正弦波的波形
- 故:采样频率 ≥ 2信号最高频率
2.5 编码&调制
2.5.1 基带信号与宽带信号
- 信道:信号的传输媒介。一般用来表示向某一个方向传送信息的介质,因此一条通信线路往往包含一条发送信道和一条接收信道
- 按传输信号分:模拟信道、数字信道
- 按传输介质分:无线信道、有线信道
- 信道上传输的信号
- 基带信号Baseband:将数字信号1和0直接用两种不同的电压表示,再送到数字信道上去传输(基带传输)
- 来自信源的信号,像计算机输出的代表各种文字或图像文件的数据信号都属于基带信号
- 基带信号就是发出的直接表达了要传输的信息的信号,比如我们说话的声波就是基带信号
- 宽带信号Passband:将基带信号进行调制后形成的频分复用模拟信号,再传送到模拟信道上去传输(宽带传输)
- 把基带信号经过载波调制后,把信号的频率范围搬移到较高的频段以便在信道中传输(即仅在一段频率范围内能够通过信道)
- 在传输距离较近时,计算机网络采用基带传输方式(近距离衰减小,从而信号内容不易发生变化)
- 在传输距离较远时,计算机网络采用宽带传输方式(远距离衰减大,即使信号变化大也能最后过滤出来基带信号)
- 基带信号Baseband:将数字信号1和0直接用两种不同的电压表示,再送到数字信道上去传输(基带传输)
2.5.2 编码与调制
2.5.3 数字数据 编码为 数字信号
非归零编码【NRZ】:高1低0
- 编码容易实现
- 但没有检错功能,且无法判断一个码元的开始和结束,以至于收发双方难以保持同步
归零编码【RZ】:信号电平在一个码元之内都要恢复到0
反向不归零编码【NRZI】:信号电平翻转表示0,不变表示1
- 需要时钟信号
曼彻斯特编码:
- 规则:将一个码元分成两个相等的间隔,前一个间隔为低电平后一个间隔为高电平表示码元1;码元0则正好相反。也可以采用相反的规定
- 该编码的特点是在每一个码元的中间出现电平跳变,位中间的跳变既作时钟信号(可用于同步)又作数据信号
- 但它所占的频带宽度是原始的基带宽度的两倍
- 每一个码元都被调成两个电平,所以数据传输速率只有调制速率的1/2
差分曼彻斯特编码:同1异0
- 规则:常用于局域网传输,其规则是:若码元为1,则前半个码元的电平,与上一个码元的后半个码元的电平相同,若为0,则相反
- 该编码的特点是,在每个码元的中间,都有一次电平的跳转,可以实现自同步,且抗干扰性强于曼彻斯特编码
4B/5B编码
- 比特流中插入额外的比特以打破连串的0或1,就是用5个比特来编码4个比特的数据,之后再传给接收方,因此称为4B/5B
- 编码效率为80%
2.5.4 数字数据 调制为 模拟信号
- 数字数据调制技术在发送端将数字信号转换为模拟信号,而在接收端将模拟信号还原为数字信号,分别对应于调制解调器的调制和解调过程
- 分为:调幅(ASK)、调频(FSK)、调相(PSK)、调幅+调相(QAM)
2.5.5 模拟数据 编码为 数字信号
- 计算机内部处理的是二进制数据,处理的都是数字音频,所以需要将模拟音频通过采样、量化转换成有限个数字表示的离散序列(即实现音频数字化)
- 最典型的例子就是对音频信号进行编码的脉码调制(PCM),在计算机应用中,能够达到最高保真水平的就是PCM编码,被广泛用于素材保存及音乐欣赏,CD、DVD以及我们常见的WAV文件中均有应用。它主要包括三步:
- 抽样:对模拟信号进行周期性扫描
- 把时间上连续的信号变为时间上离散的信号
- 为了使所得的离散信号能够无失真的代表被抽样的模拟数据,要使用采样定理进行采样
- f采样频率 ≥ 2f信号最高频率
- 量化:把抽样取得的电平幅值按照一定的分级标准转化为对应的数字值,并取整数。
- 把连续的电平幅值转化为离散的数据量
- 编码:把量化的结果转化为与之对应的二进制编码
- 抽样:对模拟信号进行周期性扫描
2.5.6 模拟数据 调制为 模拟信号
- 为了实现传输的有效性,可能需要较高的频率
- 这种调制方式还可以使用频分复用技术,充分利用带宽资源
- 在电话机和本地交换机所传输的信号是采用模拟信号传输模拟数据的方式;模拟的声音数据是加载到模拟的载波信号中传输的
2.5.7 总结
2.6 复用Multiplexing
2.6.1 频分复用FDMA:Frequency Division Multiplexing
- 一人一个频段,一起发送
- 缺点:相邻子信道之间需要有保护频段
2.6.2 正交频分复用OFDM:Orthogonal Frequency Division Multiplexing
- 相邻子信道之间叠在一起,不需要保护频段
- 使用示例:4G、5G、WIFI
2.6.3 时分复用TDMA:Time Division Multiplexing
- 一人一个字节,轮流发送
2.6.4 码分复用CDMA:Code Division Multiplexing
- 大家的时间、频率是重叠在一起的,同时发送,但是同一段数据对不同人表示的含义不一样
- 每个人使用的0/1的码型,两两之间是正交的
- 正交:对应位相乘,然后相加,得到的和为0
- 具体见3.5.1.3.5
2.7 各种网络
2.7.1 固定电话网
2.7.1.1 电话网
- 电话机和端局之间:本地环路Local loop
- 通信的两个方向是叠加在同一根线上的
- 通常为模拟电路
- 交换机和交换机之间:中继线trunk
- 中继线都是四线制的,通信的两个方向是分开的
- 通常为数字电路
2.7.1.2 调制解调器 Modems
- 由于中继线是数字化的,因此分配给每个用户的通话频率是固定的,不能超过4kHz
- 需要将基带信号调制为4kHz以内的音频信号,在电话线上进行传输
- modems:调制解调器
2.7.1.3 ADSL
- ADSL:在本地环路上,低频部分用于打电话,高频部分用于上网
- 高频部分通过频分复用,分为上传/下载部分
2.7.1.4 FTTH
- FTTH:电信局通过一根光纤连接到分光器,由分光器将数据分发给家家户户
- 家庭到电信局的数据:发给分光器,然后走共享光纤
- 电信局到家庭的数据:走共享光纤发给分光器,然后广播
- 分光器:是无源设备
2.7.1.5 T1
2.7.1.6 SONET、SDH
- 将一个2M的电路,一步甩到几个G的电路上跑
2.7.2 移动通信网
采用技术 | 支持的通信 | 复用方法 | 标准 | |
---|---|---|---|---|
1G | 模拟技术 | 话音通信 | ||
2G | 数字技术 | 话音通信 | 码分复用 | GSM(欧洲)、CDMA(北美) |
3G | 数字技术 | 话音、数据通信 | CDMA标准的码分复用 | WCDMA(欧洲, 中国联通)
CDMA-2000(北美, 中国电信) TDSCDMA(中国移动) |
4G | 数字技术 | 数据通信 | 正交频分复用OFDM | TD-LTE、FDD-LTE |
5G | 数字技术 | 数据通信 | 都会用到 |
2.8 物理层的传输介质
2.8.1 传输介质及分类
- 传输介质
- 传输介质也称传输媒体/传输媒介,它就是数据传输系统中在发送设备和接收设备之间的物理通路
- 传输媒体并不是物理层
- 传输媒体在物理层的下面,因为物理层是体系结构的第一层,因此有时称传输媒体为0层
- 在传输媒体中传输的是信号,但传输媒体并不知道所传输的信号代表什么意思。但物理层规定了电气特性,因此能够识别所传送的比特流
- 传输介质的分类
- 导向性传输介质:
- 电磁波被导向沿着固体媒介(铜线/光纤)传播
- 非导向性传输介质:
- 自由空间,介质可以是空气、真空、海水灯
- 导向性传输介质:
2.8.2 导向性传输介质:双绞线
- 双绞线是古老、又最常用的传输介质
- 它由两根采用一定规则并排绞合的、相互绝缘的铜导线组成
- 绞合可以减少对相邻导线的电磁干扰
- 为了进一步提高抗电磁干扰能力,可在双绞线的外面再加上一个由金属丝编织成的屏蔽层,这就是屏蔽双绞线(STP) ,无屏蔽层的双绞线就称为非屏蔽双绞线(UTP)
- 特点:
- 双绞线价格便宜,是最常用的传输介质之一,在局域网和传统电话网中普遍使用
- 模拟传输和数字传输都可以使用双绞线,其通信距离一般为几公里到数十公里
- 距离太远时,对于模拟传输,要用放大器放大衰减的信号;对于数字传输,要用中继器将失真的信号整形
2.8.3 导向性传输介质:同轴电缆
- 同轴电缆由导体铜质芯线、绝缘层、网状编织屏蔽层和塑料外层构成
- 按特性阻抗数值的不同,通常将同轴电缆分为两类:50Ω同轴电缆和75Ω同轴电缆。
- 50Ω同轴电缆主要用于传送基带数字信号,又称为基带同轴电缆,它在局域网中得到广泛应用
- 75Ω同轴电缆主要用于传送宽带信号,又称为宽带同轴电缆,它主要用于有线电视系统
- 同轴电缆 vs 双绞线
- 由于外导体屏蔽层的作用,同轴电缆抗干扰特性比双线好,被广泛用于传输较高,速率的数据,其传输距离更远
- 但价格较双绞线贵
2.8.4 导向性传输介质:光纤
光纤通信就是利用光导纤维(简称光纤)传递光脉冲来进行通信。有光脉冲表示1,无光脉冲表示0
而可见光的频率大约是10MHz,因此光纤通信系统的带宽远远大于目前其他各种传输媒体的带宽
光纤主要由纤芯(实心的!)和包层构成
- 光波通过纤芯进行传导,包层较纤芯有较低的折射率
- 当光线从高折射率的介质射向低折射率的介质时,其折射角将大于入射角
- 因此,如果入射角足够大,就会出现全反射,即光线碰到包,层时候就会折射回纤芯、这个过程不断重复,光也就沿着光纤传输下去
多模光纤与单模光纤
特点:
- 传输损耗小,中继距离长,对远距离传输特别经济
- 抗雷电和电磁干扰性能好
- 无串音干扰,保密性好,也不易被窃听或截取数据
- 体积小,重量轻
2.8.5 非导向性传输介质
- 无线电波:
- 信号向所有方向传播
- 较强穿透能力,可传远距离
- 广泛应用于通信领域
- 微波:
- 信号固定方向传播
- 微波通信频率较高、频段范围宽,因此数据率很高
- 应用于地面微波接力通信、卫星通信
- 卫星通信:
- 优点:通信容量大、距离远、覆盖广、广播通信和多址通信
- 缺点:传播时延长(250~270ms)、受气候影响大、误码率高、成本高
- 红外线、激光:
- 信号固定方向传播
- 把要传输的信号分别转换为各自的信号格式,即红外信号和激光信号,再向空间中传播
2.8.6 总结
2.9 物理层设备
2.9.1 中继器
- 诞生原因:由于存在损耗,在线路上传输的信号功率会逐渐衰减,衰减到一定程度时将造成信号失真,因此会导致接收错误
- 中继器的功能:对信号进行再生和还原,对衰减的信号进行放大,保持与原数据相同,以增加信号传输的距离,延长网络的长度
- 中继器的两端:
- 两端的网络部分是网段,而不是子网,适用于完全相同的两类网络的互连,且两个网段速率要相同
- 中继器只将任何电缆段上的数据发送到另一段电缆上,它仅作用于信号的电气部分,并不管数据中是否有错误数据或不适于网段的数据
- 两端可连相同媒体,也可连不同媒体
- 中继器两端的网段一定要是同一个协议。(中继器不会存储转发)
- 5-4-3规则:
- 网络标准中都对信号的延迟范围作了具体的规定,因而中继器只能在规定的范围内进行,否则会网络故障
- 只能有最多不超过5个网段,最多有4个物理层的设备,只有3个段可以挂接计算机
2.9.2 集线器(多口中继器)
- 集线器的功能:对信号进行再生放大转发,对衰减的信号进行放大,接着转发到其他所有(除输入端口外)处于工作,状态的端口上,以增加信号传输的距离,延长网络的长度
- 不具备信号的定向传送能力,是一个共享式设备【广播】
2.10 物理层总结
Chapter 3:数据链路层
3.1 数据链路层功能概述
3.1.1 数据链路层的相关概念
- 结点:主机、路由器
- 链路:网络中两个结点之间的物理通道
- 链路的传输介质主要有双绞线、光纤和微波
- 链路分为有线链路、无线链路。
- 数据链路 :网络中两个结点之间的逻辑通道,把实现控制数据传输协议的硬件和软件加到链路上就构成数据链路
- 帧:链路层的协议数据单元,封装网络层数据报
- 数据链路层负责通过一条链路从一个结点向另一个物理链路直接相连的相邻结点传送数据报
3.1.2 数据链路层的功能
数据链路层在物理层提供服务的基础上向网络层提供服务,其最基本的服务是将源自网络层来的数据可靠地传输到相邻节点的目标机网络层。其主要作用是加强物理层传输原始比特流的功能,将物理层提供的可能出错的物理连接改造成为逻辑上无差错的数据链路,使之对网络层表现为一条无差错的链路
- 为网络层提供服务:
- 无确认无连接服务:通信质量好的有线通信
- 有确认无连接服务:无线通信
- 有确认面向连接服务:无线通信
- 有连接一定有确认
- 链路管理:
- 连接的建立、维持、释放
- 用于面向连接的服务
- 组帧
- 流量控制
- 限制发送方
- 差错控制
- 帧错
- 位错
3.2 封装成帧 & 透明传输
3.2.1 封装成帧
- 封装成帧:在一段数据的前后部分添加首部和尾部,这样就构成了一个帧。接收端在收到物理层上交的比特流后,就能根据首部和尾部的标记,从收到的比特流中识别帧的开始和结束
- 首部和尾部包含很多控制信息,其中一个重要的作用为:帧定界(确定帧的界限)
- 帧同步:接收方应当能从接收到的二进制比特流中区分出帧的起始和终止
3.2.2 透明传输
- 透明传输:指不管所传的数据是什么样的比特组合,都应当能够在链路上传输。因此,链路层就“看不见”有什么妨碍数据传输的东西
- 当所传的数据中的比特组合恰巧与某一个控制信息完全一样时,就必须采取适当的措施,使得接收方不会将这样的数据误认为时某种控制信息。这样才能保证数据链路层的传输是透明的
3.2.3 组帧的四种方法
3.2.3.1 字符计数法
- 帧首部使用一个计数字段(第一个字节,8位)来表明帧内字符(节)数
- 缺点:一旦第一个字节出错,后面所有的帧都会跟着出错
3.2.3.2 字符(节)填充法
- SOH和EOT具体指什么,根据具体的协议而定
- 当传送的帧由ASCII码文本文件组成时,不管键盘上输入的是什么字符,都可以放在帧里传过去,即透明传输
- 当传送的帧是由非ASCII码的文本文件组成时(二进制代码或图像等),就要采用字符填充方法实现透明传输
- 字符填充法:在数据中的EOT/SOH前方添加一个转义字符ESC
3.2.3.3 零比特填充法(重点)
- 发送端:扫描整个信息字段,只要连续5个1,就立即填入1个0
- 接收端:先找到标志字段确定边界,再对比特流进行扫描,发现连续5个1时,就把后面的0删除
3.2.3.4 违规编码法
- 用两个编码中不会用到的电平,表示帧的开始和结束
- 目前普遍使用的帧同步法是:比特填充和违规编码
3.3 差错控制
3.3.1 检错编码
3.3.1.1 差错从何而来
- 概括来说,传输中的差错都是由于噪声引起的
- 全局性差错:由于线路本身电气特性所产生的随机噪声(热噪声),是信道固有的,随机存在的
- 解决办法:提高信噪比来减少或避免干扰(对传感器下手)
- 局部性:外界特定的短暂原因所造成的冲击噪声,是产生差错的主要原因。
- 解决办法:通常利用编码技术来解决
- 差错的分类
- 位错:比特位出错,1变成0,0变成1
- 帧错:【#1】-【#2】-【#3】
- 帧丢失:【#1】-【#3】
- 帧重复:【#1】-【#2】-【#2】-【#3】
- 帧失序:【#1】-【#3】-【#2】
3.3.1.2 数据链路层的差错控制(比特错)
- 差错控制(比特错)
- 检错编码:奇偶校验码、循环冗余码CRC
- 纠错编码:海明码
- 数据链路层的编码 vs 物理层的编码
- 数据链路层编码和物理层的数据编码与调制不同
- 物理层编码针对的是单个比特,解决传输过程中比特的同步等问题,如曼彻斯特编码
- 而数据链路层的编码针对的是一组比特,它通过冗余码的技术实现一组二进制比特串在传输过程是否出现了差错
- 冗余编码
- 在数据发送之前,先按某种关系附加上一定的冗余位,构成一个符合某一规则的码字后再发送
- 当要发送的有效数据变化时,相应的冗余位也随之变化,使码字遵从不变的规则
- 接收端根据收到码字是否仍符合原规则,从而判断是否出错。
3.3.1.2.1 检错编码:奇偶校验码
- 奇偶校验码:n-1位信息元,1位校验元
- 奇校验码:”1“的个数是奇数
- 偶校验码:”1“的个数是偶数
- 注意,这里的个数包含校验元本身
- 特点:只能检查出奇数个比特错误,检错能力位50%
3.3.1.2.2 检错编码:CRC循环冗余码(重点)
最终发送的数据:要发送的数据 + 帧检验序列FCS
计算冗余码
- 加0:若生成多项式的G(x)的阶为r,则加r个0
- 模2除法:数据加0后除以多项式,余数为冗余码/FCS/CRC校验码的比特序列
接收端检测的过程:
- 把收到的每一个帧都除以同样的除数,然后检查得到的余数R
- 余数为0,判定这个帧没有差错,接受。
- 余数为不为0,判定这个帧有差错(无法确定到位),丢弃
- FCS的生成以及接收端CRC检验都是由硬件实现,处理很迅速,因此不会延误数据的传输
- 把收到的每一个帧都除以同样的除数,然后检查得到的余数R
在数据链路层仅仅使用循环冗余检验CRC差错检测技术,只能做到对帧的无差错接收,即“凡是接收端数据链路层接受的帧,我们都能以非常接近于1的概率认为这些帧在传输过程中没有产生差错”。接收端丢弃的帧虽然曾收到了,但是最终还是因为有差错被丢弃。“凡是接收端数据链路层接收的帧均无差错”
- 可靠传输:数据链路层发送端发送什么,接收端就收到什么
- 链路层使用CRC检验,能够实现无比特差错的传输,但这还不是可靠传输
3.3.2 纠错编码:海明码(重点)
海明码:发现双比特错,纠正单比特错
海明不等式:\(2^r \ge k+r+1\)
- \(r\):冗余信息位
- \(k\):信息位
确定校验码和数据的位置
求校验码的值
- 要校验的位:
- 如1的二进制表示为0001,则P1要校验的位为:P1、D1(0011)、D2(0101)、D4(0111)、D5(1001)
- 如2的二进制表示为0010,则P2要校验的位为:P2、D1(0011)、D3(0110)、D4(0111)、D6(1010)
- 校验码的值
- 令所有要校验的位异或=0
- 要校验的位:
检错并纠错
- 令所有要校验的位异或运算
- 异或出来的结果逆序排列,所得结果即为出错的位置
3.3.3 总结
3.4 流量控制与可靠传输
较高的发送速度和较低的接收能力的不匹配,会造成传输出错,因此流量控制也是数据链路层的一项重要工作
3.4.1 流量控制与可靠传输机制
3.4.1.1 数据链路层的流量控制 与 传输层流量控制的区别
- 数据链路层的流量控制是:点对点的(两个相邻节点之间)
- 传输层的流量控制是:端到端的(两个主机之间)
- 数据链路层流量控制手段:接收方收不下就不回复确认
- 传输层流量控制手段:接收端给发送端一个窗口公告
3.4.1.2 流量控制的方法
停止-等待协议:每发送完一个帧就停止发送,等待对方的确认,在收到确认后再发送下一个帧
滑动窗口协议:链路层中,窗口的大小在发送过程中为固定值
- 后退N帧协议:GBN
- 选择重传协议:SR
协议 | 发送窗口大小 | 接收窗口大小 |
---|---|---|
停止-等待协议 | =1 | =1 |
后退N帧协议:GBN | >1 | =1 |
选择重传协议:SR | >1 | >1 |
3.4.1.3 可靠传输、流量控制、滑动窗口
- 可靠传输:发送端发啥,接收端收啥
- 流量控制:控制发送速率,使接收方有足够的缓冲空间来接收每一个帧
- 滑动窗口解决:
- 流量控制:收不下就不给确认,想发也发不了
- 可靠传输:发送方自动重传
3.4.2 停止-等待协议
- 为什么要有停止-等待协议?
- 除了比特出差错,底层信道还会出现丢包问题。
- 丢包:物理线路故障、设备故障、病毒攻击、路由信息错误等原因,会导致数据包的丢失
- 研究停等协议的前提?
- 虽然现在常用全双工通信方式,但为了讨论问题方便,仅考虑一方发送数据(发送方),一方接收数据(接收方)
- 因为是在讨论可靠传输的原理,所以并不考虑数据是在哪一个层次上传送的
- “停止-等待”就是每发送完一个分组就停止发送,等待对方确认,在收到确认后再发送下一个分组
- 停等协议有几种应用情况?
- 无差错情况&有差错情况
3.4.2.1 停止-等待协议:无差错情况
3.4.2.2 停止-等待协议:有差错情况
数据帧丢失 / 检测到帧出错
ACK丢失
ACK迟到
3.4.2.3 停止-等待协议:性能分析
优点:
- 简单
缺点:
- 信道利用率太低
3.4.2.4 信道利用率
信道利用率:发送方在一个发送周期内,有效地发送数据所需要的时间占整个发送周期的比率
- 信道利用率 = \((L / C)/T\)
- \(L\):\(T\)时间内发送\(L\)比特数据
- \(C\):发送方数据传输率
- \(T\):发送周期,从开始发送数据,到收到第一个确认帧为止
信道吞吐率 = 信道利用率 × 发送方的发送速率
3.4.2.5 总结
3.4.3 后退N帧协议 Go Back N
3.4.3.1 停止等待协议的弊端
- 信道利用率过低
3.4.3.2 后退N帧协议中的滑动窗口
- 发送窗口:发送方维持一组连续的允许发送的帧的序号
- 接收窗口:接收方维持一组连续的允许接收的帧的序号
3.4.3.3 GBN发送方
- 上层的调用
- 上层要发送数据时,发送方先检查发送窗口是否已满,如果未满,则产生一个帧并将其发送
- 如果窗口已满,发送方只需将数据返回给上层,暗示上层窗口已满。上层等一会再发送
- 实际实现中,发送方可以缓存这些数据,窗口不满时再发送帧
- 收到了一个ACK
- GBN协议中,对n号帧的确认采用累积确认的方式,标明接收方已经收到n号帧和它之前的全部帧。
- 超时事件
- 协议的名字为后退N帧/回退N帧,来源于出现丢失和时延过长帧时发送方的行为
- 就像在停等协议中一样,定时器将再次用于恢复数据帧或确认帧的丢失
- 如果出现超时,发送方重传所有已发送但未被确认的帧
3.4.3.4 GBN接收方
- 如果正确收到n号帧,并且按序,那么接收方为n帧发送一个ACK,并将该帧中的数据部分交付给上层
- 其余情况都丢弃帧,并为最近按序接收的帧重新发送ACK
- 接收方无需缓存任何失序帧,只需要维护一个信息:expectedseqnum (下一个按序接收的帧序号)
3.4.3.5 运行中的GBN协议
3.4.3.6 滑动窗口长度:发送窗口最大为\(2^{n}-1\),接收窗口为1
窗口大小和序号大小相比,窗口大小过大时,可能导致
- 接收方并不知道收到的0号帧是新的还是旧的
3.4.3.7 GBN协议重点总结
- 累计确认:ACK N表示0~N都已经正常收到
- 捎带确认:将确认帧放到接收方要发送的数据中
- 接收方只按顺序接收帧,不按序都丢弃
- 确认序列号最大的、按序到达的帧
- 发送窗口最大为\(2^{n}-1\),接收窗口大小为1
3.4.3.8 GBN协议性能分析
优点:
- 因连续发送数据帧而提高了信道利用率
缺点:
- 在重传时必须把原来已经正确传送的数据帧重传,是传送效率降低
3.4.3.9 总结
3.4.4 选择重传协议 Selective Repeat
3.4.4.1 GBN协议的弊端
- 累计确认 ==> 批量重传
- 解决方法:只重传出错的帧
- 设置单个确认,同时加大接收窗口,设置接收缓存,缓存乱序到达的帧
3.4.4.2 选择重传协议中的滑动窗口
3.4.4.3 SR发送方
上层的调用
- 从上层收到数据后,SR发送方检查下一个可用于该帧的序号,如果序号位于发送窗口内,则发送数据帧
- 否则就像GBN一样,要么将数据缓存,要么返回给上层之后再传输
收到了一个ACK
- 如果收到ACK,加入该帧序号在窗口内,则SR发送方将那个被确认的帧标记为已接收
- 如果该帧序号是窗口的下界(最左边第一个窗口对应的序号) ,则窗口向前移动到具有最小序号的未确认帧处
- 如果窗口移动了并且有序号在窗口内的未发送帧,则发送这些帧
超时事件
- 每个帧都有自己的定时器,一个超时事件发生后只重传一个帧
3.4.4.4 SR接收方
来者不拒(窗口内的帧)
- SR接收方将确认一个正确接收的帧而不管其是否按序
- 失序的帧将被缓存,并返回给发送方一个该帧的确认帧【收谁确认谁】,直到所有帧(即序号更小的帧)皆被收到为止
- 这时才可以将一批帧按序交付给上层,然后向前移动滑动窗口
3.4.4.5 运行中的SR
3.4.4.6 滑动窗口长度:发送窗口=接收窗口,最大为\(2^{n-1}\)
窗口大小和序号大小相比,窗口大小过大时,可能导致
- 接收方并不知道收到的0号帧是新的还是旧的
滑动窗口大小的设置:
- 发送窗口最好等于接收窗口
- 大了会溢出,小了没意义
- \(W_{Tmax}=W_{Rmax}=2^{n-1}\)
- \(n\)为编号的位数
3.4.4.7 SR协议重点总结
- 对数据逐一确认,收一个确认一个
- 只重传出错帧
- 接收方有缓存
- \(W_{Tmax}=W_{Rmax}=2^{n-1}\)
3.4.4.8 总结
3.5 介质访问控制
3.5.1 信道划分介质访问控制
3.5.1.1 传输数据使用的两种链路
- 点对点链路
- 两个相邻节点通过一个链路相连,没有第三者
- 应用:PPP协议,常用于广域网
- 广播式电路
- 所有主机共享通信介质
- 应用:早期的总线以太网、无线局域网,常用于局域网
- 典型拓扑结构:
- 总线型
- 星型:逻辑总线型,中心一般是一个集线器,更加灵活
3.5.1.2 介质访问控制
介质访问控制:采取一定的措施,使得两对节点之间的通信不会发生互相干扰的情况
- 静态划分信道:信道划分介质访问控制
- 频分多路复用 FDM
- 时分多路复用 TDM
- 波分多路复用 WDM
- 码分多路复用 CDM
- 动态划分信道
- 轮询访问介质控制
- 令牌传递协议
- 随机访问介质访问控制
- ALOHA协议
- CSMA协议
- CSMA/CD协议
- CSMA/CA协议
- 轮询访问介质控制
3.5.1.3 信道划分介质访问控制
- 信道划分介质访问控制:将使用介质的每个设备与来自同一信道上的其他设备的通信隔离开,把时域和频域资源合理的分配给网络上的设备
- 多路复用技术:把多个信号组合在一条物理信道上进行传输,使得多个计算机或终端设备共享信道资源,提高信道利用率
- 实际就是把广播信道转变为点对点信道
3.5.1.3.1 频分多路复用 FDM
- 所有用户在同样时间,占用不同的带宽(频率带宽)资源
3.5.1.3.2 时分多路复用 TDM
- 将时间划分为一段段等长的时分复用帧(TDM帧)
- 每个用户在每一个TDM帧中占用固定序号的时隙,所有用户轮流占用信道
- 若一个TDM帧为8000b/s,则每个人最高2000b/s
3.5.1.3.3 改进的时分复用:统计时分复用 STDM
- 若一个STDM帧为8000b/s,则每个人最高8000b/s
3.5.1.3.4 波分多路复用 WDM
- 波分多路复用:就是光的频分多路复用
3.5.1.3.5 码分多路复用 CDM(重点)
码分多址CDMA:码分复用的一种方式
1个比特分为多个码片/芯片(chip),每个站点指定一个唯一的m位的芯片序列
发送1时站点发送芯片序列,发送0时发送芯片序列的反码(通常把0写成-1)
A B 芯片序列 +1 -1 -1 +1 +1 +1 +1 -1 -1 +1 -1 +1 -1 +1 +1 +1 反码 -1 +1 +1 -1 -1 -1 -1 +1 +1 -1 +1 -1 +1 -1 -1 -1 如何不打架:多个站点同时发送数据时,要求每个站点芯片序列相互正交(规格内积化为0)
- 即A和B发送的数据,对应位相乘再相加,结果为0
如何合并:各路数据在信道中被线性相加
- 如A发送0,B发送1,则为(-2 +2 0 0 -2 0 0 +2)
如何分离:合并的数据与源站的芯片序列规格化内积
- A发送的数据:(+1 -1 -1 +1 +1 +1 +1 -1) · (-2 +2 0 0 -2 0 0 +2) / 8 = -1 ==> 0
- B发送的数据:(-1 +1 -1 +1 -1 +1 +1 +1) · (-2 +2 0 0 -2 0 0 +2) / 8 = 1 ==> 1
3.5.1.4 CD还是CS
3.5.2 ALOHA协议
3.5.2.1 纯ALOHA协议
纯ALOHA协议思想:不监听信道,不按时间发送,随即重发。想发就发
- 冲突检测:如果发生冲突,接收方就会检测出差错,然后不予确认,发送方在一定时间内收不到ACK就判断发生冲突
- 冲突解决:超时后等一段随机的时间,然后重传
3.5.2.2 时隙ALOHA协议
时隙ALOHA协议思想:把时间分为若干个相同的时间片,所有用户在时间片开始时刻同步接入网络信道,如果发生冲突,则必须等到下一个时间片开始时刻再发送。控制想发就发的随意性
3.5.2.3 关于ALOHA协议
- 纯ALOHA比时隙ALOHA吞吐量更低,效率更低
- 纯ALOHA想发就发,时隙ALOHA只有在时间片段开始时才能发
3.5.3 CSMA协议
CSMA:载波监听多路访问协议,carrier sense multiple access
- CS:载波侦听/监听,每一个站在发送数据之前要检测一下总线上是否有其他计算机在发送数据
- 检测方法:当几个站同时在总线上发送数据时,总线上的信号电压摆动值将会增大(互相叠加)。当一个站检测到的信号电压摆动值超过一定门限值时,就认为总线上至少有两个站同时在发送数据,表明产生了碰撞,即发生了冲突。
- MA:多点接入,表示许多计算机以多点接入的方式连接在一根总线上。
- 协议思想:发送帧之前,监听信道
- 监听结果:
- 信道空闲:发送完整帧
- 1-坚持CSMA
- 非坚持CSMA
- p-坚持CSMA
- 信道忙:推迟发送
- 信道空闲:发送完整帧
3.5.3.1 1-坚持CSMA
- 坚持:指的是对于监听信道忙之后的坚持
- 1-坚持CSMA思想:
- 如果一个主机要发送消息,那么它先监听信道
- 空闲则直接传输,不必等待
- 忙则一直监听,直到空闲马上传输
- 如果有冲突(一段时间内未收到肯定回复),则等待一个随机长的时间再监听,重复上述过程
- 优点:只要媒体空闲,站点就马上发送,避免了媒体利用率的损失
- 缺点:假如有两个或两个以上的站点有数据要发送,冲突就不可避免
3.5.3.2 非坚持CSMA
- 非坚持:指的是对于监听信道忙之后就不继续监听
- 非坚持CSMA思想:
- 如果一个主机要发送消息,那么它先监听信道
- 空闲则直接传输,不必等待
- 忙则等待一个随机的时间,之后再进行监听
- 优点:采用随机的重发延迟时间可以减少冲突发生的可能性
- 缺点:可能存在大家都在延迟等待过程中,使得媒体仍可能处于空闲状态,媒体使用率降低
3.5.3.3 p-坚持CSMA
- p-坚持指的是对于监听信道空闲的处理
- p-坚持CSMA思想:
- 如果一个主机要发送消息,那么它先监听信道
- 空闲则以p概率直接传输,不必等待;概率1-p等待到下一个时间槽再传输
- 忙则等待一个随机的时间之后再进行监听
- 优点:既能像非坚持算法那样减少冲突,又能像1-坚持算法那样减少媒体空闲时间的这种方案
- 缺点:发生冲突后无法及时发现,仍会坚持把数据帧发完,造成浪费
3.5.3.4 三种CSMA对比总结
3.5.4 CSMA/CD协议
CSMA/CD:载波监听多点接入/碰撞检测,carrier sense multiple access with collision detection
- CS:载波侦听/监听,每一个站在发送数据之前以及发送数据时要检测一下总线上是否有其他计算机在发送数据
- MA:多点接入,表示许多计算机以多点接入的方式连接在一根总线上。总线型网络
- CD:碰撞检测(冲突检测) ,“边发送边监听”,适配器边发送数据边检测信道上信号电压的变化情况,以便判断自己在发送数据时其他站是否也在发送数据。半双工网络
3.5.4.1 传播时延对载波监听的影响
- \(\tau\):端到端传播时延
- \(2\tau\):总线的端到端往返传播时延/争用期/冲突窗口/碰撞窗口
- 只要经过\(2\tau\)时间还没有检测到碰撞,就能肯定这次发送不会发生碰撞
3.5.4.2 如何确定碰撞后的重传时机
阶段二进制指数规避算法:
- 确定基本退避(推迟)时间为:争用期\(2\tau\)
- 定义参数k,它等于重传次数,但k不超过10,即k=min[重传次数,10]
- 当重传次数不超过10时,k等于重传次数
- 当重传次数大于10时,k就不再增大而一直等于10
- 从离散的整数集合[0, 1, …, 2k-1]中随机取出一个数r,重传所需要退避的时间就是r倍的基本退避时间,即\(2r\ \tau\)
- 当重传达16次仍不能成功时,说明网络太拥挤,认为此帧永远无法正确发出,抛弃此帧并向高层报告出错
3.5.4.3 最小帧长 = \(2\tau\) × 数据传输速率
- 帧的传输时延至少要两倍于信号在总线中的传播时延
- 最小帧长 = \(2\tau\) × 数据传输速率
3.5.4.4 总结
3.5.5 CSMA/CA协议
CSMA/CA:载波监听多点接入/碰撞避免,carrier sense multiple access with collision avoidance
- 应用:无线局域网
- 无法做到360°全面检测碰撞
- 隐蔽站:当A和C都检测不到信号,认为信道空闲时,同时向B发送数据帧,就会导致冲突
3.5.5.1 CSMA/CA协议工作原理
- 发送数据前,先检测信道是否空闲
- 信道空闲:发出RTS (request to send), RTS包括发射端的地址、接收端的地址、下一份数据将持续发送的时间等信息
- 信道忙:等待
- 接收端收到RTS后,将响应CTS (clear to send)
- 发送端收到CTS后,开始发送数据帧(同时预约信道:发送方告知其他站点自己要传多久数据)
- 接收端收到数据帧后,将用CRC来检验数据是否正确,正确则响应ACK帧
- 发送方收到ACK就可以进行下一个数据帧的发送,若没有则一直重传至规定重发次数为止(采用二进制指数退避算法来确定随机的推迟时间)
3.5.5.2 CSMA/CA协议避免冲突的方法
- 预约信道
- ACK帧
- RTS/CTS帧:解决隐蔽站的问题,可以不使用
3.5.5.3 CSMA/CD与CSMA/CA
相同点:
- CSMA/CD与CSMA/CA机制都从属于CSMA的思路,其核心是先听再说
- 换言之,两个在接入信道之前都须要进行监听。当发现信道空闲后,才能进行接入
不同点:
- 传输介质不同:CSMA/CD用于总线式以太网【有线】,而CSMA/CA用于无线局域网【无线】
- 载波检测方式不同:因传输介质不同,
CSMA/CD与CSMA/CA的检测方式也不同。
- CSMA/CD:通过电缆中电压的变化来检测,当数据发生碰撞时,电缆中的电压就会随着发生变化
- CSMA/CA:采用能量检测(ED)、载波检测(CS)和能量载波混合检测三种检测信道空闲的方式
- CSMA/CD检测冲突, CSMA/CA避免冲突,二者出现冲突后都会进行有上限的重传
3.5.6 轮询访问介质访问控制
- 信道划分介质访问控制(MAC,Multiple Access
Control)协议:无冲突
- 基于多路复用技术划分资源
- 网络负载重:共享信道效率高,且公平
- 网络负载轻:共享信道效率低
- 随机访问MAC协议:会发生冲突
- 用户根据意愿随机发送信息,发送信息时可独占信道带宽。
- 网络负载重:产生冲突开销
- 网络负载轻:共享信道效率高,单个结点可利用信道全部带宽
- 轮询访问MAC协议/轮流协议/轮转访问MAC协议:无冲突
- 既要不产生冲突,又要发送时占全部带宽
- 分为:轮询协议、令牌传递协议
3.5.6.1 轮询协议
主节点轮流要求从属节点发送数据
缺点:
- 轮询开销
- 等待延迟
- 单点故障:主节点宕机后,所有节点都无法发送数据
3.5.6.2 令牌传递协议
- 令牌:一个特殊格式的MAC控制帧,不含任何信息
- 控制信道的使用,确保同一时刻只有一个结点独占信道
- 令牌环网无碰撞
- 发送过程:
- 空闲时,令牌会在令牌环网中循环传递
- 当主机D要发送数据时,会修改令牌的标志位,同时将数据A附加到令牌上
- 令牌会按照令牌环的顺序,在令牌环网上循环一周
- 接收方收到包含数据的令牌时,会将数据拷贝一份,并且将自己得到的数据重新附加到令牌上
- 发送方再次接收到令牌时,查看令牌上的数据与自己发送的数据是否相同,判断是否发送成功
- 每个节点都可以在一定时间(令牌持有时间)内获得发送数据的权力,并不是无限制的持有令牌
- 缺点:
- 令牌开销
- 等待延迟
- 单点故障:一个节点故障,所有节点都无法发送数据
- 应用于令牌环网
- 物理:星型拓扑结构
- 逻辑:环形拓扑结构
- 常用于负载较重、通信量较大的网络中
3.5.7 MAC协议总结
3.6 局域网、以太网、无线局域网
3.6.1 局域网的基本概念和体系结构
3.6.1.1 局域网
局域网(Local Area Network):简称LAN,是指在某一区域内由多台计算机互联成的计算机组,使用广播信道
特点
- 覆盖的地理范围较小,只在一个相对独立的局部范围内联,如一座或集中的建筑群内
- 使用专门铺设的传输介质(双绞线、同轴电缆)进行联网,数据传输速率高(10Mb/s~10Gb/s)
- 通信延迟时间短,误码率低,可靠性较高
- 各站为平等关系,共享传输信道
- 多采用分布式控制和广播式通信,能进行广播和组播
决定局域网的主要要素:
- 网络拓扑
- 传输介质
- 介质访问控制方法
3.6.1.2 局域网拓扑结构
3.6.1.3 局域网传输介质
- 有线局域网:双绞线、同轴电缆、光纤
- 无线局域网:电磁波
3.6.1.4 局域网介质访问控制方法
- CSMA/CD:常用于总线型局域网,也用于树型网络
- 令牌总线:常用于总线型局域网,也用于树型网络
- 它是把总线型或树型网络中的各个工作站按一定顺序如按接口地址大小排列形成一个逻辑环
- 只有令牌持有者才能控制总线,才有发送信息的权力
- 令牌环:常用于环形局域网,如令牌环网
3.6.1.5 局域网的分类
- 以太网
- 以太网是应用最为广泛的局域网,包括标准以太网(10Mbps)、快速以太网(100Mbps)千兆以太网(1000 Mbps)和10G以太网
- 它们都符合IEEE802.3系列标准规范
- 逻辑拓扑总线型,物理拓扑是星型或拓展星型
- 使用CSMA/CD.
- 令牌环网
- 物理上采用了星形拓扑结构,逻辑上是环形拓扑结构
- 已是“明日黄花”
- FDDI网(Fiber Distributed Data Interface)
- 物理上采用了双环拓扑结构,逻辑上是环形拓扑结构
- ATM网(Asynchronous Transfer Mode)
- 较新型的单元交换技术,使用53字节固定长度的单元进行交换
- 无线局域网(Wireless Local Area Network;
WLAN)
- 采用IEEE 802.11标准。
3.6.1.6 IEEE 802标准
- IEEE 802系列标准:是IEEE 802 LAN/MAN 标准委员会制定的局域网、城域网技术标准(1980年2月成立)
- 其中最广泛使用的有以太网、令牌环、无线局域网等
- 这一系列标准中的每一个子标准都由委员会中的一个专门工作组负责
标准名 | 说明 |
---|---|
IEEE 802.3 | 以太网的介质访问控制协议(CSMA/CD)、物理层技术规范 |
IEEE 802.5 | 令牌环网的介质访问控制协议、物理层技术规范 |
IEEE 802.8 | 光纤技术咨询组 |
IEEE 802.11 | 无线局域网(WLAN)的介质访问控制协议、物理层技术规范 |
3.6.1.7 MAC子层和LLC子层
- LLC子层:逻辑链路控制子层,为网络层提供服务
- 识别网络层协议,并进行封装
- LLC报头告诉数据链路层一旦帧被接收到时,应当对数据包做如何处理
- 为网络层提供服务:无确认无连接、面向连接、带确认无连接、高速传送
- MAC子层:介质访问控制子层,与物理层相关
- 数据帧的封装/卸装
- 帧的寻址和识别
- 帧的接收与发送
- 链路的管理
- 帧的差错控制
- 屏蔽了不同物理链路种类的差异性
3.6.1.8 总结
3.6.2 以太网 Ethernet
3.6.2.1 以太网概述
- 以太网(Ethernet)指的是:由Xerox公司创建并由Xerox、Intel和DEC公司联合开发的基带总线局域网规范,是当今现有局域网采用的最通用的通信协议标准
- 以太网络使用CSMA/CD(载波监听多路访问及冲突检测)技术
- 以太网在局域网各种技术中占统治性地位:
- 造价低廉(以太网网卡不到100块)
- 是应用最广泛的局域网技术
- 比令牌环网、ATM网便宜,简单
- 满足网络速率要求: 10Mb/s~10Gb/s
- 以太网两个标准
- DIX Ethernet V2:第一个局域网产品(以太网)规约
- IEEE 802.3:IEEE 802委员会802.3工作组制定的第一个IEEE的以太网标准,格式有一丢丢改动
- 以太网,也叫802.3局域网
3.6.2.2 以太网提供无连接、不可靠的服务
- 无连接:发送方和接收方之间无“握手过程”
- 不可靠:不对发送方的数据顿编号,接收方不向发送方进行确认,差错帧直接丢弃,差错纠正由高层负责
- 以太网只实现无差错接收,不实现可靠传输
- 无差错接收:保证接收到的帧均正确,不正确的帧直接丢弃
- 可靠传输:保证所有帧都正确接收
3.6.2.3 以太网传输介质与拓扑结构的发展
3.6.2.4 10BASE-T以太网
10BASE-T是传送基带信号的双绞线以太网,T表示采用双绞线,现10BASE-T采用的是无屏蔽双绞线(UTP) ,传输速率是10Mb/s
- 物理上采用星型拓扑,逻辑上总线型,每段双绞线最长为100m
- 采用曼彻斯特编码
- 采用CSMA/CD介质访问控制
3.6.2.5 适配器与MAC地址
- 计算机与外界有局域网的连接是通过通信适配器的
- 网络接口板
- 网络接口卡NIC (network interface card)
- NOW,不再使用单独网卡
- 适配器上装有处理器和存储器(包括RAM和ROM)
- ROM上有计算机硬件地址MAC地址
- 在局域网中,硬件地址又称为物理地址,或MAC地址【实际上是标识符】
- MAC地址:每个适配器有一个全球唯一的48位二进制地址,前24位代表厂家(由IEEE规定),后24位厂家自己指定。常用6个十六进制数表示,如02-60-8c-e4-b1-21
- 换网卡之后,MAC地址也会变化
- 带电脑出差,MAC地址不会变化
3.6.2.6 以太网MAC帧
最常用的MAC帧是以太网V2的格式
- 前导码:
- 前同步码:由101010组成,用于接收方同步时钟
- 帧开始定界符:结尾是11,表示MAC帧的开始
- 目的地址:
- 单播地址:即专有网卡地址
- 广播地址:每一位均为1,即FFFFFFFFFFFF
- 多播地址
- 类型:
- 表示上面网络层使用的协议
- 数据:
- 长度可变
- 最多为1500,即MTU
- 最小为46,要满足以太网的最短帧长64B
- FCS:
- 帧检验序列
- 没有帧结束定界符:
- 采用曼彻斯特编码,当不发送数据时,没有电压变化
- 两个帧之间会有最小间隔
与IEEE 802.3的区别:
- 第三个字段是长度/类型
- 当长度/类型字段小于0x0600时,数据字段必须装入LLC子层
3.6.2.7 高速以太网
速率\(\ge\)100Mb/s的以太网,称为高速以太网
3.6.2.8 总结
3.6.3 无线局域网
3.6.3.1 IEEE 802.11
IEEE 802.11是无线局域网通用的标准,它是由IEEE所定义的无线网络通信的标准。
3.6.3.2 802.11的MAC帧头格式
AP:无线接入点,也叫基站
例:若设备A向设备B发送消息,距离A近的基站为AP1,距离B近的基站为AP2,则
- A会将数据通过电磁波发送给AP1
- AP1将数据发送给AP2
- AP2通过电磁波将数据发送给B
- 在此过程中,MAC帧头为
- DA目的地址:mac(B)
- SA源地址:mac(A)
- RA接收端:mac(AP2)
- TA发送端:mac(AP1)
3.6.3.3 无线局域网的分类
有固定基础设施的无线局域网
- BSS:基本服务集
- ESS:扩展服务集
无固定基础设施的无线局域网的自组织网络
3.7 广域网
3.7.1 广域网概述
- 广域网(WAN, Wide Area Network) ,通常跨接很大的物理范围,所覆盖的范围从几十公里到几千公里,它能连接多个城市或国家,或横跨几个洲并能提供远距离通信,形成国际性的远程网络
- 广域网的通信子网主要使用分组交换技术。广域网的通信子网可以利用公用分组交换网、卫星通信网和无线分组交换网,它将分布在不同地区的局域网或计算机系统互连起来,达到资源共享的目的。如因特网(Internet)是世界范围内最大的广域网
- 广域网与局域网的区别
- 广域网覆盖的网络体系结构层次:物理层、链路层、网络层
- 局域网覆盖的网络体系结构层次:物理层、链路层
- 广域网普遍采用点对点,通过一个链路相连,全双工或者半双工
- 局域网普遍采用多点接入技术
- 广域网强调资源共享
- 局域网强调数据传输
3.7.2 PPP协议:面向字节
3.7.2.1 PPP协议的特点
点对点协议PPP(Point-to-Point Protocol):是目前使用最广泛的数据链路层协议
- 用户使用拨号电话接入因特网时,一般都使用PPP协议
- 只支持全双工链路
3.7.2.2 PPP协议应满足的要求
- 简单:对于链路层的帧,无需纠错,无需序号,无需流量控制。
- 封装成帧:帧定界符
- 透明传输:与帧定界符一样比特组合的数据应该如何处理异步线路用字节填充,同步线路用比特填充
- 多种网络层协议:封装的IP数据报可以采用多种协议。
- 多种类型链路:串行/并行,同步/异步,电/光
- 差错检测:错就丢弃
- 检测连接状态:链路是否正常工作
- 最大传送单元:数据部分最大长度MTU,一般不超过1500B
- 网络层地址协商:知道通信双方的网络层地址
- 数据压缩协商
3.7.2.3 PPP协议无需满足的要求
- 纠错
- 流量控制
- 序号
- 不支持多点线路
3.7.2.4 PPP协议的三个组成部分
- 一个将IP数据报封装到串行链路(同步串行/异步串行)的方法
- 链路控制协议LCP:建立并维护数据链路连接。身份验证
- 网络控制协议NCP:PPP可支持多种网络层协议,每个不同的网络层协议都要一个相应的NCP来配置,为网络层协议建立和配置逻辑连接
3.7.2.5 PPP协议的状态图
3.7.2.6 PPP协议的帧格式
3.7.3 HDLC协议:面向比特
3.7.3.1 HDLC协议简介
- 高级数据链路控制(High-Level Data Link
Control或简称HDLC):是一个在同步网上传输数据、面向比特的数据链路层协议
- 由国际标准化组织(ISO)根据IBM公司的SDLC(SynchronousData Link Control)协议扩展开发而成的
- 数据报文可透明传输,用于实现透明传输的"0比特插入法”易于硬件实现
- 采用全双工通信
- 所有帧采用CRC检验,对信息帧进行顺序编号,可防止漏收或重份,传输可靠性高
3.7.3.2 HDLC的站
- 主站:主要功能是发送命令(包括数据信息)帧、接收响应帧,并负责对整个链路的控制系统的初启、流程的控制、差错检测或恢复等。
- 从站:主要功能是接收由主站发来的命令帧,向主站发送响应帧,并且配合主站参与差错恢复等链路控制。
- 复合站:主要功能是既能发送,又能接收命令帧和响应顿,并且负责整个链路的控制。
三种数据操作方式
- 正常响应方式:从站发送数据,要先经过主站的同意
- 异步平衡方式:每个复合站均可以进行数据传输,每个站地位平等
- 异步响应方式:从站可以不经过主站的同意,就发送数据
3.7.3.3 HDLC的帧格式
3.7.4 PPP协议 & HDLC协议
相同点:
- 均只支持全双工链路
- 都可以实现透明传输
- 都可以实现差错检测,但不纠正差错
不同点:
3.7.5 总结
3.8 链路层设备
3.8.1 物理层扩展以太网
3.8.2 链路层扩展以太网:网桥
链路层扩展以太网的设备:网桥&交换机
- 网桥:根据MAC帧的目的地址对帧进行转发和过滤
- 当网桥收到一个帧时,并不向所有接口转发此帧,而是先检查此帧的目的MAC地址,然后再确定将该顿转发到哪一个接口,或者是把它丢弃(即过滤)
- 网段:一般指一个计算机网络中使用同一物理层设备(传输介质,中继器,集线器等)能够直接通讯的那一部分
- 网桥的优点:
- 过滤通信量,增大吞吐量
- 扩大了物理传输范围
- 提高了可靠性:一个主机故障,通常只影响一个网段
- 可互连不同物理层、不同MAC子层和不同速率的以太网
3.8.2.1 网桥分类:透明网桥
透明网桥:“透明”指以太网上的站点并不知道所发送的帧将经过哪几个网桥,是一种即插即用设备--自学习
- 每过一段时间,就会将转发表情况,然后更新最新的转发表
- 若A向B发送一个数据:
- A广播式发送数据,当前网段内所有主机均收到该数据,但只有B会处理这个数据
- 该数据包到达网桥1的1接口时
- A为发送方,因此将(地址A, 接口1)填入转发表
- B为接收方,转发表中没有,因此网桥1会将这个数据包发送到除接口1外的所有接口
- 该数据包到达CD网段,CD均丢弃该数据包
- 该数据包到达网桥2的1接口时
- A为发送方,因此将(地址A, 接口1)填入转发表
- B为接收方,转发表中没有,因此网桥2会将这个数据包发送到除接口1外的所有接口
- 该数据包到达EF网段,EF均丢弃该数据包
- 然后F向C发送一个数据:
- F广播式发送数据,当前网段内所有主机均收到该数据,均丢弃
- 该数据包到达网桥2的2接口时
- F为发送方,因此将(地址F, 接口2)填入转发表
- C为接收方,转发表中没有,因此网桥2会将这个数据包发送到除接口2外的所有接口
- 该数据包到达CD网段,C收到数据,D丢弃数据
- 该数据包到达网桥1的2号接口时
- F为发送方,因此将(地址F, 接口2)填入转发表
- C为接收方,转发表中没有,因此网桥1会将这个数据包发送到除接口2外的所有接口
- 该数据包到达AB段,AB均丢弃该数据包
- 然后B向A发送一个数据
- B广播式发送数据,当前网段内所有主机均收到该数据,但只有A会处理这个数据
- 该数据包到达网桥1的1接口时
- B为发送方,因此将(地址B, 接口1)填入转发表
- A为接收方,转发表中存在,且为接口1,因此网桥1不会再转发
3.8.2.2 网桥分类:源路由网桥
- 源路由网桥:在发送帧时,把详细的最佳路由信息(路由最少/时间最短)放在帧的首部中
- 方法:源站以广播方式向欲通信的目的站发送一个发现帧
- 发现帧会原路返回
- 发现帧中会存储经过路由数量/时间,由发送方进行比较选择
3.8.3 多接口网桥:以太网交换机
3.8.3.1 以太网交换机的简介
独占传输媒体带宽:
- 若使用集线器
- 假设一个冲突域的带宽为10Mb/s,则每个主机的带宽为2.5Mb/s
- 若使用集线器以太网交换机
- 假设以太网交换机的带宽为10Mb/s,则每个冲突域的带宽均为10Mb/s
3.8.3.2 以太网交换机的两种交换方式
- 直通式交换机
- 查完目的地址(6B)就立刻转发
- 延迟小,可靠性低,无法支持具有不同速率的端口的交换
- 存储转发式交换机
- 将帧放入高速缓存,并检查否正确,正确则转发,错误则丢弃
- 延迟大,可靠性高,可以支持具有不同速率的端口的交换
3.8.4 冲突域和广播域
- 冲突域:在同一个冲突域中的每一个节点都能收到所有被发送的帧
- 简单的说,就是同一时间内只能有一台设备发送信息的范围
- 广播域:网络中能接收任一设备发出的广播帧的所有设备的集合
- 简单的说,如果站点发出一个广播信号,所有能接收收到这个信号的设备范围称为一个广播域
- 广播域的个数:看有几个路由器
- 冲突域的个数:看以太网交换机的端口,一个端口对应一个冲突域
3.8.5 生成树网桥
- 为了防止广播风暴,会使用生成树的算法,保证没有回路
3.8.6 总结
3.9 Virtual LANs 虚拟网
- 逻辑的局域网和多个交换机构成的物理局域网,相互之间有多对多的映射关系
- 这些交换机的端口被分为两大类:
- 接入端口:隶属于某一个指定的虚拟网,跑的是标准的以太网协议
- 中继端口trunk:用于传输交换机之间的数据,这里的数据会属于不同的虚拟网,需要识别出当前帧到底是归属于哪个虚拟网的,因此出现了IEEE 802.1Q协议
3.9 第三章总结
Chapter 4:网络层
互联网是无中心、有层次的
4.1 网络层概述
4.1.1 网络层功能概述
- 主要任务是把分组从源端传到目的端,为分组交换网上的不同主机提供通信服务
- 网络层传输单位是数据报
- 功能:
- 路由选择与分组转发:最佳路径
- 异构网络互联
- 拥塞控制:若所有结点都来不及接受分组,而要丢弃大量分组的话,网络就处于拥塞状态。因此要采取一定措施,缓解这种拥塞
- 开环控制:静态控制
- 闭环控制:动态调整
4.1.2 数据交换方式
4.1.2.1 网络的核心:路由器
4.1.2.2 为什么需要数据交换
4.1.2.3 电路交换
电路交换的阶段:
- 建立连接
- 通信
- 释放连接
特点:独占资源
- 当A和B建立连接后,即使不说话,也不能有第三方抢占电路
优点:
- 通信时延小
- 有序传输
- 没有冲突
- 实时性强
缺点:
- 建立连接时间长
- 线路独占,使用效率低
- 灵活性差
- 无差错控制能力
4.1.2.4 报文交换
报文:源应用发送的信息整体
优点:
- 无需建立连接
- 存储转发,动态分配线路
- 线路可靠性较高
- 线路利用率较高:一段一段的占用线路
- 多目标服务
缺点:
- 有存储转发时延
- 报文大小不定,需要网络节点有较大的缓存空间
4.1.2.5 分组交换
分组:把大的数据块分割成小的数据块
优点:
- 无需建立连接
- 存储转发,动态分配线路
- 线路可靠性较高:数据变小之后,出错的概率也变小了
- 线路利用率较高:一段一段的占用线路
- 相对于报文交换,存储管理更容易
缺点:
- 有存储转发时延
- 需要传输额外的信息量:源地址、目的地址、分组编号等
- 乱序到达目的主机时,需要对分组排序重组
4.1.2.6 报文交换&分组交换例题
报文交换:
- 发送时延/传输时延为:\(\frac{10000\ bit}{1000\ bps}=10s\)
- 传输时延和接收时延均忽略不计
- 因此总传输时间为:\(10\ s × 3=30\ s\)
分组交换:
- 每一个分组的发送时延/传输时延为:\(\frac{10\ bit}{1000\ bps}=0.01s\)
- 传输时延和接收时延均忽略不计
- 由于每个分组连续发送,因此只需要考虑第1个分组开始发送,到最后1个分组到达所需的时间即可
- 第1个分组开始发送~最后1个分组开始发送:\(\frac{10000\ bit}{1000\ bps}=10s\)
- 最后1个分组开始发送~最后1个分组到达:\(2×0.01\ s=0.02\ s\)
- 因此总传输时间为:\(10\ s + 0.02\ s=10.02\ s\)
4.1.2.7 三种数据交换方式比较总结
4.1.3 数据报与虚电路
- 数据报:为网络层提供无连接服务
- 无连接服务:不事先为分组的传输确定传输路径,每个分组独立确定传输路径,不同分组传输路径可能不同
- 虚电路:为网络层提供连接服务
- 连接服务:首先为分组的传输确定传输路径(建立连接),然后沿该路径(连接)传输系列分组,系列分组传输路径相同,传输结束后拆除连接
4.1.3.1 几种传输单元的名词解析
层次 | 传输单元 |
---|---|
应用层 | 报文 |
传输层 | 报文段 |
网络层 | IP数据报,分组 |
数据链路层 | 帧 |
物理层 | 比特流 |
4.1.3.2 数据报(因特网使用)
- 无连接服务:不事先为分组的传输确定传输路径,每个分组独立确定传输路径,不同分组传输路径可能不同
- 每个分组携带源和目的地址
- 路由器根据分组的目的地址转发分组:
- 基于路由协议/算法构建转发表
- 检索转发表
- 每个分组独立性选路
4.1.3.3 虚电路
- 虚电路将数据报方式和电路交换方式结合,以发挥两者优点
- 虚电路:一条源主机到目的主机类似于电路的路径(逻辑链接),路径上所有节点都要维持这条虚电路的建立,都维持一张虚电路表,每一项记录了一个打开的虚电路的信息
- 通信过程:
4.1.3.4 数据报&虚电路
4.2 IP协议
4.2.1 IP数据报格式
4.2.1.1 TCP/IP协议栈
4.2.1.2 IP数据报格式
位置 | 长度 | 名称 | 描述 |
---|---|---|---|
第1个4B:00~03 | 4bit | 版本 | 4位数据,表示IPv4/IPv6 |
第1个4B:04~07 | 4bit | 首部长度 | 单位为4B,最小为5(此时首部长度为5*4B=20B) |
第1个4B:08~15 | 8bit | 区分服务 | 表示期望获得哪种类型的服务 |
第1个4B:16~31 | 16bit | 总长度 | 首部+数据部分的大小,单位为1B |
第2个4B:00~15 | 16bit | 标识 | 同一数据报的分片使用同一标识,表示为同一个IP数据报 |
第2个4B:16~18 | 3bit | 标志 | 只有2位有意义,× DF MF |
第2个4B:19~31 | 13bit | 片偏移 | 当前分片在原分组中的相对位置,单位为8B |
第3个4B:00~07 | 8bit | 生存时间TTL | IP分组的保质期,经过一个路由器-1,变成0则丢弃,防止无法交付的数据报在链路中无限传递 |
第3个4B:08~15 | 8bit | 协议 | 数据部分的协议,如TCP(6)、UDP(17) |
第3个4B:16~31 | 16bit | 首部检验和 | 二进制求和,只检验首部,不检验数据部分 |
第4个4B:00~31 | 32bit | 源地址 | IPv4的地址长度:32位 |
第5个4B:00~31 | 32bit | 目的地址 | IPv4的地址长度:32位 |
可变部分 | 0~40B | 可选字段 | 用来支持排错、测量、安全等措施 |
可变部分 | 填充 | 全0,把首部补成4B的整数倍 |
协议:
三个长度:
- 总长度:单位为1B
- 片偏移:单位为8B
- 首部长度:单位为4B
1总8片的首4
4.2.2 IP数据报分片
4.2.2.1 最大传送单元MTU
- MTU:链路层数据帧可封装数据的上限
- 以太网的MTU位1500字节
4.2.2.2 IP数据报分片
- 标志:× _ _
- 中间位DF(Don’t Fragment)
- DF=1:禁止分片
- DF=0:允许分片
- 最低位MF(More Fragment)
- MF=1:后面还有分片
- MF=0:当前分片为最后一片
- 中间位DF(Don’t Fragment)
- 片偏移:
- 当前分片在原分组中的相对位置,以8B为单位
- 除最后一个分片外,每个分片的大小均为8B的整数倍
4.2.2.3 IP数据报分片例题
4.2.3 IPv4地址
4.2.3.1 IP编址的历史阶段
- 分类的IP地址
- 子网的划分
- 构成超网:无分类编址方法
4.2.3.2 分类的IP地址
IP地址:全世界唯一的32位/4字节标识符,标识路由器主机的接口
IP地址:{<网络号> <主机号>} 点分十进制表示方法
4.2.3.3 互联网中的IP地址
- 同一个局域网中,网络号相同
- 网桥不分割广播域:因此通过网桥连接起来的设备仍是一个局域网
- 路由器分割广播域:路由器的每一个接口都会有一个不同的IP地址
- 绿色的部分:无编号(无名)网络,是逻辑上的网络
- 整个图中共有6个逻辑上的网络
- 橙色部分:3个
- 绿色部分:3个
4.2.3.4 分类的IP地址
4.2.3.5 特殊的IP地址
4.2.3.6 私有IP地址
- 路由器对目的地址是私有IP地址的数据报一律不进行转发
4.2.4 网络地址转换NAT
网络地址转换NAT(Network Address Translation):
- 在专用网连接到因特网的路由器上安装NAT软件
- 安装了NAT软件的路由器称为NAT路由器,它至少有一个有效的外部全球IP地址
4.2.5 子网划分与子网验码
4.2.5.1 子网划分
分类IP地址的缺点:
- IP地址空间的利用率有时很低
- 两级IP地址不够灵活
- 划分子网后,对外仍表现为一个网络,即外单位的网络看不到本单位内的子网划分
- 主机号至少要有2位
- 主机号不能全0/全1:这两种分别表示当前网络/广播地址
- 子网号能否全0/1要看情况
4.2.5.2 子网划分的示例
4.2.5.3 子网掩码
- 网络号/子网号对应位置:填1
- 主机号对应位置:填0
- 子网掩码与IP地址逐位相与,就得到了子网网络的地址
4.2.5.4 子网掩码的示例
- 同一个IP地址,不同子网掩码,求出的网络地址可以是相同的
- 但是含义不同,表示子网可划分的主机数不同
4.2.5.5 使用子网时分组的转发
4.2.6 无分类编址CIDR
4.2.6.1 CIDR的特点及使用方法
无分类域间路由选择CIDR:
- 消除了传统的A类,B类和C类地址以及划分子网的概念
- 融合了子网地址和子网掩码,方便子网划分
CIDR的使用方法:
CIDR记法:IP地址后加上”/”,然后写上网络前缀的位数,如128.14.22.0/20
CIDR地址块:网络前缀都相同的连续的IP地址
CIDR技术中,子网号可以是全0/1的
4.2.6.2 构成超网
- 构成超网:将多个子网聚合成一个较大的子网,叫做构成超网,或路由聚合
- 方法:将网络前缀缩短
4.2.6.3 最长前缀匹配
- 使用CIDR时,查找路由表可能得到几个匹配的结果,应该选择具有最长网络前缀的路由
- 前缀越长,地址块越小,路由越具体
4.2.6.4 习题
4.2.7 ARP协议
4.2.7.1 发送数据的过程
同一局域网内,不知道接收方的MAC地址:
- 发送方:发送广播ARP请求分组,广播查询接收方IP3的MAC地址
- 接收方:IP3返回单波ARP相应分组
- 发送方接收到接收方的回应后,将接收方的MAC地址MAC3填入帧中
不在同一局域网内,不知道接收方的MAC地址:
- 发送方:发送广播ARP请求分组,广播查询默认网关IP6的MAC地址
- 接收方:IP6返回单波ARP相应分组
- 发送方接收到接收方的回应后,将接收方的MAC地址MAC6填入帧中
4.2.7.2 ARP协议
- 产生原因:在实际网络的链路上传送数据顿时,最终必须使用MAC地址
- ARP协议:完成主机或路由器IP地址到MAC地址的映射。解决下一跳走哪的问题
- ARP协议使用过程:
- 检查ARP高速缓存,有对应表项则写入MAC帧,没有则用目的MAC地址为FF-FF-FF-FF-FF-FF的帧封装并广播ARP请求分组
- 同一局域网中所有主机都能收到该请求
- 目的主机收到请求后就会向源主机单播一个ARP响应分组
- 源主机收到后将此映射写入ARP缓存(10-20min更新一次)
- ARP协议4种典型情况:
- 主机A发给本网络上的主机B:用ARP找到主机B的硬件地址
- 主机A发给另一网络上的主机B:用ARP找到本网络上一个路由器(网关)的硬件地址
- 路由器发给本网络的主机A:用ARP找到主机A的硬件地址
- 路由器发给另一网络的主机B:用ARP找到本网络上的一个路由器的硬件地址
- ARP协议自动进行
4.2.7.3 习题
4.2.8 DHCP协议
4.2.8.1 主机如何获得IP地址
- 静态配置:IP地址、子网掩码、默认网关
- 动态配置:
4.2.8.2 DHCP协议
动态主机配置协议DHCP:
- 是应用层协议,使用客户/服务器方式,客户端和服务端通过广播方式进行交互,基于UDP
- DHCP提供即插即用联网的机制,主机可以从服务器动态获取IP地址、子网掩码、默认网关、DNS服务器名称与IP地址
- 允许地址重用,支持移动用户加入网络,支持在用地址续租
DHCP协议的过程:
- 主机广播DHCP发现报文:试图找到网络中的服务器,服务器获得一个IP地址
- DHCP服务器广播DHCP提供报文:服务器拟分配给主机一个IP地址及相关配置,先到先得
- 主机广播DHCP请求报文:主机向服务器请求提供IP地址
- DHCP服务器广播DHCP确认报文:正式将IP地址分配给主机
4.2.9 ICMP协议
4.2.9.1 网际控制报文协议ICMP
4.2.9.2 ICMP差错报告报文(5种)
- 终点不可达:当路由器或主机不能交付数据报时就向源点发送终点不可达报文。无法交付
- 源点抑制:当路由器或主机由于拥塞而丢弃数据报时,就向源点发送源点抑制报文,使源点知道应当把数据报的发送速率放慢。拥塞丢数据(不再使用)
- 时间超过:当路由器收到生存时间TTL=0的数据报时,除丢弃该数据报外,还要向源点发送时间超过报文。当终点在预先规定的时间内不能收到一个数据报的全部数据报片时,就把已收到的数据报片都丢弃,并向源点发送时间超过报文。TTL=0
- 参数问题:当路由器或目的主机收到的数据报的首部中有的字段的值不正确时,就丢弃该数据报,并向源点发送参数问题报文。首部字段有问题
- 改变路由(重定向) :路由器把改变路由报文发送给主机,让主机知道下次应将数据报发送给另外的路由器(可通过更好的路由)。值得更好的路由
4.2.9.3 ICMP差错报告报文数据字段
4.2.9.4 不应发送ICMP差错报文的情况
- 对ICMP差错报告报文不再发送ICMP差错报告报文
- 对第一个分片的数据报片的所有后续数据报片都不发送ICMP差错报告报文
- 对具有组播地址的数据报都不发送ICMP差错报告报文
- 组播:一点到多点
- 广播:一点到所有点
- 对具有特殊地址(如127.0.0.0或0.0.0.0)的数据报不发送ICMP差错报告报文
4.2.9.5 ICMP询问报文
- 回送请求和回答报文:主机或路由器向特定目的主机发出的询问,收到此报文的主机必须给源主机或路由器发送ICMP回送回答报文。测试目的站是否可达以及了解其相关状态
- 时间截请求和回答报文:请某个主机或路由器回答当前的日期和时间。用来进行时钟同步和测量时间
- 掩码地址请求和回答报文
- 路由器询问和通告报文
4.2.9.6 ICMP的应用
- PING:测试两个主机之间的连通性,使用了ICMP回送请求和回答报文
- Traceroute:跟踪一个分组从源点到终点的路径,使用了ICMP时间超过差错报告报文
4.3 IPv6
4.3.1 为什么有IPv6
4.3.2 IPv6数据报格式
位置 | 长度 | 名称 | 描述 |
---|---|---|---|
第1个4B:00~03 | 4bit | 版本 | 协议版本,总是6 |
第1个4B:04~11 | 8bit | 优先级 | 区分数据报的类别、优先级 |
第1个4B:12~31 | 20bit | 流标签 | 表面当前数据报属于哪个“流” |
第2个4B:00~15 | 16bit | 有效载荷长度 | 有效载荷部分(扩展首部+数据)的长度 |
第2个4B:16~23 | 8bit | 下一个首部 | 标识下一个扩展首部/上层协议首部 |
第2个4B:24~31 | 8bit | 跳数限制 | 相当于IPv4的TTL |
128bit | 源地址 | ||
128bit | 目的地址 |
流:
- 互联网上从特定源点到特定终点的一系列数据报
- 所有属于同一个流的数据报都具有相同的流标签
4.3.2 IPv6和IPv4
- IPv6将地址从32位(4B)扩大到128位(16B) ,更大的地址空间
- IPv6将IPv4的校验和字段彻底移除,以减少每跳的处理时间
- IPv6将IPv4的可选字段移出首部,变成了扩展首部,成为灵活的首部格式,路由器通常不对扩展首部进行检查,大大提高了路由器的处理效率
- IPv6支持即插即用(即自动配置) ,不需要DHCP协议
- IPv6首部长度必须是8B的整数倍, IPv4首部是4B的整数倍
- IPv6只能在主机处分片, IPv4可以在路由器和主机处分片
- ICMPv6:附加报文类型“分组过大”。
- IPv6支持资源的预分配,支持实时视像等要求,保证一定的带宽和时延的应用
- IPv6取消了协议字段,改成下一个首部字段
- IPv6取消了总长度字段,改用有效载荷长度字段
- IPv6取消了服务类型字段
4.3.4 IPv6地址表示形式
- 一般形式:冒号十六进制记法
- 压缩形式:
- 零压缩:一连串连续的0可以被一对冒号取代,双冒号只能在一个地址中出现一次
4.3.5 IPv6基本地址类型
- 单播:一对一通信,可以做源地址+目的地址
- 多播:一对多通信,可以做目的地址
- 任播:一对多中的一个通信,可以做目的地址
4.3.6 IPv6向IPv4过渡的策略
- 双栈协议
- 双协议栈技术就是指在一台设备上同时启用IPv4协议栈和IPv6协议栈
- 这样的话,这台设备既能和IPv4网络通信,又能和IPv6网络通信
- 如果这台设备是一个路由器:那么这台路由器的不同接口上,分别配置了IPv4地址和IPv6地址,并很可能分别连接了IPv4网络和IPv6网络
- 如果这台设备是一个计算机:那么它将同时拥有IPv4地址和IPv6地址,并具备同时处理这两个协议地址的功能
- 隧道技术
- 通过使用互联网络的基础设施在网络之间传递数据的方式
- 使用隧道传递的数据(或负载)可以是不同协议的数据帧或包。隧道协议将其它协议的数据帧或包重新封装然后通过隧道发送
4.3.7 总结
4.4 路由算法与路由协议概述
4.4.1 路由算法
最佳路由:某一种特定要求下得出的较为合理的选择
4.4.2 路由算法的分类
- 静态路由算法(非自适应路由算法):管理员手工配置路由信息
- 优点:
- 简便、可靠
- 在负荷稳定、拓扑变化不大的网络中运行效果很好
- 广泛用于高度安全性的军事网络和较小的商业网络
- 缺点:
- 路由更新慢,不适用于大型网络
- 优点:
- 动态路由算法(自适应路由算法):路由器间彼此交换信息,按照路由算法优化出路由表项
- 优点:
- 路由更新快
- 适用大型网络
- 及时响应链路费用或网络拓扑变化
- 缺点:
- 算法复杂,增加网络负担
- 优点:
动态路由算法的分类:
- 全局性:链路状态路由算法OSPF
- 所有路由器掌握完整的网络拓扑和链路费用信息
- 分散性:距离向量路由算法RIP
- 路由器只掌握物理相连的邻居及链路费用
4.4.3 分层次的路由选择协议
原因:
- 因特网规模很大
- 许多单位不想让外界知道自己的路由选择协议,但还想连入因特网
自治系统AS:
- 在单一的技术管理下的一组路由器,而这些路由器使用一种AS内部的路由选择协议和共同的度量以确定分组在该AS内的路由,同时还使用一种AS之间的路由协议以确定在AS之间的路由
- 一个AS内的所有网络都属于一个行政单位来管辖,一个自治系统的所有路由器在本自治系统内都必须连通
路由选择协议:
- 内部网关协议IGP:一个AS内使用的,如RIP、OSPF
- 外部网关协议EGP:AS之间使用的,如BGP
4.5 路由选择协议
4.5.1 RIP协议及距离向量算法
4.5.1.1 RIP协议
- RIP是一种分布式的基于距离向量的路由选择协议,是因特网的协议标准,最大优点是简单
- RIP协议要求网络中每一个路由器都维护从它自己到其他每一个目的网络的唯一最佳距离记录(即一组距离)
- 距离:通常为“跳数”,即从源端口到目的端口所经过的路由器个数,经过一个路由器跳数+1。特别的,从一路由器到直接连接的网络距离为1。RIP允许一条路由最多只能包含15个路由器,因此距离为16表示网络不可达
- RIP协议只适用于小互联网
4.5.1.2 RIP协议和谁交换?多久交换一次?交换什么?
- 仅和相邻路由器交换信息
- 路由器交换的信息是自己的路由表
- 每30秒交换一次路由信息,然后路由器根据新信息更新路由表。若超过180s没收到邻居路由器的通告,则判定邻居没了,并更新自己路由表
- 路由器刚开始工作时,只知道直接连接的网络的距离(距离为1),接着每一个路由器也只和数目非常有限的相邻路由器交换并更新路由信息
- 经过若干次更新后,所有路由器最终都会知道到达本自治系统任何一个网络的最短距离和下一跳路由器的地址,即“收敛”
4.5.1.3 距离向量算法
- 修改相邻路由器发来的RIP报文中所有表项
- 对地址为x的相邻路由器发来的RIP报文,修改此报文中的所有项目:
- 把“下一跳”字段中的地址改为X,并把所有的“距离”字段+1
- 对修改后的RIP报文中的每一个项目,进行以下步骤:
- R1路由表中若没有Net3,则把该项目填入R1路由表
- R1路由表中若有Net3,则查看下一跳路由器地址
- 若下一跳是X,则用收到的项目替换源路由表中的项目
- 若下一跳不是X,原来距离比从X走的距离远则更新,否则不作处理
- 若180s还没收到相邻路由器X的更新路由表,则把x记为不可达的路由器,即把距离设置为16
- 返回
4.5.1.4 例题
4.5.1.5 RIP协议的报文格式
- RIP是应用层协议,使用UDP传送数据
- 一个RIP报文最多可以包括25个路由,如果超过,则不许再用一个RIP报文传送
4.5.1.6 RIP协议:好消息传得快,坏消息传得慢
RIP的特点:当网络出现故障时,要经过比较长的事件才能将此消息传送到所有的路由器,慢收敛
4.5.1.7 总结
4.5.2 OSPF协议与链路状态算法
4.5.2.1 OSPF协议
开放最短路径优先OSPF协议:
- “开放”标明OSPF协议不是受某一家厂商控制,而是公开发表的
- “最短路径优先”·是因为使用了Dijkstra提出的最短路径算法SPF
OSPF最主要的特征:
- 使用分布式的链路状态协议
OSPF的特点:
- 和谁交换:使用洪泛法向自治系统内所有路由器发送信息,即路由器通过输出端口向所有相邻的路由器发送信息,而每一个相邻路由器又再次将此信息发往其所有的相邻路由器。广播
- 最终整个区域内所有路由器都得到了这个信息的一个副本
- 交换什么:发送的信息就是与本路由器相邻的所有路由器的链路状态(本路由器和哪些路由器相邻,以及该链路的度量/代价:费用、距离、时延、带宽等)
- 多久交换:只有当链路状态发生变化时,路由器才向所有路由器洪泛发送此信息
- 最后,所有路由器都能建立一个链路状态数据库,即全网拓扑图
4.5.2.2 链路状态算法
- 每个路由器发现它的邻居结点【HELLO问候分组】,并了解邻居节点的网络地址
- 设置到它的每个邻居的成本度量metric
- 构造【DD数据库描述分组】,向邻站给出自己的链路状态数据库中的所有链路状态项目的摘要信息
- 如果DD分组中的摘要自己都有,则邻站不做处理;如果有没有的或者是更新的,则发送【LSR链路状态请求分组】请求自己没有的和比自己更新的信息
- 收到邻站的LSR分组后,发送【LSU链路状态更新分组】进行更新
- 更新完毕后,邻站返回一个【LSAck链路状态确认分组】进行确认
只要一个路由器的链路状态发生变化:
- 泛洪发送【LSU链路状态更新分组】进行更新
- 更新完毕后,其他站返回一个【LSAck链路状态确认分组】进行确认
- 使用Dijkstra根据自己的链路状态数据库构造到其他节点间的最短路径
4.5.2.3 OSPF的区域
4.5.2.4 OSPF分组
- OSPF直接使用IP数据报传送
4.5.2.5 OSPF其他特点
- 每隔30min,要刷新一次数据库中的链路状态
- 由于一个路由器的链路状态只涉及到与相邻路由器的连通状态,因而与整个互联网的规模并无直接关系。因此当互联网规模很大时, OSPF协议要比距离向量协议RIP好得多
- OSPF不存在坏消息传的慢的问题,它的收敛速度很快
4.5.3 BGP协议
4.5.3.1 BGP协议和谁交换?多久交换一次?交换什么?
- 和谁交换:与其它AS的邻站BGP发言人交换信息
- 交换什么:交换网络可达性的信息,即要到达某个网络所要经过的一系列AS
- 多久交换:发生变化时更新有变化的部分
4.5.3.2 BGP协议交换信息的过程
BGP所交换的网络可达性的信息:要到达某个网络所要经过的一系列AS
当BGP发言人互相交换了网络可达性的信息后,各BGP发言人就根据所采用的策略从收到的路由信息中找出到达各AS的较好路由
BGP发言人交换路径向量:
自治系统AS2的BGP发言人通知主干网AS1的BGP发言人: “要到达网络N1、 N2、N3、N4可经过AS2。”
主干网还可发出通知:“要到达网络N5、N6和N7可沿路径(AS1, AS3)。”
4.5.3.3 BGP协议报文格式
- 一个BGP发言人与其他自治系统中的BGP发言人要交换路由信息,就要先建立TCP连接,即通过TCP传送,然后在此连接上交换BGP报文以建立BGP会话(session),利用BGP会话交换路由信息
4.5.3.4 BGP协议特点
- BGP支持CIDR,因此BGP的路由表也就应当包括目的网络前缀、下一跳路由器,以及到达该目的网络所要经过的各个自治系统序列。
- 在BGP刚刚运行时, BGP的邻站是交换整个的BGP路由表。但以后只需要在发生变化时更新有变化的部分。这样做对节省网络带宽和减少路由器的处理开销都有好处。
4.5.3.5 BGP-4的四种报文
- OPEN(打开)报文:用来与相邻的另一个BGP发言人建立关系,并认证发送方
- UPDATE(更新)报文:通告新路径或撤销原路径
- KEEPALIVE(保活)报文:在无UPDATE时,周期性证实邻站的连通性;也作为OPEN的确认
- NOTIFICATION(通知)报文:报告先前报文的差错;也被用于关闭连接
4.5.4 三种路由协议的比较
协议 | RIP | OSPF | BGP |
---|---|---|---|
类型 | 内部 | 内部 | 外部 |
路由算法 | 距离-向量 | 链路状态 | 路径-向量 |
传递协议 | UDP | IP | TCP |
路径选择 | 跳数最少 | 代价最低 | 较好,非最佳 |
交换节点 | 和本结点相邻的路由器 | 网络中的所有路由器 | 和本结点相邻的路由器 |
交换内容 | 当前本路由器知道的全部信息,即自己的路由表 | 与本路由器相邻的所有路由器的链路状态 | 首次:整个路由表;非首次:有变化的部分 |
4.6 IP组播
4.6.1 IP数据报的三种传输方式
单播:单播用于发送数据包到单个目的地,且每发送一份单播报文都使用一个单播IP地址作为目的地址。是一种点对点传输方式
广播:广播是指发送数据包到同一广播域或子网内的所有设备的一种数据传输方式,是一种点对多点传输方式
组播(多播):当网络中的某些用户需要特定数据时,组播数据发送者仅发送一次数据,借助组播路由协议为组播数据包建立组播分发树,被传递的数据到达距离用户端尽可能近的节点后才开始复制和分发,是一种点对多点传输方式
4.6.2 IP组播地址
- IP组播地址让源设备能够将分组发送给一组设备。属于多播组的设备将被分配一个组播组IP地址(一群共同需求主机的相同标识)
- 组播地址范围为224.0.0.0~239.255.255.255 (D类地址),一个D类地址表示一个组播组。只能用作分组的目标地址。源地址总是为单播地址
组播的特点:
- 组播数据报也是“尽最大努力交付”,不提供可靠交付,应用于UDP
- 对组播数据报不产生ICMP差错报文
- 并非所有D类地址都可以作为组播地址,有的地址被定义为永久组播地址
4.6.3 硬件组播
- 同单播地址一样,组播IP地址也需要相应的组播MAC地址在本地网络中实际传送顿。
- 地址的转换:组播MAC地址以十六进制值01-00-5E打头,余下的6个十六进制位是IP组播组地址的最后23位
- TCP/IP协议使用的以太网多播地址的范围是:01-00-5E-00-00-00到01-00-5E-7F-FF-FF
4.6.4 IGMP协议与组播路由选择协议
- IGMP协议:判断一个路由器所连的局域网中,是否有主机参加/退出某个组播组
- 组播路由选择协议:路由器之间进行路径选择
4.6.4.1 网际组管理协议 IGMP
IGMP工作的两个阶段:
- ROUND 1
- 某主机要加入组播组时,该主机向组播组的组播地址发送一个IGMP报文,声明自己要称为该组的成员
- 本地组播路由器收到IGMP报文后,要利用组播路由选择协议把这组成员关系发给因特网上的其他组播路由器
- ROUND 2
- 本地组播路由器周期性探询本地局域网上的主机,以便知道这些主机是否还是组播组的成员
- 只要有一个主机对某个组响应,那么组播路由器就认为这个组是活跃的;如果经过几次探询后没有一个主机响应,组播路由器就认为本网络上的没有此组播组的主机,因此就不再把这组的成员关系发给其他的组播路由器
- 组播路由器知道的成员关系只是所连接的局域网中有无组播组的成员,并不会反应该组播组成员有多少个,因为路由器页不知道
4.6.4.2 组播路由选择协议
目的:找出以源主机为根节点的组播转发树
构造树可以避免在路由器之间兜圈子
对不同的多播组对应于不同的多播转发树;同一个多播组,对不同的源点也会有不同的多播转发树
三种算法:
- 基于链路状态的路由选择
- 基于距离-向量的路由选择
- 协议无关的组播(稀疏/密集)
4.6.5 总结
4.7 移动IP
- 动态IP:通过使用DHCP协议,在一个局域网内部的主机可以动态的获得一个IP地址
- 移动IP:物理位置改变,但IP地址不变
4.7.1 移动IP相关术语
- 移动IP技术:是移动结点(计算机/服务器等)以固定的网络IP地址,实现跨越不同网段的漫游功能,并保证了基于网络IP的网络权限在漫游过程中不发生任何改变
- 移动节点:具有永久IP地址的移动设备
- 归属代理(本地代理):一个移动结点拥有的就“居所”称为归属网络,在归属网络中代表移动节点执行移动管理功能的实体叫做归属代理
- 外部代理(外地代理):在外部网络中帮助移动节点完成移动管理功能的实体称为外部代理
- 永久地址(归属地址/主地址):移动站点在归属网络中的原始地址
- 转交地址(辅地址):移动站点在外部网络使用的临时地址
4.7.2 移动IP通信过程
4.8 网络层设备
4.8.1 路由器
- 路由器:是一种具有多个输入端口和多个输出端口的专用计算机
- 任务:转发分组
- 路由选择:根据所选定的路由选择协议构造路由表,同时经常或定期和相邻路由器交换路由信息而不断地更新和维护路由表
- 交换结构:根据转发表(由路由表得来)对分组进行转发
- 转发 vs 路由选择:
- 转发:是一个路由器内部,确定数据应该被发向哪个端口
- 路由选择:是路由器决定数据下一个应当去往哪个路由器
- 如果收到RIP/OSPF分组,则把分组送往路由选择处理机;若收到数据分组,则查找转发表并输出
4.8.1.1 输入端口对线路上收到的分组的处理
输入端口中,查找和转发功能在路由器的交换功能中是最重要的
4.8.1.2 输出端口将交换结构传送来的分组发送到线路
- 若路由器处理分组的速率赶不上分组进入队列的速率,则队列的存储空间最终必定减少到零,这就使后面再进入队列的分组由于没有存储空间而只能被丢弃
- 路由器中的输入或输出队列产生溢出是造成分组丢失的重要原因
4.8.2 三层设备的区别
- 路由器:可以互联两个不同网络层协议的网段
- 网桥:可以互联两个物理层和链路层不同的网段
- 集线器:不能互联两个物理层不同的网段
- 任何层次的设备都能互联它所在的层次以及以下层次不同协议的网段(×,集线器不可以)
能否隔离冲突域 | 能否隔离广播域 | |
---|---|---|
物理层设备(中继器、集线器) | × | × |
链路层设备(网桥、交换机) | √ | × |
网络层设备(路由器) | √ | √ |
4.8.3 路由表与路由转发
- 路由表:根据路由选择算法得出,主要用于路由选择,总用软件实现
- 转发表:根据路由表得出,可以用软件实现,也可以用特殊的硬件来实现。转发表必须包含完成转发功能所必需的信息,在转发表的每一行必须包含从要到达的目的网络到输出端口和某些MAC地址信息的映射
4.9 补充
4.9.1 网络互联:隧道 Tunneling
- 多个相同类型的网络,通过不同类型的网络进行互联
4.9.2 包的切割
- 允许切割
- 不透明:切完以后不还原,到目的地还原
- 透明:切完以后还原
- 不允许切割
- IPv6选择不允许切割,如果包太大,就直接踢回去,让源主机切割
4.9.3 软件定义网络SDN:Software-Defined Networking
- 数据平面:通常是分布式的
- 管理平面:通常是集中式的
- SDN:管理平面集中在一个软件控制器中,软件控制器为每个路由计算其路由表,路由从软件控制器中下载路由表使用
4.9.4 标记交换 Label Switching
Chapter 5:传输层 Transport Layer
5.1 传输层概述
- 只有主机才有
- 为应用层提供通信服务,使用网络层的服务
- 传输层的功能:
- 提供进程与进程之间的逻辑通信(网络层提供的是主机之间的逻辑通信)
- 复用与分用
- 复用:不同进程使用同一传输层协议进行传输
- 分用:将传来的报文段送交给某个进程
- 对收到的报文进行差错检测
5.1.1 传输层的两种协议:TCP、UDP
5.1.2 传输层的寻址与端口
复用:应用层所有的应用进程,都能够通过传输层在传输到网络层
分用:传输层从网络层收到数据后,交付给指明的应用程序
端口/逻辑端口/软件端口:是传输层的SAP,标识主机中的应用进程
- 端口号只有本地意义,在因特网中不同计算机的相同端口是没有联系的
- 端口号长度为16bit,能表示65536个不同的端口号
端口号按范围分:
套接字Socket = (主机IP地址,端口号)
- 在网络中采用发送方和接收方的套接字组合来识别端点
- 套接字唯一标识了网络中的一个主机和它上面的一个进程
5.2 UDP协议
- UDP在IP数据报服务之上,仅添加了复用分用、差错检测功能
- UDP的主要特点:
- 无连接,减小开销和发送数据之前的时延
- 不保证可靠交付
- 面向报文,适合一次性传输少量数据,如果太大需要网络层分片
- 无拥塞控制,适合很多实时应用
- 首部开销小,只有8B(TCP为20B)
5.2.1 UDP首部格式
- 源端口号:可有可无,想要回复则填上
- UDP长度:整个UDP用户数据报的长度
- UDP检验和:检测整个UDP
- 丢弃情况:
- UDP检验和错误,则丢弃报文
- 分用时,找不到目的端口号,则丢弃报文,并发送给发送方ICMP”端口不可达”差错报告报文
5.2.2 UDP检验
5.2.2.1 伪首部
- 伪IP首部
- 只有在计算校验和的时候出现,不向下传送也不向上递交
- 17:封装UDP报文的IP数据报首部协议字段是17
- UDP长度:UDP首部8B + 数据部分的长度,不包括伪首部
5.2.2.2 校验方式
- 发送端:
- 填上伪首部
- 检验和:填充为全0
- 数据部分:不足4B的用0补齐
- 伪首部 + 首部 + 数据部分 用二进制反码求和(此时校验和全0)
- 检验和:将求和结果的反码填入
- 删除伪首部,然后发送
- 接收端:
- 填上伪首部
- 伪首部 + 首部 + 数据部分 用二进制反码求和(此时校验和是有数的)
- 结果全为1则无差错,否则丢弃数据报 / 交给应用层并附上差错的警告
5.3 TCP协议
5.3.1 TCP协议特点
- TCP是面向连接(虚连接)的传输层协议
- 每一条TCP连接只能有2个端点,每一条TCP连接只能是点对点的
- TCP提供可靠交付的服务,无差错、不丢失、不重复、按序抵达:可靠有序,不丢不重
- TCP提供全双工通信:两端均有发送缓存、接收缓存
- 发送缓存:准备发送的数据 & 已经发送但尚未收到确认的数据
- 接收缓存:不按序到达的数据 & 按序到达但尚未被应用程序读取的数据
- TCP面向字节流
- 流:流入到进程 / 从进程流出的数据
- TCP把应用层交下来的数据看成仅仅是一连串的无结构的字节流
5.3.2 TCP报文段首部格式(重点)
- 序号seq 4B:
- 在一个TCP连接中,传送的字节流中的每一个字节都按顺序编号,本字段表示本报文段所发送数据的第一个字节的序号
- 如当前TCP报文发送的是文件的第4、5、6字节,则此处的序号填4
- 确认号ack 4B:
- 期望收到对方下一个报文段的第一个数据字节的序号。若确认号为N,则证明0~N-1的所有数据均已正确收到
- 数据偏移(首部长度) 4bit:
- TCP报文段的数据起始处距离TCP报文段的起始处有多远,单位为4B
- 控制位 6bit:
- 紧急位URG:URG=1时,表明此报文段中有紧急数据,是高优先级的数据,应尽快传送,不用再缓存里排队。配合紧急指针字段使用(发送端的优先处理)
- 确认位ACK:ACK=1时,确认号有效,在连接建立后,所有传送的报文段都必须把ACK置为1
- 推送位PSH:PSH=1时,接收方应尽快交付接收应用进程,不再等到缓存填充满再向上交付(接收端的优先处理)
- 复位RST:RST=1时,表明TCP连接中出现严重差错,必须释放连接,然后再重新建立传输连接
- 同步位SYN:SYN=1时,表明是一个连接请求/连接接受报文
- 终止位FIN:FIN=1时,表明此报文段发送方数据已发完,要求释放连接
- 窗口 2B:
- 发送方的接收窗口,即现在允许对方发送的数据量
- 窗口大小最高为65536
- 如果确认号为701,窗口为1000,则发送方的接收窗口的缓存队列应为701~1700
- 检验和 2B:
- 检验首部 + 数据,检验时要加上12B的伪首部,伪首部的第四个字段为6
- 紧急指针 2B:
- URG=1时才有意义
- 指出本报文段中紧急数据的字节数(紧急数据的末尾在报文段中的位置)
- 如果紧急指针为50,则0~50均为紧急数据
- 选项:
- 最大报文段长度MSS:每个TCP报文段中数据字段的最大长度
- 窗口扩大、时间戳、选择确认
- 填充:
- TCP首部长度为4B的整数倍,一般填充全0
5.3.3 TCP连接管理
TCP连接传输的三个阶段:
- 连接建立
- 数据传输
- 连接释放
TCP连接的建立采用的是客户服务器方式:
- 客户:主动发起连接建立的应用进程
- 服务器:被动等待连接建立的应用进程
5.3.3.1 TCP的连接建立(三次握手)
假设运行在一台主机(客户)上的一个进程想与另一台主机(服务器)上的一个进程建立一条连接,客户应用进程首先通知客户TCP,他想建立一个与服务器上某个进程之间的连接,客户中的TCP会用以下步骤与服务器中的TCP建立一条TCP连接:
- 客户端发送连接请求报文段,无应用层数据
- SYN=1,seq=x(随机数),ACK=0
- 服务器端为该TCP连接分配缓存和变量,并向服务器端返回确认报文段,允许连接,无应用层数据
- SYN=1,ACK=1,seq=y(随机数),ack=x+1
- 客户端为该TCP连接分配缓存和变量,并向服务器端返回确认的确认,可以携带数据
- SYN=0,ACK=1,seq=x+1,ack=y+1
SYN洪泛攻击
- SYN洪泛攻击发生在OSI第四层,这种方式利用TCP协议的特性,就是三次握手
- 攻击者发送TCP SYN, SYN是TCP三次握手中的第一个数据包,而当服务器返回ACK后,该攻击者就不对其进行再确认,那这个TCP连接就处于挂起状态,也就是所谓的半连接状态,服务器收不到再确认的话,还会重复发送ACK给攻击者,这样更加会浪费服务器的资源
- 攻击者就对服务器发送非常大量的这种TCP连接,由于每一个都没法完成三次握手,所以在服务器上,这些TCP连接会因为挂起状态而消耗CPU和内存,最后服务器可能死机,就无法为正常用户提供服务了
解决方法:SYN cookie
5.3.3.2 TCP的连接释放(四次握手)
参与一条TCP连接的两个进程中的任何一个都能终止该连接,连接结束后,主机中的“资源” (缓存和变量)将被释放:
- 客户端发送连接释放报文段,停止发送数据,主动关闭TCP连接
- FIN=1,seq=u(客户端发送到的地方)
- 服务端回送一个确认报文段,客户到服务端这个方向的连接就释放了:半关闭状态
- ACK=1,seq=v(服务器发送到的地方),ack=u+1
- 服务器端发完数据,就发出连接释放报文段,主动关闭TCP连接
- FIN=1,ACK=1,seq=w,ack=u+1
- 客户端回送一个确认报文段,再等到时间等待计时器设置的2MSL(最长报文段寿命)后,连接彻底关闭
- ACK=1,seq=u+1,ack=w+1
- 如果服务器无法收到客户端回送的确认报文段,客户端会在2MSL之内收到重传的报文段,客户端然后重传确认,并且重新启动2MSL的计时器
5.3.4 TCP可靠传输
- 网络层:尽最大努力交付,不可靠传输
- 传输层:使用TCP实现可靠传输
- 可靠:保证接收方进程从缓存区中读出的字节流与发送方发出的字节流是完全一样的
- TCP实现可靠传输的机制:
- 校验:与UDP校验一样,添加伪首部
- 序号
- 确认
- 重传
5.3.4.1 序号
- TCP面向字节流,因此会将字节编号,发送时将多个字节拼在一起形成一个报文段
- 一个字节占一个序号
- 序号字段:一个报文段第一个字节的序号
5.3.4.2 确认
- 接收方发送确认报文段,告诉发送方已经正确接收
- TCP使用累计确认:
- 正常接收78,但确认报文段表示接收方期待4
5.3.4.3 重传
- TCP的发送方在规定的时间内没有收到确认,就要重传已发送的报文段:超时重传,该时间称为重传时间
- TCP采用自适应算法,动态改变重传时间RTTs(加权平均往返时间)
冗余ACK(冗余确认)
- 每当比期望序号大的失序报文段到达时,发送一个冗余ACK,指明下一个期待字节的序号
- 发送方已发送1,2,3,4,5报文段
- 接收方收到1,返回给1的确认(确认号为2的第一个字节)
- 接收方收到3,返回给1的确认(确认号为2的第一个字节)
- 接收方收到4,返回给1的确认(确认号为2的第一个字节)
- 接收方收到5,返回给1的确认(确认号为2的第一个字节)
- 发送方收到3个对于报文段1的冗余ACK → 认为报文段2丢失,重传2号报文段
- 称为快速重传机制
5.3.5 TCP流量控制(重点)
- 流量控制:让发送方慢点,要让接收方来得及接收
- TCP使用滑动窗口机制实现流量控制
- 在通信过程中,接收方根据自己接收缓存的大小,动态地调整发送方的发送窗口大小,即接收窗口rwnd (接收方设置确认报文段的窗口字段来将rwnd通知给发送方)
- 发送方的发送窗口为:min{接收窗口rwnd,拥塞窗口cwnd}
- 建立连接时,接收方返回的确认报文段中包含自己的接收窗口大小,发送方根据上述公式确定发送窗口
- 发送窗口的大小可以动态变化
A向B发送数据,连接建立时,B告诉A:“我的rwnd=400B”
设每一个报文段为100B,报文段序号初始值为1
解决零窗口通知后,新的窗口大小的报文段丢失,导致两个主机相互等待的问题:
- TCP为每一个连接设有一个持续计时器,只要TCP连接的一方收到对方的零窗口通知,就启动持续计时器
- 若持续计时器设置的时间到期,就发送一个零窗口探测报文段。接收方收到探测报文段时给出现在的窗口值
- 若窗口仍然是0,那么发送方就重新设置持续计时器
5.3.6 TCP拥塞控制(重点)
- 出现拥塞的条件:对资源需求的总和 > 可用资源
- 网络中有许多资源同时呈现供应不足 → 网络性能变坏 → 网络吞吐量将随输入负荷的增大而下降
- 拥塞控制:防止过多数据注入网络中
- 全局性问题
- 协调使用资源的所有主机
- 发送方发送的数据无法到达接收端
- 流量控制:
- 点对点问题
- 接收端接收到的数据太多,无法处理
假定:
- 数据单方向传送,另一个方向只传送确认
- 接收方总有足够大的缓存空间,因而发送窗口大小取决于拥塞程度
- 接收窗口:接收方根据接受缓存设置的值,并告知给发送方,反映接收方容量
- 拥塞窗口:发送方根据自己估算的网络拥塞程度而设置的窗口值,反映网络当前容量
5.3.6.1 拥塞控制的四种算法:慢开始 & 拥塞避免 (TCP Tahoe)
- 一个传输轮次:
- 发送了一批报文段,并收到它们的确认时间
- 一个往返时延RTT
- 开始发送一批拥塞窗口内的报文段,到开始发送下一批拥塞窗口内的报文段的时间
- 慢开始:
- 每经过一个传输轮次,拥塞窗口翻倍,指数增长
- 翻倍的时间:收到报文段的确认之后立即翻倍
- 拥塞避免:
- 当拥塞窗口的大小达到ssthresh(拥塞窗口门限值)时,每经过一个传输轮次,拥塞窗口加1,加法增长
- 当出现网络拥塞时
- 将拥塞窗口设置为1
- 修改ssthresh(拥塞窗口门限值),新的
ssthresh
变为原来的一半
5.3.6.2 拥塞控制的四种算法:快重传 & 快恢复 (TCP Reno)
- 快重传:
- 收到同一个报文段的4个ACK报文后,立即重传,不用等待计时器
- 快恢复:
- 快重传后,将拥塞窗口的大小降到新的ssthresh(拥塞窗口门限值)即可
- 新的ssthresh(拥塞窗口门限值):出现快重传时,将当时的拥塞窗口门限值减半
5.3.6.3 TCP CUBIC
5.3.6.4 BBR
- 测出整个路径上的瓶颈带宽、往返时延
- 窗口大小 = 往返时延 * 瓶颈带宽
Chapter 6:应用层
6.1 网络应用模型
6.1.1 应用层概述
- 应用层对应用程序的通信提供服务
- 应用层协议定义:
- 应用进程交换的报文类型,请求还是响应?
- 各种报文类型的语法,如报文中的各个字段及其详细描述
- 字段的语义,即包含在字段中的信息的含义
- 进程何时、如何发送报文,以及对报文进行响应的规则
- 应用层功能:
- 文件传输、访问、管理
- 电子邮件
- 虚拟终端
- 查询服务和远程作业登录
- 应用层的重要协议
- FTP
- SMTP、POP3
- HTTP
- DNS
6.1.2 网络应用模型
- 客户/服务器模型:Client/Server
- P2P模型:Peer-to-Peer
6.1.2.1 客户/服务器模型
- 服务器:提供计算服务的设备
- 永久提供服务
- 永久性访问地址/域名
- 客户机:请求计算服务的主机
- 与服务器通信,使用服务器提供的服务
- 间歇性接入网络
- 可能使用动态IP地址
- 不与其它客户机直接通信
- 应用:Web、FTP、远程登录、电子邮件
6.1.2.2 P2P模型
- 不存在永远在线的服务器
- 每个主机既可以提供服务,也可以请求服务
- 任意端系统/节点之间可以直接通讯
- 节点间歇性接入网络
- 节点可能改变IP地址
- 可拓展性好:主机多了,提供服务的也多了,不会受到服务器带宽的限制
- 网络健壮性强:一台主机坏了,对于其它主机影响不大,而C/S模型中服务器坏了就都无法使用服务了
6.2 DNS系统
6.2.1 域名
- 通过.区分标号,每个标号不能超过63个字符(通常不超过12个字符)
- 每一个标号的字符不区分大小写,只能包括字母、数字、-
- 越靠右,级别越高
- 根:在顶级域名之后的一个.
- 顶级域名:
- 国家顶级域名:
cn
,us
,uk
- 通用顶级域名:
com
(公司/企业),net
(提供信息服务),org
(非盈利性组织),gov
(政府),int
(国际组织),aero
(航空),museum
(博物馆),travel
(旅游业) - 基础结构域名/反向域名:
arpa
(反向域名解析--IP地址解析为域名)
- 国家顶级域名:
- 二级域名:
- 类别域名:
ac
(科研机构),com
(公司/企业),edu
(教育),gov
(政府),mil
(中国国防机构),net
(提供信息服务),org
(非盈利性组织) - 行政区域名:用于我国各省、自治区、直辖市,
bj
、js
- 自己注册的域名:
cctv
、cskaoyan
- 类别域名:
- 三级域名:
- 四级域名:
6.2.2 域名服务器
- 根域名服务器:知道顶级域名服务器所对应的IP地址
- 因特网一共有13个根域名服务器域名,分别为
a.rootservers.net
~m.rootservers.net
- 因特网一共有13个根域名服务器域名,分别为
- 顶级域名服务器:管理该顶级域名服务器注册的所有二级域名
- 权限域名服务器:负责一个区的域名服务器
- 区:一台域名服务器所管辖的实际范围
- 图中
abc.org
和y.abc.org
是两个平等的区,由两个权限域名服务器控制
- 本地域名服务器:当一个主机发出DNS查询请求时,这个查询请求报文就发给本地域名服务器
6.2.3 域名解析过程
- 递归查询:靠别人
- 查询顺序:主机 => 本地域名服务器 => 根域名服务器 => 顶级域名服务器 => 权限域名服务器
- 返回顺序:权限域名服务器 => 顶级域名服务器 => 根域名服务器 => 本地域名服务器 => 主机
- 迭代查询:靠自己
- 查询顺序:主机 => 本地域名服务器 => 根域名服务器 => 本地域名服务器 => 顶级域名服务器 => 本地域名服务器 => 权限域名服务器
- 返回顺序:本地域名服务器 => 主机
- 高速缓存:
- 本机域名服务器/主机中的高速缓存
- 存放最近查询到的域名,以及从何处得到的该域名信息的记录
- 会定期更新
6.3 文件传输协议FTP
- 文件传输协议FTP:File Transfer Protocol
- 提供不同种类主机系统之间的文件传输能力
- 硬件、软件体系等都可以不同
- 是一种拷贝:上传 & 下载
- 简单文件传输协议TFTP:Trivial File Transfer Protocol
6.3.1 FTP服务器和用户端
- FTP是基于客户/服务器(C/S)的协议
- 用户通过一个客户机程序连接到在远程计算机上运行的服务器端程序
- FTP服务器:依照FTP协议提供服务,进行文件传输的计算机
- FTP客户端:连接FTP服务器,遵循FTP协议与服务器传送文件的电脑
6.3.2 FTP工作原理
- 登陆:
- ftp地址
- 用户名 & 密码
- 匿名登陆
- 互连网中有很大一部分FTP服务器被称为“匿名” (Anonymous) FTP服务器
- 这类服务器的目的是向公众提供文件拷贝服务,不要求用户事先在该服务器进行登记注册,也不用取得FTP服务器的授权
Anonymous
(匿名文件传输)能够使用户与远程主机建立连接并以匿名身份从远程主机上拷贝文件,而不必是该远程主机的注册用户- 用户使用特殊的用户名“
anonymous
"登陆FTP服务,就可访问远程主机上公开的文件
- ftp地址
- FTP使用TCP实现可靠传输
- FTP服务器进程
- 1个主进程:负责接收新的请求
- 打开服务器的熟知端口
21
- 等待客户程序进行连接请求
- 打开服务器的熟知端口
- n个从属进程:负责与客户程序进行文件传输
- 1个主进程:负责接收新的请求
- 控制进程、数据传送进程 均为 从属进程
- 控制连接始终保持
- 数据连接只保持一会
- 是否使用
TCP 20
端口建立数据连接,与传输模式有关- 主动方式,使用
TCP 20
端口 - 被动方式,由服务器与客户端自行协商决定(端口>1024)
- 主动方式,使用
- FTP传输模式
- 文本模式:ASCII模式,以文本序列传输数据
- 二进制模式:Binary模式,以二进制序列传输数据
6.4 电子邮件
6.4.1 电子邮件的信息格式
- 电子邮件
- 信封:
- 收件人的邮箱,如
abc@163.com
abc
是收件人在网易邮箱服务器中注册的用户名@163.com
表示使用的是网易邮箱服务器
- 收件人的邮箱,如
- 内容:
- 首部:
- 发送给谁,如
To: abc@163.com
- 邮件的主题,如
Subject: Hello!
- 会自动生成一部分内容
- 发送给谁,如
- 主体
- 首部:
- 信封:
6.4.2 组成结构
- 用户代理:电子邮件客户端软件
- 撰写邮件
- 显示邮件
- 处理邮件:发送/接收/转发…
- 通信:将邮件发送出去
- 邮件服务器:
- 发送&接收邮件
- 向发件人报告邮件传送结果
- 使用C/S模式,既可以作客户,也可以作服务器
- 协议:
- SMTP:发送邮件
- POP3、IMAP:接收邮件
6.4.3 简单邮件传送协议SMTP
TCP连接、端口号25、C/S模式
- SMTP规定了:在两个相互通信的SMTP进程之间应如何交换信息
- SMTP客户:负责发送邮件的SMTP进程
- SMTP服务器:负责接收邮件的进程
- SMTP规定了14条命令(几个字母)和21种应答信息(三位数字代码+简单文字说明)
SMTP通信的三个阶段:
连接建立
邮件传送
连接释放
SMTP缺点:
- SMTP不能传送可执行文件或者其他二进制对象
- SMTP仅限于传送7位ASCII码,不能传送其他非英语国家的文字
- SMTP服务器会拒绝超过一定长度的邮件。
6.4.4 通用因特网邮件扩充MIME
- 使电子邮件系统可以支持声音、图像、视频、多种国家语言等等
- 使得传输内容丰富多彩
6.4.5 邮局协议POP3
TCP连接、端口号110、C/S模式
接收端邮件服务器 => 用户代理
POP3工作方式:
- 下载并保留(在服务器)
- 下载并删除
6.4.6 网际报文存取协议IMAP
接收端邮件服务器 => 用户代理
- IMAP协议比POP协议复杂
- 当用户PC上的IMAP客户程序打开IMAP服务器的邮箱时,用户可以看到邮箱的首部,若用户需要打开某个邮件,该邮件才上传到用户的计算机上
- IMAP可以让用户在不同的地方使用不同的计算机随时上网阅读处理邮件,还允许只读取邮件中的某一个部分(先看正文,有WiFi的时候再下载附件)
6.4.7 基于万维网的电子邮件
- 用户代理 => 邮件服务器:HTTP
- 邮件服务器 => 邮件服务器:SMTP
- 邮件服务器 => 用户代理:HTTP
6.5 万维网 & HTTP协议
6.5.1 万维网概述
- 万维网WWW(World Wide Web):是一个大规模的、联机式的信息储藏所/资料空间,是无数个网络站点和网页的集合
- 资源:文字、音频、视频…
- 访问资源的方式:统一资源定位符URL
- URL的一般形式:
<协议>://<主机>:<端口>/<路径>
,URL不区分大小写- 协议:http、ftp等
- 主机:域名、IP地址
- 用户通过点击超链接获取资源,这些资源通过超文本传输协议HTTP传送给使用者
- 万维网以客户/服务器方式工作,用户使用的浏览器就是万维网客户程序,万维网文档所驻留的主机运行服务器程序
- 万维网使用超文本标记语言HTML,使得万维网页面设计者可以很方便地从一个界面的链接转到另一个界面,并能够在自己的屏幕上显示出来
6.5.2 超文本传输协议HTTP
- HTTP协议:定义了浏览器(万维网客户进程)怎样向万维网服务器请求万维网文档,以及服务器怎样把文档传送给浏览器
- 服务器:一个服务器进程监听
TCP 80
端口 - 用户浏览界面的方法:
- 输入URL
- 点击超链接
6.5.2.1 具体过程
- 浏览器分许URL
- 浏览器向DNS请求解析IP地址
- DNS解析出IP地址
- 浏览器与服务器建立TCP连接
- 浏览器发出取文件命令
- 服务器响应
- 释放TCP连接
- 浏览器显示:浏览器可以只下载文本部分,之后再下载音频等内容
6.5.2.2 HTTP协议的特点
- HTTP协议是无状态的,不会记录用户的登录信息
- 通过使用Cookie记录用户的信息
- Cookie是存储在用户主机中的文本文件,记录一段时间内某用户(使用识别码识别,如“123456”)的访问记录
- 从而可以提供个性化服务
- 采用TCP作为运输层协议,但HTTP协议本身是无连接的,通信双方再交换HTTP报文之前不需要先建立HTTP连接
6.5.2.3 HTTP的连接方式
- 持久连接Keep-alive:
- 非流水线:收到响应之后,才能发送下一个请求
- 流水线:可以连续发送请求,服务器依次返回请求
- 非持久连接Close:
6.5.2.4 HTTP报文结构
HTTP报文是面向文本的,因此在报文中的每一个字段都是一些ASCII码串
HTTP报文分为:请求报文、响应报文
- 开始行:请求报文对应请求行,响应报文对应状态行
- 方法:即命令,被请求的对象应执行什么操作
- 首部行:说明浏览器、服务器、报文主题的一些信息
- 状态码:
1xx
:表示通知信息,如请求收到了或正在处理2xx
:表示成功,如接受或知道了- 如:
202 Accepted
- 如:
3xx
:表示重定向,如要完成请求还必须采取进一步的行动- 如:
301 Move Permanently
- 如:
4xx
:表示客户的差错,如请求中有错误的语法或不能完成- 如:
404 Not Found
- 如:
5xx
:表示服务器的差错,如服务器失效无法完成请求
6.6 流媒体 Streaming Audio and Video
- 都是压缩的
- 都是边收边发
Chapter 7:网络安全
7.1 网络安全的5个方面
传统密码学:机密性问题、不可否认性问题、完整性问题、认证问题
机密性问题:Confidentiality
- 保证发送的数据让非特权用户无法理解
- 默认:发送的数据所有人都可以收到
不可否认性问题:Nonrepudiation
- 数字签名
完整性问题:Integrity
- 保证接收到的数据,与发送的数据相同
- 消息摘要
认证问题:Authentication
- 证书
可用性问题:Availability
- 保证系统可以使用
7.2 网络攻击的方式
7.2.1 四个步骤
- 侦察 Reconnaissance:
- 传统为扫描,找到攻击的目标
- 嗅探和窥探 Sniffing and snooping:
- 嗅探:将网络上的包保存下来
- 窥探:冲到系统里面,把里面的数据保存下来
- 欺骗 Spoofing:
- 让不应该发到我这里的包,发送到我这里
- 修改DNS
- 让交换机的转发表溢出,从而让交换机不得不广播数据
- 破坏 Disruption
7.2.2 分布式拒绝服务攻击 DDoS
- TCP的三次握手,会占用服务器较多的资源
- 网络攻击的手段:控制多个僵尸网络,同时向服务器发送TCP连接建立请求,然后僵尸网络不回复,通常TCP连接建立的超时时间有2分钟,在这段时间内,服务器会进行等待
- 对应手段:SCTP协议
- 连接建立时,服务器进行数据的加密,做成cookie,放到连接建立请求的确认包中,返回给发送方
- 客户端进行二次确认时,要把cookie再送回来
- 服务区把送回的数据解密,然后对对应的客户建立服务
- 相当于服务器没有维持状态,而是将状态放到包中
7.3 防火墙
- 目的:避免公网上的火烧到内网
- 方式:
- 对进出的包进行过滤
- 对网络通信的行为进行分析,判断连接让进还是不让进
- DeMilitarized zone:非军事区,将内网的一部分内容放在防火墙外面,让公网的人能够访问
7.4 密码学 Cryptography
7.4.1 密码学加密模型
- 通信双方:Alice、Bob
- 概念
- 明文 Plaintext:想要发送的原始数据,是保密的
- 密文 Ciphertext:加密后的数据,是公开的
- 加密函数 Encryption method
- 解密函数 Decryption method:两个函数是逆运算
- 加密密钥 Encryption key
- 解密密钥 Decryption key
- Alice会将明文发送给加密函数,进行加密,获得密文
- Bob收到密文后,会将其发送给解密函数,进行解密,获取明文
- 加密的目标:敌人得到密文后,得不到对应的明文
- 两种敌人:
- 将密文偷偷截取下来
- 将密文截取下来后,发送另一个密文
- 通常,加密和解密的函数都是公开的,甚至是标准化的
- 密钥是保密的
- 通常,加密密钥和解密密钥是同一个,或者很容易转换
- 两种敌人:
- 加密系统的强度
- 加密/解密函数的强度
- 密钥不能重复使用,不能容易猜出
7.4.2 加密/解密函数
任何加密/解密函数,都是基于两个操作的迭代
替换:将一个字母用另一个字母替换
- 单替换可以通过词频统计来破译
转置:将明文按照n个一组写成一行一行的,然后交换某些列,得到密文
- 可以通过计算机枚举,获得明文
7.4.2.1 DES标准:The Data Encryption Standard
将明文切块,分别进行加密
- DES的块的大小为8字节
IBM的原始设计:每次加密做了16次迭代,128 bit的密钥
经过NSA的修正:每次加密做了16次迭代,64 bit的密钥,并且不能公开函数的设计的思路
Triple DES:将DES做三次,但只有两个密钥
7.4.2.2 AES标准:The Advanced Encryption Standard
- 密钥长度:128,192,256 bits
- 也是分块加密
7.4.3 密钥不能被猜出来
- 要尽可能随机
- 伪随机数:通过函数计算出来,在一定时间后一定会发生重复
- 发生重复越晚,随机数生成算法更好
- 不能重复使用
7.4.3.1 Cipher Mode
将Pi计算出的密文,与Pi+1异或
将刚刚计算出的6个字节的密文再次加密,获得最左边的字节,然后与P10进行异或,得到C10
给定初始值和密钥,生成密文,生成的密文会参与下一次的加密计算
7.4.4 传统密码体制 / 对称密码体制
- 密钥是对称的、函数也是对称的
- 缺点:密钥的分发存在困难
7.4.5 现代密码体制 / 公钥体制
相同点:
- 加密函数、解密函数仍然是逆运算,也是公开的
不同点:
- 加密密钥、解密密钥是不同的
- 加密密钥:公开的,也叫公钥
- 解密密钥:私有的,也叫私钥
- 算法上保证公钥推出私钥的难度很大
- 公钥体制的计算量很大,一般用于要加密的内容较少的地方/特殊用途
7.4.5.1 RSA算法
算法详情:
- 选择两个质数\(p\)和\(q\)
- 计算\(n=p*q\),\(z=(p-1)*(q-1)\)
- 选择一个与\(z\)接近的素数,称为\(d\)
- 找到满足\(e*d=1\ (mod\ z)\)的\(e\)
7.5 反拒认:数字签名
7.5.1 Big Brother
- Alice将借条给Big Brother
- Big Brother将借条给Bob
- Bob要债时,Big Brother作为公证人,证明借条的有效性
7.5.2 公钥数字签名
- Alice将借条的明文P,通过Alice的解密函数和私钥进行加密,得到密文DA(P)
- DA(P)即为经过数字签名的借条
- Alice还会将DA(P),通过Bob的加密函数和公钥进行加密,得到密文EB(DA(P))
- EB(DA(P))在公网上进行传输,发送给Bob
- EB(DA(P))发送给Bob后,Bob用过Bob的的解密函数和私钥进行解密,得到密文DA(P)
- Bob然后通过Alice的加密函数和公钥进行解密,得到借条的明文P
- 反拒认:Bob将DA(P)给到法官,法官通过Alice的加密函数和公钥进行解密,得到借条的明文
- 由于Alice的公钥和私钥唯一,且私钥不可知,因此该借条不可能被伪造
7.6 数据的完整性(防篡改):消息摘要
7.6.1 消息摘要
- 给定P,计算MD(P)
- MD(P),很难计算P
- 如果P有轻微变化,MD(P)会变化非常大
- 为了防止摘要被篡改,所有摘要都是有数字签名的
7.7 认证问题:证书
- 保证证书的真实性:找发证书的机构,对证书进行一次摘要,然后附加到证书上
- 证书中,除了有该节点的信息,还会该节点的公钥
7.7.1 X.509
- 发证书的实际机构是:CA
- CA的证书由RA颁发,RA的证书由Root颁发
- 一般浏览器会预置一部分根证书,根证书也可以通过自己添加
7.8 基本应用
7.8.1 通信安全
IPsec:将认证信息,添加到IP数据报中
Virtual Private Network:VPN,虚拟私有网
- 是一个叠加网,在公网上建立一个叠加网,添加一些认证方式
Wireless Security:无线安全
7.8.2 邮件安全
PGP:Pretty Good Privacy
- 明文P计算摘要,然后使用Alice的私钥进行签名,计算结果与P结合,形成P1
- 将P1压缩,形成P1.Z
- Alice选择一个随机数KM,对P1.Z使用AES进行加密
- 同时,使用Bob的公钥,对KM进行加密,与加密后的P1.Z一起发送给Bob
- 最后使用Base64,将内容发送
7.8.3 WEB安全
DNS的安全问题:
- 内容不能被造假
- 访问数据属于隐私问题
WEB安全
- HTTP协议没有安全保证
- HTTPS:Secure HTTP
- Security(SSL):安全套接子层
- TLS:Transport Layer Security
运行代码安全
- WEB的代码是在客户端本地运行的,可能对客户端产生安全威胁
- 使用虚拟机