鉴于有人需要离线版的PDF文档,这里给出本文章的PDF版本,下载地址如下:https://pan.itnxd.cn/123Pan/csdn-share/computer-network.pdf
一、计算机网络体系结构
0、脑图
1、计算机网络概述
脑图
概念
计算机网络是 互连的、自治的 计算机系统的集合。
- 互连:互联互通
- 自治:无主从关系
计算机网络是一个将分散的、具有独立功能的计算机系统,通过通信设备和线路连接起来,由功能完善的软件实现资源共享和信息传递的系统。
网络把许多计算机连接在一起,而互联网则把许多网络连接在一起,因特网是世界上最大的互联网。
功能
- 数据通信(连通性)
- 资源共享(硬件、软件、数据)
- 分布式处理
- 提高可靠性(容错性)
- 负载均衡
组成
组成部分:
- 硬件(主机(端系统)、链路(双绞线、光纤)、通信设备(路由器、交换机))
- 软件
- 协议(约定和规则)
工作方式:
-
边缘部分(用户直接使用)
- C/S方式
- P2P方式
-
核心部分(为边缘部分服务)
- 大量网络和连接这些网络的路由器组成
功能组成:
- 通信子网:实现数据通信
- 资源子网:实现资源共享(数据处理)
分类
- 按分布范围分
- 广域网WAN(交换技术)
- 城域网MAN
- 局域网LAN(广播技术)
- 个人区域网PAN
- 按使用者分
- 公用网(指电信公司出资建造的大型网络,按规定缴纳费用即可用)
- 专用网(指某个部门为满足本单位特殊业务的需要而建造的网络)
- 按交换技术分:电路交换、报文交换、分组交换
- 按拓扑结构分:总线型、星型、环型、网状型(常用于广域网)
- 按传输技术分
- 广播式网络:共享公共通信信道
- 点对点网络:使用分组存储转发和路由选择机制
2、标准化工作及相关组织
脑图
标准化工作
法定标准:由权威机构指定的正式的、合法的标准 OSI
事实标准:某些公司的产品在竞争中占据了主流,时间长了,这些产品中的协议和技术就成了标准 TCP/IP
RFC(Request For Comments):因特网标准的形式
RFC要上升为因特网正式标准的四个阶段:
- 因特网草案( Internet Draft)这个阶段还不是RFC文档。
- 建议标准( Proposed Standard)从这个阶段开始成为RFC文档。
- 草案标准(Draft Standard) IETF、IAB
- 因特网标准( Internet Standard)
标准化相关组织
- 国际标准化组织ISO:OSI参考模型、HDLC协议
- 国际电信联盟ITU:制定通信规则
- 国际电气电子工程师协会IEEE:学术机构、IEEE802系列标准、5G
- Internet工程任务组IETF:负责因特网相关标准的制定 RFC XXXx
3、性能指标
脑图
速率
速率:连接在计算机网络上的主机在数字信道上传送数据的速率。
也称数据率或数据传输率或比特率.
单位:是b/s(bit/s、bps),kb/s,Mb/s,Gb/s,Tb/s
速率单位
千 1kb/s = 10^3 b/s 1KB = 2^10B = 1024B = 1024 * 8b
兆 1Mb/s = 10^3 kb/s = 10^6 b/s 1MB = 2^10KB = 1024KB
吉 1Gb/s = 10^3 Mb/s = 10^6 kb/s = 10^9 b/s 1GB = 2^10MB = 1024MB
太 1Tb/s = 10^3Gb/s = 10^6 Mb/s = 10^9 kb/s = 10^12 b/s 1TB = 2^10GB = 1024GB
容量单位
1KB = 2^10B = 1024B = 1024 * 8b
1MB = 2^10KB = 1024KB
1GB = 2^10MB = 1024MB
1TB = 2^10GB = 1024GB
- 速率:10^3
- 存储容量:2^10,1Byte = 8bit
带宽
-
带宽:在计算机网络中,表示数字信道所能传送的"最高数据传输速率",单位是比特每秒。
-
原本指某个信号具有的频带宽度,即最高频率与最低频率之差,单位是赫兹(Hz)。
理论值
带宽只影响进入链路的一瞬间,进入链路后则是固定的速度,即电磁波的传播速度!
吞吐量
吞吐量:单位时间内,通过某个**网络(或信道、接口)**的数据量。实际的数据传输率!
吞吐量受网络带宽或网络额定速率的限制。
实际值
时延
时延:指数据(报文/分组/比特流)从网络(链路)的一端传送到另一端所需要的时间。单位是s。
1、发送时延(传输时延):结点将分组的所有比特传输到链路上所需的时间。
从发送分组的第一个比特算起,到该分组的最后一个比特发送完毕所需的时间。
计算公式为 :发送时延 = 分组长度 / 信道带宽
2、传播时延:电磁波在信道中传播一定的距离需要花费的时间
即一个比特从链路的一段传播到另一端所需的时间。
计算公式为:传播时延 = 信道长度 / 电磁波在信道上的传播速率(一般为固定值 2 * 10^8 m/s)
3、处理时延:数据在交换结点为存储转发而进行的一些必要的处理(检错,找出口)所花费的时间。
例如,分析分组的首部、从分组中提取数据部分、进行差错检验或查找适当的路由等
4、排队时延:分组在进入路由器后要先在输入队列中排队等待处理。路由器确定转发端口后,还要在输出队列中排队等待转发,产生排队时延。
时延带宽积
时延带宽积:指发送端发送的第一个比特即将到达终点时,发送端已经发出了多少个比特
又称以比特位单位的链路长度,即
时延带宽积 = 传播时延 x 信道带宽
往返时延
往返时延(Round-Trip Time,RTT):指发送端发送数据开始,到发送端收到来自接受端的确认,总共经历的时延。
RTT越大,在收到确认之前,可以发送的数据越多!
RTT包括 = 2 * 传播时延(往返传播时延) + 末端处理时延
信道利用率
信道利用率:指出某一信道有百分之多少的时间是有数据通过的。
信道利用率 = 有数据通过的时间/(有+无)数据通过时间
网络利用率:信道利用率的加权平均值
4、分层结构
脑图
分层结构
计算机网络的各层及其协议的集合称为网络的体系结构。
网络体系结构是从功能上描述计算机网络结构。
计算机网络体系结构简称网络体系结构是分层结构。
分层的基本原则
- 各层之间相互独立,每层只实现一种相对独立的功能。
- 每层之间界面自然清晰,易于理解,相互交流尽可能少。
- 结构上可分割开。每层都采用最合适的技术来实现。
- 保持下层对上层的独立性,上层单向使用下层提供的服务。
- 整个分层结构应该能促进标准化工作。
分层结构
1、实体:第n层中的活动元素称为n层实体。同一层的实体叫对等实体。
2、协议:为进行网络中的对等实体数据交换而建立的规则、标准或约定。【水平】
3、接口(服务访问点 SAP):上层使用下层服务的入口。
4、服务:下层为相邻上层提供的功能调用。【垂直】
在计算机网络体系结构的各个层次中,每个报文都分为两部分:
一是数据部分,即SDU;二是控制信息部分,即PCI,它们共同组成PDU。
- 服务数据单元(SDU):为完成用户所要求的功能而应传送的数据。第n层 ----- n-SDU。
- 协议控制信息(PCI):控制协议操作的信息。第n层 ----- n-PCI。
- 协议数据单元(PDU):对等层次之间传送的数据单位称为该层的PDU。第n层 ----- n-PDU。
第n层在向n+1层提供服务时,此服务不仅包含第n层本身的功能,还包含下层服务提供的功能。
仅仅在相邻层间有接口,且所提供服务的具体实现细节对上一层完全屏蔽。
5、OSI七层参考模型
脑图
计算机网络分层结构
OSI参考模型历史
为了解决计算机网络复杂的大问题 ----> 分层结构(按功能)
目的:支持异构网络系统的互联互通。
国际标准化组织(ISO)于1984年提出开放系统互连(OSI)参考模型。
但是理论成功,市场失败。
OSI七层模型
OSI参考模型通信过程
参考模型各层功能
上面四层是端到端,下面三层是点到点。
应用层:所有能和用户交互产生网络流量的程序,是用户与网络的界面。
- 典型的应用层服务:文件传输(FTP)、电子邮件(SMTP)、万维网(HTTP)
表示层:处理在两个通信系统中交换信息的表示方式(语法和语义)。
- 数据格式变换、数据加密解密、数据压缩和恢复
- 主要协议:JPEG、ASCII
会话层:向表示层实体/用户进程提供建立连接并在连接上有序地传输数据,这是会话,也是建立同步(SYN)。
- 建立、管理、终止会话
- 使用校验点可使会话在通信失效时从校验点/同步点继续恢复通信,实现数据同步。
- 主要协议:ADSP、ASP
传输层:负责主机中两个进程的通信,即端到端的通信。传输单位是报文段或用户数据报。
- 可靠传输、不可靠传输
- 差错控制
- 流量控制
- 复用分用
- 复用:多个应用层进程可同时使用下面运输层的服务。
- 分用:运输层把收到的信息分别交付给上面应用层中相应的进程。
- 主要协议:TCP、UDP
网络层(IP层、网继层):把分组从源端传到目的端,为分组交换网上的不同主机提供通信服务。网络层传输单位是数据报。
- 路由选择
- 流量控制
- 差错控制
- 拥塞控制:若所有结点都来不及接受分组,而要丢弃大量分组的话,网络就处于拥塞状态。因此要采取一定措施缓解这种拥塞。
- 主要协议:IP、IPX、ICMP、IGMP、ARP、RARP、OSPF
数据链路层:把网络层传下来的数据报组装成帧。
- 成帧(定义帧的开始和结束)
- 差错控制(帧错/位错)
- 流量控制
- 访问控制(控制对信道的访问)
- 主要协议:SDLC、HDLC、PPP、STP
物理层:在物理媒体上实现比特流的透明传输。
- 透明传输:不管所传数据是什么样的比特组合,都应当能够在链路上传送。
- 定义接口特性
- 定义传输模式 ----- 单工、半双工、双工
- 定义传输速率
- 比特同步
- 比特编码
- 主要协议:Rj45、802.3
6、TCP/IP四层模型
OSI VS TCP/IP
相同点
- 都分层
- 基于独立的协议栈的概念
- 可以实现异构网络互联
不同点
- OSI定义三点:服务、协议、接口
- OSI先出现,参考模型先于协议发明,不偏向特定协议
- TCP/IP设计之初就考虑到异构网互联问题,将IP作为重要层次
面向连接分为三个阶段,第一是建立连接,在此阶段,发出一个建立连接的请求。只有在连接成功建立之后,才能开始数据传输,这是第二阶段。接着,当数据传输完毕,必须释放连接。
而面向无连接没有这么多阶段,它直接进行数据传输。
7、五层参考模型
应用层:支持各种网络应用 ----- FTP、SMTP、HTTP
传输层:进程-进程的数据传输 ----- TCP、UDP
网络层:源主机到目的主机的数据分组路由与转发 ----- IP、ICMP、OSPF
数据链路层:把网络层传下来的数据报组装成帧 ----- Ethernet、PPP
物理层:比特传输
通信过程
二、物理层
0、脑图
1、物理层基本概念
物理层解决如何在连接各种计算机的传输媒体上传输数据比特流,而不是指具体的传输媒体。
物理层主要任务:确定与传输媒体接口有关的一些特性。(定义标准)
- 机械特性定义物理连接的特性,规定物理连接时所采用的规格、接口形状、引线数目、引脚数量和排列情况。
- 电气特性规定传输二进制位时,线路上信号的电压范围、阻抗匹配、传输速率和距离限制等。
- 功能特性指明某条线上出现的某一电平表示何种意义,接口部件的信号线的用途。
- 规程特性(过程特性)定义各条物理线路的工作规程和时序关系。
2、数据通信基础知识
数据通信模型
数据通信相关术语
通信的目的是传送信息。
数据:传送信息的实体,通常是有意义的符号序列。
信号:数据的电气/电磁的表现,是数据在传输过程中的存在形式。
- 数字信号:代表消息的参数取值是离散的。
- 模拟信号:代表消息的参数取值是连续的。
信源:产生和发送数据的源头。
信宿:接收数据的终点。
信道:信号的传输媒介。一般用来表示向某一个方向传送信息的介质。
- 传输信号:模拟信道(传送模拟信号)/ 数字信道(传送数字信号)
- 传输介质:无线信道 / 有线信道
三种通信方式
三种通信方式
- 单工通信:只有一个方向的通信而没有反方向的交互,仅需要一条信道。
- 半双工通信:通信的双方都可以发送或接收数据,但任何一方都不能同时发送和接收,需要两条信道。
- 全双工通信:通信双方可以同时发送和接收信息,需要两条信道。
两种数据传输方式
串行传输:速度慢,费用低,适合远距离
并行传输:速度快,费用高,适合近距离(常用于计算机内部数据传输)
3、码元&波特&速率&带宽
码元是一个固定时长的信号波形(数字脉冲),代表不同离散数值的基本波形,是数字通信的计量单位,这个时长内的信号称为k进制码元,而该时长称为码元宽度。当码元的离散状态有M个时(M大于2),此时码元为M进制码元。
1码元可以携带多个比特的信息量。例如,在使用二进制编码时,只有两种不同的码元,一种代表0状态,另一种代表1状态。
例子
4进制码元 -> 码元的离散状态有4个 -> 4种高低不同的信号波形 -> 00、01、10、11
速率也叫数据率,是指数据的传输速率,表示单位时间内传输的数据量。可以用码元传输速率和信息传输速率表示。
码元传输速率:别名码元速率、调制速率、符号速率等,它表示单位时间内数字通信系统所传输的码元个数(也可称为脉冲个数或信号变化的次数),单位是波特(Baud)。1波特表示数字通信系统每秒传输一个码元。码元速率与进制数无关。【1秒传输多少个码元】
1Baud = 1码元/s
信息传输速率:别名信息速率、比特率等,表示单位时间内数字通信系统传输的二进制码元个数(即比特数),单位是比特/秒(b/s) .【1秒传输多少个比特】
关系:若一个码元携带n bit的信息量,则M Baud的码元传输速率所对应的信息传输速率为M x n bit/s。
带宽:表示在单位时间内从网络中的某一点到另一点所能通过的“最高数据率”,常用来表示网络的通信线路所能传输数据的能力。单位是b/s。
4、奈氏准则&香农定理
信号失真
影响失真程度的因素:
-
码元传输速率
-
信号传输距离
-
噪声干扰
-
传输媒体质量
码间串扰
码间串扰:接收端收到的信号波形失去了码元之间清晰界限的现象。
奈氏准则
在理想低通(无噪声,带宽受限)条件下,为了避免码间串扰,极限码元传输速率为 2W Baud,W 是信道带宽,单位是 Hz。(只有在这两个公式中带宽才用Hz)
- 在任何信道中,码元传输的速率是有上限的。若传输速率超过此上限,就会出现严重的码间串扰问题,使接收端对码元的完全正确识别成为不可能。
- 信道的频带越宽(即能通过的信号高频分量越多),就可以用更高的速率进行码元的有效传输。
- 奈氏准则给出了码元传输速率的限制,但并没有对信息传输速率给出限制。
- 由于码元的传输速率受奈氏准则的制约,所以要提高数据的传输速率,就必须设法使每个码元能携带更多比特的信息量,这就需要采用多元制的调制方法。
例子
香农定理
噪声存在于所有的电子设备和通信信道中。由于噪声随机产生,它的瞬时值有时会很大,因此噪声会使接收端对码元的判决产生错误。但是噪声的影响是相对的,若信号较强,那么噪声影响相对较小。因此信噪比就很重要。
信噪比 = 信号的平均功率/噪声的平均功率,常记为 S/N,并用分贝(dB)作为度量单位,即:
香农定理:在带宽受限且有噪声的信道中,为了不产生误差,信息的数据传输速率有上限值。
- 信道的带宽或信道的信噪比越大,则信息的极限传输速率就越高。
- 对一定的传输带宽和一定的信噪比,信息传输速率的上限就确定了。
- 只要信息的传输速率低于信道的极限传输速率,就一定能够找到某种方法来是实现无差错的传输。
- 香农定理得出的为极限信息传输速率,实际信道能达到的传输速率要比它低不少。
- 从香农定理可以看出,若信道带宽 W 或信噪比 S/N 没有上限(不可能),那么信道的极限信息传输速率也就没有上限。
两者对比
5、编码&调制
脑图
基带信号&宽带信号
信道:信号的传输媒介。一般用来表示向某一个方向传送信息的介质,因此一条通信线路往往包含一条发送信道和一条接收信道。
- 传输信号:模拟信道(传送模拟信号)/ 数字信道(传送数字信号)
- 传输介质:无线信道 / 有线信道
基带信号:将数字信号1和0直接用两种不同的电压表示,再送到数字信道上去传输(基带传输)。来自信源的信号,如计算机输出的代表各种文字或图像文件的数据信号都属于基带信号。基带信号就是发出的直接表达了要传输的信息的信号。比如声波!
宽带信号:将基带信号进行调制后形成的频分复用模拟信号,再传送到模拟信道上去传输(宽带传输)。把基带信号经过载波调制后,把信号的频率范围搬移到较高的频段以便在信道中传输。
- 在传输距离较近时,计算机网络采用基带传输方式(近距离衰减小,从而信号内容不易发生变化)。
- 在传输距离较远时,计算机网络采用宽带传输方式(远距离衰减小,即使信号变化大也能最后过滤出来基带信号)。
编码:数据转成数字信号
调制:数据转成模拟信号
数字数据
- 数字信号:数字发送器(编码)
- 模拟信号:调制器(调制)
模拟数据
- 数字信号:PCM编码器(编码)
- 模拟信号:放大器调制器(调制)
数字数据编码为数字信号
1、非归零编码【NRZ】
高1低0。编码容易实现,但没有检错功能,且无法判断一个码元的开始和结束,以至于收发双方难以保持同步。例如全0或全1,是一条水平线
2、曼彻斯特编码
将一个码元分成两个相等的间隔,前一个间隔为低电平后一个间隔为高电平表示码元1;码元0则正好相反。也可以采用相反的规定。该编码的特点是在每一个码元的中间出现电平跳变,位中间的跳变既作时钟信号(可用于同步),又作数据信号,但它所占的频带宽度是原始的基带宽度的两倍。每一个码元都被调成两个电平,所以数据传输速率中有调制速率的1/2。(一个人时钟周期内,一个比特,两个码元)
3、差分曼彻斯特编码
同1异0。常用于局域网传输,其规则是:若码元为1,则前半个码元的电平与上一个码元的后半个码元的电平相同,若为0,则相反。该编码的特点是,在每个码元的中间,都有一次电平的跳转,可以实现自同步,且抗干扰性强于曼彻斯特编码。
4、归零编码【RZ】
信号电平在一个码元之内都要恢复到零。
5、反向不归零编码【NRZI】
信号电平翻转表示0,信号电平不变表示1。
6、4B/5B编码
比特流中插入额外的比特以打破一连串的0或1,就是用5个比特来编码4个比特的数据,之后再传给接收方,因此称为4B/5B。编码效率为80%。
只采用16种对应16种不同的4位码,其他的16种作为控制码(帧的开始和结束,线路的状态信息等)或保留。
数字数据调制为模拟信号
数字数据调制技术在发送端将数字信号转换为模拟信号,而在接收端将模拟信号还原为数字信号,分别对应于调制解调器的调制和解调过程。
调幅+调相(QAM)正交调幅调制!
模拟数据编码为数字信号
计算机内部处理的是二进制数据,处理的都是数字音频,所以需要将模拟音频通过采样、量化转换成有限个数字表示的离散序列(即实现音频数字化)。
最典型的例子就是对音频信号进行编码的脉码调制(PCM),在计算机应用中,能够达到最高保真水平的就是PCM编码,被广泛用于素材保存及音乐欣赏,CD、DVD以及我们常见的WAV文件中均有应用,它主要包括三步:抽样、量化、编码
- 抽样:对模拟信号周期性扫描,把时间上连续的信号变成时间上离散的信号。为了使所得的离散信号能无失真地代表被抽样地模拟数据,要使用采样定期进行采样。采样频率 ≥ 2*信号最高频率。
- 量化:把抽样取得的电平幅值按照一定的分级标度转化为对应的数字值,并取整数,这就把连续的电平幅值转换为离散的数字量。
- 编码:把量化的结果转换为与之对应的二进制编码。
模拟数据调制为模拟信号
为了实现传输的有效性,可能需要较好的频率。这种调制方式还可以使用频分复用技术,充分利用带宽资源。在电话机和本地交换机所传输的信号是采用模拟信号传输模拟数据的方式;模拟的声音数据是加载到模拟的载波信号中传播的。
6、物理层传输介质
脑图
传输介质也称传输媒体/传输媒介,它就是数据传输系统中在发送设备和接收设备之间的物理通路。
传输媒体并不是物理层。传输媒体在物理层的下面,因为物理层是体系结构的第一层,因此有时称传输媒体为0层。在传输媒体中传输的是信号,但传输媒体并不知道所传输的信号代表什么意思。但物理层规定了电气特性,因此能够识别所传送的比特流。
- 导向性传输介质:电磁波被导向沿着固体媒介(铜线/光纤)传播。如 双绞线、同轴电缆、光纤
- 非导向性传输介质:自由空间,介质可以是空气、真空、海水等。如 无线电波、微波、红外线和激光
双绞线
双绞线是古老、又最常用的传输介质,它由两根采用一定规则并排绞合的、相互绝缘的铜导线组成。
绞合可以减少对相邻导线的电磁干扰。
为了进一步提高抗电磁干扰能力,可在双绞线的外面加上一个由金属丝编织成的屏蔽层,这就是屏蔽双绞线(STP),无屏蔽层的双绞线就称为非屏蔽双绞线(UTP)。
双绞线价格便宜,是最常用的传输介质之一,在局域网与传统电话网中普遍使用。模拟传输和数字传输都可以使用双绞线,其通信距离一般为几公里到数十公里。距离太远时,对于模拟传输,要用放大器放大衰减的信号;对于数字传输,要用中继器将失真的信号整形。
同轴电缆
同轴电缆由导体铜质芯线、绝缘层、网状编制屏蔽层和塑料外层构成。按特性抗阻数值的不同,通常将同轴电缆分为两类:
- 50 Ω 同轴电缆和 75 Ω 同轴电缆。其中 50 Ω 同轴电缆主要用于传送基带数字信号,又称为基带同轴电缆,它在局域网中得到广泛应用;
- 75 Ω 同轴电缆主要用于传送宽带信号,又称为宽带同轴电缆,它主要用于有线电视系统。
同轴电缆VS双绞线
由于外导体屏蔽层的作用,同轴电缆抗干扰特性比双绞线好,被广泛用于传输较高速率的数据,其传输距离更远,但价格较双绞线贵。
光纤
光纤通信就是利用光导纤维传递光脉冲来进行通信。有光脉冲表示1,无光脉冲表示0。而可见光的频率大约是 10^8MHz,因此光纤通信系统的带宽远远大于目前其他各种传输介质的带宽。
光纤在发送端有光源,可以采用发光二极管或半导体激光器,它们在电脉冲作用下能产生出光脉冲;在接收端用光电二极管做成光检测器,在检测到光脉冲时可还原出电脉冲。
光纤主要由纤芯(实心的! )和包层构成,光波通过纤芯进行传导,包层较纤芯有较低的折射率。当光线从高折射率的介质射向低折射率的介质时,其折射角将大于入射角。因此,如果入射角足够大,就会出现全反射,即光线碰到包层时候就会折射回纤芯、这个过程不断重复,光也就沿着光纤传输下去。
特点:
- 传输损耗小,中继距离长,对远距离传输特别经济。
- 抗雷电和电磁干扰性能好。
- 无串音干扰,保密性好,也不易被窃听或截取数据。
- 体积小,重量轻。
非导向性传输介质
包括无线电波,微波,红外线和激光等
7、物理层设备
中继器
诞生原因:由于存在损耗,在线路上传输的信号功率会逐渐衰减,衰减到一定程度时将造成信号失真,因此会导致接收错误。
中继器的功能:对信号进行再生和还原,对衰减的信号进行放大,保持与原数据相同,以增加信号传输的距离,延长网络的长度。
- 中继器:再生数字信号
- 放大器:再生模拟信号
中继器的两端:两端的网络部分是网段,而不是子网,适用于完全相同的两类网络的互连,且两个网络速率要相同。
中继器只将任何电缆段上的数据发送到另一段电缆上,它仅作用于信号的电气部分,并不管数据中是否有错误或不适于网段的数据。
两端可连相同媒体,也可连不同媒体。
中继器两端的网段一定要是同一个协议。(中继器不会存储转发)
**5-4-3规则:**网络标准中都对信号的延迟范围作了具体的规定,因而中继器只能在规定的范围内进行,否则会网络故障。
集线器
又称为多口中继器
集线器的功能:对信号进行再生放大转发,对衰减的信号进行放大,接着转发到其他所有(除输入端口外)处于工作状态的端口上,以增加信号传输的距离,延长网络的长度。不具备信号的定向传送能力,是一个共享式设备。
- 星型拓扑结构
- 集线器不能分割冲突域
三、数据链路层
0、脑图
1、数据链路层功能概述
基本概念
结点:主机、路由器
链路:网络中两个结点之间的物理通道,链路的传输介质主要有双绞线、光纤和微波。分为有线链路、无线链路。
数据链路:网络中两个结点之间的逻辑通道,把实现控制数据传输协议的硬件和软件加到链路上就构成数据链路。
帧:链路层的协议数据单元,封装网络层数据报。
数据链路层负责通过一条链路从一个结点向另一个物理链路直接相连的相邻结点传送数据报。
(把网络层交付给它的数据报安全、无差错地传给相邻结点)
数据链路层的功能概述
数据链路层在物理层提供服务的基础上向网络层提供服务,其最基本的服务是将源自网络层来的数据可靠地传输到相邻结点的目标网络层。其主要作用是加强物理层传输原始比特流的功能,将物理层提供的可能出错的物理连接改造成为逻辑上无差错的数据链路,使之对网络层标表现为一条无差错的链路。
- 功能一:为网络层提供服务。无确认无连接服务,有确认无连接服务,有确认面向连接服务。
- 功能二:链路管理,即连接的建立、维持、释放(用于面对连接的服务)。
- 功能三:组帧。
- 功能四:流量控制(限制发送方)。
- 功能五:差错控制(帧错/位错)。
2、封装成帧&透明传输
封装成帧
封装成帧就是在一段数据的前后部分添加首部和尾部,这样就构成了一个帧。接收端在收到物理层上交的比特流后,就能根据首部和尾部的标记,从收到的比特流中识别帧的开始和结束。
首部和尾部包含许多的控制信息,她们的一个重要作用:帧定界(确定帧的界限)
帧同步:接收方应当能从接收到的二进制比特流中区分出帧的起始和终止。
组帧的四种方式:1、字符计数法 2、字符(节)填充法 3、零比特填充法 4、违规编码法
透明传输
透明传输是指不管所传数据是什么样的比特组合,都应当能够在链路上传送。因此,链路层就“看不见”有什么妨碍数据传输的东西。
当所传数据中的比特组合恰巧与某-一个控制信息完全一样时, 就必须采取适当的措施,使收方不会将这样的数据误认为是某种控制信息。这样才能保证数据链路层的传输是透明的。
字符计数法
帧首部使用一个计数字段(第一个字节,八位)来标明帧内字符数。
目的结点的数据链路层收到字节计数值时,就知道后面跟随的字节数,从而确定帧结束位置。
问题:如果计数字段出错,即失去了帧边界划分的依据。
字符填充法
用特定字符来定界一帧的开始与结束。
控制字符EOH(Start of header)放在帧的最前面,表示帧的首部开始,控制字符EOT(End of transmission)表示帧的结束。为了使信息位中出现的特殊字符不被误判为帧的首尾定界符,可在特殊字符前面填充一个转义字符(ESC)来加以区分,以实现数据的透明传输。
- 当传送的帧是由文本文件组成时(文本文件的字符都是从键盘上输入的,都是ASCII码)。不管从键盘上输入什么字符都可以放在帧里传过去,即透明传输。
- 当传送的帧是由非ASCII码的文本文件组成时(二进制代码的程序或图像等)。就要采用字符填充方法实现透明传输。
零比特填充法
零比特填充法使用一个特定的比特模式,即01111110来标志一帧的开始和结束。
为了不使信息位出现的比特流01111110被误判为帧的首尾标志,发送方的数据链路层在信息位中遇到5个连续的”1“时,将自动在其后插入一个”0“;
而接收方做该过程的逆操作,即每收到5个连续的”1“时,自动删除后面紧跟的”0“,以恢复原信息。
即 5 1 1 0
违规编码法
在物理层进行比特编码时,通常采用违规编码法。
曼彻斯特编码将数据比特”1“编码成”高-低“电平对,将数据比特”0“编码成”低-高“电平对,而”高-高“电平对和”低-低“电平对在数据比特中是违规的。可以借用这些违规编码序列来定界帧的起始和终止。
由于字节计数法中Count字段的脆弱性(其值若有差错将导致灾难性后果)及字符填充实现上的复杂性和不兼容性,目前普遍使用的帧同步法是比特填充和违规编码法。
3、差错控制
脑图
差错由来
传输中的差错都是噪声引起的。
全局性:由于线路本身电气特性所产生的随机噪声(热噪声),是信道固有的,随机存在的。
解决方法:提高信噪比来减少或避免干扰。
局部性:外界特定的短暂原因所造成的冲击噪声,是产生差错的主要原因。
解决方法:通常利用编码技术来解决。
差错
- 位错:比特位出错,1变成0,0变成1
- 帧错:丢失、重复、失序
为什么要在数据链路层进行差错控制?
因为错误可以尽早发现,不会让一个错误的数据报发送了很长时间到达目的地之后才被发现,从而导致网络资源的浪费。
差错控制(比特错,帧错传输层讲解)
- 检错编码
- 奇偶校验码
- 循环冗余码CRC
- 纠错编码
- 海明码
编码VS编码
数据链路层编码和物理层的数据编码与调制不同。物理层编码针对的是单个比特,解决传输过程中比特的同步等问题,如曼彻斯特编码。而数据链路层的编码针对的是一组比特,它通过冗余码的技术实现一组二进制比特串在传输过程是否出现了差错。
冗余编码
在数据发送之前,先按某种关系附加上一定的冗余位,构成一个符合某一规则的码字后再发送当要发送的有效数据变化时,相应的冗余位也随之变化,使码字遵从不变的规则。接收端根据收到码字是否仍符合原规则,从而判断是否出错。
检错编码-奇偶校验码
奇偶校验码是奇校验码和偶校验码的统称,是一种最基本的校验码。
它由n-1位信息元和1位校验码组成。
- 如果是奇校验码,那么在附加一个校验元后,码长位n的码字中”1“的个数为奇数。
- 如果是偶校验码,那么在附加一个校验元后,码长位n的码字中”1“的个数为偶数。
它只能检测奇数位的出错情况,但并不知道哪些位错了,也不能发现偶数位的出错情况,检错能力百分之五十!
如下题:奇校验,添加一个校验位后为11100101,出现错误只能出现奇数个不一样的,因此出错后还是奇数个1则无法检测!
检错编码-CRC循环冗余码
接收端检错过程
把收到的每一个帧都除以同样的除数,然后检查得到的余数R。
- 余数为0,判定这个帧没有差错,接受。
- 余数为不为0,判定这个帧有差错(无法确定到位),丢弃。
- FCS的生成以及接收端CRC检验都是由硬件实现,处理很迅速,
- 因此不会延误数据的传输。
在数据链路层仅仅使用循环冗余检验CRC差错检测技术,只能做到对帧的无差错接收,即“凡是接收端数据链路层接受的帧,我们都能以非常接近于1的概率认为这些帧在传输过程中没有产生差错“。
接收端丢弃的帧虽然曾收到了,但是最终还是因为有差错被丢弃.“凡是接收端数据链路层接收的帧均无差错”。
可靠传输:数据链路层发送端发送什么,接收端就收到什么。
链路层使用CRC检验,能够实现无比特差错的传输,但这还不是可靠传输。
纠错编码-海明码
发现双比特错,纠正单比特错。
1)确定校验码位数 r
海明不等式:
- r 为冗余信息位
- k 为信息位。
以数据码 101101为例!
数据的位数 k = 6,满足不等式的最小 r 为 4。
也就是 D = 101101 的海明码应该有 6 + 4 = 10 位,
其中原数据 6 位,校验码 4 位。
2)确定校验码和数据的位置
假设这 4 位校验码分别为 P1,P2,P3,P4(放在2的几次方的位置);数据从左到右为 D1,D2,……,D6(按序把空填满)。
3)求出校验码的值
令所有要校验的位异或即可!
校验码二进制1的位置,数据码对应位置也为1时,进行异或!
P1⊕D1⊕D2⊕D4⊕D5 = 0 => P1 =0
P2⊕D1⊕D3⊕D4⊕D6 = 0 => P2 = 0
P3⊕D2⊕D3⊕D4 = 0 => P3 = 0
P4⊕D5⊕D6 = 0 => P4 = 1
故101101的海明码为 0010011101
4)检错并纠错
假设第五位出错,因此接收到的数据位是 0010111101。
令所有要校验的位异或运算。
P1⊕D1⊕D2⊕D4⊕D5 = 1
P2⊕D1⊕D3⊕D4⊕D6 = 0
P3⊕D2⊕D3⊕D4 = 1
P4⊕D5⊕D6 = 0
从P4往P1写:
二进制序列位0101,恰好对应十进制5,这样就找到了出错的位置,即出错位是第5位。
4、流量控制&可靠传输
脑图
流量控制
较高的发送速度和较低的接收能力的不匹配,会造成传输出错,因此需要流量控制。
数据链路层的流量控制是点对点的,而传输层的流量控制是端到端的。
数据链路层流量控制手段:接收方收不下就不回复确认。
传输层流量控制手段:接收方给发送方一个窗口公告。
流量控制的方法:
- 停止等待协议:发送窗口大小 = 1,接收窗口大小 = 1
- 滑动窗口协议
- 后退 N 帧协议(GBN):发送窗口大小 > 1,接收窗口大小 = 1
- 选择重传协议(SR):发送窗口大小 > 1,接收窗口大小 > 1
可靠传输:发送端发啥,接收端收啥。
流量控制:控制发送速率,使接收方有足够的缓冲空间来接收每一个帧。
滑动窗口解决
- 流量控制(收不下就不给确认,想发也发不了)
- 可靠传输(发送方自动重传)
停止等待协议
脑图
为什么要有停等协议?
因为在链路上出了比特出差错外,底层的信道还会出现丢包问题。
丢包:物理线路故障,设备故障,病毒攻击,路由信息错误等原因,会导致数据包的丢失。
这里的数据包就是一个数据,在不同层次有不同的名字;在链路层是帧,在网络层是数据报/分组,在传输层是报文段。
研究停等协议的前提?
虽然现在常用全双工通信方式,但为了讨论问题方便,仅考虑一方发送数据(发送方),一方接收数据(接收方))。
因为是在讨论可靠传输的原理,所以并不考虑数据是在哪一个层次上传送的。
“停止-等待”就是每发送完一个分组就停止发送,等待对方确认,在收到确认后再发送下一个分组。
无差错接收与可靠传输的区别
无差错接收是指–凡是接收的帧(不包括丢弃的帧),我们都能以非常接近于1的概率认为这些帧在传输过程中没有产生差错–。也就是说:凡是接收端数据链路层接受的帧都没有传输差错(有差错的帧就丢弃而不接受)。
要做到可靠传输(即发送什么就收到什么)就必须加上确认和重传机制。
停止等待协议
- 每发送完一个帧就停止发送,等待对方的确认,在收到确认后再发送下一个帧。
- 每次只允许发送一帧,然后就陷入等待接收方确认信息的过程中,因而传输效率很低。
1)无差错情况
2.1)数据帧丢失或检测到帧出错
2.2)ACK丢失
2.3)ACK迟到
性能分析
信道利用率
停止等待协议弊端
停等协议发送方每发送一个帧就处于等待状态,等到接收方回复一个确认帧,发送方才会发送新的帧。因此大部分时间都是在等待,真正发送数据的时间很少,极大地浪费了资源。
为了解决这个问题,可以采用流水线技术,一次发送多个帧,但同时在其他方面需要改进:
- 必须增加序号范围;
- 发送方需要缓存多个分组,为帧丢失重传备用。
针对这种解决方案,就推出了GBN和SR。
后退 N 帧协议 GBN
脑图
发送窗口:发送方维持一组连续的允许发送的帧的序号。
接收窗口:接收方维持一组连续的允许接收帧的序号。
发送方必须响应的三件事
1、上层的调用
上层要发送数据时,发送方先检查发送窗口是否已满,如果未满,则产生一个帧并将其发送;如果窗口已满,发送方只需将数据返回给上层,暗示上层窗口已满。上层等一会再发送。
2、收到了一个ACK
GBN协议中,对n号帧的确认采用累积确认的方式,标明接收方已经收到n号帧和它之前的全部帧。
3、超时事件
如果出现超时,发送方重传所有已发送但未被确认的帧。
接收方要做的事
如果正确收到n号帧,并且按序,那么接收方为n帧发送一个ACK,并将该帧中的数据部分交付给上层。
其余情况都丢弃帧,并为最近按序接收的帧重新发送ACK。接收方无需缓存任何失序帧,只需要维护一个信息:expectedseqnum(下一个按序接收的帧序号)。
运行中的GBN
滑动窗口长度
若采用n个比特对帧编号,那么发送窗口的尺寸Wt应满足:
因为发送窗口尺寸过大,就会使得接收方无法区分新帧和旧帧。
GBN协议重点总结
- 累积确认(偶尔捎带确认)
- 接收方只按顺序接收帧,不按序无情丢弃
- 确认序列号最大的、按序到达的帧
- 发送窗口最大为2^n - 1,接收窗口大小为 1
GBN协议性能分析
- 因连续发送数据帧而提高了信道利用率
- 在重传时必须把原来已经正确传送的数据帧重传,是传送效率降低。
选择重传协议 SR
脑图
SR协议
发送方必须响应的三件事
1、上层的调用
从上层收到数据后,SR发送方检查下一个可用于该帧的序号,如果序号位于发送窗口内,则发送数据帧;否则就像GBN一样,要么将数据缓存,要么返回给上层之后再传输。
2、收到了一个ACK
如果收到ACK,假如该帧序号在窗口内,则SR发送方将那个被确认的帧标记为已接收。如果该帧序号是窗口的下界(最左边第一个窗口对应的序号),则窗口向前移动到具有最小序号的未确认帧处。如果窗口移动了并且有序号在窗口内的未发送帧,则发送这些帧。
3、超时事件
每个帧都有自己的定时器,一个超时事件发生后只重传一个帧。
SR接收方要做的事
来者不拒(窗口内的帧)
SR接收方将确认一个正确接收的帧而不管其是否按序。失序的帧将被缓存,并返回给发送方一个该帧的确认帧【收谁确认谁】,直到所有帧(即序号更小的帧)皆被收到为止,这时才可以将一批帧按序交付给上层,然后向前移动滑动窗口。
如果收到了窗口序号外(小于窗口下界(指的是当前滑动窗口相邻的上一个滑动窗口))的帧(说明上一次返回的ACK丢失了),就返回一个ACK。其他情况,就忽略该帧。
运行中的SR
滑动窗口长度
发送窗口最好等于接收窗口。(大了会溢出,小了没意义)
这里的 n 是 log(序号最大值+1)
大于2^(n-1)时,仍会产生无法区分新旧帧的问题!
SR协议重点总结
- 对数据帧逐一确认,收一个确认一个
- 只重传出错帧
- 接收方有缓存
- 滑动窗口长度
5、介质访问控制
脑图
传输数据两种链路
点对点链路:两个相邻节点通过一个链路相连,没有第三者。
应用:PPP协议,常用于广域网。
广播式链路:所有主机共享通信介质。
应用:早期的总线以太网、无线局域网,常用于局域网。
典型拓扑结构:总线型、星型(逻辑总线型)
介质访问控制
采取一定的措施,使得两对节点之间的通信不会发生互相干扰的情况。
静态划分信道:信道划分介质访问控制
- 频分多路复用FDM
- 时分多路复用TDM
- 波分多路复用WDF
- 码分多路复用CDF
动态分配信道
- 轮询访问介质访问控制:令牌传递协议
- 随机访问介质访问控制
- ALOHA协议
- CSMA协议
- CSMA/CD协议
- CSMA/CA协议
信道划分介质访问控制(MAC Multiple Access Control )协议:
- 基于多路复用技术划分资源。
- 网络负载重:共享信道效率高,且公平
- 网络负载轻:共享信道效率低
随机访问MAC协议:唯一会产生冲突
- 用户根据意愿随机发送信息,发送信息时可独占信道带宽。
- 网络负载重:产生冲突开销
- 网络负载轻:共享信道效率高,单个结点可利用信道全部带宽
轮询访问MAC协议/轮流协议/轮转访问MAC协议:
- 既要不产生冲突,又要发送时占全部带宽。
信道划分介质访问控制
将使用介质的每个设备与来自同一信道上的其他设备的通信隔离开,把时域和频域合理地分配给网络上的设备。
信道划分的实质就是通过分时、分频、分码等方法把原来的一条广播信道,逻辑上分为几条用于两个结点之间通信的互不干扰的子信道,实际上就是把广播信道转变为点对点信道。
多路复用技术:把多个信号组合在一条物理信道上进行传输,使得多个计算机或终端设备共享信道资源,提高信道利用率。
采用多路复用技术可以把多个输入通道的信息整合到一个复用通道中,在接收端把收到的信息分离出来并传送到对应的输出通道。
静态划分信道四方法
频分多路复用FDM
用户在分配到一定的频带后,在通信过程中自始至终都占用这个频带。频分复用的所有用户在同样的时间占用不同带宽(频率带宽)资源。
时分多路复用TDM
将时间划分为一段段等长的时分复用帧(TDM帧)。每一个时分复用的用户在每一个TDM帧中占用固定序号的时隙,所有用户轮流占用信道。
TDM帧是在物理层传送的比特流所划分的帧,标志一个周期。
改进的时分复用-统计时分复用STDM
波分多路复用WDM
利用光的频分多路复用,在一根光纤中传输多种不同波长的光信号,由于波长(频率)不同,所以各路光信号互不干扰,最后再用波长分解复用器将各路波长分解出来。
码分多路复用CDM
码分多址(CDMA)[Code Division Multiple Access] 是码分复用的一种方式。
1个比特分为多个码片/芯片(chip),每个站点被指定一个唯一的 m 位的芯片序列。
发送1时站点发送芯片序列,发送0时发送芯片序列反码(通常把0写成1)。
如何不打架:多个站点同时发送数据的时候,要求各个站点的芯片序列相互正交。
如何合并:各路数据在信道中被线性相加。
如何分离:合并的数据和源站规格化内积。
随机访问介质访问控制-ALOHA协议
动态分配信道:动态媒体接入控制/多点接入
特点:信道并非在用户通信时固定分配给用户。
随机访问介质访问控制:所有用户可随机发送信息。发送信息时占全部带宽。
不协调 -> 冲突
ALOHA协议
- 纯ALOHA协议
- 时隙ALOHA协议
纯ALOHA协议
协议思想:当网络中的任何一个站点需要发送数据时,可以不监听信道,不按时间槽发送,随机重发。想发就发。
如果在一段时间内未收到确认,那么该站点就认为传输过程中发生了冲突。
发送站点需要随机等待一段时间后再发送数据,直至发送成功。
冲突如何检测?
如果发生冲突,接收方在就会检测出差错,然后不予确认,发送方在一定时间内收不到确认就判断发生冲突。
冲突如何解决?
超时后等一随机时间再重传。
时隙ALOHA协议
协议思想:把时间分成若干个相同的时间片,所有用户在时间片开始时刻同步接入网络信道,若发生冲突,则必须等到下一个时间片开始时刻再发送。
控制想发就发的随意性。
两者比较
- 纯ALOHA比时隙ALOHA吞吐量更低,效率更低。
- 纯ALOHA想发就发,时隙ALOHA只有在时间片段开始时才能发。
随机访问介质访问控制-CSMA协议
载波监听多路访问协议CSMA(carrier sense multiple access)
CS:载波监听,每个站在发送数据之前要检测一下总线上是否有其他计算机在发送数据。
当几个站同时在总线上发送数据时,总线上的信号电压摆动值将会增大( 互相叠加)。当一个站检测到的信号电压摆动值超过一定门限值时, 就认为总线上至少有两个站同时在发送数据,表明产生了碰撞,即发生了冲突。
MA:多点接入,表示许多计算机以多点接入的方式连接在一根总线上。
协议思想:发送帧之前,监听信道。
监听结果
- 信道空闲:发送完整帧
- 1-坚持CSMA
- 非坚持CSMA
- p-坚持CSMA
- 信道忙:推迟发送
1-坚持CSMA
坚持指的是对于监听信道忙之后的坚持。
思想:如果一个主机要发送信息,那么它先监听信道。
- 空闲则直接传输,不必等待。
- 忙则一直监听,直到空闲马上传输。
- 如果有冲突,则等待一个随机长的时间再监听,重复上述过程。
优点:只要媒体空闲,站点就马上发送,避免了媒体利用率的损失。
缺点:假如有两个或两个以上的站点有数据要发送,冲突就不可避免。
非坚持CSMA
非坚持指的是对于监听信道忙之后就不继续监听。
思想:如果一个主机要发送信息,那么它先监听信道。
- 空闲则直接传输,不必等待。
- 忙则等待一个随机的时间之后再监听
优点:采用随机的重发延迟时间可以减少冲突发生的可能性。
缺点:可能存在大家都在延迟等待过程中,使得媒体仍可能处于空闲状态,媒体使用率低。
p-坚持CSMA
p-坚持指的是对于监听信道空闲的处理。
p-坚持CSMA思想:如果一个主机要发送消息,那么它先监听信道。
- 空闲则以p概率直接传输,不必等待;概率1-p等待到下一个时间槽再传输。
- 忙则一直监听,直到空闲以p概率发送。
优点:既能像非坚持算法那样减少冲突,又能像1-坚持算法那样减少媒体空闲时间。
缺点:发生冲突后还是要坚持把数据帧发送完,造成了浪费。
三种CSMA协议对比
随机访问介质访问控制-CSMA/CD协议
脑图
载波监听/多路访问/碰撞检测 CSMA/CD(carrier sense multiple access with collision detection)
CS:载波监听,每个站在发送数据之前以及发送数据时要检测一下总线上是否有其他计算机在发送数据。
MA:多点接入,表示许多计算机以多点接入的方式连接在一根总线上。 总线型网络。
CD:碰撞检测(冲突检测):“边发送边监听”,适配器边发送数据边检测信道上信号电压的变化情况,以便判断自己在发送数据时其他站是否也在发送数据。半双工网络。
先听后发为什么还有冲突?
因为电磁波在总线上总是以有限速率传播的!
传播时延对载波监听的影响?
最迟多久才能直到自己发送的数据没和别人碰撞 ?
最多时两倍的总线端到端的传播时延 2τ(争用期/冲突窗口/碰撞窗口)
只要经过 2τ 时间还没有检测到碰撞,就能肯定这次发送不会发生碰撞。
如何确定碰撞后的重传时机 ?
截断二进制指数规避算法
1、确定基本退避(推迟)时间为争用期2τ。
2、定义参数k,它等于重传次数,但k不超过10,即k=min[重传次数,10]。当重传次数不超过10时,k等于重传次数;当重传次数大于10时,k就不再增大而一直等于10。
3、从离散的整数集合[0, 1, (2^k) - 1]中随机取出一个数r,重传所需要退避的时间是r倍的基本退避时间,即2r τ。
4、当重传达16次仍不能成功,说明网络太拥挤,认为此帧永远无法正确发出,抛弃此帧并向高层报告出错。
例子
若连续多次发生冲突,就表明可能有较多的站参与争用信道。使用此算法可使重传需要推迟的平均时间随重传次数的增大而增大,因而减小发生碰撞的概率,有利于整个系统的稳定
最小帧长问题
如果发送了一个很小的帧发生了碰撞,但是由于帧太短,帧发送完毕之后才能检测到发生了碰撞,已经没有办法停止发送。因此定义了最小帧长,希望在检测到碰撞的时候,帧还没发送结束。
帧的传输时延至少要两倍于信号在总线中的传播时延。
最小帧长=总线传播时延 x 数据传输速率 x 2
以太网规定最短帧长为64B,凡是长度小于64B的都是由于冲突而异常终止的无效帧。
随机访问介质访问控制-CSMA/CA协议
载波监听多路访问/碰撞避免 CSMA/CA (carrier sense multiple access with collision avoidance)
- CA:无线局域网。
- CD:总线式以太网
为什么要有CA协议?
- CD协议对于无线局域网来说,无法做到360度全面碰撞检测
- 隐蔽站问题:当A和C都检测不到信号,认为信道空闲时,同时向终端B发送数据帧,就会导致冲突.
工作原理:发送数据前,先检测信道是否空闲。
- 空闲则发出 RTS(request to send),RTS 包括发射端的地址、接收端的地址、下一份数据将持续发送的时间等信息;信道忙则等待。
- 接收端收到 RTS 后,将响应 CTS(clear to send)。
- 发送端收到 CTS 后,开始发送数据帧(同时预约信道:发送方告知其他站点自己要传多久数据)。
- 接收端收到数据帧后,将用 CRC 来检验数据是否正确,正确则响应 ACK 帧。
- 发送方收到 ACK 就可以进行下一个数据帧的发送,若没有则一直重传至规定重发次数为止(采用二进制指数规避算法来确定随机的推迟时间)。
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 避免冲突,二者出现冲突后都会进行有上限的重传。
轮询访问介质访问控制
轮询访问
- 轮询协议
- 令牌传递协议
轮询协议
主节点轮流 “邀请” 从属结点发送数据。
优点:不会发生冲突,每次只能允许一台主机发送数据,该主机占用全部带宽。
缺点:询问的过程就是发送一个较短的数据帧,如果从属结点较多,就会多次轮询,产生较大的开销,对于靠后的主机,会有等待延迟,等待前面的主机轮询结束
- 轮询开销
- 等待延迟
- 单点故障
令牌传递协议
主要用在令牌环局域网中。
令牌:一个特殊格式的MAC控制帧,不含任何信息。控制信道的使用,确保同一时刻只有一个结点独占信道。
每个结点都可以在一定的时间内(令牌持有时间)获得发送数据的权利,并不是无限制地持有令牌。
问题:
- 令牌开销
- 等待延迟
- 单点故障
应用于令牌环网(物理星型拓扑,逻辑环形拓扑)。
当计算机都不需要发送数据时,令牌就在环形网上游荡,而需要发送数据的计算机只有在拿到该令牌后才能发送数据帧,因此不会发生冲突。
采用令牌传送方式的网络常用于负载较重、通信量较大的网络中。
6、局域网基本概念&体系结构
局域网
脑图
局域网 (Local Area Network):简称LAN,是指在某一区域内多台计算机互联成的计算机组,使用广播信道。
- 特点1:覆盖的地理范围较小,只在一个相对独立的局部范围内联,如一座或集中的建筑群内。
- 特点2:使用专门铺设的传输介质(双绞线、同轴电缆)进行联网,数据传输速率高(10Mb/s~10Gb/s)。
- 特点3:通信延迟时间短,误码率低,可靠性较高。
- 特点4:各站为平等关系,共享传输信道。
- 特点5:多采用分布式控制和广播式通信,能进行广播和组播。
决定局域网的主要要素为:网络拓扑,传输介质与介质访问控制方法。
局域网拓扑结构
介质访问控制方法
-
CSMA/CD:常用于总线型局域网,也用于树型网络
-
令牌总线:常用于总线型局域网,也用于树型网络
- 它是把总线型或树型网络中的各个工作站按一定顺序如按接口地址大小排列形成一个逻辑环。只有令牌持有者才能控制总线,才有发送信息的权力。
-
令牌环:用于环形局域网,如令牌环网。
局域网传输介质
- 有线局域网:双绞线、同轴电缆、光纤
- 无线局域网:电磁波
局域网分类
- 以太网:以太网是应用最为广泛的局域网,包括标准以太网(10Mbps) 、快速以太网( 100Mbps)、千兆以太网( 1000 Mbps)和10G以太网,它们都符合EE802.3系列标准规范。逻辑拓扑总线型,物理拓扑是星型或拓展星型。使用CSMA/CD
- 令牌环网:物理上采用了星形拓扑结构,逻辑上是环形拓扑结构。已是“明日黄花”。
- FDDI网(Flber Distrlbuted Data Interface):光纤分布式数据接口,物理上采用了双环拓扑结构,逻辑上是环形拓扑结构。
- ATM网(Asynchronous Transfer Mode):较新型的单元交换技术,使用53字节固定长度的单元进行交换。
- 无线局域网(Wireless Local Area Network; WLAN):采用IEEE 802.11标准。
IEEE 802标准
IEEE802系列标准是IEEE802LAN/MAN标准委员会制定的局域网、城域网技术标准(1980年2月成立)。其中最广泛使用的有以太网、令牌环、无线局域网等。这一系列标准中的每一个子标准都由委员会中的一个专门工作组负责。
FDDI:802.8
MAC子层和LLC子层
IEEE 802标准所描述的局域网参考模型只对应OSI参考模型的数据链路层与物理层,它将数据链路层划分为逻辑链路层LLC子层和介质访问控制MAC子层。
- LLC负责识别网络层协议,然后对它们进行封装。LLC报头告诉数据链路层一旦帧被接收到时,应当对数据包做何处理。为网络层提供服务:无确认无连接、面向连接、带确认无连接、高速传送。
- MAC子层的主要功能包括数据帧的封装/卸装,帧的寻址和识别,帧的接收与发送,链路的管理,帧的差错控制等。MAC子层的存在屏蔽了不同物理链路种类的差异性。
以太网
脑图
以太网(Ethernet)指的是由Xerox公司创建并由Xerox、Intel和DEC公司联合开发的基带总线局域网规范,是当今现有局域网采用的最通用的通信协议标准。以太网络使用CSMA/CD(载波监听多点接入/冲突检测)技术。
又叫做802.3局域网!
以太网在局域网各种技术中占统治性地位:
- 造价低廉(以太网网卡不到100块);
- 是应用最广泛的局域网技术;
- 比令牌网、ATM网便宜,简单;
- 满足网络速率要求:10Mb/s~10Gb/s。
以太网两个标准
- DIX Ethernet V2:第一个局域网产品(以太网)规约。
- IEEE 802.3:IEEE 802委员会802.3工作组指定的第一个IEEE的以太网标准(帧格式有一丢丢改动)
以太网提供无连接、不可靠的服务
- 无连接:发送方和接收方之间无 ”握手过程“ 。
- 不可靠:不对发送方的数据帧编号,接收方不向发送方进行确认,差错帧直接丢弃,差错纠正由高层负责。
以太网只实现无差错接收,不实现可靠传输。
以太网传输介质与拓扑结构的发展
粗同轴电缆 -> 细同轴电缆 -> 双绞线+集线器
使用集线器的以太网在逻辑上仍是一个总线网,
各站共享逻辑上的总线,使用的还是CSMA/CD协议。
以太网拓扑:逻辑上总线型,物理上星型。
10BASE-T以太网
10BASE-T是传送基带信号的双绞线以太网,T表示采用双绞线,现10BASE-T采用的是无屏蔽双绞线(UTP),传输速率是10Mb/s。
物理上采用星型拓扑,逻辑上总线型,每段双绞线最长为100m。
采用曼彻斯特编码。
采用CSMA/CD介质访问控制。
适配器与MAC地址
计算机与外界有局域网的连接是通过通信适配器的。
通信适配器:
网络接口板
网络接口卡NIC(network interface card)
现在,不再使用单独网卡。
适配器上装有处理器和存储器(包括RAM和ROM)。
ROM上有计算机硬件地址MAC地址。
在局域网中,硬件地址又称为物理地址,或MAC地址。
MAC地址:每个适配器有一个全球唯一的48位二进制地址,前24位代表厂家(由IEEE规定),后24位厂家自己指定。常用6个十六进制数表示。02-60-8c-e4-b1-21
以太网MAC帧
最常用的MAC帧是以太网V2的格式。
与IEEE 802.3的区别:
- 第三个字段是长度/类型
- 当长度/类型字段值小于0x0600时,数据字段必须装入LLC子层。
数据部分的最小字节为46,因为CSMA/CD协议最小帧长64B,因此剩下的就是64-6-6-2-4=46B.
前导码七个字节的101…用于数据同步,最后一个字节…11用于表示结束。
FCS:CRC循环冗余检验的4个字节的帧检验序列
数据链路层加头加尾,有帧开始定界符,为啥没有帧结束定界符?
以太网使用曼彻斯特编码,一个比特内都有两个码元,帧结束时候电压就不会变了,轻松确认帧结束位置,往前4B进而得到数据结束位置!
每两个帧发送都会有一个间隔!间隔中是不会有电压变化的!
高速以太网
速率>=100Mb/s的以太网称为高速以太网。
1、100BASE-T以太网
在双绞线上传送100Mb/s基带信号的星型拓扑以太网,仍使用IEEE802.3的CSMA/CD协议。
支持全双工和半双工,可在全双工方式下工作而无冲突。
2、吉比特以太网
在光纤或双绞线上传送1Gb/s信号。
支持全双工和半双工,可在全双工方式下工作而冲突。
3、10吉比特
10吉比特以太网在光纤上传送10Gb/s信号。
无线局域网
IEEE 802.11 是无线局域网通用的标准,它是由IEEE所定义的无线网络通信的标准。
和WIFI的区别 ?
无线局域网的覆盖范围比WIFI大得多;
WIFI是802.11b和802.11g所定义的标准,满足这两个标准属于WIFI。
802.11的MAC帧头格式
例如:AB两个设备和分别对应的两个基站AP1,AP2.
则接收端就是mac(AP2),发送端就是mac(AP1),目的地址mac(B),源地址mac(A)
无线局域网的分类
- 有固定基础设施无线局域网
- 无固定基础设施无线局域网的自组织网络
有固定基础设施无线局域网
服务集标识符:例如WiFi的名字
无固定基础设施无线局域网的自组织网络
7、广域网
脑图
广域网
广域网(WAN,Wide Area Network),通常跨越很大的物理范围,所覆盖的范围从几十公里到几千公里,它能连接多个城市或国家,或横跨几个洲并能提供远距离通信,形成国际性的远程网络。
广域网的通信子网主要使用分组交换技术。广域网的通信子网可以利用公用分组交换网、卫星通信网和无线分组交换网,它将分布在不同地区的局域网计算机系统互连起来,达到资源共享的目的。如因特网(Internet)是世界上范围最大的广域网。
- 节点交换机:一个网络内的
- 路由器:几个网络之间的
广域网VS局域网
- 广域网覆盖物理层、链路层一直到网络层,而局域网只覆盖物理层和链路层。
- 局域网通常采用多点接入技术,而广域网采用点对点连接。
- 广域网强调资源共享,而局域网强调数据传输。
- 广域网的传输速率比局域网高,但是传播延迟更长。
PPP协议
点对点协议PPP(Point-to-Point Protocol)是使用串行线路通信的面向字节的协议,该协议应用在直接连接两个结点的链路上。
设计的目的主要是用来通过拨号或专线方式建立点对点连接发送数据,使其成为各种主机、网桥和路由器之间简单连接的一种共同的解决方案。是目前使用最广泛的数据链路层协议。
只支持全双工链路。
PPP协议应满足的要求
- 简单:对于链路层的帧,无需纠错,只保证无差错接收(通过硬件进行CRC校验),无需序号(不可靠传输),无需流量控制。
- 封装成帧:帧定界符
- 透明传输:与帧定界符一样比特组合的数据应该如何处理:异步线路用字节填充,同步线路用比特填充。
- 多种网络层协议:封装的IP数据报可以采用多种协议。
- 多种类型链路:串行/并行,同步/异步,电/光…
- 差错检测:错就丢弃。
- 检测连接状态:链路是否正常工作。最大传送单元数据部分最大长度MTU。
- 网络层地址协商:知道通信双方的网络层地址。
- 数据压缩协商
PPP协议无需满足的要求
- 纠错
- 流量控制
- 序号
- 不支持多点线路
- PPP提供差错检测但不提供纠错功能,只保证无差错接收(通过硬件进行CRC校验)。它是不可靠的传输协议,因此也不使用序号和确认机制。
- 它仅支持点对点的链路通信,不支持多点线路
- PPP的两端可以运行不同的网络层协议,但仍然可以使用同一个PPP进行通信。
- PPP是面向字节的,当信息字段出现和标志字段一致的比特组合时,PPP有两种不同的处理方法:若用在异步线路(默认),则采用字节填充法;若用在同步线路,则采用比特填充法。
PPP协议的三个组成部分
1、链路控制协议(LCP):一种扩展链路控制协议,用于建立、配置、测试和管理数据链路。(身份验证)
2、网络控制协议(NCP):PPP协议允许同时采用多种网络层协议,每个不同的网络层协议要用一个相应的NCP来配置,为网络层协议建立和配置逻辑连接。
3、一个将IP数据报封装到串行链路的方法(同步串行/异步串行):IP数据报在PPP帧中就是其信息部分,这个信息部分的长度受最大传送单元(MTU)的限制。
PPP协议状态图
PPP协议的帧格式
HDLC协议
高级数据链路控制(HDLC,High-Level Data Link Control),是一个在同步网上传输数据、面向比特的数据链路层协议,它是由国际标准化组织(ISO)根据IBM公司的SDLC(Synchronous Data Link Control)协议扩展开发而成的。
特点:
- 数据报文可透明传输,通过零比特填充法实现。
- PPP还可以实现字节填充,HDLC只能实现零比特填充。
- 所有帧采用CRC检测,对信息帧进行顺序编号,可防止漏收或重复,传输可靠性高。
HDLC的站
- 主站的主要功能是发送命令(包括数据信息)帧、接收响应帧、并负责对整个链路的控制系统的初启、流程的控制、差错检测或恢复等。
- 从站的主要功能是接收由主站发来的命令帧,向主站发送响应帧,并且配合主站参与差错恢复链路控制。
- 复合站的主要功能是既能发送,又能接收命令帧和响应帧,并且负责整个链路的控制。
三种数据操作方式:
- 正常响应方式
- 异步平衡方式
- 异步响应方式
HDLC的帧格式
- 信息帧第一位为 0,用来传输数据信息,或使用捎带技术对数据进行确认 。
- 监督帧 10,用于流量控制和差错控制,执行对信息帧的确认、请求重发和请求暂停发送等功能。
- 无编号帧 11,用于提供对链路的建立、拆除等多种控制功能。
总结:无奸细
PPP协议 VS HDLC协议
- HDLC、PPP只支持全双工链路。
- 都可以实现透明传输。
- 都可以实现差错检测,但不纠正差错。
8、链路层设备
脑图
物理层拓展以太网
设备和集线器之间距离最大100m,否则会严失帧!
冲突域发生冲突概率太高了!
链路层拓展以太网
- 网桥
- 交换机
网桥
两个或多个以太网通过网桥连接后,就成为一个覆盖范围更大的以太网,而原来的每个以太网就称为一个网段。网桥工作在链路层的MAC子层,可以使以太网各网段成为隔离开的碰撞域。
网桥根据MAC帧的目的地址对帧进行转发和过滤。当网桥收到一个帧时,并不向所有接口转发此帧,而是先检查此帧的目的MAC地址,然后再确定将该帧转发到哪一个接口,或者是把它丢弃(即过滤)。
网段:一般指一个计算机网络中使用同一物理层设备(传输介质、中继器、集线器等)能够直接通讯的那一部分。
如果把网桥换成工作在物理层的转发器,那么就没有这种过滤通信量的功能。
由于各网段相对独立,因此一个网段的故障不会影响到另一个网段的运行。
网桥优点:
- 过滤通信量,增大吞吐量。
- 扩大了物理范围。
- 提高了可靠性。
- 可互连不同物理层、不同MAC子层和不同速率的以太网。
透明网桥
”透明“ 指以太网上的站点并不知道所发送的帧将经过哪几个网桥,是一种即插即用设备 —— 自学习。
通过自学习来构建转发表。每一个通过网桥的数据包都会被记录下网桥收到数据时数据对应的地址和网桥自己的接口,通过许许多多的数据包构造的缓存,网桥就可以知道哪个数据包在哪个接口,以后如果要穿数据包就知道要往哪个接口发送数据包了。
源路由网桥
在发送帧时,把详细的最佳路由信息(路由最少/时间最短)放在帧的首部中。
选择的是最佳路由。
方法:源站以广播方式向欲通信的目的站发送一个发现帧。
通过广播方式向目标地址发送广播,此时可能会经过不同路由产生不同的路径,目标地址收到后再将每一条路径都发一个响应帧给网桥,网桥经过对比就知道哪个接口最快。
交换机
以太网交换机
以太网交换机本质上是一个多端口的网桥,它工作在数据链路层。交换机能经济地将网络分成小的冲突域,为每个工作站提供更高的带宽。
- 交换机通常有十几个端口,每个端口都可以直接连接主机或者连接集线器。
- 交换机同网桥一样,每个端口引出的区域都是一个冲突域。
- 交换机可以独占传输媒体带宽,交换机端口连接的集线器/主机都是独占媒体带宽,不同于集线器带宽被平分。
以太网交换机的两种方式:
- 直通式交换机:查完目的地址(6B)就立刻转发。
- 延迟小,可靠性低,无法支持具有不同速率的端口的交换。
- 存储转发式交换机:将帧放入高速缓存,并检查是否正确,正确则转发,错误则丢弃。
- 延迟大,可靠性高,可以支持具有不同速率的端口的交换。
冲突域VS广播域
冲突域:在同一个冲突域中的每一个结点都能收到所有被发送的帧。简单的说就是同一时间内只能有一台设备发送信息的范围。
广播域:网络中能接收任一设备发出的广播帧的所有设备的集合。简单的说如果站点发出一个广播信号,所有能接收到这个信号的设备的范围称为一个广播域。
四、网络层
1、网络层功能概述
主要任务是把分组从源端传到目的端,为分组交换网上的不同主机提供通信服务。网络层传输单位是数据报。
分组&数据报:父与子关系!
- 路由选择与分组转发
- 异构网络互联
- 拥塞控制
- 开环控制:静
- 闭环控制:动
2、数据交换方式
为什么要数据交换
数据交换方式
- 电路交换
- 报文交换
- 分组交换
- 数据报方式
- 虚电路方式
电路交换
例子:电话
在进行数据传输时,两个结点之间必须先建立一条专用(双方独占)的物理通信路径(由通信双方之间的交换设备和链路逐段连接而成),该路径可能经过许多中间结点。这一路径在整个数据传输期间一直被独占,直到通信结束后才被释放。
电路交换的阶段:建立连接、数据传输、释放连接。
电路交换的关键点是,在数据传输的过程中,用户始终占用端到端的固定传输带宽。
电路交换技术的优点:
- 通信时延小。由于通信线路为通信双方用户专用,数据直达,因此传输数据的时延非常小。当传输的数据量较大时,这一优点非常明显。
- 有序传输。双方通信时按发送顺序传送数据,不存在失序问题。
- 没有冲突。不同的通信双方拥有不同的信道,不会出现争用物理信道的问题。
- 适用范围广。电路交换既适用于传输模拟信号,又适用于传输数字信号。
- 实时性强。通信双方之间的物理通路一旦建立,双方就可以随时通信。
- 控制简单。电路交换的交换设备及控制均较简单。
电路交换的缺点:
- 建立连接时间长。电路交换的平均连接建立时间对计算机通信来说太长。
- 线路独占,使用效率低。电路交换连接建立后,物理通路被通信双方独占,即使通信线路空闲,也不能供其他用户使用,因而信道利用率低。
- 灵活性差。只要在通信双方建立的通路中的任何一点出了故障,就必须重新拨号建立新的连接,这对十分紧急和重要的通信是很不利的。
- 难以规格化。电路交换时,数据直达,不同类型、不同规格、不同速率的终端很难相互进行通信,也难以在通信过程中进行差错控制。
- 无差错控制能力
报文交换
数据交换的单位是报文,报文携带有目标地址、源地址等信息。
报文交换在交换结点采用的是存储转发的传输方式。
报文交换的优点:
- 无需建立连接。报文交换不需要为通信双方预先建立一条专用的通信线路,不存在建立连接时延,用户可以随时发送报文。
- 动态分配线路。当发送方把报文交给交换设备时,交换设备先存储整个报文,然后选择一条合适的空闲线路,将报文发送出去。
- 提高线路可靠性。如果某条传输路径发生故障,那么可重新选择另一条路径传输数据,因此提高了传输的可靠性。
- 提高线路利用率。通信双方不是固定占有一条通信线路,而是在不同的时间一段一段地部分占有这条物理通道,因而大大提高了通信线路的利用率。
- 提供多目标服务。一个报文可以同时发送给多个目的地址,这在电路交换中是很难实现的。
报文交换的缺点:
- 由于数据进入交换结点后要经历存储、转发这一过程,因此会引起转发时延。
- 报文交换对报文的大小没有限制,这就要求网络结点需要有较大的缓存空间。
分组交换
同报文交换一样,分组交换也采用存储转发方式,但解决了报文交换中大报文传输的问题。
分组交换限制了每次传送的数据块大小的上限,把大的数据块划分为合理的小数据块,在加上一些必要的控制信息(如源地址、目的地址和编号信息等),构成分组。
分组交换的优点:
- 无建立连接。不需要为通信双方预先建立一条专用的通信线路,不存在建立连接时延,用户可以随时发送分组。
- 线路利用率高。通信双方不是固定占有一条通信线路,而是在不同的时间一段一段地部分占有这条物理通道,因而大大提高了通信线路的利用率。
- 简化了存储管理(相对于报文交换)。因为分组的长度固定,相应的缓冲区的大小也固定,在交换结点中存储器的管理通常被简化为对缓冲区的管理,相对比较容易。
- 加速传输。分组时逐个传输的,可以使后一个分组的存储操作与前一个分组的转发操作并行,这种流水线方式减少了报文的传输时间。此外,传输一个分组所需的缓冲区比传输一次报文所需的缓冲区小得多,这样因缓冲区不足而等待发送的概率及时间也必然少得多。
- 线路可靠性较高。减少了出错概率和重发数据量。因为分组较短,其出错概率必然减小,所以每次重发的数据量也就大大减少,这样不仅提高了可靠性,也减少了传输时延。
- 存储转发,动态分配线路
分组交换的缺点:
- 存在存储转发时延。尽管分组交换比报文交换的传输时延少,但相对于电路交换仍存在存储转发时延,而且其结点交换机必须具有更强的处理能力。
- 需要传输额外的信息量。每个小数据块都要加上源地址、目的地址和分组编号等信息。从而构成分组,因此使得传送的信息量增大了 5% ~ 10%,一定程度上降低了通信效率,增加了处理的时间,使控制复杂,时延增加。
- 乱序到达目的主机,需要对分组重排序。当分组交换采用数据报服务时,可能会出现失序、丢失或重复分组,分组达到目的结点时,要对分组按编号进行排序等工作,因此很麻烦。若采用虚电路服务,虽无失序问题,但有呼叫建立、数据传输和虚电路释放三个过程。
例子
传播延迟忽略!
报文交换:发送时延10s,第一个交换机发出也要10s,第二个也要10s,第二个交换机到目的站点忽略不计,总共30s.
分组交换:10000bit,每个分组10bit,共有1000个分组,由于分组是并行转发方式,因此只需要计算全部分组发送的时间再加上最后一个分组用掉的时延即可,即1000 * 0.01 + 0.01 * 2 = 10.02s
注意点
计算题中要注意的几点:
- 单位换算: b/B,Mbps,kbps
- 是否考虑传播延迟
- 时间至少是多少――选择最少跳数
- 起始时间(从发送开始到接收完为止/从发送开始到发送完毕)
- 是否有分组头部大小的开销
- 报文交换时延更长,分组交换时延可能不是整数
三种交换方式总结
- 报文交换和分组交换都采用存储转发。
- 传送数据量大,且传送时间远大于呼叫时间,选择电路交换。电路交换传输时延最小。
- 从信道利用率看,报文交换和分组交换优于电路交换,其中分组交换时延更小。
传输单元
- 应用层:报文
- 传输层:报文段
- 网络层:IP数据报,分组(父子关系)
- 链路层:帧
- 物理层:比特流
分组交换-数据报
数据报方式为网络层提供无连接服务。
虚电路方式为网络层提供连接服务。
无连接服务:不事先为分组的传输确定传输路径,每个分组独立确定传输路径,不同分组传输路径可能不同。
连接服务:首先为分组的传输确定传输路径(建立连接),然后沿该路径(连接)传输系列分组,系列分组传输路径相同,传输结束后拆除连接。
- 无连接,发送分组前不需要建立连接。发送方可随时发送分组,网络中的结点可随时接收分组。因特网
- 网络尽最大努力交付,传输不保证可靠性,所以可能丢失,为每个分组独立地选择路由,转发的路径可能不同,因而分组不一定按序到达目的结点。
- 分组携带源地址目的地址,发送的分组中要包括发送端和接收端的完整地址,以便可以独立传输。
- 分组在交换结点存储转发时,需要排队等待处理,这会带来一定的时延。通过交换结点的通信量较大或网络发生拥塞时,这种时延会大大增加,交换结点还可根据情况丢弃部分分组。
- 网络具有冗余路径,当某个交换结点或一条链路出现故障时,可相应地更新转发表,寻找另一条路径转发分组,对故障的适应能力强。
- 收发双发不独占某条链路,资源利用率较高。
- 路由器根据分组的目的地址转发分组:基于路由协议/算法构建转发表;检索转发表;每个分组独立选路。
分组交换-虚电路
虚电路将数据报方式和电路交换方式结合,以发挥两者优点。
虚电路:一条源主机到目的主机类似于电路的路径(逻辑连接),路径上所有结点都要维持这条虚电路的建立,都维持一张虚电路表,每一项记录了一个打开的虚电路的信息。
- 建立连接(虚电路建立):每个分组携带虚电路号,而非目的地址。源主机发送“呼叫请求”分组并收到“呼叫应答”分组后才算建立连接。
- 数据传输:全双工通信。
- 释放连接(虚电路释放):源主机发送“释放请求”分组以拆除虚电路。
数据报VS虚电路
3、IP数据报
TCP/IP协议栈
IP数据报格式
固定部分20B
1)版本:指IP的版本,IPv4 / IPv6
2)首部长度:占4位,单位是4B。可以表示的最大十进制数是15。以32位为单位,最大值为60B(15x4B)。最常用的首部长度是20B。
3)区分服务:指示期望获得哪种类型的服务。
4)总长度:占16位,首部 + 数据,单位是 1B。数据报的最大长度位 2^16 - 1 = 65535B。以太网帧的最大传送单元(MTU)位1500B,因此当一个IP数据报封装成帧时,数据报的总长度一定不能超过下面的数据链路层的MTU值。
5)标识:占16位。它时一个计数器,每产生一个数据报就加1,并赋值给标识字段。当一个数据报的长度超过网络的MTU时,必须分片,此时每个数据报片都复制一次标识号,以便能正确重装成原来的数据报。同一数据报的分片使用同一标识。
6)标志:占3位。xxx,最高位无意义,标志字段的最低位 MF,MF = 1 表示后面还有分片,MF = 0 表示最后一个分片或没有分片。标志字段中间的一位时 DF,只有当 DF = 1 时才允许分片。
7)片偏移:占13位。它指出较长的分组在分片后,某片在原分组中的相对位置。片偏移以8个字节为偏移单位,即每个分片的长度一定是8B(64位)的整数倍。(除了最后一个分片,每个分片的长度一定是8B的整数倍)
8)生存时间(TTL):占8位。数据报在网络中可通过的路由器数的最大值,标识分组在网络中的寿命,以确保分组不会永远在网络中循环。经过一个路由器 -1,变成 0 则丢弃。
9)协议:占8位。指出此分组携带的数据使用何种协议,即分组的数据部分应交给哪个传输层协议,如TCP、UDP等。其中值为6表示TCP,值为17表示UDP。
10)首部校验和:占16位。IP数据报的首部校验和只校验分组的首部,而不校验数据部分。
11)源地址字段:占32位,标识发送方的IP地址。
12)目的地址字段:占32位,标识接收方的IP地址。
13)可选字段:0~40B,用来支持排错、测量以及安全等措施。
14)填充:全0,把首部补成4B的整数倍。
三个单位
- 总长度单位1B
- 片偏移单位8B
- 首部长度单位4B
速记:一种八片的首饰
片偏移例子
IP数据报分片
一个数据链路层数据报能承载的最大数据量称为最大传送单元(MTU)。因为IP数据报被封装在数据链路层数据报中,因此数据链路层的MTU严格地限制着 IP 数据报的长度。
分片:当IP数据报的总长度大于链路MTU时,就需要将IP数据报中的数据分装在两个或多个较小的IP数据报中,这些较小的数据报称为片。
4、IPV4地址
IPV4地址
IP地址:全世界唯一的32位/4字节标识符,标识路由器主机的接口。
IP地址:= {<网络号>,<主机号>}
网络号标志主机(或路由器)所连接到的网络。主机号标志着该主机(或路由器)。
分类的IP地址
对于A类,最大可用网络数除了要减去全0表示的本网络,还有减去全1时候表示的127,即本地环回地址!
最大主机数都要减去全0和全1表示的本网络和广播地址!
特殊IP地址
在各类IP地址中,有些IIP地址具有特殊用途,不用做主机的IP地址:
私有IP地址
路由器对目的地址是私有IP地址的数据报一律不进行转发。
采用私有IP地址的互联网络称为专用互联网或本地互联网。
5、网络地址转化NAT
**网络地址转换(NAT)**是指通过将专用网络地址转换为公用地址,从而对外隐藏内部管理的IP地址。它使得整个专用网只需要一个全球IP地址就可以与因特网连通,由于专用网本地IP地址是可重用的,所以NAT大大节省了IP地址的消耗。
私有IP地址只用于LAN,不用于WAN连接(因此私有IP地址不能直接用于Internet,必须通过网关利用NAT把私有IP地址转换为Internet中合法的全球IP地址后才能用于Internet),并且允许私有IP地址被LAN重复使用。这有效地解决了IP地址不足的问题。
使用NAT时需要在专用网连接到因特网的路由器上安装NAT软件,NAT路由器至少有一个有效的外部全球地址。使用本地地址的主机和外界通信时,NAT路由器使用NAT转换表将本地地址转换成全球地址,或将全球地址转换成本地地址。NAT转换表中存放着**{本地IP地址:端口} 到{全球IP地址:端口}**的映射。通过{ip地址:端口}这样的映射方式,可让多个私有IP地址映射到同一个全球IP地址。
6、子网划分&子网编码
子网划分
分类的IP地址的弱点:
- IP地址空间的利用率有时很低。
- 给每个物理网络分配一个网络号会使路由表变得太大而网络性能变坏。
- 两级IP地址不够灵活。
子网划分:在IP地址中增加一个子网号字段,使两级IP地址变成了三级IP地址。
基本思路
- 子网划分纯属一个单位内部的事情。单位对外仍然表现为没有划分子网的网络。
- 从主机号借用若干比特作为子网号,当然主机号也就相应减少了相同比特。三级IP地址的结构如下:IP地址 = {<网络号>,<子网号>,<主机号>}。
- 凡是从其他网络发送给本单位某台主机的IP数据报,仍然是根据IP数据报的目的网络号,先找到连接到本单位网络上的路由器。然后该路由器在收到IP数据报后,按目的网络号和子网号找到目的子网。最后把IP数据报直接交付给目的主机。
子网掩码
子网掩码是一个与IP地址相对应的、长32bit的二进制串,它由一串1和跟随的一串0组成。
其中,1对应于IP地址中的网络号及子网号,而0对应于主机号。
计算机只需将IP地址和其对应的子网掩码逐位“与”(逻辑AND运算),就可得出相应子网的网络地址。
例子一
例子二
路由表中:
- 目的网络地址
- 目的网络子网掩码
- 下一跳地址
使用子网掩码时路由器的分组转发算法
- 从收到的分组的首部提取目的IP地址,记为D。
- 先判断是否为直接交付。对路由器直接相连的网络逐个进行检查:用各网络的子网掩码和D逐位相“与”,看结果是否和相应的网络地址匹配。若匹配,则将分组直接交付,否则间接交付,执行步骤3)
- 若路由器中有目的地址为D的特定主机路由,则将分组传给路由表中所指明的下一跳路由器;否则,执行步骤4)。
- 检测路由表中有无数据,对路由表中的每一行(目的网络地址、子网掩码、下一跳地址)中的子网掩码和D逐位相“与”,其结果为N。若N与该行的目的网络地址匹配,则将分组传送给该行指明的下一跳路由器;否则,执行步骤5)。
- 若路由表中有一个默认路由 0.0.0.0,则将分组传送给路由表中所指明的默认路由器;否则,执行步骤6)。
- 丢弃,报告转发分组出错。
7、无分类编址CIDR
无分类域间路由选择是在变长子网掩码的基础上提出的一种消除传统 A、B、C类网络划分,并且可以在软件的支持下实现超网构造的一种IP地址的划分方法。
- 消除了传统的A类,B类和C类地址以及划分子网的概念。
- 融合子网地址与子网掩码,方便子网划分。
IP地址的无分类两级编址为:IP:: = {<网络前缀>, <主机号>}
斜线记法:IP地址/网络前缀所占比特数
其中,网络前缀所占比特数对应于网络号的部分,等效于子网掩码中连续1的部分。
构成超网
将多个子网聚合成一个较大的子网,叫做构成超网,或路由聚合。
方法:将网络前缀缩短。
CIDR地址块中的地址数一定是2的整数次幂,实际可指派的地址数通常为 2^N - 2,N 表示主机号的位数,主机号全0代表网络号,主机号全1为广播地址。
转成二进制,上下对其,相同的位数就是网络前缀数!
最长前缀匹配
使用CIDR时,路由表中的每个项目由“网络前缀”和“下一跳地址”组成。查找路由表可能得到几个匹配结果,应选择具有最长网络前缀的路由。前缀越长,地址块越小,路由越具体
8、地址解析协议 ARP
IP地址与硬件地址
IP地址是网络层使用的地址,它是分层次等级的。硬件地址是数据链路层使用的地址(如MAC地址),它是平面式的。在网络层及网络层之上使用IP地址,IP地址放在IP数据报的首部,而MAC地址放在MAC帧的首部。通过数据封装,把IP数据报分组封装为MAC帧后,数据链路层看不见数据报分组中的IP地址。
在实际网络的链路上传送数据帧时,最终必须使用硬件地址。
APR协议:完成主机或路由器IP地址到MAC地址的映射。(解决下一条走哪的问题)
ARP协议使用了IP地址和MAC地址,属于网络层和链路层的协议,两层协议,但一般将其归为网络层协议,在TCP/IP协议栈中处于网络层IP的最左下角接近链路层的位置!
ARP协议工作原理
检查ARP高速缓存,有对应表项则写入MAC帧,没有则用目的MAC地址为FF-FF-FF-FF-FF-FF的帧封装并广播ARP请求分组,同一局域网中所有主机都能收到该请求。目的主机收到请求后就会向源主机单播一个ARP响应分组,源主机收到后将此映射写入ARP缓存(10-20min更新一次)。
ARP高速缓存里面保存的是一个局域网内的隐射!
例子
源IP和目的IP不变,变得都是源和目的MAC地址,一层层找下去!
ARP协议4种典型情况
- 主机A发给本网络上的主机B:用ARP找到主机B的硬件地址;
- 主机A发给另一网络上的主机B:用ARP找到本网络上一个路由器(网关)的硬件地址;
- 路由器发给本网络的主机A:用ARP找到主机A的硬件地址;
- 路由器发给另一网络的主机B:用ARP找到本网络上一个路由器(网关)的硬件地址。
从IP地址到硬件地址的解析是自动进行的,主机的用户并不知道这种地址解析过程。只要主机或路由器和本网络上的另一个已知IP地址的主机或路由器进行通信,ARP就会自动地将这个IP地址解析为数据链路层所需要的硬件地址。
9、动态主机配置协议 DHCP
动态主机配置协议(Dynamic Host Configuration Protocol)常用于给主机动态地分配IP地址。
DHCP是应用层协议,使用客户/服务器方式,客户端和服务端通过广播方式进行交互,基于UDP。
DHCP提供即插即用联网的机制,主机可以从服务器动态获取IP地址、子网掩码、默认网关、DNS服务器名称与iP地址,允许地址重用,支持移动用户加入网络,支持在用地址续租。
主机获取IP地址:
- 静态配置
- 动态配置
工作原理
需要IP地址的主机在启动时就向DHCP服务器广播发现报文,这时该主机就成为DHCP客户。本地网络上所有主机都能收到此广播报文,但只有DHCP服务器才回答此报文。DHCP服务器先在其数据库中查找该计算机的配置信息。若找到,则返回找到的信息。若找不到,则从服务器的IP地址池中取一个地址分配给高计算机。DHCP服务器的回答报文称为提供报文。
DHCP服务器聚合DHCP客户端的交换过程:
1、DHCP客户机广播”DHCP发现“信息,试图找到网络中的DHCP服务器,以便从DHCP服务器获得一个IP地址。
2、DHCP服务器收到”DHCP发现“消息后,向网络中广播”DHCP提供“消息,其中包括提供DHCP客户机的IP地址和相关配置信息。
3、DHCP客户机收到”DHCP提供“消息,如果接收DHCP服务器所提供的相关参数,那么通过广播”DHCP请求“消息向DHCP服务器请求提供IP地址。
4、DHCP服务器广播“DHCP确认”消息,将IP地址分配给DHCP客户机。
注意点
-
DHCP允许网络上配置多台DHCP服务器,当DHCP客户机发出DHCP请求后,有可能收到多个应答消息,这时DHCP客户机通常挑选最先到达的。
-
DHCP服务器分配给DHCP客户的IP地址是临时的,因此DHCP客户只能在一段有限时间内使用这个分配到的IP地址。DHCP称这段时间为租用期。租用期的数值应由DHCP服务器自己决定,DHCP客户也可以在自己发送的报文中提出对租用期的要求。
-
采用广播方式进行交互的原因是在DHCP执行初期,客户端不知道服务器端的IP地址,而在执行中间,客户端并未分配IP地址,从而导致两者之间的通信必须采用广播方式。采用UDP而不采用TCP的原因也很明显:TCP需要建立连接,如果连对方的IP地址都不知道,那么更不可能通过双方的套接字建立连接。
10、网际控制报文协议 ICMP
为了提高IP数据报交付成功的机会,在网络层使用了网际控制报文协议(Internet Control Message Protocol,ICMP)来让主机或路由器报告差错和异常情况。ICMP报文作为IP层数据报的数据,加上数据报的首部,组成IP数据报发送出去。ICMP是IP层协议。
ICMP报文分为 ICMP差错报告报文 和 ICMP询问报文。
ICMP差错报告报文用于目标主机或到目标主机路径上的路由器向源主机报告差错和异常情况。共5种类型。
- 终点不可达。当路由器或主机不能交付数据报时,就向源点发送终点不可达报文。(无法到达)
- 源点抑制。当路由器或主机由于拥塞而丢弃数据报时,就向源点发送源点抑制报文,使源点知道应当把数据报的发送速率放慢。(拥塞丢数据)
- 时间超过。当路由器收到生存时间(TTL)为零的数据报时,除丢弃该数据报外,还要向源点发送时间超过报文。当终点在预先规定的时间内不能收到一个数据报的全部数据报片时,就把已收到的数据报片都丢弃,并向源点发送时间超过报文。(TTL = 0)
- 参数问题。当路由器或目的主机收到的数据报的首部中有的字段的值不正确时,就丢弃该数据报,并向源点发送参数问题报文。(首部字段有问题)
- 改变路由(重定向)。路由器把改变路由报文发送给主机,让主机知道下次应将数据报发送给另外的路由器(可通过更好的路由)。
ICMP差错报告报文数据字段
不应发送ICMP差错报告报文的几种情况:
- 对ICMP差错报告报文不再发送ICMP差错报告报文。
- 对第一个分片的数据报片的所有后续数据报片都不发送ICMP差错报告报文。
- 对具有组播地址(一点到多点,有选择性的,广播也是一点到多点,但是没有选择性)的数据报都不发送ICMP差错报告报文。
- 对具有特殊地址(如127.0.0.0或0.0.0.0)的数据报不发送ICMP差错报告报文。
ICMP询问报文有4种类型:
- 回送请求和回答报文:主机或路由器向特定目的主机发出的询问,收到此报文的主机必须给源主机或路由器发送ICMP回送回答报文。测试目的站是否可达以及了解其相关状态。
- 时间戳请求和回答报文:请某个主机或路由器回答当前的日期和时间。用来进行时钟同步和测量时间。
- 掩码地址请求和回答报文。(几乎不用)
- 路由器询问和通告报文。(几乎不用)
主要应用
PING:用来测试两台主机之间的连通性。使用了ICMP回送请求和回答报文。工作在应用层。
Trancerout/Tracert:用来跟踪分组经过的路由。使用了ICMP时间超过报文。工作在网络层。
11、IPV6
脑图
解决“IP地址耗尽”问题的措施有以下三种:
- 采用无类别编制CIDR,使IP地址的分配更加合理。
- 采用网络地址转换(NAT)方法以节省全球IP地址。
- 采用具有更大地址空间的新版本的IPv6。( 根本上解决)
改进首部格式:快速处理/转发数据报
支持QoS
Qos ( Quality of Service,服务质量)指一个网络能够利用各种基础技术,为指定的网络通信提供更好的服务能力,是网络的一种安全机制,是用来解决网络延迟和阻塞等问题的一种技术。
IPv6数据报格式
- 版本:指明了协议版本,总是6。
- 优先级:区分数据报的类别和优先级。
- “流”是互联网络上从特定源点到特定终点的一系列数据报。所有属于同一个流的数据报都具有同样的流标签。
- 下一个首部:标识下一个扩展首部或上层协议首部。
- 跳数限制:相当于IPv4的TTL。
IPv6 & IPv4
- IPv6将地址从32位(4B)扩大到128位(16B),更大的地址空间。
- IPv6将IPv4的校验和字段彻底移除,以减少每跳的处理时间。
- IPv6将IPv4的可选字段移出首部,变成了扩展首部,成为灵活的首部格式,路由器通常不对扩展首部进行检查,大大提高了路由器的处理效率。
- IPv6支持即插即用(即自动配置),不需要DHCP协议。
- IPv6首部必须是8B的整数倍,IPv4首部是4B的整数倍。
- IPv6只能在主机处分片,IPv4可以在路由器和主机处分片。
- ICMPv6:附加报文类型“分组过大”。
- IPv6支持资源的预分配,支持实时视像等要求,保证一定的带宽和时延应用。
- IPv6取消了协议字段,改成下一个首部字段。
- IPv6取消了总长度字段,改用有效载荷长度字段。
- IPv6取消了服务类型字段。
- 增大了安全性。身份验证和保密功能是IPv6的关键特征。
IPv6地址表现形式
一般形式冒号十六进制记法:4BF5:AA12:0216:FEBC:BA5F:039A:BE9A:2170
压缩形式:4BF5:0000:0000:0000:BA5F:039A:000A:2176 -> 4BF5:0:0:0:BA5F:39A:A:2176。
零压缩:一连串连续的0可以被一对冒号取代。
FF05:0:0:0:0:0:0:B3 -> FF05:B3
双冒号表示法在一个地址中仅可出现一次。
IPv6基本地址类型
- 单播:单播就是传统的点对点通信。可做源地址和目的地址
- 多播:多播是一点对多点的通信,分组被交付到一组计算机的每台计算机。可做目的地址
- 任播:IPv6增加的一种类型。任播的目的站是一组计算机,但数据报在交付时只交付其中的一台计算机,通常是距离最近的一台计算机。可做目的地址
IPv6向IPv4过渡的策略
双栈协议:在一台设备上同时装有IPv4和IPv6协议栈,那么这台设备既能和IPv4网络通信,又能和IPv6网络通信。如果这台设备是一个路由器,那么在路由器的不同接口上分别配置了IPv4地址和IPv6地址,并很可能分别连接了IPv4网络和IPv6网络;如果这台设备是一台计算机,那么它将同时拥有IPv4地址和IPv6地址,并且具备同时处理这两个协议地址的功能。
隧道技术:将整个IPv6数据报封装到IPv4数据报的数据部分,使得IPv6数据报可以在IPv4网络的隧道中传输。重新封装
11、路由算法&路由协议
路由算法分类
路由算法
- 静态路由算法(非自适应路由算法):管理员手动配置路由信息
- 简便、可靠,在负荷稳定、拓扑变化不大的网络中运行效果很好,广泛用于高度安全性的军事网络和较小的商业网络。
- 路由更新慢,不适用大型网络。
- 动态路由算法(自适应路由算法):路由器间彼此交换信息,按照路由算法优化出路由表项。
- 路由更新快,适用大型网络,及时响应链路费用或网络拓扑变化。算法复杂,增加网络负担。
- 全局性:链路状态路由算法 OSPF:所有路由器掌握完整的网络拓扑和链路费用信息。
- 分散性:距离向量路由算法 RIP:路由器只掌握物理相连的邻居及链路费用。
分层次的路由选择协议
- 因特网规模很大
- 许多单位不想让外界知道自己的路由选择协议,但还想连入因特网
自治系统(Autonomous System,AS):单一技术管理下的一组路由器,这些路由器使用一种AS内部的路由选择协议和共同的度量来确定分组在该AS内的路由,同时还使用一种AS之间的路由选择协议来确定分组在AS之间的选择。
一个自治系统内的所有网络都由一个行政单位(如一家公司、一所大学、一个政府部门等)管辖,一个自治系统的所有路由器在本自治系统内都必须是连通的。
因特网把路由选择协议划分为两大类:
- 内部网关协议IGP:一个AS内使用的RIP、OSPF
- 外部网关协议EGP:AS之间使用的BGP
路由信息协议RIP
脑图
路由信息协议(Routing Information Protocol,RIP)是内部网关协议(IGP)中最先得到广泛应用的协议。
RIP是一种分布式的基于距离向量的路由选择协议,其最大的优点就是简单。
- 最短距离
- 下一跳路由地址
RIP协议是应用层协议,使用UDP传送数据!(端口520)。RIP选择的路径不一定是时间最短的,但一定是具有最少路由器的路径。因为它是根据最少跳数进行路径选择的。
RIP规定
- 网络中的每个路由器都要维护从它自身到其他每个目的网络的唯一最佳距离记录(因此这是一组距离,称为距离向量)。
- 距离也称为跳数(Hop Count),规定从一个路由器到直接连接网络的距离(跳数)为1。而每经过一个路由器,距离(跳数)加1。
- RIP认为好的路由就是它通过的路由器的数目少,即优先选择跳数少的路径。
- RIP允许一条路径最多只能包含15个路由器(即最多允许15跳)。因此距离等于16时,它表示网络不可达。可见RIP只适用于小型互联网。距离向量路由可能会出现环路的情况。规定路径上的最高跳数的目的是为了防止数据报不断循环在环路上,减少网络拥塞的可能性。
- RIP默认在任意两个使用RIP的路由器之间每30秒广播一次RIP路由更新信息,以便自动建立并维护路由表(动态维护)。
- 在RIP中不支持子网掩码的RIP广播。所以RIP中每个网络的子网掩码必须相同。但在新的RIP2中,支持变长子网掩码和CIDR。
RIP协议和谁交换?
仅和相邻路由器交换信息。
多久交换一次?
每30秒交换一次路由信息,然后路由器根据新信息更新路由表。若超过180s没收到邻居路由器的通告,则判定邻居没了,并更新自己路由表。
交换什么?
路由器交换的信息是自己的路由表。
距离向量算法
每个路由表项目都有三个关键数据:<目的网络N,距离d,下一跳路由器地址X>。对于每个相邻路由器发送过来的RIP报文,执行如下步骤:
- 对地址为X的相邻路由器发来的RIP报文,先修改此报文中的所有项目:把“下一跳”字段中的地址都改为X,并把所有“距离”字段的值都加1。
- 对修改后的RIP报文中的每个项目,执行如下步骤:
- 当原来的路由表中没有目的网络N时,把该项目添加到路由表中。
- 当原来的路由表中有目的网络N,且下一跳路由器的地址是X时,用收到的项目替换原路由表中的项目。(以最新为准)
- 当原来的路由表中有目的网络N,且下一跳路由器的地址不是X时,如果收到的项目中的距离d小于路由表中的距离,那么就用收到的项目替换原路由表中的项目;否则什么也不做。
- 如果180秒(RIP默认超时时间为180秒)还没有收到相邻路由器的更新路由表,那么把此相邻路由器记为不可达路由器,即把距离设置为16(距离为16表示不可达)。
- 返回。
例子
RIP协议报文字段
RIP优点:实现简单、开销小、收敛过程较快。
RIP缺点:好消息传得快,坏消息传的慢
- 限制了网络的规模,能使用的最大距离为15。
- 路由器之间交换的是路由器中的完整路由表,因此网络规模越大,开销也越大。
- 网络出现故障时,会出现慢收敛现象(即需要较长的时间才能将此信息传送到所有路由器),俗称“坏消息传得慢”,使更新过程的收敛时间长。
开放最短路径优先 OSPF 协议
- "开放"表明OSPF协议不是受某一厂商控制,而是公开发表的。
- "最短路径优先"是因为使用了Dijkstra提出的最短路径算法SPF。
OSPF最主要的特征就是使用分布式的链路状态协议。
和谁交换?
使用洪泛法向自治系统内所有路由器发送信息,即路由器通过输出端口向所有相邻的路由器发送信息,而每一个相邻路由器又再次将此信息发往其所有的相邻路由器。(广播)
最终整个区域内所有路由器都得到了这个信息的一个副本。
----- 而RIP仅向自己相邻的几个路由器发送信息。
交换什么?
发送的信息就是与本路由器相邻的所有路由器的链路状态(本路由器和哪些路由器相邻,以及该链路的度量/代价 —— 费用、距离、时延、带宽等)。
----- 而RIP发送的信息是本路由器所知道的全部信息,即整个路由表。
多久交换?
只有当链路状态发生变化时,路由器才向所有路由器洪泛发送此信息。收敛过程快,不会出现“坏消息传得慢”的问题。
最终,所有路由器都能建立一个链路状态数据库,即全网拓扑图。
----- 而RIP中,路由器之间会定期交换路由表的信息。
- OSPF是网络层协议,不使用UDP或TCP,而直接用IP数据报传送(其IP数据报首部的协议字段为89)。
- 而RIP是应用层协议,使用UDP。
- OSPF支持可变长度的子网划分和CIDR。
链路状态算法
- 每个路由器发现它的邻居结点【HELLO问候分组】,并了解邻居节点的网络地址。
- 设置到它的每个邻居的成本度量metric。
- 构造【DD数据库描述分组】,向邻站给出自己的链路状态数据库中的所有链路状态项目的摘要信息。
- 如果DD分组中的摘要自己都有,则邻站不做处理;如果有没有的或者是更新的,则发送【LSR链路状态请求分组】请求自己没有的和比自己更新的信息。
- 收到邻站的LSR分组后,发送【LSu链路状态更新分组】进行更新。6.更新完毕后,邻站返回一个【LSAck链路状态确认分组】进行确认。只要一个路由器的链路状态发生变化:
- 泛洪发送【LSu链路状态更新分组】进行更新。
- 更新完毕后,其他站返回一个【LSAck链路状态确认分组】进行确认。
- .使用Dijkstra根据自己的链路状态数据库构造到其他节点间的最短路径。
为了确保链路状态数据库与全网状态保持一致,OSPF规定每隔一段时间(30分钟)就刷新一次数据库中的链路状态。由于一个路由器的链路状态只涉及与相邻路由器的连通状态,因而与整个互联网的规模并无直接关系。当互联网规模很大时,OSPF要比RIP好得多。
OSPF的区域
为使OSPF能够用于规模很大的网络,OSPF将一个自治系统再划分为若干更小的范围,称为区域。
每个区域都有一个32位的区域标识符。
划分区域的好处是,将利用洪泛法交换链路状态信息的范围局限于每个区域而非整个自治系统,减少了整个网络上的通信量。在一个区域内部的路由器只知道本区域的完整网络拓扑,而不知道其他区域的网络拓扑情况。
处在上层的域称为主干区域,负责连通其他下层的区域,并且还连接其他自治域。
OSPF分组
OSPF特点
- 每隔30min,要刷新一次数据库中的链路状态。
- 由于一个路由器的链路状态只涉及到与相邻路由器的连通状态,因而与整个互联网的规模并无直接关系。因此当互联网规模很大时,OSPF协议要比距离向量协议RIP好得多。
- OSPF不存在坏消息传的慢的问题,它的收敛速度很快。
边界网关协议 BGP
边界网关协议(Border Gateway Protocol,BGP)是不同自治系统的路由器之间交换路由信息的协议,是一种外部网关协议。
路由表包含已知路由器的列表、路由器能够达到的地址及到达每个路由器的路径的跳数。
BGP只能力求寻找一条能够到达目的网络且比较好的路由,而并非寻找一条最佳路由。
BGP采用的是路径向量路由选择协议。
BGP是应用层协议,它是基于TCP的。
和谁交换?
与其他AS的邻站BGP发言人交换信息。
交换什么?
交换的网络可达性的信息,即要到达某个网络所要经过的一系列AS。
多久交换?
发生变化时更新有变化的部分。
BGP协议报文格式
一个BGP发言人与其他自治系统中的BGP发言人要交换路由信息,就要先建立TCP连接,即通过TCP传送,然后在此连接上交换BGP报文以建立BGP会话(session),利用BGP会话交换路由信息。
BGP工作原理
每个自治系统的管理员要选择至少一个路由器(可以有多个)作为该自治系统的“BGP发言人”。一个BGP发言人与其他自治系统中的BGP发言人要交换路由信息,就要先建立TCP连接(BGP报文是TCP报文的数据部分),然后在此连接上交换BGP报文以建立 BGP会话,再利用BGP会话交换路由信息。当所有 BGP发言人都相互交换网络可达性的信息后,各 BGP发言人就可找出到达各个自治系统的较好路由。
每个 BGP发言人除必须运行BGP外,还必须运行该AS所用的内部网关协议,如 OSPF 或RIP。BGP所交换的网络可达性信息就是要到达某个网络(用网络前缀表示)所要经过的一系列AS。
BGP特点
- BGP交换路由信息的结点数量级是自治系统的数量级,要比这些自治系统中的网络数少很多。
- 每个自治系统中 BGP发言人(或边界路由器)的数目是很少的。这样就使得自治系统之间的路由选择不致过分复杂。
- BGP支持 CIDR,因此BGP的路由表也就应当包括目的网络前缀、下一跳路由器,以及到达该目的网络所要经过的各个自治系统序列。
- 在BGP 刚运行时,BGP的邻站交换整个BGP 路由表,但以后只需在发生变化时更新有变化的部分。这样做对节省网络带宽和减少路由器的处理开销都有好处。
BGP-4共使用4种报文
- 打开(Open)报文:用来与相邻的另一个BGP发言人建立关系,并认证发送方
- 更新(Update)报文:用来发送某一路由的信息,以及列出要撤销的多条路由。
- 保活(Keepalive)报文:用来确认打开报文并周期性地证实邻站连通性,也作为OPEN的确认
- 通知(Notification)报文:用来发送检测到的差错,也被用于关闭连接
三种协议比较
- RIP是一种分布式的基于距离向量的内部网关路由选择协议,通过广播UDP报文来交换路由信息。t
- OSPF是一个内部网关协议,要交换的信息量较大,应使报文的长度尽量短,所以不使用传输层协议〈如UDP或TCP),而是直接采用IP。
- BGP是一个外部网关协议,在不同的自治系统之间交换路由信息,由于网络环境复杂,需要保证可靠传输,所以采用TCP。
12、IP组播
脑图
IP数据报三种传输方式
单播:单播用于发送数据包到单个目的地,且每发送一份单播报文都使用一个单播IP地址作为目的地址。是一种 点对点传输方式。
广播:广播是指发送数据包到同一广播域或子网内的所有备份的一种数据传输方式,是一种点对多点传输方式。
组播(多播):当网络中的某些用户需要特定数据时,组播数据发送者仅发送一次数据,借助组播路由协议为组播数据包建立组播分发树,被传递的数据到达距离用户端尽可能近的节点后才开始复制和分发,是一种点对多点传输方式。
使用组播的缘由:
有的应用程序要把一个分组发送给多个目的地主机。不是让源主机给每个目的地主机都发送一个单独的分组,而是让源主机把单个分组发送给一个组播地址,该组播地址标识一组地址。网络把这个分组的副本投递给该组中的每台主机。
主机可以选择加入或离开一个组,因此一台主机可以同时属于多个组。
主机组播时仅发送一份数据,只有数据在传送路径出现分岔时才将分组复制后继续转发。因此,对于发送方而言,数据只需发送一次就可发送到所有接收者,大大减轻了网络的负载和发送者的负担。
组播需要路由器的支持才能实现,能够运行组播协议的路由器称为组播路由器。
IP组播地址
IP组播地址让源设备能够将分组发送给一组设备。属于多播组的设备将被分配一个组播组IP地址。
IP组播使用D类地址格式。D类的前四位是1110,因此D类地址范围是 224.0.0.0 ~ 239.255.255.255。一个D类地址表示一个组播组。只能用作分组的目标地址。源地址总是为单播地址。
- 组播数据报也是“尽最大努力交付”,不提供可靠交付,组播一定仅应用于UDP。
- 组播地址只能用于目的地址,而不能用于源地址。
- 对组播数据报不产生ICMP差错报文。
- 并非所有的D类地址都可作为组播地址。
IP组播分为:
- 在局域网上进行硬件组播
- 在因特网范围内组播。
硬件组播
组播MAC地址以十六进制值 01-00-5E 打头,余下的6个十六进制位是根据IP组播组地址的最后23位转换得到的。
TCP/IP 协议使用的以太网多播地址的范围是:
从 01-00-5E-00-00-00 到 01-00-5E-7F-FF-FF。
由于组播IP地址与以太网硬件地址的映射关系不是唯一的,因此收到组播数据报的主机,还要在IP层利用软件进行过滤,把不是本主机要接收的数据包丢弃。
下图就是D类IP地址和48位以太网MAC地址的映射关系,映射只是存在于两类地址的后23位,因此D类地址不固定的中间五位就会有多种对应的组播组,也就是多个组播组可能会对应映射到同一个MAC地址!
因特网组管理协议IGMP
因特网组管理协议(Internet Group Management Protocol,IGMP)。
IGMP协议让路由器知道本局域网上是否有主机(的进程)参加或退出了某个组播组。
IGMP和ICMP都使用IP数据报传递报文。
IGMP工作的两个阶段:
ROUND 1:
- 某主机要加入组播组时,该主机向组播组的组播地址发送一个IGMP报文,声明自己要称为该组的成员。
- 本地组播路由器收到lGMP报文后,要利用组播路由选择协议把这组成员关系发给因特网上的其他组播路由器。
ROUND 2:
- 本地组播路由器周期性探询本地局域网上的主机,以便知道这些主机是否还是组播组的成员。
- 只要有一个主机对某个组响应,那么组播路由器就认为这个组是活跃的;如果经过几次探询后没有一个主机响应,组播路由器就认为本网络上的没有此组播组的主机,因此就不再把这组的成员关系发给其他的组播路由器。
组播路由选择协议
组播路由选择目的就是要找出以源主机为根节点的组播转发树。
其中每个分组在每条链路上只传送一次。不同的多播组对应于不同的多播转发树:同一个多播组,对不同的源点也会有不同的多播转发树。
常用的三种算法:
- 基于链路状态的路由选择
- 基于距离-向量的路由选择
- 协议无关的组播(稀疏/密集)【可以建立在任何路由器协议之上】
13、移动IP
相关术语
移动IP技术是移动结点(计算机/服务器等)以固定的网络IP地址,实现跨越不同网段的漫游功能,并保证了基于网络IP的网络权限在漫游过程中不发生任何改变。
移动结点:具有永久IP地址的移动设备。
归属代理(本地代理):一个移动结点拥有的就“居所”称为归属网络,在归属网络中代表移动节点执行移动管理功能的实体叫做归属代理。
外部代理(外地代理):在外部网络中帮助移动节点完成移动管理功能的实体称为外部代理。
永久地址(归属地址/主地址):移动站点在归属网络中的原始地址。
转交地址(辅地址):移动站点在外部网络使用的临时地址。
移动IP通信过程
14、网络层设备
路由器
路由器是一种具有多个输入端口和多个输出端口的专用计算机,其任务是连接异构网络并完成路由转发。
路由选择:根据所选定的路由选择协议构造出路由表,同时经常或定期和相邻路由器交换路由信息而不断地更新和维护路由表。
分组转发:由三部分组成,交换结构、一组输入端口、一组输出端口。
输入端口在从物理层收到地比特流中提取出数据链路层帧,进而从帧中提取出网络层数据报。
输出端口则执行恰好相反地操作。
交换结构:路由器的关键部件,根据转发表(路由表得来)对分组进行转发。
- 若收到RIP/OSPF分组等,则把分组送往路由选择处理机。若收到数据分组,则查找转发表并输出。
- 输入端口中的查找和转发功能在路由器的交换功能中是最重要的。
- 若路由器处理分组的速率赶不上分组进入队列的速率,则队列的存储空间最终必定减少到零,这就使后面再进入队列的分组由于没有存储空间而只能被丢弃。
- 路由器中的输入或输出队列产生溢出是造成分组丢失的重要原因。
当源主机要向目标主机发送数据报时,路由器先检查源主机与目标主机是否连接在同一个网络上。
- 如果源主机和目标主机在同一个网络上,那么直接交付而无须通过路由器。
- 如果源主机和目标主机不在同一个网络上,那么路由器按照转发表(路由表)指出地路由将数据报转发给下一个路由器,这称为间接交付。
路由表隔离了广播域。
三层设备的区别
- 路由器可以互联两个不同网络层协议的网段。
- 网桥可以互联两个物理层和链路层不同的网段。
- 集线器不能互联两个物理层不同的网段。
路由表与路由转发
路由表根据路由选择算法得出的,主要用途是路由选择。总是用软件来实现!
路由表有4个项目:目的网络IP地址、子网掩码、下一跳IP地址、接口。
转发表从路由表得出的。可以用软件来实现,甚至也可以用特殊的硬件来实现!
转发表有2个项目:一个分组将要发往的目的地址、分组的下一跳(即下一步接收者的目的地址,实际为MAC地址。
转发和路由选择的区别:
转发是路由器根据转发表把收到的IP数据报从合适的端口转发出去,它仅涉及一个路由器。
路由选择 则涉及很多路由器,路由表是许多路由器协同工作的结果。这些路由器按照复杂的路由算法,根据从各相邻路由器得到的关于网络拓扑的变化情况,动态地改变所选择的路由,并由此构造出整个路由表。
五、传输层
1、传输层概述
传输层是主机才有的层次。
传输层的功能
1、传输层提供进程和进程之间的逻辑通信。(网络层提供主机之间的通信)
逻辑通信:传输层之间的通信好像是沿着水平方向传送数据,但事实上这两个传输层之间并没有一条水平方向的物理连接。
2、复用和分用。复用是指发送方不同的应用进程都可以使用同一个传输层协议传送数据;分用是指接收方的传输层在剥去报文的首部后能够把这些数据正确交付到目的应用进程。
复用:应用层所有的应用进程都可以通过传输层再传输到网络层。
分用:传输层从网络层收到数据后交付指明的应用进程。
3、传输层对收到的报文进行差错检测(首部和数据部分)。【网络层只检查IP数据报的首部,不检验数据部分是否出错】。
4、提供两种不同的传输协议,即面向连接的TCP和无连接的UDP。【网络层无法同时实现两种协议】。
TCP & UDP
面向连接的传输控制协议TCP
传送数据之间必须建立连接,数据传送结束后要释放连接。不提供广播或多播服务。由于TCP要提供可靠的面向连接的传输服务,因此不可避免增加了许多开销:确认、流量控制、计时器及连接管理等。
可靠,面向连接,时延大,适用于大文件。
无连接的用户数据报协议UDP
传送数据之前不需要建立连接,收到UDP报文后也不需要给出任何确认。
不可靠,无连接,时延小,适用于小文件。
传输层的寻址与端口
端口:传输层的服务访问点(SAP),标识主机中的应用进程。
数据链路层的SAP是MAC地址,网络层的SAP是IP地址。
端口号只有本地意义,在因特网中不同计算机的相同端口是没有联系的。
端口号长度为16bit,能标识65536个不同的端口号。
常见的应用程序与对应的端口号
在网络中采用发送方和接收方的套接字组合来识别端点,套接字唯一标识了网络中的一个主机和它上面的一个进程。
套接字 Socket = (主机IP地址,端口号)
2、UDP协议
UDP只在IP数据报服务之上增加了很少功能,即复用分用和差错检测功能。
UDP的主要特点
- UDP是无连接的,减少开销和发送数据之前的时延。
- UDP使用最大努力交付,即不保证可靠交付。
- UDP是面向报文的,适合一次性传输少量数据的网络应用。
- UDP无拥塞控制,适合很多实时应用。
- UDP首部开销小,8B,TCP是20B。
面向报文:应用层给UDP多长的报文,UDP就照样发送,即一次发一个完整报文。
UDP首部格式
分用时,如果找不到对应的目的端口号,就丢弃报文,并给发送方发送ICMP“端口不可达”的差错报告报文。
UDP校验
在计算校验和时,要在UDP数据报之前增加12B的伪首部,伪首部并不是UDP的真正首部。只是在计算校验和时,临时添加在UDP数据报的前面,得到一个临时的UDP数据报。
17:封装UDP报文的IP数据报首部协议字段是17。
UDP长度:UDP首部8B + 数据部分长度(不包括伪首部)。
在发送端:
1、添上伪首部。
2、全0填充校验和字段。
3、全0填充数据部分。
4、伪首部 + 首部 + 数据部分 采用二进制反码求和。
5、把和求反码填入校验和字段。
6、去掉伪首部,发送。
在接收端:
1、添上伪首部。
2、伪首部 + 首部 + 数据部分 采用二进制反码求和。
3、结果全为1则无差错,否则丢弃数据报/交给应用层附上出错的警告。
3、TCP协议特点
1、TCP是面向连接(虚连接)的传输层协议。
2、每一条TCP连接只能有两个端点,每一条TCP连接只能是点对点的。
3、TCP提供可靠交付的服务,无差错、不丢失、不重复、按序到达。(可靠有序,不丢不重)
4、TCP提供全双工通信。允许通信双方的应用进程在任何时候都能发送数据,为此链段设有发送缓存和接收缓存。
- 发送缓存:准备发送的数据 & 已发送但尚未收到确认的数据。
- 接收缓存:按序到达但尚未被接受应用程序读取的数据 & 不按序到达的数据。
5、TCP面向字节流:TCP把应用程序交下来的数据看成仅仅是一连串的无结构的字节流。
4、TCP报文段格式
序号:在一个TCP连接中传送的字节流中的每一个字节都按顺序编号,本字段表示本报文段所发送数据的第一个字节的序号。
确认号:期望收到对方下一个报文段的第一个数据字节的序号。若确认号为 N,则证明到序号 N - 1 为止的所有数据都已正确收到。
数据偏移(首部长度):TCP报文段的数据起始处距离TCP报文段的起始处有多远,以4B为单位。
窗口:指的是发送本报文段的一方的接收窗口,即现在允许对方发送的数据量。
检验和:检验首部 + 数据,检验时要加上12B伪首部,第四个字段为6。
紧急指针:URG = 1时才有意义,指出本报文段中紧急数据的字节数。
选项:最大报文段长度MSS、窗口扩大、时间戳、选择确认 ……
六个控制位:
- 紧急位 URG:URG = 1时,标明此报文段中有紧急数据,是高优先级的数据,应尽快传送,不用在缓存里排队,配合紧急指针字段使用。
- 确认位 ACK:ACK = 1时确认号有效,在连接建立后所有传送的报文段都必须把ACK置为1。(发送端)
- 推送位 PSH:PSH = 1时,接收方尽快交付接收应用进程,不再等到缓存填满再向上交付。(接收端)
- 复位 RST:RST = 1时,表明TCP连接中出现严重差错,必须释放连接,然后再重新建立传输连接。
- 同步位 SYN:SYN = 1时,表明是一个连接请求/连接接受报文。
- 终止位 FIN:FIN = 1时,表明此报文段发送方数据已发完,要求释放连接。
5、TCP连接管理
TCP连接传输三个阶段:
连接建立 — 数据传送 — 连接释放
TCP连接建立
1、客户端发送连接请求报文段,无应用层数据。
SYN = 1,seq = x(随机)
2、服务器端为该TCP连接分配缓存和变量,并向客户端返回确认报文段,允许连接,无应用层数据。
SYN = 1,ACK = 1,seq = y(随机),ack = x + 1(客户端发送的seq是x,因此我期望收到的下一个序号就是x+1)
3、客户端为该TCP连接分配缓存和变量,并向服务器返回确认的确认,可以携带数据。
SYN = 0,ACK = 1,seq = x + 1(客户端第一次发送即第一步时定义的序号是seq=x,因此下一次发送按序就是seq=x+1),ack = y + 1
- ack:其实就是确认号,表示下一次期望收到的序号
- seq:标识本次报文段的序号(一般随机)
- ACK:确认位,用于回复,确认对方的报文已经收到(由于第一步连接请求无需确认,因此ACK=0)
- SYN:同步位,只在连接请求和链接接收即前两步为1
ACK为1时候,ack要出现!
SYN洪泛攻击
SYN洪泛攻击发生在OSl第四层,这种方式利用TCP协议的特性,就是三次握手。攻击者发送TCP SYN,SYN是TCP三次握手中的第一个数据包,而当服务器返回ACK后,该攻击者就不对其进行再确认,那这个TCP连接就处于挂起状态,也就是所谓的半连接状态,服务器收不到再确认的话,还会重复发送ACK给攻击者。这样更加会浪费服务器的资源。攻击者就对服务器发送非常大量的这种TCP连接,由于每一个都没法完成三次握手,所以在服务器上,这些TCP连接会因为挂起状态而消耗CPU和内存,最后服务器可能死机,就无法为正常用户提供服务了。
TCP连接释放
参与一条TCP连接的两个进程中的任何一个都能终止该连接,连接结束后,主机中的缓存和变量将被释放。
1、客户端发送连接释放报文段,停止发送数据,主动关闭TCP连接。(无需确认位ACK此时=0)
FIN = 1,seq = u(u其实等于客户端发送的最后一个报文段序号+1)
2、服务器端回送一个确认报文段,客户到服务器这个方向的连接就释放了 —— 半关闭状态。(表示服务器端仍可以发送)
ACK = 1,seq = v(v其实等于服务器发送的最后一个报文段序号+1),ack = u + 1(上一步的报文seq=u,因此期待的下一个报文段序号就是u+1)
3、服务器发完数据,就发出连接释放报文段,主动关闭TCP连接。
FIN = 1,ACK = 1,seq = w(w其实等于服务器发送的最后一个报文段序号+1),ack = u + 1(上一步的报文seq=u,因此期待的下一个报文段序号就是u+1)
4、客户端回送一个确认报文段,再等到时间等待计时器设置的 2MSL(最长报文段寿命)后,连接彻底关闭。
ACK = 1,seq = u + 1(u+1就是客户端第一次发送的序号seq=u的下一个序号),ack = w + 1(服务器上一步发送的seq=w,期待服务器的下一个报文序号是w+1)
- FIN:终止位,表示数据发送完毕,只有在服务器或客户端发送完数据后才会将该终止位置为1
6、TCP可靠传输
可靠:保证接收方进程从缓存区读出的字节流与发送方发出的字节流是完全一样的。
TCP 实现可靠传输的机制:1、校验 2、序号 3、 确认 4、重传。
- 校验:与UDP校验一样,增加伪首部,使用二进制反码求和
- 序号:一个字节占一个序号,序号字段指一个报文段的第一个字节序号
- 确认:默认使用累积确认
- 重传:确认重传不分家,TCP的发送方在规定的时间内没有收到确认就要重传已发送的报文段。超时重传
- TCP采用自适应算法,动态改变重传时间RTTs(加权平均往返时间)。
冗余ACK(冗余确认)
用来解决TCP超时重传超时时间内干等的情况!
每当比期望序号大的失序报文段到达时,发送一个冗余ACK,指明下一个期待字节的序号。
发送方已发送1,2,3,4,5报文段
- 接收方收到1,返回给1的确认(确认号为2的第一个字节)
- 接收方收到3,仍返回给1的确认(确认号为2的第一个字节)
- 接收方收到4,仍返回给1的确认(确认号为2的第一个字节)
- 接收方收到5,仍返回给1的确认(确认号为2的第一个字节)
- 发送方收到3个对于报文段1的冗余ACK→认为2报文段丢失,重传2号报文段(快速重传)
7、流量控制
流量控制:让发送方慢点,要让接收方来得及接收。
TCP利用滑动窗口机制实现流量控制。
在通信过程中,接收方根据自己 接收缓存 的大小,动态地调整发送方的发送窗口大小,即接收窗口 rwnd(接收方设置确认报文段的 窗口字段 来将 rwnd 通知给发送方),发送方的 发送窗口取接收窗口 rwnd 和拥塞窗口 cwnd 的最小值。
发送窗口大小可以动态变化。
例子
防止报文丢失
TCP为每一个连接设有一个持续计时器,只要TCP连接的一方收到对方的零窗口通知,就启动持续计时器。
若持续计时器设置的时间到期,就发送一个零窗口探测报文段。接收方收到探测报文段时给出的现在的窗口值,
若窗口仍然是0,那么发送方就重新设置持续计时器。
8、拥塞控制
拥塞控制:防止过多的数据注入到网络中。全局性。对资源的需求总和大于可用资源!
流量控制是点对点的。拥塞控制是全局性问题!
拥塞控制四种算法
- 慢开始
- 拥塞避免
- 快重传
- 快恢复
前两种放在一起使用,后两种放在一起使用!
假定:
- 数据单方向传送,而另一个方向只传送确认。
- 接收方总是有足够大的缓存空间,因而发送窗口取决于拥塞程度。
发送窗口 = Min{接收窗口 rwnd,拥塞窗口 cwnd}
接收窗口:接收方根据接受缓存设置的值,并告知给发送方,反映接收方容量。
拥塞窗口: 发送方根据自己估算的网络拥塞程度而设置的窗口值,反映网络当前容量。
慢开始和拥塞避免
ssthresh:慢开始门限
快重传和快恢复
六、应用层
1、网络应用模型
应用层对应用程序的通信提供服务。
应用层协议定义:
- 应用进程交换的报文类型(请求/响应)
- 各种报文类型的语法,如报文中的各个字段及其详细描述。
- 字段的语义,即包含在字段中的信息的含义。
- 进程何时、如何发送报文,以及对报文进行响应的规则。
应用层的功能:文件传输、访问和管理;电子邮件;虚拟终端;查询服务和远程作业登录
应用层的重要协议:FTP、SMTP、POP3、DNS
网络应用模型
客户/服务器模型(Client/Server)
服务器:提供计算服务的设备。
- 永久提供服务。
- 永久性访问地址/域名。
客户机:请求计算服务的主机。
- 与服务器通信,使用服务器提供的服务。
- 间歇性接入网络。
- 可能使用动态IP地址。
- 不与其他客户机直接通信。
应用:Web、文件传输FTP、远程登录、电子邮件。
P2P模型(Peer-to-peer)
不存在永远在线的服务器
每个主机既可以提供服务,也可以请求服务。
任意端系统/结点之间可以直接通讯。
结点间歇性接入网络。
结点可能改变IP地址。
可拓展性好,网络健壮性强。
2、DNS系统
DNS 域名系统
Domain Name System
DNS系统采用客户/服务器模型,其协议运行在UDP之上,使用 53 号端口。
域名
级别最低的域名写在最左边,级别最高的顶级域名写在最右边。
从左到右:顶级域名->二级域名->三级域名…
顶级域名(Top Level Domain,TLD)
1、国家顶级域名。国家和某些地区的域名,如“.cn”表示中国,“.us”表示美国。
2、通用顶级域名。常见的有“.com”(公司)、“.net”(网络服务机构)、“.org”(非营利性组织)和“.gov”(国家或政府部门)等。
3、基础结构域名。这种域名只有一个,即 arpa,用于反向域名解析,因此又称反向域名。
DNS服务器
根域名服务器
最高层次的域名服务器,所有的根域名服务器都知道所有的顶级域名服务器的IP地址。
不管是哪个本地域名服务器,若要对因特网上任何一个域名进行解析,只要自己无法解析,就首先要求助于根域名服务器。
因特网上有 13 个根域名服务器。
通常它并不直接把待查询的域名直接转换成IP地址,而是告诉本地域名服务器下一步应当找哪个顶级域名服务器。
顶级域名服务器
负责管理在该顶级域名服务器注册的所有二级域名。
权限域名服务器
每台主机都必须在权限域名服务器处等登记。
权限域名服务器总能将其管辖的主机名转换为该主机的IP地址。
本地域名服务器
当一个主机发出DNS查询请求时,这个查询请求报文就发给本地域名服务器。
域名解析过程(递归查询&迭代查询)
域名解析是指把域名映射成为 IP 地址或把 IP 地址映射成域名的过程。
前者称为正向解析,后者称为反向解析。
为了提高DNS的查询效率,在域名服务器中广泛使用了高速缓存。
3、文件传输协议FTP
文件传送协议(File Transfer Protocol):提供不同种类主机系统(硬、软件体系等都可以不同)之间的文件传输能力。
-
文件传送协议FTP(File Transfer Protocol)
-
简单文件传送协议TFTP (Trivial File Transfer Protocol)
FTP 是基于客户/服务器(C/S)的协议,使用TCP可靠的传输服务。
用户通过一个客户机程序连接至在远程计算机上运行的服务器程序。
依照FTP协议提供服务,进行文件传送的计算机就是 FTP服务器。
连接FTP服务器,遵循FTP协议与服务器传送文件的电脑就是FTP客户端。
FTP工作原理
FTP服务器进程由两大部分组成:一个主进程,负责接收新的请求;另外有若干从属进程,负责处理单个请求。
工作步骤如下:
1、打开熟知端口 21 (控制端口),使客户进程能够连接上。
2、等待客户进程发连接请求。
3、启动从属进程来处理客户进程发来的请求。主进程与从属进程并发执行,从属进程对客户进程的请求处理完毕后即终止。
4、回到等待状态,继续接收其他客户进程的请求。
- 控制连接在整个会话期间一直保持打开状态。
- 数据连接在文件传送完毕之后会关闭。
数据连接有两种传输模式:主动模式 PORT 和 被动模式 PASV。
主动方式使用 TCP 20端口,被动方式由服务器和客户端自行协商决定(端口 > 1024)。
FTP传输模式
- 文本模式:ASCI模式,以文本序列传输数据;
- 二进制模式:Binary模式,以二进制序列传输数据。
4、电子邮件
电子邮件系统的组成结构
1、用户代理(User Agent,UA)
用户与电子邮件系统的接口。
用户代理向用户提供一个很友好的接口来发送和接收邮件。
用户代理应当具有撰写、显示和邮件处理的功能。
通常情况下,用户代理是一个运行在PC上的程序,常见的有 Outlook、Foxmail。
2、邮件服务器
发送和接收文件,同时向发信人报告邮件传送的情况。
采用客户/服务器方式工作,必须能够同时充当客户和服务器。
3、邮件发送协议和读取协议
邮件发送协议用于用户代理向邮件服务器发送邮件或在邮件服务器之间发送邮件,如SMTP。
邮件读取协议用于用户代理从邮件服务器读取邮件,如POP3。
简单邮件传输协议SMTP
**简单邮件传送协议(Simple Mail Transfer Protocol,SMTP)**是一种提供可靠且有效的电子邮件传输的协议。
规定了在两个相互通信的SMTP进程之间应如何交换信息。
负责发送邮件的SMTP进程就是SMTP客户,负责接收邮件的进程就是SMTP服务器。
SMTP规定了14条命令(几个字母)和21种应答信息(三位数字代码+简单文字说明)
SMTP使用TCP连接,端口号为25。使用C/S方式!
SMTP通信有以下三个阶段:1、连接建立 2、邮件传送 3、连接释放
SMTP的缺点:
- SMTP不能传送可执行文件或者其他二进制对象。
- SMTP仅限于传送7位ASCII码,不能传送其他非英语国家的文字。
- SMTP服务器会拒绝超过一定长度的邮件。
多用途网际邮件扩充 MIME
由于SMTP只能传送一定长度的 ASCII 码,许多其他非英语国家的文字就无法传送,且无法传送可执行文件及其他二进制对象,因此提出了多用途网络邮件扩充 MIME。
改进SMTP协议!
MIME 继续使用SMTP的格式,但增加了邮件主体的结构,并定义了传送非 ASCII 码的编码规则。
使电子邮件系统可以支持声音、图像、视频多种国家语言。
主要包括以下三部分:
- 5个新的邮件首部字段,包括 MIME 版本、内容描述、内容表示、传送编码和内容类型。
- 定义了许多邮件内容的格式,对多媒体电子邮件的表示方法进行了标准化。
- 定义了传送编码,可对任何内容格式进行了转换,而不会被邮件系统改变。
邮局协议POP3
邮局协议(Post Office Protocol,POP)是一个非常简单但功能有限的邮件读取协议。
POP 使用客户/服务器的工作方式,在传输层使用TCP,端口号为110。
两种工作方式:1、下载并保留(在服务器)2、下载并删除。
因特网报文存取协议 IMAP
对POP3和SMTP协议改进!
IMAP协议比POP协议复杂。当用户pc上的IMAP客户程序打开IMAP服务器的邮箱时,用户可以看到邮箱的首部,若用户需要打开某个邮件,该邮件才上传到用户的计算机上。
IMAP可以让用户在不同的地方使用不同的计算机随时上网阅读处理邮件,还允许只读取邮件中的某一个部分(先看正文,有WiFi的时候再下载附件)。
基于万维网的电子邮件
发送方和接收方到邮件的协议使用HTTP协议!
5、万维网和HTTP协议
万维网概述
万维网(World Wide Web,WWW)是一个分布式的、联机式的信息存储空间,
在这个空间中:一样有用的事物称为一样 “资源”,并由一个全域“统一资源定位符”(URL)标识。
用户通过点击超链接(http://www.baidu.com)获取资源,这些资源通过“超文本传输协议(HTTP)传送给使用者。
万维网以“客户/服务器“方式工作,用户使用的浏览器就是万维网客户程序,万维网文档所驻留的主机运行服务器程序。
万维网使用超文本标记语言 HTML,使得万维网页面设计者可以很方便地从一个界面的链接转到另一个界面,并能够在自己的屏幕上显示出来。
超文本传输协议HTTP
HTTP协议定义了浏览器(万维网客户进程)怎样向万维网服务器请求万维网文档,以及服务器怎样把文档传送给浏览器。
HTTP协议的特点
- HTTP是无状态的。
- HTTP采用TCP作为传输层协议,但HTTP协议本身是无连接的(通信双方在交换HTTP报文之前不需要先建立HTTP连接)。
- HTTP的连接方式分为和 非持久连接close和持久连接keep-alive(流水线、非流水线)【HTTP/1.1支持】。
HTTP协议连接方式
对于非持久连接
每个网页元素对象的传输都需要单独建立一个TCP连接。
请求一个万维网文档所需的时间是该文档的传输时间加上两倍往返时间RTT(一个RTT用于TCP连接,另一个RTT用于HTTP请求)。
每个对象引用都导致 2xRTT的开销,此外每次建立新的TCP连接都要分配缓存和变量,使万维网服务器的负担很重。
对于持久连接
指万维网服务器在发送响应后仍然保持这条连接,使同一个客户和该服务器可以继续在这条连接上传送后续的HTTP请求和响应报文。
对于非流水线方式,客户在收到前一个响应后才能发出下一个请求,服务器发送完一个对象后,其TCP连接就处于空闲状态,浪费了服务器资源。
HTTP/1.1的默认方式是使用流水线的持久连接,这种情况下,客户每遇到一个对象引用就立即发出一个请求,因而客户可以逐个地连续发出对各个引用对象的请求。所有引用的对象共计经历1个RTT延迟,提高效率。
HTTP协议报文结构
HTTP是面向文本的,因此报文种的每个字段都是一些ASCII码串,并且每个字段的长度都是不确定的。
- 请求报文:从客户向服务器发送的请求报文。
- 响应报文:从服务器到客户的回答。