计算机网络
网络体系结构(5层)、各层协议、典型网络、网络设备
# 1 概述
# 1.1 计算机网络概念
网络包含计算机网络 计算机网络:一个将分散的、具有独立功能的计算机系统,通过通信设备与线路连接起来,由功能完善的软件实现资源共享和信息传递的系统 计算机网络是互连的、自治的计算机集合 互连:互联互通,计算机相互之间连通,能通信;自治:计算机之间不存在主从关系,不能彼此控制对方
# 1.2 计算机网络功能
- 数据通信(最重要) 保证连通性
- 资源共享(主要) 三大类:硬件资源共享;软件资源共享;数据资源共享
- 分布式处理 多台计算机各自承担同一工作任务的不同部分 常见平台:Hadoop(大数据常用)
- 提高可靠性 存在替代机,
- 负载均衡 分布式处理达到的效果
# 1.3 计算机网络的组成
# 1.3.1 组成部分
- 硬件:主机(端系统)、链路(例如光纤)、通信设备(路由器等)
- 软件:安装在端系统上的应用软件
- 协议(计算机网络的协议):一系列规则和约定的集合
# 1.3.2 工作方式
- 边缘部分:主机存在的部分、用户直接使用的;两种通信方式(C/S;P2P)
- 核心部分:为边缘部分服务
# 1.3.3 功能组成
- 通信子网:实现数据通信;各种传输介质、通信设备、相应网络协议组成
- 资源子网:实现资源共享、数据处理;实现资源共享功能的设备和软件的集合
# 1.4 计算机网络的分类
# 1.4.1 按分布范围
- 广域网:交换技术
- 城域网
- 局域网:广播技术
- 个人区域网
# 1.4.2 按使用者
- 公用网
- 专用网
# 1.4.3 按交换技术
- 电路交换
- 报文交换
- 分组交换
# 1.4.4 按拓扑结构
- 总线型
- 星型
- 环型
- 网状型(常用于广域网)
# 1.4.5 按传输技术
- 广播式网络:共享公共通信信道
- 点对点网络:使用分组存储转发和路由选择机制
# 1.5 标准化工作
# 1.5.1 标准分类
- 法定标准:由权威机构指定的正式的、合法的标准(OSI)
- 事实标准:产品长期占据主流,产品中的协议进而技术(TCP/IP)
# 1.5.2 RFC因特网标准形式
上升成为因特网正式标准的四个阶段
- 因特网草案
- 建议标准:正式成为RFC文档
- 草案标准
- 因特网标准
# 1.5.3 标准化相关组织
- ISO :国际化标准组织
- ITU:国际电信联盟
- IEEE:国际电气电子工程师协会
- IETF:Internet工程任务组
# 1.6 计算机网络性能
# 1.6.1 速率
速率即数据率或数据传输率或比特率 比特:数据量的单位 速率:连接在计算机网络的主机在数字信道上传送数据位数的速率 速率单位的换算是10^3,但存储容量是2^10=1024 存储容量中1Byte(字节)= 8bit(比特)
# 1.6.2 带宽
带宽原本指某个信号具有的频带宽度,即最高频率与最低频率只差,单位是赫兹 在计算机网络中,带宽用来表示网络的通信线路传送数据的能力 通常指单位时间内从网络中某一点到另一点所能通过的“最高数据率” 单位是比特每秒,b/s 带宽是网络设备所支持的最高速度
# 1.6.3 吞吐量
单位时间内通过某个网络的数据量,单位b/s 吞吐量手网络的带宽或网络的额定速率的限制
# 1.6.4 时延
指数据从网络的一端传送到另一端所需要的时间,也叫延迟或迟延。单位是s 时延分成4大类
- 发送时延(传输时延):发送分组的第一个比特算起,到改分组的最后一个比特发送完毕所需的时间 发送时延=数据长度/信道带宽(发送速率)
- 传播时延:电磁波在信道中传播一定距离花费的时间 取决于电磁波传播速度和链路长度 传播时延=信道长度/电磁波在信道上的传播速率
- 排队时延:等待输出、输入链路中花费的时间
- 处理时延:主机或路由器在收到分组时花费的时间
# 1.6.5 时延带宽积
时延带宽积(bit) = 传播时延(s) * 带宽(b/s) 描述数据量、信息量的性能属性 以比特为单位的链路长度,链路数据容量
# 1.6.6 往返时延RTT
从发送方发送数据开始(第一个比特位发送),到发送发收到接收方的确认(第一个比特确认),急售房收到数据后立即发送确认,总工经历的时延 RTT越大,在收到确认之前,可以发送的数据越多 RTT = 2*传播时延+末端处理时间
# 1.6.7 利用率
- 信道利用率 = 有数据通过的时间/(有+无)数据通过时间
- 网络利用率 = 信道利用率加权平均值
# 1.7 分层结构
# 1.7.1 分层的基本原则
服务:每两层之间提供的东西,上层是使用下层服务,下层为上层服务 分层的基本原则:
- 各层之间相互独立,每层只实现一种相对独立的功能
- 每层之间的界限自然清晰,易于理解,相互交流尽可能少
- 结构上可分割开。每层都采用最适合的技术来实现
- 保持下层对上层的独立性,上层单向使用下层提供的服务
- 整个分层结构应该能促进标准化工作
# 1.7.2 分层中的概念
- 实体:第n层中的活动元素称为n层实体
- 对等实体:同一层的实体
- 协议:对进行网络中的对等实体数据交换而建立的规则、标准或约定(水平的) 协议三要素:语法(传输数据的格式);语义(规定所要完成的功能);同步(规定各种操作顺序)
- 接口(访问服务店SAP):上层使用下层服务的入口
- 服务:下层为响铃上层提供的功能调用(单向、垂直)
- SDU(服务数据单元):为完成用户所要求的的功能而应传送的数据
- PCI(协议控制信息):控制协议操作的信息
- PDU(协议数据单元):对等层次之间传送的数据单元
- 计算机网络体系结构是计算机网络的各层及其协议的集合
# 1.8 计算机网络分层结构
# 1.8.1 OSI参考模型
法定标准;7层(物联网淑惠试用) 目的:支持异构网络体系的互联互通 自下而上:物理层、数据链路层、网络层、传输层、会话层、表示层、应用层 通信子网(数据通信):物理层、数据链路层、网路层 资源子网(数据处理):应用层、表示层、会话层
# 应用层
用户与网络的界面,所有能和用户交互产生网络流量的程序 常见应用层服务:文件传输(FTP)、电子邮件(SMTP)、万维网(HTTP)
# 表示层
用于处理再两个通信系统中交换信息的表示方式(语法和语义) 功能:
- 数据格式变换
- 数据加密解密
- 数据压缩和恢复
# 会话层
像表示层实体/用户进程提供简历连接并在连接上有序地传输数据,会话,也是建立同步 会话之间彼此独立互不影响 功能:
- 建立、管理、终止会话
- 使用校验点可使会话在通信失效时从校验点(同步点)继续恢复通信,实现数据同步 主要协议:ADSP、ASP
# 传输层
负责主机中两个进程的通信,即端到端的通信。传输单位是报文段或用户数据报 功能:
- 可靠传输(有确认机制)、不可靠传输
- 差错控制
- 流量控制
- 复用分用 主要协议:TCP、UDP
# 网络层
把分组从源端传到目的端,为分组交换网上的不同主机提供通信服务 网络层的传输单位是数据报 功能:
- 路由选择
- 流量控制
- 差错控制
- 拥塞控制 主要协议:IP、IPX等
# 数据链路层
把网络层传下来的数据报组装成帧 传输单位:帧 功能:
- 成帧(定义帧的开始和结束)
- 差错控制(帧错、位错)
- 流量控制
- 访问(接入)控制,控制对信道的访问 主要协议:SDLC、HDLC、PPP、STP
# 物理层
物理媒体上实现比特流的透明传输 传输单位:比特 透明传输:不管所传数据是怎样的比特组合都应当能在链路上传送 功能:
- 定义接口特性
- 定义传输模式
- 定义传输速率
- 比特同步
- 比特编码 主要协议:Rj45、802.3
# 1.8.2 TCP/IP参考模型
事实标准;4层
# 网络接口层
HTTP、FTP、DNS
# 网际层
TCP、UDP
# 传输层
IP、IP
# 应用层
Ethernet、ATM、Frame Relay
# 与OSI的异同
相同点:
- 都分层
- 基于独立的协议栈的改线
- 可以实现异构网络互联 不同点:
- OSI定义三点:服务、协议、接口
- OSI先出现,参考模型先于协议发明,不偏向特定协议
- TCP/IP设计之初就考虑到异构网互联问题,将IP作为重要层次
- 连接方式:TCP/IP特别看重异构网互联,所以网络层为无连接,而不是面向连接 PS:面向连接(有确认过程的信息传输),无连接(直接传输)
# 1.8.3 5层参考模型
综合了OSI和TCP/IP的有点
# 应用层
支持各种网络应用
# 传输层
进程-进程的数据传输
# 网路层
源主机到目的主机的数据分组路由与转发
# 数据链路层
把网络层传下来的数据报组装成帧
# 物理层
比特传输
# 2 物理层
- 通信基础
- 两个公式lim
- 看图说话
- 传输介质
- 物理层设备
# 2.1 物理层基本概念
- 物理层解决如何在连接各种计算机的传输媒体上传输数据比特流,而不是指具体的传输媒体
- 物理层主要任务:确定与传输媒体接口有关的一些特性
- 机械特性:定义物理接连的特性
- 电气特性:规定传输二进制位时,线路上信号的电压范围、阻抗匹配、传输速率和距离限制等
- 功能特性:指明某条线上出现的某一电平表示何种意义,接口部件的信号线的用途
- 过程特性:定义各条物理线路的工作规程和时序关系
# 2.2 数据通信基础知识
- 通信目的:传送消息
- 数据:传送信息的实体,通常是有意义的符号序列
- 信号:数据的电器/电磁的表现,是数据在传输过程中的存在形式
- 数字信号:代表消息的参数取值是离散的
- 模拟信号:代表信息的参数取值是连续的
- 信源:产生和发送数据的源头
- 信宿:接受数据的终点
- 信道:信号的传输媒介
- 三种通信方式:单工通信、半双工通信(不能同时发收)、全双工通信
- 两种数据传输方式:串行传输(速度慢、费用低、适合远距离)、并行传输(速度快、费用高、适合近距离)
# 2.3 码元
- 码元:一个固定时长的信号波形,代表不同离散数值的基本波形,是阿虎I通信中数字信号的计量单位
- 码元宽度:码元的时长
- 当码元的离散状态有M个时,称为M进制码元
- 1码元可以携带多个比特的信息量
# 2.4 速率、波特、带宽
- 速率也叫数据率,指数据的传输速率,代表单位时间内容传输的数据量
- 可以用码元传输速率和信息传输速率表示
- 码元传输速率:1s传输多少码元,表示单位时间内数字通信系统所传输的码元个数(脉冲个数、信号变化次数)。又称码元速率、波形速率、调制速率、符号速率。单位波特(Baud)
- 信息传输速率:1s传输多少比特,表示单位时间内容数字通信系统传输的二进制码元个数(比特数)。又称信息速率、比特率。单位是比特/秒(b/s)
- 带宽:表示带单位时间内从网络中的某一点到另一点所能通过的“最高数据率”
# 2.5 奈氏准则和香农定理
- 影响失真程度的因素:码元传输速率;信号传输距离;噪声干扰;传输媒体质量
- 信道带宽:信道能通过的最高频率和最低频率之差
- 码间串扰:接收端收到的信号波形失去了码元之间清晰界限的现象
- 奈氏准则给出了码元传输速率的限制,但没有对信息传输速率给出限制
- 香农定理:在带宽受限且有噪声的信道中,为了不产生误差,信息的传输速率有上限值
# 2.6 编码与调制
# 2.6.1 系带信号与宽带信号
- 基带信号:将数字信号用两种不同的电压表示送到数字信道上传输(基带传输)
- 宽带信号:将基带信号进行调制后形成的频分复用模拟信号,再传送到模拟信号上去传输(宽带传输)
# 2.6.2 编码
数据变为数字信号
# 数字数据编码为数字信号
- 非归零编码(NRZ)
- 曼切斯特编码
- 差分曼切斯特编码
# 模拟数据编码为数字信号
- PCM:抽样、量化、编码
# 2.6.3 调制
数据变为模拟信号
# 数字数据调制为模拟信号
- ASK(调幅)
- FSK(调频)
- PSK(调相)
- QAM(调幅+调相)
# 模拟数据调制为模拟信号
# 2.7 物理层传输介质
传输介质:数据传输系统中在发送设备和接受设备之间的物理通路,也称传输媒体/传输媒介
# 2.7.1 导向性传输介质
- 双绞线,绞合可以减少对相邻导线的电磁干扰
- 同轴电缆
- 光纤
# 2.7.2 非导向性传输介质
- 无线电波
- 微波
- 红外线、激光
# 2.8 物理层设备
# 2.8.1 中继器
对信号进行再生和还原,再生数字信号 5-4-3规则:最多5个网段、最多4个物理层设备、最多挂3个计算机
# 2.8.2 集线器(多口中继器)
对信号进行放大转发,再生,放大信号 不具备信号的定向传送能力,是一个共享性设备
# 3 数据链路层
- 链路层的功能
- 链路层的两种信道
- 局域网、广域网
- 链路层的设备
# 3.1 数据链路层概述
# 3.1.1 数据链路层基本概念
- 结点:主机、路由器
- 链路:网络中两个结点之间的物理通道,链路的传输介质主要是双绞线、光纤和微波。分为有限链路、无线链路
- 数据链路:网络中两个结点之间的逻辑通道,把实际控制数据传输协议的硬件和软件加到链路上就构成数据链路
- 帧:链路层的协议数据单元,封装网络层数据报
- 数据链路层负责通过一条链路从一个结点向两一个物理链路直接连接的相邻结点传送数据报
# 3.1.2 数据链路层功能概述
数据链路层在物理层提供服务的基础上向网络层提供服务,其最基本的服务是将源自网络层来的数据可靠地传输到相邻结点的目标机网络层。其主要作用是加强物理层传输原式比特流的功能,将物理层提供的可以出错的物理连接改造成为逻辑上无差错的数据链路,使之对网络层表现为一条无差错的链路
- 为网络层提供服务:无确认无连接服务、有确认无连接服务、有确认面向服务(有连接一定有确认)
- 链路管理,即连接的建立、维持、释放(用于面向连接的服务)
- 组帧
- 流量控制
- 差错控制
# 3.2 封装成帧
- 封装成帧:在一段数据的前后部分添加首部和尾部,这样就构成了一个帧。接收端在收到物理层上交的比特流后,就能根据首部和尾部的标记,从收到的比特流中识别帧的开始和结束
- 首部和尾部包含许多控制信息,他们的一个重要作用:帧定界(确定帧的界限)
- 帧同步:接收方应该能从接收到的二进制比特流中区分出帧的起始和终止
- 数据链路层的帧长:帧首部到帧尾部的距离
- 最大传送单元(MTU):帧的数据部分的最大长度
- 组帧方法:①字符计数法;②字符(节)填充法;③零比特填充法;④违规编码法
- 透明传输:不管所传数据是什么样的比特组合,都应当能够在链路上传送
# 3.2.1 字符技术法
帧首部使用一个计数字段(第一个字节,八位)来标明帧内字符数 首部一旦发生错误,后面全部无法识别
# 3.2.2 字符填充法
在发送端添加转义字符,在接收端把转义字符删掉,实现透明传输
# 3.2.3 零比特填充法
- 在发送端,扫描整个信息字段,只要连续5个1,就立即填入1个0
- 在接收端收到一个帧时,先找到标志字段确定边界,再用硬件对比特流进行扫描。发现连续5个1时,就把后面的0删除 保证了透明传输
# 3.2.4 违规编码法
用两个编码中不会用到的电平方式来标志帧的起始和终止
# 3.3 差错控制
# 3.3.1 差错
# 差错的来源
传输中的差错都是由于噪声引起的
- 全局性噪声:由于线路本身电气特性所产生的所及噪声(热噪声),是信道固有的,随机存在的 解决方法:提高信噪比来减少或避免干扰(调整传感器)
- 局部性噪声:外界特定的断站原因所造成的冲击噪声,是产生差错的主要原因 解决办法:通常利用编码技术来解决
# 差错的分类
- 位错:比特位出错,1变成0、0变成1
- 帧错:帧丢失;帧重复;帧失序
# 3.3.2 检错编码
# 奇偶校验码
由n-1位信息元和1位校验元组成
- 奇校验码:n个比特有奇数个1
- 偶校验码:n个比特有偶数个1 只能检查出奇数个比特错误,检错能力为50%
# CRC循环冗余码
最终发送的数据:要发送的数据+帧检验序列FCS(冗余码) 计算冗余码: 1. 加0:加生成多项式阶个0 2. 模2除法:数据加0后处于多项式,余数为冗余码/FCS/CRC检验码的比特序列(异或)
# 3.3.3 纠错编码
- 海明码:可以发现双比特错,但只能纠正单比特错
- 工作原理:动一发而牵全身
# 海明码工作流程
- 确定校验码位数r 海明不等式:2^r>=k+r+1(r:冗余信息位、k:信息位)
- 确定校验码和数据的位置 校验码只能存在在2的几次方的位置,数据按照剩下的位置按序填写
- 求校验码的值 把数据为变化成二进制位,二进制的位数由数据位最大的位数决定 校验码校验的位置是该校验码1位置一致的位 校验码的实际值与所有要校验位的实际值异或为0
- 检错并纠错 求出每个校验码与所要校验位的异或 从最后校验码的异或网最前写,得出的二进制数就是出错的位置
# 3.4 流量控制与可靠传输
- 由于较高的发送速度和较低的接受能力的不匹配会造成传输出错,所以流量控制室数据链路层的重要工作
- 数据链路层的流量控制是点对点;传输层的流量控制是端对端的
- 数据链路层流量控制手段:接收方收不下就不回复确认
- 传输层流量控制手段:接收端给发送端一个窗口公告
# 3.4.1 停止——等待协议
- 没发送完一个帧就停止发送,等待对方的确,在收到确认后再发送下一个帧
- 发送窗口大小=1;接受窗口大小=1
- 停止——等待协议目的:解决底层信道出现的丢包问题 丢包问题:物理线路故障、设备故障、病毒攻击、路由信息错误等原因,会导致数据报的丢失
- 停止——等待协议应用情况:无差错情况;有差错情况
# 停止——等待协议关键点
- 超时计时器:每发送一个帧就启动一个计时器,计时器到时还未接收到ACK就会重传刚刚未收到确认的帧(自动重传)
- 数据帧与确认帧必须编号
- 接收方如果重复收到编号相同的帧,就丢弃重复帧并重传该帧的确认帧
- 发送方如果重复收到编号相同的确认帧,就丢弃重复的确认帧不作处理
# 停止——等待协议性能
- 简单
- 信道利用率太低
# 3.4.2 滑动窗口协议
- 发送窗口:发送方维持一组连续的允许发送的帧的序号
- 接受窗口:接受方维持一组持续的允许接受帧的序号
# 后退N帧协议(GBN)
- 发送窗口大小>1;接受窗口大小=1
- 发送方把数据分成:发完被确认的、已经发送等待确认的、还能发送的、还不能发送的
- 滑动窗口长度小于2^n-1(n:帧编号的比特位数)
# GBN发送方响应
- 上层调用:检查发送窗口是否已满(实际上发送方可以缓存数据)
- 收到ACK:累积确认,接受n号帧标明接收方收到n号帧及之前的全部帧
- 超时事件:出现超时发送方重传所有已发送但未确认的帧
# GBN接收方响应
- 正确接收:为n号帧发送一个ACK,代表n号帧之前的所有帧都接受完毕
- 其余情况:全部丢弃,为最近安序接收的帧重新发送ACK
# GBN性能
- 因连续发送数据帧而提高了信道利用率
- 重传时必须把原来已经正确传送的数据帧重传,传送效率低
# 选择重传协议(SR)
- 发送窗口大小>1;接受窗口大小>1
- 设置单个确认,同时加大接收窗口,设置接收缓存,缓存乱序到达的帧
- 发送方把数据分成:发完被确认的、已经发送等待确认的、还能发送的、还不能发送的
- 接收方把数据分成:已经接受完并返回确认的、希望收到但没收到的、收到且确认的(缓存)、等待接受的、还无法接收的
- 滑动窗口大小最大为2**(n-1)
# SR发送方响应
- 上层调用
- 收到ACK
- 收到在帧序号窗口内的ACK,将帧标记为已接收
- 标记已接收的帧序号是窗口下界,则窗口向前移动到具有最小序号的未确认帧处
- 超时事件:每个帧都有独立计时器,超时后只重传一个帧
# SR接收方响应
来者不拒(窗口的帧)
- 正确接收:确认一个在窗口内的帧而不用管其是否按序,失序的帧将被缓存,并返回该帧的的确认帧,只表示该帧被接受
- 窗口滑动:处于窗口下界的帧被接收时,向前滑动窗口至具有最小序号的未确认帧处
- 其余情况:忽略该帧、返回该帧的ACK
# SR重点
- 对数据帧逐一确认,收到一个确认一个
- 只重传错误帧
- 接收方有缓存
# 3.5 可靠传输、滑动窗口、流量控制
- 可靠传输:发送端发啥,接收端收啥
- 流量控制:控制发送速率,使接收方有足够的缓冲空间来接受每个帧
- 滑动窗口:
- 流量控制:收不下就不给确认,控制发送
- 可靠传输:发送端自动重传
# 3.6 介质访问控制(MAC协议)
- 传输数据使用的两种链路
- 点对点链路:两个相邻节点通过一个链路相连,没有第三者。(PPP协议、广域网)
- 广播式链路:所有主机共享通信介质(局域网)
- 介质访问控制:采取一定的措施,使得两对节点之间的通信不会发生互相干扰的情况
# 3.6.1 静态划分信道
- 信道划分介质访问控制:将受用介质的每个设备与来自同意信道上的其他设备的通信隔离开,把时域和频域合理地分配给网络上的设备
- 多路复用技术:把多个型号组合在一条物理信道上进行传输,使得多个计算机或终端设备共享信道资源,提高信道利用率
# 频分多路复用FDM
- 用户在分配到一定的频带后,在通信过程中自始至终都占用这个频带
- 频分复用的所有用户在同样的时间占用不同的带宽(频率带宽)资源
- 优点:
- 充分利用传输介质带宽,效率较高
- 技术比较成熟,实现比较容易
# 时分多路复用TDM
- 将时间划分成一段段登场的时分复用帧(TDM帧)
- 每一个时分复用的用户在每一个TDM帧中占用固定序号的时隙,所有用户轮流占用信道
- TDM帧是在物理层传送的比特流所划分的帧,标志一个周期
- 统计时分复用STDM:
- 每个STDM帧时隙数小于连接在集中器上的用户数
- 各用户有了数据就随时发送集中器的输入缓存,然后集中器按顺序依次扫描输入缓存,把缓存发出
- 不固定分配时隙,而是按需动态分配时隙
# 波分多路复用WDM
- 波分多路复用:本质就是光的频分多路复用,在一根光线中传输多种不同波长(频率)的光信号,由于波长不同,所以各路光信号互不干扰,最后再用波长分解复用器将各路波长分解出来
# 码分多路复用CDM
- 码分多址(CDMA)是码分复用的一种方式
- 将一个比特分为多个码片/芯片(chip),每个站点被指定一个唯一的m位的芯片序列
- 发送1时发送芯片序列;发送0时发送芯片序列的反码
- 不干扰:多个站点同时发送数据时,各个站点芯片序列相互正交
- 合并:各路数据在信道中被线性相加
- 分离:合并的数据和远战 规格化内积
# 3.6.2 动态分配信道
- 特点:信道并非在用户通信时固定分配给用户
# 轮询访问介质访问控制
既不产生冲突,又要发送时占全部带宽
# 轮询协议
- 主结点轮流“邀请”从属结点发送数据
- 问题:
- 轮询开销
- 等待延迟
- 单点故障
# 令牌传递协议
- 令牌:
- 一个特殊格式的MAC控制帧,不包含任何信息。
- 可以控制信道的使用,确保同一时刻只有一个结点独占信道
- 问题:
- 令牌开销
- 等待延迟
- 单点故障
- 应用于令牌环网(物理星型拓扑,逻辑环形拓扑)
- 常用于负载较重、通信量较大的网络中
# 随机访问介质访问控制
- 所有用户可随机发送信息
- 发送信息时占全部带宽
# ALOHA协议
- 纯ALOHA协议比时隙ALOHA协议吞吐量低,效率更低
- 纯ALOHA想法就发,时隙ALOHA协议只有在时间片段开始时才能发 ####### 纯ALOHA协议
- 思想:想发就发,不监听信道,不按时间槽发送,随机重发
- 冲突检测:接收方检测出差错不予确认,发送方在一定时间内收不到就判断发生冲突
- 冲突解决:超时后等一随机时间重传 ####### 时隙ALOHA协议
- 思想:把时间分成若干个相同的时间片,所有用户在时间片开始时刻同步接入网络信道,若发生冲突,则必须等到下一个时间片开始时刻再发送
# CSMA协议
载波监听多路访问协议
- CS:载波监听,每个站在发送数据之前要检测一下总线上是否有其他计算机在发送数据
- MA:多点接入,表示许多计算机以多点接入的方式连接在一根总线上
- 协议思想:发送帧之前,监听信道
- 监听结果
- 信道空闲:发送完整帧
- 信道忙:推迟发送 ####### 1-坚持CSMA
- 坚持:对于监听信号忙后的坚持
- 思想:
- 如果一个主机要发送消息,那么它先监听信道
- 空闲则直接传输,不必等待
- 忙则一直监听,指导空闲马上传输
- 如果冲突:等待一个随机场的时间再监听,重复上述过程
- 优点:只要媒体空闲,站点就马上发送,媒体利用率高
- 缺点:假如有两个或两个以上的站点有数据要发送,冲突不避免 ####### 非坚持CSMA
- 非坚持:对于监听信道忙之后就不继续监听
- 思想:
- 如果一个主机要发送消息,那么它先监听信道
- 空闲则直接传输,不必等待
- 忙则等待一个随机的时间之后再进行监听
- 优点:采用随机的重发延迟时间可以减少冲突发生的可能性
- 缺点:可能存在大家都在延迟等待过程中,媒体利用率低 ####### p-坚持CSMA
- p-坚持:对监听信道空闲的处理
- 思想:
- 如果一个主机要发送消息,那么它先监听信道
- 空闲则以p概率直接传输,不必等待;概率1-p等待到下一个时间槽再传输
- 忙则等待下一个时间槽再进行监听
- 优点:既能像非坚持减少冲突,又能像1-坚持减少媒体空闲时间
- 缺点:发生冲突后还是坚持把数据帧发送完,造成了浪费
# CSMA/CD协议
载波监听多点接入/碰撞检测协议
- CS:载波监听,每个站在发送数据之前以及发送数据时要检测一下总线上是否有其他计算机在发送数据
- MA:多点接入,表示许多计算机以多点接入的方式连接在一根总线上(应用于以太网)
- CD:碰撞检测(冲突检测),“边发送边监听”,适配器边发送数据边检测信道上信号电压的变化情况,以判断自己在发送数据时其他站是否也在发送数据(应用于半双工网络)
- 只要经过2τ时间还没有检测到碰撞就能肯定这次发送不会发生碰撞
- 截断二进制指数规避算法:
- 确定基本退避(推延)时间为征用期2τ
- 定义参数k,k=min(重传次数,10)
- 从离散的整数集合[ 0,1,2**k-1]中随机取出一个数r,重传所需退避时间为r被的基本退避时间
- 当重传达到16次仍不能成功,说明网络太拥挤,认为此帧永远无法正确发出,抛弃此帧并向高层报告错误
- 最小帧长=总线传播时延 * 数据传输速率 * 2
# CSMA/CA协议
载波监听多点接入/碰撞避免
- 应用于无线局域网,CD无法全面检测碰撞
- 工作原理:
- 发送数据前,先检测信道是否空闲
- 空闲则发出RTS;忙则等待
- 接收端收到RTS,将响应CTS
- 发送端收到CTS后,开始发送数据帧。同时预约信道(发送端告知其他站点自己要传多久数据)
- 接收端收到数据帧后,用CRC来检验数据是否正确,正确则响应ACK帧
- 发送方收到ACK就可以进行数据帧发送;若没有则一致重传到规定重发次数为止(截断二进制指数规避算法)
- 重点:
- 预约信道
- ACK帧
- RTS/CTS帧(可选)
# 3.7 局域网
# 3.7.1 基本概念
- 局域网:简称LAN,在某一区域内由多台计算机互联成的计算机组,使用广播信道
- 局域网特点:
- 覆盖的地理范围小,只在一个相对独立的局部范围内互联
- 使用专门铺设的传输介质进行联网,数据传输速率高
- 通信延迟时间短,误码率低,可靠性较高
- 各站点为平等关系,共享传输信道
- 多采用分布式控制和广播式通信,能进行广播和组播
- 局域网的主要要素:网络拓扑;传输介质;介质访问控制方法
# 局域网拓扑结构
- 星型拓扑:中间节点是控制中心,结构简单、建网容易;网络可靠性低、网络共享能力差,有单点故障问题
- 总线型拓扑:网络可靠性高、节点响应速度快、成本低、无单点故障问题
- 环形拓扑:通信设备和线路比价节省;有单点故障问题、不易扩充、系统响应延时长、信息传输效率低
- 树型拓扑:易于扩展、易于隔离故障;有单点故障问题
# 局域网传输介质
- 有线局域网:双绞线、同轴电缆、光纤
- 无线局域网:电磁波(空气)
# 介质访问控制方法
- CSMA/CD:常用于总线型局域网,也用于树型局域网
- 令牌总线:常用于总线型局域网,也用于树型局域网。把网络中各个工作站按一定顺序排列形成一个逻辑换,只有持有令牌才能控制总线
- 令牌环:常用于环形局域网
# 局域网分类
- 以太网:IEEE 802.3标准;逻辑拓扑总线型、物理拓扑是星型或扩展星型;CSMA/CD
- 令牌环网:物理上星型拓扑,逻辑上环形拓扑
- FDDI网:光纤,造价高;物理上双环拓扑、逻辑上环形拓扑
- ATM网:较新型的单元交换技术,使用固定53字节单元交换
- 无线局域网:IEEE 802.11标准
# IEEE 802标准
- IEEE 802.3:以太网
- IEEE 802.5:令牌环网
- IEEE 802.8:光纤技术
- IEEE 802.11:无线局域网
# MAC子层和LLC子层
- IEEE 802标准描述的局域网参考模型只对应数据链路层和物理层
- IEEE 802标准将数据链路层划分为:逻辑链路层LLC子层;介质访问控制MAC子层
- LLC子层:负责识别网络层协议,然后进行封装。为网络层提供服务:无确认无连接、面向连接、带确认无连接、高速传送 4、 MAC子层:负责数据帧的封装/卸装,帧的寻址和识别,帧的接受与发送,链路的管理,帧的差错控制,屏蔽了不同物理链路种类的差异性
# 3.7.2 以太网
- 以太网(Ethernet)指几个公司联合开发的基带总线局域网规范
- 以太网使用CSMA/CD技术
- 以太网优点:
- 造价低廉
- 应用最广泛
- 偏移、简单
- 满足网络速率的要求
- 以太网的两个标准:
- DIX Ethernet
- IEEE 802.3
# 以太网提供的服务
- 无连接:发送方和接收方之间无“握手过程”
- 不可靠:
- 不对发送方的数据帧编号
- 接收方不向发送方进行确认,差错帧直接退旗,差错纠正由高层负责
- 智能实现无差错的接受,不实现可靠传输
# 传输介质与拓扑结构
- 粗同轴电缆————细同轴电缆————双绞线+集线器
- 总线型——————————————————————星型
- 逻辑上总线型,物理上星型
# 10BASE-T以太网
- 10BASE-T是传输基带信号的双绞线以太网,采用的是无屏蔽双绞线,传输速率是10Mb/s,T表示采用双绞线
- 物理上采用星型拓扑,逻辑上总线型
- 每段双绞线最长100m
- 采用曼切斯特编码
- CSMA/CD介质访问控制
# 适配器与MAC地址
- 适配器:连接计算机与外界局域网的连接
- MAC地址:局域网中硬件地址,48位二进制地址
# 以太网MAC帧
- 最常用的MAC帧是以太网V2的格式
- MAC帧:目的地址(6字节)+源地址(6字节)+类型(2地址)+数据(46-1500)+FCS(纠错编码)(4字节)
# 高速以太网
- 100BASE-T以太网:双绞线上传送100Mb/s基带信号的星型拓扑以太网;支持全双工和半双工
- 吉比特以太网:在光纤或双绞线上传送1Gb/s信号;支持全双工和半双工
- 10吉比特以太网:在光纤上传送10Gb/s信号;只支持全双工
# 3.7.3 无限局域网
# IEEE 802.11
- 无线局域网通用的标准
- 802.11的MAC帧头格式:帧控制(2)+生存周期ID(2)+地址1(RA接收端,6)+地址2(TA发送方,6)+地址3(DA目的地,6)+序列控制(2)+地址4(SA源地址,6)
# 无线局网分类
- 有固定基础设施无线局域网
- 无固定基础设施无限局域网
# 3.8 广域网协议
- 广域网:提供远距离通信,通信子网使用分组交换技术
- 广域网可是实现远距离局域网的连接
# 3.8.1 PPP协议
- PPP协议:点对点协议,使用最广泛的数据链路层协议
- PPP协议只支持全双工链路
- 面向字节的协议
# PPP协议要求
- 简单:对于链路层的帧,无需纠错,无需序号,无需流量控制
- 封装成帧:帧定界符
- 透明传输:与帧定界符一样比特组合的处理:异步线路用字节填充;同步线路用比特填充
- 满足多种网络层协议
- 满足多种类型链路
- 实现差错检测
- 检测连接状态
- 满足最大传送单元
- 网络层地址协商
- 数据压缩协商
# PPP协议无需满足要求
- 纠错
- 流量控制
- 序号
- 不支持多点线路
# PPP协议功能
- 将IP数据报封装到串行链路(同步串行/异步串行)的方法
- 链路控制协议LCP:建立并维护数据链路层连接
- 网络控制协议NCP:不同的网络层协议都要一个相应的NCP来配置,为网络层协议建立和配置逻辑连接
# PPP协议的状态图
# PPP协议的帧格式
帧定界符7E+地址字段FF+C03+协议+IP数据报+FCS+帧定界符7E
# 3.8.2 HDLC协议
- HDLC:高级数据链路控制协议
- 面向比特的数据链路层协议
- 可实现透明传输,使用“0比特插入法”
- 采用全双工通信
- CRC检验,对信息帧进行顺序编号,传输可靠性高
# HDLC站
- 主站:发送命令帧、接受响应帧
- 从站:接受主站发送来的命令帧,向主站发送响应帧
- 复合站:既能发送又能接受命令帧和响应帧
- 三种数据操作方式:
- 正常响应方式
- 异步平衡方式
- 异步响应方式
# HDLC帧格式
标志字段+地址A+控制C+信息+帧检验序列FCS+标志字段
# 3.8.3 PPP与HDLC比较
# 相同点
- 都只支持全双工链路
- 都可实现透明传输
- 都可实现差错检测,但不纠正
# 不同点
- 对于透明传输:PPP可以比特填充和字节填充;HDLC只能比特填充
- PPP面向字节;HDLC面向比特
- PPP有两个字节协议字段
- PPP无序号无确认机制,不可靠;HDLC有编号和确认机制,可靠
# 3.9 链路层设备
# 3.9.1 物理层扩展以太网
- 光纤调制器、光纤解调器
- 主干集线器扩展冲突域
# 3.9.2 链路层扩展以太网
# 网桥
- 网桥:根据MAC帧的目的地址对帧进行转发和过滤
- 网段:一个计算机网络中使用同一物理层设备能够直接通讯的部分
- 网桥优点:
- 过滤通信量。增大吞吐量
- 扩大了物理范围
- 提高可靠性
- 互联不同物理层、不同MAC子层和不同速率的以太网
- 网桥分类:
- 透明网桥:即插即用,以太网的站点不知道帧将经过哪些网桥
- 源路由网桥:发送帧时,把详细的最佳路由信息(路由最少/时间最短)放在帧的首部
# 以太网交换机
- 以太网交换机可以独占传输媒体带宽
- 直通式交换机:查完目的地址就立即转发;延迟小,可靠性低,无法支持具有不同速率的端口的交换
- 存储转发式交换机:将帧放入高速缓存,并检查是否正确,正确就转发,错误则丢弃;延迟大,可靠性高,可以支持具有不同速率的端口交换
# 4 网络层
# 4.1 网络层概述
# 4.1.1 网络层功能
- 主要任务:把分组从源端传到目的端,为分组交换网上的不同主机提供通信服务
- 网络层传输单位:数据报
- 功能一:路由选择与分组转发(选择最佳路径)
- 功能二:异构网络互联
- 功能三:拥塞控制 拥塞:所有结点都来不及接受分组,要丢弃大量分组 开环控制:静态控制方法 闭环控制:动态控制方法
# 4.1.2 数据交换方式
# 电路交换
- 电路交换流程: 建立连接————通信————释放连接
- 优点:
- 通信时延小
- 有序传输
- 没有冲突
- 实时性强
- 缺点:
- 建立连接时间长
- 线路独占,使用效率低
- 灵活性差
- 无差错控制能力
- 特点:独占资源
# 报文交换
- 报文:源应用发送的信息整体
- 优点
- 无需建立连接
- 存储转发,动态分配线路
- 线路可靠性高
- 线路利用率较高
- 多目标服务
- 缺点:
- 有存储转发时延
- 报文大小不定,需要网络节点有较大缓存空间
# 分组交换
- 分组:把大的数据块分割成小的数据块
- 优点:
- 无需建立连接
- 存储转发,动态分配线路
- 线路可靠性较高
- 线路利用率较高
- 相对于报文交换,存储管理更容易
- 缺点:
- 有存储转发时延
- 需要传输额外的信息量
- 乱序到目的主机时,要对分组排序重组
# 数据报方式
- 数据报方式:为网络层提供无连接服务
- 无连接服务:不事先为分组的传输确定传输路径,每个分组独立确定传输路径,不同分组传输路径可能不同
- 每个分组都携带源地址和目的地址
- 路由器根据分组的目的地址转发分组:基于路由协议/算法构建转发表;检索转发表;每个分组独立选路
# 虚电路方式
- 虚电路方式:为网络层提供连接服务,将数据报方式和电路交换方式结合,发挥两者优点
- 连接服务:首先为分组的传输确定传输路径(建立连接),然后沿该路径(连接)传输系列分组,系列分组传输路径相同,传输结束后拆除连接
- 虚电路:一条源主机到目的主机类似于电路的路径(逻辑连接),路径上所有节点都要维持这条虚电路的建立。都维持一张虚电路表,每一项记录了一个打开的虚电路的信息
- 通信过程:
- 建立连接(虚电路的建立): 每个分组携带虚电路号,而非目的地址。 源主机发送“呼叫请求”分组,并收到“呼叫应答”分组后才算建立连接
- 数据传输:全双工通信
- 释放连接(虚电路释放):源主机发送“释放请求”分组以拆除虚电路
# 4.1.3 传输单元名词
- 报文:应用层的传输单元
- 报文段:传输层的传输单元,将报文分割而成
- IP数据报:报文段到网络层封装上网络层地址(源地址、目的地址)
- 分组:网络层的传输单元,将过长的数据报切割而成
- 帧:数据链路层的传输单元,将分组加头加尾
- 比特流:物理层的传输单元
# 4.2 IP数据报
# 4.2.1 IP数据报格式
- 首部(固定部分+可变部分)+数据部分(TCP、UDP段)
- 首部
- 固定部分:
- 版本:IP协议的版本(4bit)
- 首部长度:单位是4字节,最小是5(4bit)
- 区分服务:期望获得那种类型的服务(8bit)
- 总长度:整个IP数据报的长度,单位是1B(16bit)
- 标识:同一数据包的分片使用同一标识(16bit)
- 标志:只用后两位有用(3bit)
- 中间位DF 1:禁止分片 0:允许分片
- 最低位MF 1:后面还有分片 0:代表租后一篇/没分片
- 片偏移:某片在原分组中的相对位置,以8B为单位(13bit)
- 生存时间(TTL):IP分组的保质期。每经过一个路由器生存时间-1,变成0则丢弃(8bit)
- 协议:数据部分使用的协议(TCP:6;UDP:17)(8bit)
- 首部检验和:只检验首部(16bit)
- 源地址(32bit)
- 目的地址(32bit)
- 可变部分:
- 可选字段(长度可变):用来支持拍错、测量以及安全等措施(0~40B)
- 填充:全0,报首部不成4B的整数倍
- 固定部分:
# 4.2.2 IP数据报分片
- 最大传送单元MTU:链路层数据帧可封装数据的上限
- 除了最后一个分片,每个分片长度一定是8B的整数倍
- 片偏移量是从数据部分开始计算,不计首部
# 4.3 IP地址
- IP地址:全世界唯一的32位/4字节标识符,标识路由器主机的接口
- :={<网络号>,<主机号>}
- 采用点分十进制,例:223.1.1.1
# 4.3.1 分类的IP地址
- A类:0+7bit+主机号
- B类:10+14bit+主机号
- C类:110+21bit+主机号
- D类:1110+多播地址
- E类:1111(保留为今后使用)
# 特殊IP地址
# 私有IP地址
路由器对目的地址是私有IP地址的数据报一律不进行转发
- A类:10.0.0.0~10.255.255.255
- B类:172.16.0.0~172.31.255.255
- C类:192.168.0.0~191.168.255.255
# 分来IP地址弱点
- IP地址空间利用率很低
- 两级的IP地址不够灵活
# 4.3.2 NAT网络地址转换
- 网络地址转换:在专用网连接到因特网的路由器上安装NAT软件
- NAT路由器:安装了NAT软件的路由器,至少有一个有效的外部全球IP地址
- NAT转换表 WAN端:IP地址——端口号 LAN端:IP地址——端口号
# 4.3.3 子网划分
- 采用三级IP地址:网络号+子网号+主机号(子网号从原来的主机号里的高位划出来)
- 单位划分子网后,对外仍表现为一个网络
- 子网掩码
- 二级IP地址:网络号全1,主机号全0
- 三级IP地址:网络号和子网号全1,主机号全0
- 子网掩码与IP地址逐位与运算,得到子网网络地址
- 使用子网时路由器转发分组算法
- 提取IP地址
- 判断是否直接交付
- 查看路由表中的特定主机路由
- 检测路由表中有无路径
- 默认路由0.0.0.0
- 丢弃,报告转发分组出错
# 4.3.4 无分类编制CIDR
- 消除传统A类、B类、C类地址以及划分子网的概念
- IP地址:网络前缀+主机号
- CIDR记法:在IP地址后加上/,然后写上网络前缀的位数
- 融合子网地址与子网掩码,方便子网划分
- CIDR地址块:由网络前缀相同的连续IP地址组成,用最小地址/网络前缀位数
- 地址掩码:网络前缀全1,主机号全0
# 构成超网
- 构成超网(路由聚合):将多个子网聚合成一个较大的子网
- 方法:缩短网络前缀
- 最长前缀匹配:使用CIDR时,查找路由表选择具有最长网络前缀的路由
# 4.4 IP相关协议
# 4.4.1 ARP协议
ARP高速缓存:IP地址与MAC地址的映射,用于网络层到数据链路层中增加MAC地址时使用
# ARP协议使用过程
- 检查ARP高速缓存,有对应表项则写入MAC帧
- 没有则广播ARP分组请求 (自身IP地址+目的IP地址+自身物理MAC地址+全1广播目的MAC地址)
- 单播放ARP响应分组 (目的IP地址+目的MAC地址),源主机收到后将此映射写入ARP缓存
- PS:两个IP地址不在一个网段内,目的MAC地址是默认网关(路由器)MAC地址
# ARP协议特点
- ARP协议的产生原因:在实际网络的链路上传送数据帧时,最终必须使用MAC地址
- ARP协议:完成主机或路由器IP地址到MAC地址的映射
- ARP协议自动进行
# ARP协议典型情况
- 主机A发给本网络上的主机B:用ARP找到主机B的硬件地址
- 主机A发给另一网络上的主机B:用ARP找到本网络上一个路由器(网关)的硬件地址
- 路由器发给本网络的主机A:用ARP找到主机A的硬件地址
- 路由器发给另一网络上的主机A:用ARP找到本网络上一个路由器(网关)的硬件地址
# 4.4.2 DHCP协议
- 动态主机配置协议DHCP是应用层协议,使用客户/服务器方式,客户端和服务端通过广播方式进行交互,基于UDP
- DHCP用于分配IP地址,是一种动态分配主机IP地址的方法
- DHCP提供即插即用联网机制,允许地址重用,支持移动用户加入网络,支持在用地址续租
# DHCP工作流程
- 主机广播DHCP发现报文主机寻找DHCP服务器,DHCP服务器选择IP地址
- DHCP服务器广播DHCP提供报文拟分配主机IP地址及相关配置
- 主机广播DHCP请求报文采用先到先得,广播使所有DHCP服务器都知道主机选用的IP地址
- DHCP服务器广播DHCP确认报文正式将IP地址分配给主机
# 4.4.3 ICMP协议
- 网际控制报文协议ICMP:支持主机或路由器差错/异常报告或网络探询。(发送特定ICMP报文)
- ICMP报文:类型+代码+检验和+ICMP数据部分(IP数据报首部+8字节)
# ICMP差错报告报文
- 终点不可达(无法交付)
- 源点抑制(拥塞丢数据)
- 时间超过(TTL=0)
- 参数问题(首部字段有问题)
- 改变路由/重定向(存在更好的路由路径)
# 不发送情况
- ICMP差错报告报文
- 对第一个分片数据报片的所有后续数据报片
- 具有组播地址的数据报
- 具有特殊地质的数据报
# ICMP询问报文
- 回送请求和回答报文:测试目的站是否可达以及了解其相关状态
- 时间戳请求和回答报文
- 掩码地址请求和回答报文
- 路由询问和通告报文
# ICMP应用
- PING:测试两个主机间的连通性,使用ICMP回送请求和回答报文
- Traceroute:跟踪一个分组从源点到终点的路径,使用ICMP时间超过差错报告报文
# 4.5 IPv6
# 4.5.1 产生原因
- 从根本上上解决地址耗尽问题
- 改进首部格式,达成快速处理和转发数据报的功能
- 支持QoS,指一个网络能够利用各种基础技术为指定的网络通信提供更好的服务能力
# 4.5.2 IPv6数据报格式
# 基本首部
- 40字节
- 版本:指明协议版本,4字节
- 优先级:区分数据报的类别和优先级,8字节
- 流标签:属于同一个流的数据报都具有同样的流标签,20字节
- 有效载荷长度:有效载荷部分*(扩展首部+数据部分)的长度
- 下一个首部:下一个扩展首部或上层协议首部,指向扩展首部1
- 跳数限制:相当于TTL,生存时间
- 源地址,128位
- 目的地址,128位
# 有效载荷
- 扩展首部
- 数据部分
- 加起来不能超过65535字节
# 4.5.3 与IPv4的区别
- IPv6将地址从32位(4B)扩展到了128位(16B),更大的地址空间
- IPv6将IPv4的校验和字段车底移除,减少每跳的处理时间
- IPv6将IPv4的可选字段移除首部,变成了扩展首部,成为灵活的首部格式,路由器通常不对扩展首部进行检查,大大提高了路由器的处理效率
- IPv6支持即插即用(自动配置),不需要DHCP协议
- IPv6首部长度必须是8B的整数倍;IPv4首部长度必须是4B的整数倍
- IPv6只能在主机处分片,IPv4可以在路由器和主机处分片
- ICMPv6:附加报文类型“分组过大”
- IPv6支持资源的预分配,支持实施视像等要求,保证一定的带宽和时延的应用
- IPv6取消了协议字段,改成下一个首部字段
- IPv6取消了总长度字段,改用有效载荷长度字段
- IPv6取消了服务类型字段
# 4.5.4 IPv6地址表示形式
- 一般形式:冒号十六进制记法
- 压缩形式:前面有0的情况,删减0
- 零压缩:一连串连续的0可以被一堆冒号取代,双冒号表示法在一个地址中仅可出现一次
# 4.5.5 IPv6基本地址类型
- 单播:一对一通信,可做源地址和目的地址
- 多播:一对多通信,只能作为目的地址
- 任播:一对多中的一个通信,只能作为目的地址
# 4.5.6 IPv6项IPv4过渡策略
# 双栈协议
- 在一台设备上同时启用IPv4协议栈和IPv6协议栈
- 路由器:不同接口上分别配置了IPv4地址和IPv6地址
- 计算机:同时拥有IPv4地址和IPv6地址,并具备同时吃力这两个协议地址的功能
# 隧道技术
- 将其他协议的数据帧或包重新封装然后通过隧道发送
# 4.6 路由协议
# 4.6.1 路由算法与路由协议概述
# 路由算法
- 最佳路由:“最佳”只能是相对于某一种特定要求下得出的较为合理的选择而已
# 路由算法分类
- 静态路由算法(非自适应路由算法):管理员手工配置路由信息
- 优点:简便、可靠,在负载稳定、拓扑变化不大的网络中运行效果好
- 缺点:路由更新慢。不适用大型网络
- 动态路由算法(自适应路由算法):路由器之间彼此家坡缓信息,按照路由算法优化出路由表项
- 优点:路由更新快,适用大型网络,及时响应链路费用或拓扑变化
- 缺点:算法复杂,增加网络负担
- 全局性动态路由算法:链路状态路由算法OSPF 所有路由器掌握完整的网络拓扑和链路费用信息
- 分散性动态路由算法:距离向量路由算法RIP 路由只掌握物理相连的邻居及链路费用
# 路由协议
- 自治系统AS:在单一的技术管理下的一组路由器。而这些路由器使用一种AS内部的路由选择协议和共同的度量以确定分组在该AS内的路由,同时还使用一种AS之间的路由协议以确定在AS之间的路由 一个AS内的所有网络都数据一个行政单位来管辖,一个自治系统的所有路由器在本自治系统内都必须连通
- 内部网关协议IGP,一个AS内使用的,如RIP、OSPF
- 外部网关协议EGP,AS之间使用的,如BGP
# 4.6.2 RIP协议
- RIP是一种分布式的基于距离向量的路由选择协议,是因特网的协议标准,最大优点是简单
- 要求网络中每一个路由器都维护从它自己到其他每一个目的网络的位移最佳距离记录(一组距离)
- 距离:通常为跳数,即从源端口到目的端口所经过的路由器个数,经过一个路由器跳数+1。
- 从一路由器到直接连接的网络距离为1
- RIP允许一条路由最多智能包含15个路由器(RIP只适用小的互联网)
- 距离16表示网络不可达
- 仅和相邻路由器交换信息
- 路由器交换的信息时自己的路由表
- 每30秒交换一次路由信息,然后路由器根据信息系更新路由表
- 若180s没收到邻居路由器的通告,则判定邻居没了,并更新自己路由表
# 距离向量算法
- 修改相邻路由器发来的RIP报文中所有表项:距离+1,下一跳改为邻居
- RIP报文填入路由表
- 路由器没有报文中的网络,直接填入
- 路由器中有报文中的网络
- 路由器中下一跳是邻居,直接更新(最新)
- 路由器中下一跳不是邻居,若路由表中距离更远则更新(最短)
- 180s没收到相邻路由器的更新路由表,则把邻居距离设置为16
# RIP报文
- RIP是应用层协议,使用UDP传送数据
- 一个RIP报文最多可以包括25个路由,若超过则发送几个RIP报文
# RIP协议特点
- 慢收敛:当网络出现故障时,要经过比较长的时间才能将此信息传送到所有的路由器
# 4.6.3 OSPF协议
- 开放最短路径优先OSPF协议,其中开放指不受某一家厂商控制,而是公开发表;使用了最短路径算法SPF
- OSPF最主要的特征:使用分布式的链路状态协议
# OSPF协议特点
- 使用洪泛法向自治系统内所有路由器发送信息
- 发送的信息位本路由器相邻的所有路由器的链路状态
- 只有当链路状态发生变化时,路由器猜想所有路由器洪泛发送信息
- 所有路由器建立一个链路状态数据库,即全网拓扑图
- 每隔30min,要刷新一次数据库中的链路状态
- 常用于互联网规模很大
- OSPF不存在坏消息传得慢的问题,收敛速度很快
# 链路状态路由算法
- 每个路由器发现他的邻居结点hello问候分组,并两节邻居节点的网络地址
- 设置到它的每个邻居的成本度量metric
- 构造DD数据库描述分组,向邻站给出自己的链路状态数据库中的额所有链路状态项目的摘要信息
- 如果DD分组中的摘要都有,不作处理
- 如果存在没有或者更新的,则发送LSR链路状态请求分组,请求更新自己没有的和比自己更新的信息
- 收到邻站的LSR分组后,发送LSU链路状态更新分组进行更新
- 更新完毕后,邻站返回一个LSAck链路状态确认分组进行确认
- 是有Dijkstra根据自己的链路状态数据库构造到其他结点间的最短路径
# OSPF区域
- 区域:为了使用与规模很大的网络,OSPF将一个自制系统再划分为若干个更小的范围
- 每个范围有32位的区域标志符,一个区域不超过200个路由器
- 主干区域0.0.0.0
- 主干路由器、区域边界路由器
# OSPF分组
直接使用IP数据报传送
# 4.6.4 BGP协议
- BGP发言人一般是BGP边界路由器
# BGP协议特点
- 与其他AS邻站发言人交换信息
- 交换网络可达性的信息:即要到达某个网络所要经过一系列AS
- 发生变化时更新变化的部分
- BGP支持CIDR,因此BGP的路由表应当包括目的网络前缀、下一跳路由器,以及到达该目的网络所要经过的各个自治系统序列
# BGP协议交换信息的过程
BGP所交换的网络可达性的信息就是要达到某个网络所要经过的一系列AS。当BGP发言人互相贾环了网络可达性的信息后,各BGP发言人就根据所采用的策略从收到的路由信息中找出到达各AS的较好路由
# BGP协议报文格式
- BGP报文=BGP报文通用首部+BGP报文主体部分
- IP首部+TCP首部+BGP报文
- BGP是应用层协议,借助TCP传送
# BGP-4报文
- OPEN打开报文:用来与相邻的另一个BGP发言人建立关系,并认证发送方
- UPDATE更新报文:通告新路径或撤销原路径
- KEEPALIVE保活报文:在无UPDATE时,手气性证实邻站的连通性;也作为OPEN的确认
- NOTIFICATION通知报文:报告先前报文的差错;也被用于关闭连接
# 4.7 IP组播(多播)
# 4.7.1 IP数据报的三种传输方式
- 单播:用于发送数据包到单个目的地,且每发送一份单播报文都使用一个单播IP地址作为目的地址。是一种点对点传输方式
- 广播:发送数据包到同一广播域或子网内的所有设备的一种数据传输方式。是一种点对多点传输方式
- 组播(多播):当网络中的某些用户需要特定数据时,组播数据发送者仅发送一次数据,借助组播路由协议为组播数据报建立组播分发树,被传输的数据到达距离用户端尽可能近的结点后才开始复制和分发,是一种点对多点传输方式
# 4.7.2 IP组播地址
- IP组播地址:让源设备能够将分组发送给一组设备。属于同一多播组的设备奖杯分配一个组播组IP地址
- 组播地址范围为224.0.0.0~239.255.255.255(D类地址),一个D类地址表示一个组播组。只能用作分组的目标地址。源地址总是单播地址
- 组播数据报是“尽最大努力交付”,不提供可靠交付,应用于UDP
- 对组播数据报不产生ICMP差错报文
- 并非所有D类地址都可以作为组播地址
# 4.7.3 硬件组播
- IP地址与MAC地址有映射关系
# 4.7.4 IGMP协议
- IGMP网际组管理协议,让路由器指导本局域网上是否有主机(的进程)参加或推出了某个组播组
# IGMP工作的两个阶段
- 某主机要加入组播组时,该主机箱组播组的组播地址发送一个IGMP报文,声明自己要成为该组的成员
- 本地组播路由器收到IGMP报文后,要利用组播路由选择协议报这组成员关系发给因特网上的其他组播路由器
- 本地组播路由器周期性探寻本地局域网上的主机,以便指导这些主机是否还是组播组的成员
- 有一个主机对某个组响应,则组播路由器认为该组活跃
- 探询几次后没有响应,组播路由器不再将这组的成员关系发给其他的组播路由器
- 成员关系:所连接的局域网中有无组播组成员
# 4.7.5 组播路由选择协议
- 组播路由选择协议的目的是找出以源主机为根节点的组播转发树
- 基于链路状态的路由选择
- 基于距离-向量的路由选择
- 协议无关的组播(稀疏/密集)
# 4.8 移动IP
# 4.8.1 相关术语
- 移动IP技术:移动结点(计算机/服务器等)以固定的网络IP地址,实现跨越不同网段的漫游功能,保证基于网络IP的网络权限在漫游过程中不发生任何改变
- 移动结点:具有永久IP地址的移动设备
- 归属网络:一个移动结点拥有的旧居所
- 归属代理(本地代理):在归属网络中代表移动结点执行移动管理功能的实体
- 外部代理(外地代理):在外部网络中帮助移动结点完成移动管理功能的实体
- 永久地址(归属地址/主地址):移动站点在归属网络中的原始地址
- 转交地址(辅地址):移动站点在外部网络使用的临时地址
# 4.8.2 通信过程
# 计算机A刚进入外部网络
- 在外部代理登记获得一个转交地址,离开时注销
- 外地代理向本地代理登记转交地址
# 计算机B向A发送数据报
- 本地代理截获数据报
- 本地代理再封装数据报,新数据宝目的地址是转交地址,发给外部代理(隧道)
- 外部代理拆封数据报并发送给A
# 计算机A向B发送数据报
A用自己的主地址作为数据报源地址,用B的IP地址作为数据报的目的地址
# 计算机A移动到下一个网络
- 注销原有的转交地址
- 在新外部代理登记注册一个转交地址
- 新外部代理给本地代理发送新的转交地址(覆盖旧的)
# 计算机A回到归属网络
- A向本地代理注销转交地址
# 4.9 网络层设备
# 4.9.1 路由器
- 路由器是一种具有多个输入端口和多个输出端口的专用计算机,其任务是转发分组
- 路由器选择处理机:根据所选定的路由选择协议构造出路由表,同时经常或定期地和相邻路由器交换路由信息而不断地更新和维护路由表
- 交换结构:根据转发表(路由表得来)对分组进行转发
# 输入端口对线路上收到的分组的处理
- 从线路接收分组
- 物理层处理
- 数据链路层处理
- 网络层处理分组排队、查表和转发
- 会产生时延
- 输入端口中的查找和转发功能在路由器的交换功能中是最重要的
# 输出端口对线路上收到的分组的处理
- 网络层分组排队,缓存管理
- 数据链路层处理
- 物理层处理
- 若路由器处理分组的速率赶不上分组进入队列的速率,则后面无法缓存的分组被丢弃
- 路由器中的输入或输出队列产生移除是造成分组丢失的重要原因
# 4.9.2 路由表与路由转发
- 路由表根据路由选择算法得出,主要用途是路由选择,用软件来实现
- 转发表是由路由表得来,可以用软件实现也可以用特殊的硬件来实现
# 5 传输层
- 只有主机才有的层次
- 为应用层提供通信服务,使用网络层的服务
# 5.1 功能
- 提供进程和进程之间的逻辑通信(网络层是主机与主机)
- 复用和分用
- 对收到的报文进行差错检测
# 5.2 协议
- TCP:面向连接的传输控制协议;可靠,面向连接,时延大,适用于大文件
- UDP:无连接的用户数据报协议;不可靠,无连接,时延小,适用于小文件
# 5.3 寻址与端口
- 复用:应用层所有的应用进程都可以通过传输层再传输到网络层
- 分用:传输层从网络层收到数据后交付指明的应用进程
# 5.3.1 软件端口
- 软件端口是传输层的SAP,表示主机中的应用进程
- 端口号只有本地意义,在因特网中不同计算机的相同端口号是没有联系的
- 端口号长16bit,65536个
- 端口号
- 服务端
- 熟知端口号(0~1023):TCP/IP最重要的应用程序,所有用户都知道
- 登记端口号(1024~4951):没有熟知端口号的应用程序使用
- 客户端(49152~65535):尽在客户进程运行时才动态选择
- 服务端
- 套接字:位移表示网络的一个主机和它上面的一个进程(主机IP地址+端口号)
# 5.4 UDP
- 只在IP数据报服务上增加很少功能:复用分用和差错检测功能
# 5.4.1 特点
- 无连接,减少开销和发送数据之前的时延
- 使用最大努力交付,不保证可靠交付
- 面向报文的,适合一次性传输少量数据的网络应用
- 面向报文:不会剪切和整合应用层报文
- 无拥塞控制,适合实时应用
- 首部开销少。8B
# 5.4.2 首部格式
16位源端口号+16位目的端口号+16位UDP长度+16位UDP检验和
# 5.4.3 UDP校验
# 发送端
- 填上伪首部
- 全0填充检验和字段
- 全0填充数据部分(满足4B的整数倍)
- 伪首部+首部+数据部分采用二进制反码求和
- 把和求反码填入校验和字段
- 去掉伪首部,发送
# 接收端
- 填上伪首部
- 伪首部+首部+数据部分采用二进制反码求和
- 结果全为1则无差错,否则丢弃数据报或者交给应用层附上出差错的警告
# 5.5 TCP
# 5.5.1 特点
- 面向连接(虚连接)的传输层协议
- 每一条TCP连接只能有两个端点,每一条TCP连接只能是点对点的
- TCP提供可靠交付的服务,无差错、不丢失、不重复、按序到达
- TCP提供全双工通信(TCP协议两段都会有发送缓存和接受缓存)
- 发送缓存:准备发送的数据;已发送但尚未收到确认的数据
- 接收缓存:按序到达但尚未被接受应用程序读取的数据;不按序到达的数据
- TCP面向字节流:TCP把应用程序交下来的数据看成仅仅是一连串的无结构的字节流
- 流:流入到进程或从进程流出的字节序列
# 5.5.2 TCP报文段首部格式
- TCP报文 = TCP首部+TCP数据部分
- TCP首部是4字节的整数倍
- 源端口+目的端口+序号+确认号+数据偏移+保留+6个控制位+窗口+校验和+紧急指针+选项(长度可变)+填充
- 序号:在一个TCP连接中传输的字节流中的每个字节都按顺序编号,本字段表示本报文段所发送的第一个字节的序号
- 确认号:期望收到对方下一个报文段的第一个数据字节的序号。若确认号为N。则证明到序号N-1为止的所有数据都已正确收到
- 数据偏移(首部长度):TCP报文段的数据起始处距离TCP报文段的起始处有多远。以4B为单位,1个数值是4B
- 控制位:
- 紧急位URG:为1时,表明次报文段中有紧急数据,是高优先级的数据,不用在缓存里排队,配合紧急指针字段使用
- 确认位ACK:为1时,确认号有效,在连接建立后所有传送的报文段都必须把ACK置1
- 推送位PSH:为1时,接收方尽快交付接收应用进程,不再等到缓存填满再向上交付
- 复位RET: 为1时,表明TCP连接中出现严重差错,必须释放连接,然后再重新建立传输连接;可以用来拒绝非法报文段或者打开链接
- 同步位SYN:为1时,表明这是一个连接请求/连接接受报文
- 终止位FIN:为1时,表明此报文段发送方数据已发完,要求释放连接
- 窗口:发送本报文的一方的接收窗口,即现在允许对方发送的数据量
- 检验和:检验首部+数据,检验时要加上12B伪首部
- 紧急指针。在URG为1时才有意义,支出本报文段中紧急数据的字节数
- 选项:最大报文段长度MSS、窗口扩大、时间戳、选择确认
# 5.5.3 TCP连接管理
- 三个阶段:连接建立+数据传输+连接释放
- TCP连接的建立采用客户端服务器方式,主动发起连接建立的应用进程叫做客户,而被动等待连接建立的应用进程叫服务器
# TCP连接建立——三次握手
- 客户端发送连接请求报文段,无应用层数据
- SYN=1,序号seq=x(随机)
- 服务端为该TCP连接分配缓存和变量,并向客户端返回确认报文段,允许连接,无应用层数据
- SYN=1,ACK=1,序号seq=y(随机),确认号ack=x+1
- 客户端为该TCP连接分配缓存和变量,并向服务器端返回确认的确认,可以携带数据
- SYN=1,ACK=1,序号seq=x+1,确认号ack=y+1
- ps:SYN洪泛攻击:发送大量三次握手的第一次报文,且一直不确认,设置SYN cookie
# 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
# 5.5.4 TCP可靠传输
- 可靠:保证接收方进程熊缓存区读出的字节流与发送方发出的字节流是完全一样的
- TCP实现可靠传输的机制:校验、序号、确认、重传
# 校验
- 与UDP校验一样。增加伪首部
# 序号
- 一个字节占一个序号
- 序号字段指的是一个报文段第一个字节的序号
# 确认
# 重传
- 确认重传不分家。TCP的发送方在规定时间内没有收到确认就要重传已发送的报文段
- TCP采用自适应算法,动态改变重传时间RTTs(加权平均往返时间)
- 冗余ACK(冗余确认):每当比希望序号的失序报文段到达时,发送一个冗余ACK,指明下一个期待字节序号
- 发送方收到3个对于某个报文段的冗余ACK时,认为下一报文段丢失,重传(快速重传)
# 5.5.5 TCP流量控制
- TCP利用滑动窗口机制实现流量控制,发送窗口大小动态变化
- 在通信过程中,接收方根据自己接受缓存的大小,动态地调整发送方的放松窗口大小,即接收窗口rwnd(接收方设置确认报文段的窗口字段来讲rwnd通知给发送方),发送方的发送窗口取接受窗口rwnd和拥塞窗口cwnd的最小值
- TCP为每一个连接设有一个持续计时器,只要TCP连接的一方收到对方的零窗口通知,就启动持续计时器
- 若持续计时器设置的时间到期,就发送一个零窗口探测报文段。接收方收到探测报文段时给出现在的窗口值
- 若窗口仍是0,那么发送方就重新设置持续计时器
# 5.5.6 TCP拥塞控制
- 出现拥塞的条件:对资源需求的总和> 可用资源;网络中有许多资源同时呈现供应不足,导致网络性能变坏,导致网络吞吐量随输入负荷增大而下降
- 拥塞控制的目的:防止过多的数据注入到网络中,是一个全局性的
# 假定
- 数据单方向传送,而另一个方向只传送确认
- 接收方总是有足够大的缓存空间,因而发送窗口大小只取决于拥塞程度
# 慢开始和拥塞避免算法
- 一个传输轮次
- 发送了一批报文段并收到它们的确认的时间
- 一个往返时延RTT
- 开始发送一批拥塞窗口内的报文段到开始发送下一批拥塞窗口内的报文段的时间
# 快重传和快恢复
# 6 应用层
# 6.1 概述
- 应用层对应用程序的通信提供服务
- 应用层协议内容:
- 应用进程交换的报文类型
- 各种报文类型的语法
- 字段的语义
- 进程何时、如何发送报文,以及对报文进行响应的规则
- 应用层功能:
- 文件传输、访问和管理
- 电子邮件
- 虚拟终端
- 查询服务和远程作业登录
- 应用层的重要协议
- FTP
- SMTP、POP3
- HTTP
- DNS
# 6.2 网络应用模型
# 6.2.1 客户/服务器模型
- 服务器:提供计算服务的设备
- 永久提供服务
- 永久性访问地址/域名
- 客户机: 请求服务的主机
- 与服务器通信,使用服务器提供的服务
- 间歇性接入网络
- 可能使用动态IP地址
- 不与其他客户机直接通信
- 应用:Web,文件传输TFP,远程登录,电子邮件
# 6.2.2 P2P模型
- 不存在永远在线的服务器
- 每个主机既可以提供服务,也可以请求服务
- 任意端系统/节点之间可以直接通讯
- 节点间歇性接入网络
- 节点可能改变IP地址
- 可扩展性好
- 网络健壮性强
# 6.3 域名解析系统DNS
# 6.3.1 域名
- 域名从前往后级别依次提高。最后一个.后的是顶级域名,往前是二级域名等等
- 顶级域名:
- 国家顶级域名:cn、us、uk
- 通用顶级域名:com、net、org、gov、int、aero、museum、travel
- 基础结构域名/反向域名:arpa
- 二级域名:
- 类别域名:ac、com、edu、gov、mil、org
- 行政区域名,用于我国各省、自治区、直辖市:bj、js
- 自己注册的
# 6.3.2 域名服务器
# 根域名服务器
- 最高层次的域名服务器,也是最重要的
- 知道所有顶级域名服务器的域名和IP地址
- 一共有13个不同名字的根域名服务器
# 顶级域名服务器
- 管理该顶级域名服务器注册的所有二级域名和IP地址
# 权限域名服务器
- 负责一个区的域名服务器
- 区:
# 本地域名服务器
- 不属于域名服务器层次结构
- 当一个主机发出DNS查询请求时,这个查询请求报文就发给本地域名服务器
# 6.3.3 域名解析过程
# 递归查询
# 迭代查询
# 6.4 文件传输协议FTP
- 提供不同种类主机系统(硬、软件体积等都可以不同)之间的文件传输能力
# 6.4.1 FTP服务器和用户端
- FTP是基于客户/服务器的协议:用户通过一个客户机程序连接至在远程计算机上运行的服务器程序
- 依照FTP协议提供服务,进行文件传送的计算机就是FTP服务器
- 连接FTP服务器,遵循FTP协议与服务器传送文件的电脑就是FTP客户端
# 6.4.2 FTP工作原理
# 登录
- 输入ftp地址,用户名和密码
- 可以采用匿名登录的方式
# 数据传输
- FTP使用TCP实现可靠传输
- FTP服务器进程:
- 1个主进程
- n个从属进程
- 控制进程和数据传送进程都属于从属进程
- 控制连接始终保持,客户端和服务器端存在会话就保持
- 数据连接保持一会儿
- 是否使用TCP 20端口建立数据连接与传输模式有关
- 主动方式使用TCP 20端口;被动方式有服务器和客户端自行协商决定(端口>1024)
# 传输模式
- 文本模式:ASCII模式,以文本序列传输数据
- 二进制模式:Binary模式,以二进制序列传输数据
# 6.5 电子邮件
# 6.5.1 电子邮件系统概述
# 电子邮件信息格式
- 电子邮件包括信封和内容两个部分
- 信封:信息主要包括收件人邮箱地址
- 内容:
- 首部:To和Subject
- 主体:写信的内容
# 电子邮件系统组成结构
- 用户代理:电子邮件客户端软件
- 用户代理功能
- 撰写
- 显示
- 处理
- 通信
- 邮件服务器功能:
- 发送和接收邮件:
- 向发件人报告邮件传送结果
- 协议
- SMTP:发送
- POP3、IMAP:接收
# 6.6 万维网
- 万维网www是一个大规模的、联机式的信息储藏所/资料空间,是无数个网络站点和网页的集合
- 统一资源定位符URL唯一识别资源
- URL一般形式:<协议>://<主机>:<端口>/<路径>
- 协议:http、ftp
- 主机:域名、IP地址
- 用户通过点击超链接获取资源,这些资源通过超文本传输协议(HTTP)传送给使用者
- 万维网以客户/服务器方式工作,用户使用的留恋其就是万维网客户程序,万维网文档所驻留的主机运行服务器程序
- 万维网使用超文本标记语言HTML,使得万维网月面设计者可以很方便地从一个界面的连接转到另一个界面,并能够在自己的屏幕上显示出来
# 6.7 超文本传输协议HTTP
- HTTP协议定义了浏览器(万维网客户进程)怎样向万维网服务器请求万维网文档,以及服务器怎样把文档传送给浏览器
# 6.7.1 HTTP协议过程
- 用户浏览页面方法:
- 输入URL
- 点击超链接
- HTTP过程:
- 浏览器分析URL
- 丽蓝旗向DNS请求解析IP地址
- DNS解析出IP地址
- 浏览器与服务器建立TCP连接
- 浏览器发出取文件命令
- 服务器响应
- 释放TCP连接
- 浏览器显示
# 6.7.2 HTTP协议特点
- HTTP协议是无状态的,无记忆的
- 这样诞生了存储用户主机中的文本文件Cookie,记录一段时间内用户的访问记录
- HTTP采用TCP作为运输层协议,但HTTP协议本身是无连接的(通信双方在交换HTTP报文之前不需要先建立HTTP连接)
- HTTP连接方式
- 持久连接Keep-alive
- 非流水线
- 流水线
- 非持戒连接Close
- 持久连接Keep-alive
# 6.7.3 HTTP协议报文结构
- HTTP报文是面向文本的,因此在报文中的每一个字段都是一些ASCII码串
- HTTP报文分成请求报文和响应报文
- 状态码
- 1xx:表示通知信息的,如请求收到了或正在处理
- 2xx:表示成功,如接受或知道了
- 3xx:表示重定向,如要完成请求还必须采取进一步的行动
- 4xx:表示客户的差错,如请求中有错误的语法或不能完成
- 5xx:表示服务器的差错,如服务器失效无法完成请求