▶ \blacktriangleright ▶ 计算机网络基本概念
- 定义:
∙ \bullet ∙ 是一个将分散的、具有独立功能的计算机系统,通过通信设备与线路连接起来,由功能完善的软件实现资源共享和信息传递的系统。
∙ \bullet ∙ 计算机网络是互连的、自治的计算机集合。- 功能
∙ \bullet ∙ 数据通信、资源共享、分布式处理、提高可靠性、负载均衡
▶ \blacktriangleright ▶ 计算机网络组成
▶ \blacktriangleright ▶ 计算机网络分类
- 按分布范围
广域网(交换技术)、城域网、局域网(广播技术)、区域网- 按使用者
公用网、专用网- 按交换技术分
电路交换、报文交换、分组交换- 按拓扑结构分
总线、星型、环型、网状型- 按传输技术
广播式网络、点对点网络
- RFC(Request For Comments)一因特网标准的形式
∙ \bullet ∙ 因特网草案(Internet Draft):这个阶段还不是RFC文档。
∙ \bullet ∙ 建议标准(Proposed Standard):从这个阶段开始成为RFC文档。
∙ \bullet ∙ 因特网标准(Internet Standard)- 相关组织
∙ \bullet ∙ 国际标准化组织ISO:OSI参考模型、HDLC协议
∙ \bullet ∙ 国际电信联盟ITU:制定通信规则
∙ \bullet ∙ 国际电气电子工程师协会IEEE:学术机构、IEEE802系列标准、5G
∙ \bullet ∙ Internet.工程任务组IETF:负责因特网相关标准的制定
▶ \blacktriangleright ▶ 概念总结
- 网络体系结构是从功能上描述计算机网络结构。
- 计算机网络体系结构是计算机网络的各层及其协议的集合。
▶ \blacktriangleright ▶ 分层结构基本概念
- 实体:
定义:第n层中的活动元素称为n层实体。同一层的实体叫对等实体。- 协议:
定义:为进行网络中的对等实体数据交换而建立的规则、标准或约定称为网络协议。【水平】
∙ \bullet ∙ 语法:规定传输数据的格式
∙ \bullet ∙ 语义:规定所要完成的功能 01010001111000
∙ \bullet ∙ 同步:规定各种操作的顺序- 接口(访问服务点SAP)
定义:上层使用下层服务的入口。- 服务:
定义:下层为相邻上层提供的功能调用。【垂直】- SDU服务数据单元:为完成用户所要求的功能而应传送的数据。
- PCI协议控制信息:控制协议操作的信息。
- PDU协议数据单元:对等层次之间传送的数据单位。
∙ \bullet ∙ 网络层:网络对等层通信原则,接受站点的网络层收到的IP分组必须与发送站点发送的IP分组相同,所以接受站点的网络层必须把沿途被分片的分组进行重组,还原成原来的IP分组
∙ \bullet ∙ 传输层:网络层的IP分组不一定按序到达,由传输层进行排序
▶ \blacktriangleright ▶ 基本原则
- 分层的基本原则
∙ \bullet ∙ 各层之间相互独立,每层只实现一种相对独立的功能。
∙ \bullet ∙ 每层之间界面自然清晰,易于理解,相互交流尽可能少。
∙ \bullet ∙ 结构上可分割开。每层都采用最合适的技术来实现。
∙ \bullet ∙ 保持下层对上层的独立性,上层单向使用下层提供的服务。
▶ \blacktriangleright ▶ 通信过程
▶ \blacktriangleright ▶ 各层功能与协议
- 应用层
∙ \bullet ∙ 所有能和用户交互产生网络流量的程序
∙ \bullet ∙ 典型应用层服务:
文件传输(FTP)
电子邮件(SMTP
万维网(HTTP)N- 表示层
∙ \bullet ∙ 用于处理在两个通信系统中交换信息的表示方式(语法和语义)
∙ \bullet ∙ 功能一:数据格式变换翻
∙ \bullet ∙ 功能二:数据加密解密
∙ \bullet ∙ 功能三:数据压缩和恢复- 会话层
∙ \bullet ∙ 向表示层实体/用户进程提供建立连接并在连接上有序地传输数据。这是会话,也是建立同步(SYN)
∙ \bullet ∙ 功能一:建立、管理、终止会话
∙ \bullet ∙ 功能二:校验点/同步点:可使会话在通信失效时,从校验点/同步点继续恢复通信,实现数据同步。- 传输层
∙ \bullet ∙ 负责主机中两个进程的通信,即端到端的通信。传输单位是报文段或用户数据报。
∙ \bullet ∙ 功能一:可靠传输、不可靠传输
∙ \bullet ∙ 功能二:差错控制
∙ \bullet ∙ 功能三:流量控制
∙ \bullet ∙ 功能四:复用分用
复用:多个应用层进程可同时使用下面运输层的服务。
分用:运输层把收到的信息分别交付给上面应用层中相应的进程。- 网络层
∙ \bullet ∙ 主要任务是把分组从源端传到目的端,为分组交换网上的不同主机提供通信服务。网络层传输单位是数据报。
∙ \bullet ∙ 功能一:路由选择:最佳路径
∙ \bullet ∙ 功能二:流量控制
∙ \bullet ∙ 功能三:差错控制
∙ \bullet ∙ 功能四:拥塞控制- 数据链路层
数据链路层在不可靠的物理介质上提供可靠的传输。其作用包括物理寻址、成帧、流量控制、差错校验、数据重发等。
∙ \bullet ∙ 主要任务是把网络层传下来的数据报组装成帧。
数据链路层/链路层的传输单位是帧。
∙ \bullet ∙ 功能一:成帧(定义帧的开始和结束)…10000
∙ \bullet ∙ 功能二:差错控制帧错+位错
∙ \bullet ∙ 功能三:流量控制
∙ \bullet ∙ 功能四:访问(接入)控制:控制对共享信道的访问
- 物理层
∙ \bullet ∙ 主要任务是在物理媒体上实现比特流的透明传输。物理层传输单位是比特。
∙ \bullet ∙ 透明传输:
指不管所传数据是什么样的比特组合,都应当能够在链路上传送。
∙ \bullet ∙ 功能一:定义接口特性
∙ \bullet ∙ 功能二:定义传输模式单工、半双工、双工
∙ \bullet ∙ 功能三:定义传输速率
∙ \bullet ∙ 功能四:比特同步
∙ \bullet ∙ 功能五:比特编码
▶ \blacktriangleright ▶ TCP/IP参考模型
▶ \blacktriangleright ▶ 概念与特性
- 作用:
∙ \bullet ∙ 物理层解决如何在连接各种计算机的传输媒体上传输数据比特流,而不是指具体的传输媒体。
∙ \bullet ∙ 物理层主要任务:确定与传输媒体接口有关的一些特性。
(定义标准)- 特性
∙ \bullet ∙ 机械特性
定义物理连接的特性,规定物理连接时所采用的规格、接口形状、引线数目、引脚数量和排列情况。
∙ \bullet ∙ 电气特性
规定传输二进制位时,线路上信号的电压范围、阻抗匹配、传输速率和距离限制等。
∙ \bullet ∙ 功能特性
指明某条线上出现的某一电平表示何种意义,接口部件的信号线的用途。
∙ \bullet ∙ 规程特性
(过程特性)定义各条物理线路的工作规程和时序关系。
▶ \blacktriangleright ▶ 数据通信系统的模型
▶ \blacktriangleright ▶ 术语、通信方式、数据传输方式
- 术语
∙ \bullet ∙ 数据:传送信息的实体,通常是有意义的符号序列。
∙ \bullet ∙ 信号:数据的电气/电磁的表现,是数据在传输过程中的存在形式。
数字信号:代表消息的参数取值是离散的。
模拟信号:代表消息的参数取值是连续的。
∙ \bullet ∙ 信源:产生和发送数据的源头。
∙ \bullet ∙ 信宿:接收数据的终点。
∙ \bullet ∙ 信道:信号的传输媒介。一般用来表示向某一个方向传送信息的介质,因此一条通信线路往往包含一条发送信道和一条接收信道。- 三种通信方式
∙ \bullet ∙ 单工通信:
只有一个方向的通信而没有反方向的交互,仅需要一条信道。
∙ \bullet ∙ 半双工通信:
通信的双方都可以发送或接收信息,但任何一方都不能同时发送和接收,需要两条信道。
∙ \bullet ∙ 全双工通信:
通信双方可以同时发送和接受信息,也需要两条信道。- 两种数据传输方式
∙ \bullet ∙ 串行传输:
速度慢,费用低,适合远距离
∙ \bullet ∙ 并行传输:
速度快,费用高,适合近距离
▶ \blacktriangleright ▶ 码元
- 码元
∙ \bullet ∙ 定义:
是指用一个固定时长的信号波形(数字脉冲),代表不同离散数值的基本波形,是数字通信中数字信号的计量单位,这个时长内的信号称为k进制码元,而该时长称为码元宽度。当码元的离散状态有M个时(M大于2),此时码元为M进制码元。
- 1码元可以携带k比特的信息量,即:单位码元比特数k
- 单位码元含k比特,则码元的离散值个数为 2 k 2^k 2k
▶ \blacktriangleright ▶ 波特、速率、带宽
- 速率定义:
也叫数据率,是指数据的传输速率,表示单位时间内传输的数据量。可以用码元传输速率和信息传输速率表示。- 码元传输速率:
∙ \bullet ∙ 别名码元速率、波形速率、调制速率、符号速率等,它表示单位时间内数字通信系统所传输的码元个数(也可称为脉冲个数或信号变化的次数)。
∙ \bullet ∙单位是波特(Baud)。1波特表示数字通信系统每秒传输一个码元。这里的码元可以是多进制的,也可以是二进制的,但码元速率与进制数无关。
∙ \bullet ∙ 1s传输多少个码元- 信息传输速率:
∙ \bullet ∙ 别名信息速率、比特率等,表示单位时间内数字通信系统传输的二进制码元个数(即比特数),
∙ \bullet ∙ 单位是比特/秒(b/s)。
∙ \bullet ∙ 1s传输多少个比特- 关系:
若一个码元携带n bit的信息量,则M Baud的码元传输速率所对应的信息传输速率为 M ∗ n M*n M∗n bit/s。
▶ \blacktriangleright ▶ 带宽(多义词)
- 带宽Max net bitrate:(理想的速率)
表示在单位时间内从网络中的某一点到另一点所能通过的 最高数据率,即:指链路上每秒所能传送上信道的比特数
常用来表示网络的通信线路所能传输数据的能力。单位是b/s。- 吞吐量:throughput
∙ \bullet ∙ 和带宽是很容易搞混的一个词,两者的单位都是Mbps
∙ \bullet ∙ 需要区分链路上的可用带宽(带宽)与实际链路中每秒所能传送的比特数(吞吐量)。 ★ \bigstar ★
∙ \bullet ∙ 如:
因为实现受各种低效率因素的影响,所以由 一段带宽为10Mbps的链路连接的一对节点可能只达到2Mbps的吞吐量。这样就意味着,一个主机上的应用能够以2Mbps的速度向另外的一个主机发数据。- 信道利用率=最大吞吐量÷带宽
这个地方我也不知道为啥有两个计算公式
▶ \blacktriangleright ▶信道利用率
- 定义:
发送方在一个发送周期内,有效地发送数据L所需要的时间t (发送时延) 占 整个发送周期T的比率。- 发送周期T(总时间):
发送周期T=发送时延+传播时延+接收时延- 发送时延:
发送时延 t = 数据长度 L ( 帧长 ) / 信道带宽 C ( 发送速率 ) 发送时延t=数据长度L(帧长)/信道带宽C(发送速率) 发送时延t=数据长度L(帧长)/信道带宽C(发送速率)- 信道利用率 =传输帧的有效时间/传输帧的周期。 ★ \bigstar ★
信道利用率 = t / T = ( L / C ) / T 信道利用率=t/T=(L/C)/T 信道利用率=t/T=(L/C)/T
- 最大信道利用率:帧长最小时,传输的次数最多,对应的帧序号最大,最大帧序号能够满足不同帧长的需要
- 最大平均数据传输率(实际)=一个周期内传输的数据量 ÷ \div ÷发送周期T(总时间)
▶ \blacktriangleright ▶ 时延 ★ \bigstar ★
- 发送时延(主机内) ★ \bigstar ★
∙ \bullet ∙ 公式: 发送时延 = 数据长度 / 信道带宽 ( 发送速率 ) 发送时延=数据长度/信道带宽(发送速率) 发送时延=数据长度/信道带宽(发送速率)
∙ \bullet ∙ 高速链路:提高的是信道带宽,减小发送时延。- 传播时延 ★ \bigstar ★
∙ \bullet ∙ 取决于电磁波的传播速度和链路长度
∙ \bullet ∙ 公式: 传播时延 = 链路长度 / 电磁波在信道上的传播速率 传播时延=链路长度/电磁波在信道上的传播速率 传播时延=链路长度/电磁波在信道上的传播速率- 排队时延
等待输出/入、链路可用- 处理时延
检错、找出口- 时延带宽积(容量)
∙ \bullet ∙ 公式: 时延带宽积 = 传播时延 ∗ 带宽 时延带宽积=传播时延*带宽 时延带宽积=传播时延∗带宽
- 往返时延RTT
∙ \bullet ∙ 定义:从发送方发送数据开始,到发送方收到接收方的确认(接收方收到数据后立即发送确认),总共经历的时延。
∙ \bullet ∙ 包括
- 利用率
为什么要以码元作为传输单位呢?
▶ \blacktriangleright ▶ 失真
▶ \blacktriangleright ▶ 奈氏准则(奈奎斯特定理)
- 极限码元传输速:
在理想低通(无噪声,带宽受限)条件下,为了避免码间串扰
∙ \bullet ∙ 极限码元传输速率 = 2 W B a u d 极限码元传输速率= 2 W Baud 极限码元传输速率=2WBaud(W是信道带宽,单位是Hz)- 极限数据传输率
▶ \blacktriangleright ▶ 香农公式
- 信噪比
∙ \bullet ∙ 信噪比=信号的平均功率/噪声的平均功率,常记为S/N
∙ \bullet ∙ 并用分贝(dB)作为度量单位,即:
信噪比 ( d B ) = 10 l o g 10 ( S / N ) 信噪比(dB)=10log_{10}(S/N) 信噪比(dB)=10log10(S/N)数值等价- 极限数据传输率
▶ \blacktriangleright ▶ 例题
- 例.电话系统的典型参数是信道带宽为3000Hz,信噪比为30dB,则该系统最大数据传输速率是多少?
∙ \bullet ∙ 已知信噪比为30dB,则S/N=1000
∙ \bullet ∙ 极限数据传输速率 = 3000 ∗ l o g 2 ( 1 + 1000 ) ≈ 30 k b / s 极限数据传输速率=3000*log_2{(1+1000)}\approx30kb/s 极限数据传输速率=3000∗log2(1+1000)≈30kb/s- 例:二进制信号在信噪比为127:1的4kHz信道上传输,最大的数据速率可达到多少?
∙ \bullet ∙ Nice准则: 极限数据传输速率 = 2 ∗ 4000 ∗ l o g 2 2 = 8 k b / s 极限数据传输速率=2*4000*log_22=8kb/s 极限数据传输速率=2∗4000∗log22=8kb/s
∙ \bullet ∙ 香农定理: 极限数据传输速率 = 4000 ∗ l o g 2 ( 1 + 127 ) = 28 k b / s 极限数据传输速率=4000*log_2{(1+127)}=28kb/s 极限数据传输速率=4000∗log2(1+127)=28kb/s
▶ \blacktriangleright ▶ 数字数据编码为数字信号
- 归零编码【RZ】
- 非归零编码【NRZ】 ★ \bigstar ★ 不含同步
- 反向不归零编码【NRZI】保持为1
- 曼彻斯特编码 ★ \bigstar ★ 中间跳变
- 差分曼彻斯特编码 ★ \bigstar ★ 中间跳变,保持为1
- 4B/5B编码 ★ \bigstar ★
▶ \blacktriangleright ▶ 数字数据调制为模拟信号
▶ \blacktriangleright ▶ 例题:某通信链路的波特率是1200Baud,采用4个相位,每个相位有4种振幅的QAM调制技术,则该链路的信息传输速率是多少?
- 分析:
4个相位,4种振幅,16种波形,对应16种码元,需要4个比特位
信息传输速率(1s传输多少个比特)- 答:
信息传输速率=1200*4=4800b/s
▶ \blacktriangleright ▶ 传输介质
▶ \blacktriangleright ▶ 导向性传输介质
电磁波被导向沿着固体媒介(铜线/光纤)传播。
- 双绞线
∙ \bullet ∙ 是古老、又最常用的传输介质,它由两根采用一定规则并排绞合的、相互绝缘的铜导线组成。
∙ \bullet ∙ 绞合可以减少对相邻导线的电磁千扰。- 同轴电缆
∙ \bullet ∙ 由导体铜质芯线、绝缘层、网状编织屏蔽层和塑料外层构成。- 光纤通信
∙ \bullet ∙ 利用光导纤维(简称光纤)传递光脉冲来进行通信。有光脉冲表示1,无光脉冲表示。
∙ \bullet ∙ 而可见光的频率大约是108MHz,因此光纤通信系统的带宽远远大于目前其他各种传输媒体的带宽。
∙ \bullet ∙ 光纤在发送端有光源,可以采用发光二极管或半导体激光器,它们在电脉冲作用下能产生出光脉冲;
∙ \bullet ∙ 在接收端用光电二极管做成光检测器,在检测到光脉冲时可还原出电脉冲。
∙ \bullet ∙ 光纤主要由纤芯(实心的!)和包层构成,光波通过纤芯进行传导,包层较纤芯有较低的折射率。
▶ \blacktriangleright ▶ 导向性传输介质
- 无线电波:
∙ \bullet ∙ 较强穿透能力,可传远距离,广泛用于通信领域(如手机通信)。
∙ \bullet ∙ 信号向所有方向传播- 微波:
∙ \bullet ∙ 通信频率较高、频段范围宽,因此数据率很高。
∙ \bullet ∙ 信号固定方向传播
▶ \blacktriangleright ▶ 中继器
- 中继器的功能:
对信号进行再生和还原,对衰减的信号进行放大,保持与原数据相同,以增加信号传输的距离,延长网络的长度。- 中继器的两端:
∙ \bullet ∙ 两端的网络部分是网段,而不是子网,适用于完全相同的两类网络的互连,且两个网段速率要相同。
∙ \bullet ∙ 中继器只将任何电缆段上的数据发送到另一段电缆上,它仅作用于信号的电气部分,并不管数据中是否有错误数据或不适于网段的数据。
∙ \bullet ∙ 两端可连相同媒体,也可连不同媒体。
∙ \bullet ∙ 中继器两端的网段一定要是同一个协议。(中继器不会存储转发,傻)- 5-4-3规则:
∙ \bullet ∙ 网络标准中都对信号的延迟范围作了具体的规定,因而中继器只能在规定的范围内进行,否则会网络故障。
∙ \bullet ∙ 在采用粗同轴电缆的10BASE5以太网规范中,互相串联的中继器的个数不能超过4个,而且用4个中继器串联的5段通信介质中只有3段可以挂接计算机,其余两段只能用作扩展通信范围的链路段,不能挂接计算机。
▶ \blacktriangleright ▶ 集线器(多口中继器)
▶ \blacktriangleright ▶ 基本概念
- 基本名词概念
∙ \bullet ∙ 结点:主机、路由器
∙ \bullet ∙ 链路:
网络中两个结点之间的物理通道,链路的传输介质主要有双绞线、光纤和微波。分为有线链路、无线链路。
∙ \bullet ∙ 数据链路:
网络中两个结点之间的逻辑通道,把实现控制数据传输协议的硬件和软件加到链路上就构成数据链路。
即:把实现协议的硬件和软件加到链路上就构成了数据链路;
即:物理链路加上必要的通信协议。
∙ \bullet ∙ 帧:
链路层的协议数据单元,封装网络层数据报。- 数据链路层
∙ \bullet ∙ 定义:
负责通过一条物理链路直接相连,从一个结点向另一个相邻结点传送数据报。
∙ \bullet ∙ 主要作用:
加强物理层传输原始比特流的功能,将物理层提供的可能出错的物理连接改造成为逻辑上无差错的数据链路,使之对网络层表现为一条无差错的链路。- 数据链路层功能
∙ \bullet ∙ 为网络层提供服务
无确认无连接服务,有确认无连接服务,有确认面向连接服务(有连接就一定需要确认)
∙ \bullet ∙ 链路管理:
即连接的建立、维持、释放(用于面向连接的服务)。
∙ \bullet ∙ 组帧
∙ \bullet ∙ 流量控制:限制发送方
∙ \bullet ∙ 差错控制(帧错/位错)- 数据链路层结构
∙ \bullet ∙ 上层LLC(逻辑链路控制)
∙ \bullet ∙ 下层的MAC(介质访问控制)
MAC主要负责控制与连接物理层的物理介质。- 下层的MAC(介质访问控制)
∙ \bullet ∙ 在发送数据的时候
MAC协议可以事先判断是否可以发送数据,如果可以发送将给数据加上一些控制信息,最终将数据和控制信息以规定的格式发送到物理层;
∙ \bullet ∙ 在接收数据的时候
MAC协议首先判断输入的信息并是否发生传输错误,如果没有错误,则去掉控制信息发送至LLC(逻辑链路控制)层。
▶ \blacktriangleright ▶ 封装成帧、透明传输
- 封装成帧:
∙ \bullet ∙ 封装成帧就是在一段数据的前后部分添加首部和尾部,这样就构成了一个帧。接收端在收到物理层上交的比特流后,就能根据首部和尾部的标记,从收到的比特流中识别帧的开始和结束。
∙ \bullet ∙ 首部和尾部包含许多的控制信息,他们的一个重要作用:帧定界(确定帧的界限)。- 透明传输:
透明传输是指不管所传数据是什么样的比特组合,都应当能够在链路上传送。
▶ \blacktriangleright ▶ 组帧的四种方法
▶ \blacktriangleright ▶ 差错控制概念
- 数据的传输差错是由噪声引起的。
- 通信信道的噪声可以分为两类:热噪声和冲击噪声。
∙ \bullet ∙ 热噪声一般是信道固有的,引起的差错是随机差错,可以通过提高信噪比来降低它对数据传输的影响。
∙ \bullet ∙ 冲击噪声一般是由外界电磁干扰引起的,引起的差错是突发差错,它是引起传输差错的主要原因,无法通过提高信噪比来避免。通常利用编码技术来解决。
- 分类
∙ \bullet ∙ 位错
【比特位出错,1变成0,0变成1。】
∙ \bullet ∙ 帧错
丢失、重复、失序- 无差错接收:
数据链路层发送端发送什么,接收端就收到什么。无帧被丢弃。- 链路层为网络层提供服务:
∙ \bullet ∙ 通信质量好,有线传输链路:
无确认无连接服务,不采用确认重传机制,不要求链路层向网络层提供可靠传输服务。(无确认无连接服务)
发送差错时,由上层处理(传输层)。
∙ \bullet ∙ 通信质量差的无线传输链路
链路层协议采用确认重传机制,链路层需要向上提供可靠传输服务(有确认无连接服务,有确认面向连接服务(连接就必须确认))。- 控制方式(比特错)
∙ \bullet ∙ 检错编码:
奇偶校验码、循环冗余码CRC
∙ \bullet ∙ 纠错编码
海明码- 数据链路层:
∙ \bullet ∙ 在数据链路层仅仅使用循环冗余检验CRC差错检测技术。
∙ \bullet ∙ 只能做到对帧的无差错接收,不是可靠传输。
∙ \bullet ∙ 接收端丢弃的帧虽然曾收到了,但是最终还是因为有差错被丢弃。
∙ \bullet ∙ “凡是接收端数据链路层接收的帧均无差错”。
▶ \blacktriangleright ▶ 检错编码
▶ \blacktriangleright ▶ 循环冗余码概念
- 发送端:
∙ \bullet ∙ 原始数据 ÷ 生成多项式 = 商 . . . 余数 ( F C S 帧检验序列 / 冗余码 ) 原始数据\div生成多项式=商...余数(FCS帧检验序列/冗余码) 原始数据÷生成多项式=商...余数(FCS帧检验序列/冗余码)
∙ \bullet ∙ 发送数据=原始数据+余数(冗余码)- 接收端:
∙ \bullet ∙ 接收数据 ÷ 生成多项式 = 商 . . . 余 0 接收数据\div生成多项式=商...余0 接收数据÷生成多项式=商...余0
∙ \bullet ∙ 余数为0,判定无错,就接受。
例1:要发送的数据是1101011011,采用CRC校验,生成多项式是10011,那么最终发送的数据应该是?
- 计算冗余码:
∙ \bullet ∙ 先加0:求二进制数的阶r (最高位的阶)
假设生成多项式G(x)的阶为r,则加r个0。
如:10000 ⇒ 2 4 \rArr 2^4 ⇒24,阶为4
∙ \bullet ∙ 模2除法
除数与被除数作商时异或运算,余数为 冗余码/FCS/CRC检验码的比特序列。
- 发送数据
发送数据=原始数据+余数(冗余码)
最终发送的数据:1101011011 1110- 接收端检错过程
∙ \bullet ∙ 把收到的每一个帧都除以同样的除数,然后检查得到的余数R。
∙ \bullet ∙ 余数为0,判定这个帧没有差错,接受。
∙ \bullet ∙ 余数为不为0,判定这个帧有差错(无法确定到位),丢弃。
▶ \blacktriangleright ▶ 汉明码概念
- 概念
∙ \bullet ∙ 汉明码采用奇偶检验
∙ \bullet ∙ 汉明码采用分组校验
汉明码的分组是一种非划分方式
∙ \bullet ∙ 原理:
非划分方式分组,对每一组分别做校验,校验的值排在一起,用二进制数方式表示,得到出错位- 分组方式 ★ \bigstar ★
∙ \bullet ∙ 根据二进制代码中1的位置分组,重复的位置是每个小组共同校验的的数据位。
∙ \bullet ∙ 例:
第一组:1(校验位)、3、5、7、9
第二组:2(校验位)、3、6、7、10
第三组:4(校验位)、5、6、7、12
第四组:8(校验位)、9 、10、11、12
- 例:
∙ \bullet ∙ 分成3组
每个圆是一组,每组有1位校验位,共包括4位数据位
∙ \bullet ∙ 校验的值:P3、P2、P1
∙ \bullet ∙ 校验位为:1、2、4
∙ \bullet ∙ 二进制数方式表示,得到出错位
▶ \blacktriangleright ▶ 求汉明码
- 求需增添几位检测位
∙ \bullet ∙ 设欲检测代码为n位,需要增添k位检测位
∙ \bullet ∙ 公式: 2 k ≥ n + k + 1 2^k≥n+k+1 2k≥n+k+1- 确定检测位的位置
2 i ( i = 0 , 1 , 2 , 3 , … ) 2^i(i=0,1,2,3,…) 2i(i=0,1,2,3,…),即:二进制的阶(1、2、4、8、16、32…)
- 求检测位的取值
∙ \bullet ∙ 与该位所在的检测小组承担的奇偶校验任务有关
∙ \bullet ∙ 采用偶校验:
P ( 校验位 ) ⊕ B 数据位 = 0 P(校验位)\oplus B数据位=0 P(校验位)⊕B数据位=0
∙ \bullet ∙ 例如:
第一组负责校验:1(校验位)、3、5、7、9
C 1 ( 校验位 ) ⊕ B 3 ⊕ B 5 ⊕ B 7 ⊕ B 9 = 0 C_1(校验位)\oplus B_3\oplus B_5\oplus B_7\oplus B_9=0 C1(校验位)⊕B3⊕B5⊕B7⊕B9=0
C 1 ( 校验位 ) = B 3 ⊕ B 5 ⊕ B 7 ⊕ B 9 C_1(校验位)= B_3\oplus B_5\oplus B_7\oplus B_9 C1(校验位)=B3⊕B5⊕B7⊕B9- 汉明码纠错 ★ \bigstar ★
对每一组进行校验:异或运算
组1: P 1 = C 1 ( 校验位 ) ⊕ B 3 ⊕ B 5 ⊕ B 7 ⊕ B 9 P_1=C_1(校验位)\oplus B_3\oplus B_5\oplus B_7\oplus B_9 P1=C1(校验位)⊕B3⊕B5⊕B7⊕B9
…
组3: P 4 = C 4 ( 校验位 ) ⊕ B 5 ⊕ B 6 ⊕ B 7 ⊕ B 12 P_4=C_4(校验位)\oplus B_5\oplus B_6\oplus B_7\oplus B_{12} P4=C4(校验位)⊕B5⊕B6⊕B7⊕B12
…
∙ \bullet ∙ 无错
则检测小组 P i = 0 ( i = 1 , 2 , 4 , 8 , . . . ) P_i=0(i=1,2,4,8,...) Pi=0(i=1,2,4,8,...),即 P 4 P 2 P 1 = 000 P_4P_2P_1=000 P4P2P1=000
∙ \bullet ∙ 有错
则检测小组存在 P i ≠ 0 ( i = 1 , 2 , 4 , 8 , . . . ) P_i\ne0(i=1,2,4,8,...) Pi=0(i=1,2,4,8,...)
出错位即为 P i . . . P 4 P 2 P 1 P_i...P_4P_2P_1 Pi...P4P2P1对应二进制代码的十进制值。
例: P 4 P 2 P 1 = 110 P_4P_2P_1=110 P4P2P1=110,对应第六位出错,纠正该位即可。
▶ \blacktriangleright ▶ 已知原传输代码,求汉明码
例:求0101按“偶校验”配置的汉明码
▶ \blacktriangleright ▶ 已知汉明码,求原传输代码
例:已知接收到的汉明码为0100111,试问要求传送的信息是什么?(按配偶原则配置)
滑动窗口大小为n,最多可以有n-1个帧已发送但没有确认
滑动窗口=发送+接受
连续ARQ协议:即SR和GBN
▶ \blacktriangleright ▶ 流量控制概念
- 定义:
较高的发送速度和较低的接收能力的不匹配,会造成传输出错,因此流量控制也是数据链路层的一项重要工作。- 数据链路层的流量控制是点对点的
数据链路层流量控制手段:接收方收不下就不回复确认。- 传输层的流量控制是端到端的
传输层流量控制手段:接收端给发送端一个窗口公告。
▶ \blacktriangleright ▶ 流量控制的方法
▶ \blacktriangleright ▶ 停止-等待协议
▶ \blacktriangleright ▶ 停等协议–有差错 ★ \bigstar ★
- 数据帧丢失 或检测到 帧出错
∙ \bullet ∙ 超时计时器:
每次发送一个帧就启动一个计时器。
∙ \bullet ∙ 重传时间:
超时计时器设置的重传时间应当比帧传输的平均RTT更长一些。- ACK丢失
- ACK延迟
- 信道利用率
∙ \bullet ∙ 定义:
发送方在一个发送周期内,有效地发送数据L所需要的时间t占整个发送周期T的比率。
∙ \bullet ∙ 发送周期T:
发送周期T=发送时延+传播时延+接收时延
∙ \bullet ∙ 发送时延:
发送时延 t = 数据长度 L ( 帧长 ) / 信道带宽 C ( 发送速率 ) 发送时延t=数据长度L(帧长)/信道带宽C(发送速率) 发送时延t=数据长度L(帧长)/信道带宽C(发送速率)
∙ \bullet ∙ 信道利用率: ★ \bigstar ★
信道利用率 = t / T = ( L / C ) / T 信道利用率=t/T=(L/C)/T 信道利用率=t/T=(L/C)/T
- 注意:是否忽略确定帧的传输时延;数据帧长与确定帧长是否相等
▶ \blacktriangleright ▶ 例题1 ★ \bigstar ★ ★ \bigstar ★
▶ \blacktriangleright ▶ 使得链路利用率>80% ,就是信道利用率 ★ \bigstar ★ ★ \bigstar ★
信道利用率的分母可变,增加的传输的数据的总量,可使得信道利用率提高
- 链路利用率:
发送方在一个发送周期T内(通过帧长计算),有效地发送 数据L(发送周期T内发送的总数据) 所需要的时间t占整个发送周期T的比率。- 即:改变信道利用率中的分母,使得在发送一个数据到接受到他的确认前 (发送周期T)的过程中,持续发送帧(总数据量)
▶ \blacktriangleright ▶ 使得链路利用率>80%,求出总数据量 ⇒ \rArr ⇒ 帧序号数=总数据量/帧长
- L>7200B
- 即在一个周期T内需要发送7.2个帧(相当于发送窗口大小W)
- 1 ≤ W ≤ 2 n − 1 1≤W≤2^n-1 1≤W≤2n−1,n=4
开始忘记这个以为3位就能编码,但是如果使用3位编码,则发送窗口=滑动窗口,无法区别新帧和旧帧
▶ \blacktriangleright ▶ 选择重传协议(Selective Repeat)
- 定义:
∙ \bullet ∙ 发送窗口大小>1,接收窗口大小>1;
∙ \bullet ∙ 设置单个确认,同时加大接收窗口,设置接收缓存,缓存乱序到达的帧- 发送方
∙ \bullet ∙ 上层的调用:
从上层收到数据后,SR发送方检查下一个可用于该帧的序号,如果序号位于发送窗口内,则发送数据帧;
否则就像GBN一样,要么将数据缓存,要么返回给上层之后再传输。
∙ \bullet ∙ 收到了一个ACK
如果收到ACK,加入该帧序号在窗口内,则SR发送方将那个被确认的帧标记为已接收。如果该帧序号是窗口的下界(最左边第一个窗口对应的序号),则窗口向前移动到具有最小序号的未确认帧处。如果窗口移动了并且有序号在窗口内的未发送帧,则发送这些帧。
∙ \bullet ∙ 超时事件 ★ \bigstar ★ ★ \bigstar ★ ★ \bigstar ★
每个帧都有自己的定时器,一个超时事件发生后只重传一个帧。
- 接收方
∙ \bullet ∙ 来者不拒(窗口内的帧)
SR接收方将确认一个正确接收的帧而不管其是否按序。
失序的帧将被缓存,并返回给发送方一个该帧的确认帧【收谁确认谁】;
直到所有帧(即序号更小的帧)皆被收到为止,这时才可以将一批帧按序交付给上层,然后向前移动滑动窗口。
∙ \bullet ∙ 超时重传
ACK丢失或者延迟: 如果收到了窗口序号外(小于窗口下界)的帧,就返回一个ACK。
▶ \blacktriangleright ▶ 运行中的SR
▶ \blacktriangleright ▶ 后退N帧协议(GBN)
- 定义
∙ \bullet ∙ 发送窗口大小>1,接收窗口大小=1;
发送窗口:发送方维持一组连续的允许发送的帧的序号。
接收窗口:接收方维持一组连续的允许接收帧的序号。- 发送方
∙ \bullet ∙ 上层的调用
上层要发送数据时,发送方先检查发送窗口是否已满,如果未满,则产生一个帧并将其发送;如果窗口已满,发送方只需将数据返回给上层,暗示上层窗口已满。上层等一会再发送。(实际实现中,发送方可以缓存这些数据,窗口不满时再发送帧)。
∙ \bullet ∙ 收到了一个ACK
GBN协议中,对n号帧的确认采用累积确认的方式,标明接收方已经收到n号帧和它之前的全部帧。
∙ \bullet ∙ 超时事件
定时器用于恢复数据帧或确认帧的丢失。如果出现超时,发送方重传所有已发送但未被确认的帧。- 接收方
∙ \bullet ∙ 确认:
如果正确收到n号帧,并且按序,那么接收方为帧发送一个ACK,并将该帧中的数据部分交付给上层。
∙ \bullet ∙ 重传:
其余情况都丢弃帧,并为最近按序接收的最后一个帧重新发送ACK。接收方无需缓存任何失序帧,只需要维护一个信息expectedsegnum(下一个按序接收的帧序号)。- 运行中的GBN
- 滑动窗口长度
采用个n比特对帧编号,那么发送窗口的尺寸W应满足: 1 ≤ W ≤ 2 n − 1 1≤W≤2^n-1 1≤W≤2n−1。因为发送窗口尺寸过大,就会使得接收方无法区别新帧和旧帧。
- 最大信道利用率问题:
发送一个数据到接受到他的确认前,最多能发送多少个帧(数据) ⇒ \rArr ⇒ 求至少用几位比特编号最小帧序号- 最大平均数据传输速率问题:
发送一个数据到接受到他的确认前 (发送周期T),最多能发送多少个帧(总数据量)
最大平均数据传输速率=总数据量 ÷ \div ÷发送周期T
▶ \blacktriangleright ▶ 最大信道利用率问题:
求:最小帧序号的大小、至少用几位比特编号最小帧序号
▶ \blacktriangleright ▶ 概述
▶ \blacktriangleright ▶ PPP协议
- PPP协议的特点
∙ \bullet ∙ 点对点协议PPP(Point-to-Point Protocol)是目前使用最广泛的数据链路层协议,用户使用拨号电话接入
∙ \bullet ∙ PPP提供差错检测
不提供纠错功能,只保证无差错接收(通过硬件进行CRC校验),它是有连接的不可靠的传输协议,因此也不使用序号和确认机制。
∙ \bullet ∙ 它仅支持点对点的链路通信,不支持多点线路。
∙ \bullet ∙ PPP只支持全双工链路。
∙ \bullet ∙ PPP的两端可以运行不同的网络层协议,但仍然可使用同一个PPP进行通信。
∙ \bullet ∙ PPP是面向字节的(透明传输:0比特插入法、字节填充法)
当信息字段出现和标志字段一致的比特组合时,PPP有两种不同的处理方法:
若PPP用在异步线路(默认),则采用字符填充法;
若PPP用在SONET/SDH等同步线路,则协议规定采用硬件来完成比特填充(和HDLC的做法一样)。- PPP协议的三个组成部分
∙ \bullet ∙ 封装IP数据报:
一个将IP数据报封装到串行链路(同步串行/异步串行)的方法。
∙ \bullet ∙ 链路控制协议LCP:
建立并维护数据链路连接。实现身份验证,链路层与链路层得逻辑连接
∙ \bullet ∙ 网络控制协议NCP:
PPP可支持多种网络层协议,每个不同的网络层协议都要一个相应的NCP来配置,为网络层协议建立和配置逻辑连接。链路层与网络层逻辑连接
- PPP协议的帧格式
∙ \bullet ∙ 标志字段:
帧定界符
∙ \bullet ∙ 地址字段、控制字段
∙ \bullet ∙ 协议字段
标识信息部分是什么:IP数据报、LCP的数据、网络层控制数据
∙ \bullet ∙ 帧检验字段
▶ \blacktriangleright ▶ HDLC协议
- HDLC协议特点
∙ \bullet ∙ 高级数据链路控制(High-Level Data Link Control或简称HDLC),是一个在同步网上传输数据、面向比特的数据链路层协议
∙ \bullet ∙ 数据报文可透明传输,用于实现透明传输的“0比特插入法”易于硬件实现
∙ \bullet ∙ 采用全双工通信
∙ \bullet ∙ 所有帧采用CRC检验,对信息帧进行顺序编号,可防止漏收或重份,传输可靠性高。- 协议的帧格式
∙ \bullet ∙ 控制C字段:决定帧类型(无奸细)
信息帧(I)第1位为0:用来传输数据信息,或使用捎带技术对数据进行确认;
监督帧(S)10:用于流量控制和差错控制,执行对信息帧的确认、请求重发和请求暂停发送等功能
无编号帧(U)11:用于提供对链路的建立、拆除等多种控制功能。
▶ \blacktriangleright ▶ PPP协议和HDLC协议对比
▶ \blacktriangleright ▶ 传输数据使用的两种链路
- 点对点链路
两个相邻节点通过一个链路相连,没有第三者。
应用:PPP协议,常用于广域网。- 广播式链路
∙ \bullet ∙ 所有主机共享通信介质。
∙ \bullet ∙ 应用:
早期的总线以太网、无线局域网,常用于局域网。
∙ \bullet ∙ 典型拓扑结构:
总线型、星型(逻辑总线型)- 介质访问控制
∙ \bullet ∙ 介质访问控制的内容就是,采取一定的措施,使得两对节点之间的通信不会发生互相干扰的情况。- 静态划分信道
预先分配信道,按照时间、空间、时隙、频率分配- 动态划分信道
动态媒体接入控制/多点接入
特点:信道并非在用户通信时固定分配给用户。
▶ \blacktriangleright ▶ 比较
- 信道划分介质访问控制(MAC Multiple Access Control)协议:
∙ \bullet ∙ 基于多路复用技术划分资源。
∙ \bullet ∙ 网络负载重:共享信道效率高,且公平
∙ \bullet ∙ 网络负载轻:共享信道效率低- 随机访问MAC协议:(有冲突)
∙ \bullet ∙ 用户根据意愿随机发送信息,发送信息时可独占信道带宽。
∙ \bullet ∙ 网络负载重:产生冲突开销
∙ \bullet ∙ 网络负载轻:共享信道效率高,单个结点可利用信道全部带宽- 轮询访问MAC协议、轮流协议、轮转访问MAC协议:
既要不产生冲突,又要发送时占全部带宽。
▶ \blacktriangleright ▶ 信道划分介质访问控制概念
- 信道划分介质访问控制:
∙ \bullet ∙ 基于多路复用技术划分资源。
∙ \bullet ∙ 将使用介质的每个设备与来自同一信道上的其他设备的通信隔离开,把时域和频域资源合理地分配给网络上的设备。- 多路复用技术
∙ \bullet ∙ 原理:
基于多路复用技术划分资源(时间、频率、码片),把划分的资源分配给各个主机或站点。
∙ \bullet ∙ 即:
把多个信号组合在一条物理信道上进行传输,使得多个计算机或终端设备共享信道资源,提高信道利用率。
∙ \bullet ∙ 具体实现:
把一条广播信道,逻辑上分成几条用于两个书点之间通信的互不干扰的子信道,实际就是把广播信道转变为点对点信道。
▶ \blacktriangleright ▶ 信道划分介质访问控制分类
- 频分多路复用FDM
用户在分配到一定的频带后,在通信过程中自始至终都占用这个频带。频分复用的所有用户在同样的时间占用不同的带宽(频率带宽)资
源。
- 时分多路复用TDM
∙ \bullet ∙ 将时间划分为一段段等长的时分复用帧(TDM帧)。每一个时分复用的用户在每一个TDM帧中占用固定序号的时隙,所有用户轮流占用信道。
∙ \bullet ∙ TDM帧是在物理层传送的比特流所划分的帧,标志一个周期。
∙ \bullet ∙ 同步时分多路复用
是一种静态时分复用技术,它预先分配时间片(即时隙)
∙ \bullet ∙ 异步时分多路复(又称统计时分复用)
是一种动态时分复用技术,它动态地分配时间片(时隙)。- 波分多路复用
就是光的频分多路复用,在一根光纤中传输多种不同波长(频率)的光信号,由于波长(频率)不同,所以各路光信号互不干扰,最后再用波长分解复用器将各路波长分解出来。- 码分多路复用CDM
▶ \blacktriangleright ▶ 随机访问介质访问控制概念
▶ \blacktriangleright ▶ ALOHA协议
▶ \blacktriangleright ▶ CSMA协议 ★ \bigstar ★
- 载波监听多路访问协议CSMA(carrier sense multiple access)
∙ \bullet ∙ CS载波侦听/监听:
每一个站在发送数据之前要检测一下总线上是否有其他计算机在发送数据。
∙ \bullet ∙ MA多点接入:
表示许多计算机以多点接入的方式连接在一根总线上。
∙ \bullet ∙ 协议思想:
发送帧之前,监听信道。- 1-坚持CSMA
坚持指的是对于监听信道忙之后的坚持。
∙ \bullet ∙ 如果一个主机要发送消息,那么它先监听信道。
∙ \bullet ∙ 空闲则直接传输,不必等待。
∙ \bullet ∙ 忙则一直监听,直到空闲马上传输。
∙ \bullet ∙ 如果有冲突(一段时间内未收到肯定回复),则等待一个随机长的时间再监听,重复上述过程。
∙ \bullet ∙ 优点:
只要媒体空闲,站点就马上发送,避免了媒体利用率的损失。
∙ \bullet ∙ 缺点:
假如有两个或两个以上的站点有数据要发送,冲突就不可避免。- 非坚持CSMA
∙ \bullet ∙ 如果一个主机要发送消息,那么它先监听信道。
∙ \bullet ∙ 空闲则直接传输,不必等待。
∙ \bullet ∙ 忙则等待一个随机的时间之后再进行监听。
∙ \bullet ∙ 优点:
采用随机的重发延迟时间可以减少冲突发生的可能性。
∙ \bullet ∙ 缺点:
可能存在大家都在延迟等待过程中,使得媒体仍可能处于空闲状态,媒体使用率降低。- p-坚持CSMA
p-坚持指的是对于监听信道空闲的处理。
∙ \bullet ∙ 如果一个主机要发送消息,那么它先监听信道。
∙ \bullet ∙ 空闲则以p概率直接传输,不必等待;概率1-p等待到下一个时间槽再传输。
∙ \bullet ∙ 忙则等待一个随机的时间之后再进行监听。
∙ \bullet ∙ 优点:
既能像非坚持算法那样减少冲突,又能像1-坚持算法那样减少媒体空闲时间的这种方案。
∙ \bullet ∙ 缺点:
发生冲突后还是要坚持把数据帧发送完,造成了浪费。
- 冲突如何检测
当几个站同时在总线上发送数据时,总线上的信号电压摆动值将会增大(互相叠加)。当一个站检测到的信号电压摆动值超过一定门限值时,就认为总线上至少有两个站同时在发送数据,表明产生了碰撞,即发生了冲突。
▶ \blacktriangleright ▶ CSMA-CD协议
先监听再发送,边监听边发送。
- 载波监听多点接入/碰撞检测CSMA/CD(carrier sense multiple access with collision detection)
∙ \bullet ∙ CS载波侦听/监听:
每一个站在发送数据之前以及发送数据时都要检测一下总线上是否有其他计算机在发送数据
∙ \bullet ∙ MA多点接入:
表示许多计算机以多点接入的方式连接在一根总线上。总线型网络
∙ \bullet ∙ CD碰撞检测(冲突检测):
“边发送边监听”,适配器边发送数据边检测信道上信号电压的变化情况,以便判断自己在发送数据时其他站是否也在发送数据。半双工网络- 先听后发为什么还会冲突?
∙ \bullet ∙ 因为电磁波在总线上总是以有限的速率传播的。
∙ \bullet ∙ 传播时延对载波监听的影响 ★ \bigstar ★
- 最迟多久才能知道自己发送的数据没和别人碰撞?总线的端到端往返传播时延/争用期/冲突窗口/碰撞窗口
最多是两倍的总线端到端的传播时延 2 τ 2\tau 2τ:信号在最远两个端点之间往返传输的时间。
▶ \blacktriangleright ▶ 最小帧长问题 ★ \bigstar ★
- 问题:
A站发了一个很短的帧。但发生了碰撞,不过帧在发送完毕后才检测到发生碰撞,没法停止发送,因为发完了。- 解决方法:
∙ \bullet ∙ 帧的传输时延至少要两倍于信号在总线中的传播时延 ★ \bigstar ★ ★ \bigstar ★ ★ \bigstar ★
帧的传输时延 = 帧长 ( b i t ) / 数据传输速率 > 2 τ 帧的传输时延=帧长(bit)/数据传输速率>2\tau 帧的传输时延=帧长(bit)/数据传输速率>2τ
∙ \bullet ∙ 得: 帧长 ( b i t ) > 数据传输速率 ∗ 2 τ 帧长(bit)>数据传输速率*2\tau 帧长(bit)>数据传输速率∗2τ- 以太网规定最短帧长为64B,凡是长度小于64B的都是由于冲突而异常终止的无效帧。
最大帧碎片长度不得超过最小帧长
▶ \blacktriangleright ▶ 截断二进制指数规避算法—确定碰撞后的重传时机 ★ \bigstar ★
- 基本退避(推迟)时间:争用期2 τ \tau τ
- 重传次数k:
定义参数k,它等于重传次数,但k不超过10,即k=min[重传次数,10]。
当重传次数不超过10时,k等于重传次数;当重传次数大于10时,k就不再增大而直等于10。- 重传所需要退避的时间:
从离散的整数集合 [ 0 , 1 ,, 2 k − 1 ] [0,1,,2^k-1] [0,1,,2k−1]中随机取出一个数r,重传所需要退避的时间就是r倍的基本退避时间。
即: r ∗ 2 τ r*2\tau r∗2τ- 最大重传次数:
当重传达16次仍不能成功时,说明网络太拥挤,认为此帧永远无法正确发出,抛弃此帧并向高层报告出错
▶ \blacktriangleright ▶ CSMA-CA协议 理解就行
- 发送数据前,先检测信道是否空闲。
∙ \bullet ∙ 空闲:
则发出RTS(request to send),RTS包括发射端的地址、接收端的地址、下一份数据将持续发送的时间等信息;
∙ \bullet ∙ 信道忙则等待。- 接收端收到RTS后:
将响应CTS(clear to send)。- 发送端收到CTS后:
开始发送数据帧(同时预约信道:发送方告知其他站点自己要传多久数据)。- 接收端收到数据帧后:
将用CRC来检验数据是否正确,正确则响应ACK帧。
▶ \blacktriangleright ▶ CSMA/CD与CSMA/CA
- 相同点:
CSMA/CD与CSMA/CA机制都从属于CSMA的思路,其核心是先听再说。换言之,两个在接入信道之前都须要进行监听。当发现信道空闲后,才能进行接入。- 不同点:
∙ \bullet ∙ 传输介质不同:
CSMA/CD用于总线式以太网【有线】,而CSMA/CA用于无线局域网【无线】。
∙ \bullet ∙ 载波检测方式不同:
因传输介质不同,CSMA/CD与CSMA/CA的检测方式也不同。
∙ \bullet ∙ CSMA/CD检测冲突,CSMA/CA避免冲突(不需要在发送过程中进行冲突检测),二者出现冲突后都会进行有上限的重传。
▶ \blacktriangleright ▶ 轮询协议
- 定义
∙ \bullet ∙ 主结点轮流“邀请”从属结点发送数据。
▶ \blacktriangleright ▶ 令牌传递协议:多负载
▶ \blacktriangleright ▶ 概述
- 局域网(Local Area Network):
∙ \bullet ∙ 简称LAN,是指在某一区域内由多台计算机互联成的计算机组,使用广播信道- 决定局域网的主要要素为:
网络拓扑,传输介质与介质访问控制方法。- 网络拓扑
∙ \bullet ∙ 逻辑拓扑:逻辑上数据传输的顺序和规程,由通信思想决定
∙ \bullet ∙ 物理拓扑:实际线路和设备的连接
∙ \bullet ∙ 星型拓扑:
使用集线器的以太网在逻辑上仍是一个总线网,各站共享逻辑上的总线,使用的还是CSMA/CD协议。
- 传输介质
∙ \bullet ∙ 有线局域网常用介质:双绞线、同轴电缆、光纤
∙ \bullet ∙ 无线局域网- 介质访问控制方法:
∙ \bullet ∙ CSMA/CD:
常用于总线型局域网,也用于树型网络
∙ \bullet ∙ 令牌总线:
常用于总线型局域网,也用于树型网络它是把总线型或树型网络中的各个工作站按一定顺序如按接口地址大小排列形成一个逻辑环。只有令牌持有者才能控制总线,才有发送信息的权力。
∙ \bullet ∙ 令牌环:
用于环形局域网,如令牌环网- 局域网的分类
∙ \bullet ∙ 以太网
以太网是应用最为广泛的局域网,包括标准以太网(10Mbps)、快速以太网(100Mbps)、千兆以太网(1000Mbps)和10G以太网,它们都符合IEEE802.3系列标准规范。逻辑拓扑总线型,物理拓扑是星型或拓展星型。使用CSMA/CD.↑
∙ \bullet ∙ 令牌环网
物理上采用了星形拓扑结构,逻辑上是环形拓扑结构
∙ \bullet ∙ FDDl网(Fiber Distributed Data Interface)
∙ \bullet ∙ ATM网(Asynchronous Transfer Mode)
∙ \bullet ∙ 无线局域网(Wireless Local Area Network;WLAN)
采用IEEE802.11标准。
▶ \blacktriangleright ▶ MAC子层和LLC子层
- IEEE802标准:
∙ \bullet ∙ IEEE802标准所描述的局域网参考模型只对应OSI参考模型的数据链路层与物理层
∙ \bullet ∙ 将数据链路层划分为逻辑链路层LLC子层和介质访问控制MAC子层。
- LLC层:
∙ \bullet ∙ 负责识别网络层协议,然后对它们进行封装。
LLC报头告诉数据链路层一旦帧被接收到时,应当对数据包做何处理。
∙ \bullet ∙ 为网络层提供服务:
无确认无连接、面向连接、带确认无连接、高速传送。
∙ \bullet ∙ 主要功能:
逻辑连接、差错控制、给帧加序号- MAC子层:
∙ \bullet ∙ 主要功能:
数据帧的封装/卸装、帧的寻址和识别、帧的接收与发送、链路的管理、帧的差错检测等。
∙ \bullet ∙ MAC子层的存在屏蔽了不同物理链路种类的差异性。
▶ \blacktriangleright ▶ 以太网概念
- 以太网(Ethernet):
是由Xerox公司创建并由Xerox、Intel和DEC公司联合开发的基带总线局域网规范,是当今现有局域网采用的最通用的通信协议标准。以太网络使用CSMA/CD(载波监听多路访问及冲突检测)技术。- 以太网在局域网各种技术中占统治性地位:
∙ \bullet ∙ 造价低廉(以太网网卡不到100块);
∙ \bullet ∙ 是应用最广泛的局域网技术;
∙ \bullet ∙ 比令牌环网、ATM网便宜,简单;
∙ \bullet ∙ 满足网络速率要求:10Mb/s~10Gb/s.- 以太网两个标准
∙ \bullet ∙ DIX Ethernet V2:
第一个局域网产品(以太网)规约。
∙ \bullet ∙ IEEE802.3:
IEEE802委员会802.3工作组制定的第一个EEE的以太网标准。(帧格式有一丢丢改动)- 特点:
以太网提供无确认无连接、不可靠的服务
∙ \bullet ∙ 无连接:
发送方和接收方之间无“握手过程”。
∙ \bullet ∙ 不可靠:
不对发送方的数据帧编号,接收方不向发送方进行确认,差错帧直接丢弃,差错纠正由高层负责。
以太网只实现无差错接收,不实现可靠传输。- 以太网帧
∙ \bullet ∙ 前导码:实现位同步
∙ \bullet ∙ 目的地址:单播、广播(全1)、多播
∙ \bullet ∙ 类型:标识数据中协议的类型
▶ \blacktriangleright ▶ 10BASE-T以太网
- 概念
∙ \bullet ∙ 10BASE-T是传送基带信号的双绞线以太网,T表示采用双绞线,现10BASE-T采用的是无屏蔽双绞线(UTP),传输速率是10Mb/s。
∙ \bullet ∙ 物理上采用星型拓扑,逻辑上总线型,每段双绞线(5类UDP)最长为100m。
∙ \bullet ∙ 采用曼彻斯特编码。
- 既支持全双工方式,又支持半双工方式,可在全双工方式下工作而无冲突发生,因此在全双工方式下不使用CSMA/CD协议。
- 10吉比特以太网
10吉比特以太网与10Mb/s、100Mb/s和1Gb/s以太网的帧格式完全相同。
这种以太网不再使用铜线而只使用光纤作为传输媒体。只工作在全双工方式,因此没有争用问题,也不使用CSMA/CD协议。
▶ \blacktriangleright ▶ 网卡
- 定义
∙ \bullet ∙ 计算机与外界有线局域网的连接是通过通信适配器的。
又称:网络接口板、网络接口卡NIC(network interface card)(NOW,不再使用单独网卡)
∙ \bullet ∙ 适配器上装有处理器和存储器(包括RAM和ROM)。
ROM上有计算机硬件地址MAC地址。- 工作在数据链路层的网络组件。
∙ \bullet ∙ 网卡和局域网的通信是通过电缆或双绞线以串行方式进行的
∙ \bullet ∙ 网卡和计算机的通信则是通过计算机主板上的IO总线以并行方式进行的。因此,网卡的重要功能就是进行数据的串并转换。- 网卡控制着主机对介质的访问,因此网卡也工作在物理层,因为它只关注比特,而不关注任何地址信息和高层协议信息。
- MAC地址
∙ \bullet ∙ 在局域网中,硬件地址又称为物理地址,或MAC地址。【实际上是标识符】
∙ \bullet ∙ MAC地址:每个适配器有一个全球唯一的48位二进制地址,前24位代表厂家(由EEE规定),后24位厂家自己指定。常用6个十六进制数表示,如02-60-8c-e4-b1-21。
▶ \blacktriangleright ▶ 无线局域网
▶ \blacktriangleright ▶ 虚拟局域网技术
- 虚拟网VLAN
∙ \bullet ∙ 建立在交换技术基础上
∙ \bullet ∙ 以软件方式实现逻辑分组与管理,把用户的终端设备划分为若干个逻辑工作组,每个逻辑工作组就是一个VLAN。- VLAN的特征
∙ \bullet ∙ VLAN工作在数据链路层,即OSI参考模型的第二层。
∙ \bullet ∙ VLAN可隔离广播信息,每个VLAN为一个广播域,VLAN中的广播信息只能发送给这个VLAN内部的成员,并不发送给其他VLAN成员。
∙ \bullet ∙ 一个VLAN就是一个独立的逻辑网络,每个VLAN都具有唯一的子网号。不同VLAN中的主机之间必须通过路由器或者三层交换机,才能实现相互通信。
∙ \bullet ∙ 同一个VLAN的计算机不一定连接在相同的物理网段,它们可以连接在相同的交换机上,也可以连接在不同的局域网交换机上,只要这些交换机互连即可。- 一般有三种划分VLAN的方法。
①基于端口
将交换机的若干端口划为一个逻辑组,这种方法最简单、最有效,如果主机离开了原来的端口,那么就可能进入一个新的子网。
②基于MAC地址
按MAC地址将一些主机划分为一个逻辑子网,当主机的物理位置从一个交换机移动到另一个交换机时,它仍然属于原来的子网。
③基于IP地址
根据网络层地址或协议划分VLAN,这样VLAN就可以跨越路由器进行扩展,将多个局域网的主机连接在一起。
▶ \blacktriangleright ▶ 物理层扩展以太网
▶ \blacktriangleright ▶ 链路层扩展以太网
- 网桥
∙ \bullet ∙ 网桥作用:
根据MAC帧的目的地址对帧进行转发和过滤。当网桥收到一个帧时,并不向所有接口转发此帧,而是先检查此帧的目的MAC地址,然后再确定将该帧转发到哪一个接口,或者是把它丢弃(即过滤)。
∙ \bullet ∙ 网段:
一般指一个计算机网络中使用同一物理层设备(传输介质,中继器,集线器等)能够直接通讯的那一部分。
- 交换机 (多接口网桥)
- 直通式交换机
∙ \bullet ∙ 查完目的地址 (6B) 就立刻转发。(交换机转发一个数据帧的时间,转发6字节的时间)
∙ \bullet ∙ 延迟小,可靠性低,无法支持具有不同速率的端口的交换。
- 存储转发式交换机
∙ \bullet ∙ 将帧放入高速缓存,并检查否正确,正确则转发,错误则丢弃。
∙ \bullet ∙ 延迟大,可靠性高,可以支持具有不同速率的端口的交换。
▶ \blacktriangleright ▶ 交换机的自学习功能
- 交换机收到一个帧时,源主机的方向确定,目的主机的转发方向不确定
∙ \bullet ∙ 表中有目的mac地址,直接转发
∙ \bullet ∙ 表中无目的mac地址,将源mac地址和发出接口加入表项。即自学习源mac地址 ★ \bigstar ★
▶ \blacktriangleright ▶ 冲突域和广播域
学习步骤:
- 网络层在层次中的功能或作用,
- 网络层数据传输基本概念
IP地址、IP数据报- 网络层数据在互联网上传输的方式方法
分组转发、路由选择- 网络层数据传输的具体过程
▶ \blacktriangleright ▶ 网络层功能概述
- 网络层
∙ \bullet ∙ 主要任务:
把分组从源端传到目的端,为分组交换网上的不同主机提供通信服务。
∙ \bullet ∙ 网络层传输单位是数据报。- 网络层功能
∙ \bullet ∙ 功能一:路由选择与分组转发
∙ \bullet ∙ 功能二:异构网络互联
∙ \bullet ∙ 功能三:拥塞控制
若所有结点都来不及接受分组,而要丢弃大量分组的话,网络就处于拥塞状态。因此要采取一定措施,缓解这种拥塞。
▶ \blacktriangleright ▶ 电路交换:时延最小、不保证数据无差错
▶ \blacktriangleright ▶ 报文交换:报文大小不定
- 报文:
∙ \bullet ∙ 定义:
应用层的数据单元:源应用发送的信息整体,如:PDF文件
∙ \bullet ∙ 运输层可以将报文分段处理- 优点:
∙ \bullet ∙ 无需建立连接
∙ \bullet ∙ 存储转发,动态分配线路
∙ \bullet ∙ 线路可靠性较高
∙ \bullet ∙ 线路利用率较高
∙ \bullet ∙ 多目标服务- 缺点:
∙ \bullet ∙ 有存储转发时延
∙ \bullet ∙ 报文大小不定,需要网络节点有较大缓存空间
▶ \blacktriangleright ▶ 分组交换:传输单位小且长度固定,减少了传输时延
▶ \blacktriangleright ▶ 三种数据交换方式比较总结 ★ \bigstar ★
关注中间有几个路由器,有几段链路:一个路由器两段链路
分组在同一个链路上是串行的,在不同链路是并行的,即t是第2个分组等待第1个分组从第1个结点(第一段链路)发送完毕的时间
背景知识:
- 有些人认为应当借助于电信网的成功经验,让网络负责可靠交付。大家知道,传统电信网的主要业务是提供电话服务。电信网使用昂贵的程控交换机(其软件也非常复杂),用面向连接的通信方式,使电信网络能够向用户(实际上就是电话机)提供可靠传输的服务。
因此他们认为,计算机网络也应模仿打电话所使用的面向连接的通信方式。当两台计算机进行通信时,也应当先建立连接(但在分组交换中是建立一条虚电路VC(Virtual Circuit)),以预留双方通信所需的一切网络资源。然后双方就沿着已建立的虚电路发送分组。这样的分- 但互联网的先驱者却提出一种崭新的网络设计思路。他们认为,电信网提供的端到端可靠传输的服务对传统的电话业务无疑是很合适的,因为那时电信网的终端(电话机)非常简单,没有智能,更没有差错处理能力。因此电信网必须负责把用户电话机话筒产生的话音信号可靠地传送到对方的电话机,使其耳机发出的声音符合话音质量的技术规范要求。但计算机网络的端系统是有智能的计算机。
计算机有很强的差错处理能力(这点和传统的电话机有本质上的差别)。因此,互联网在设计上就采用了和电信网完全不同的思路。
▶ \blacktriangleright ▶ 数据报(因特网在用):适合出错率高
▶ \blacktriangleright ▶ 虚电路:连接、虚电路标识、按序
- 虚电路定义
一条源主机到目的主机类似于电路的路径(逻辑连接),路径上所有结点都要维持这条虚电路的建立,
∙ \bullet ∙ 维持一张虚电路表
每一项记录了一个打开的虚电路的信息。
∙ \bullet ∙ 两结点间可能同时有多条虚电路通过,一个结点也可能同与多个结点间建立虚电路
- 虚电路方式为网络层提供连接服务。
∙ \bullet ∙ 虚电路将数据报方式和电路交换方式结合,以发挥两者优点。- 虚电路通信过程:
∙ \bullet ∙ 虚电路建立:交换型虚电路、永久性虚电路
确定传输路径(建立连接):每个分组携带虚电路号,而非自的地址。源主机发送“呼叫请求”分组并收到“呼叫应答”分组后才算建立连接。
∙ \bullet ∙ 数据传输
全双工通信,系列分组传输路径相同,在建立连接后,分组只需携带虚电路标识,而不必带有源地址和目的地址
∙ \bullet ∙ 释放连接(虚电路释放)
源主机发送“释放请求”分组以拆除虚电路。交换型虚电路传输结束后拆除连接。- 数据报&虚电路
▶ \blacktriangleright ▶ 数据传输中的知识概念
- 网络层分层
网络层抽象地划分为数据层面(或转发层面)和控制层面。
- 传输过程
不同网络中的两个主机之间的通信,要经过若干个路由器转发分组来完成,分组查找路由器中的转发表,从指明的接口转发到下一个路由器。- 基本概念
∙ \bullet ∙ 转发表
是从路由表导出的
∙ \bullet ∙ 路由表
是由互联网中许多的路由器,按照共同选定的路由选择协议,通过许多次的相互交换路由信息而产生的。
∙ \bullet ∙ 在路由器之间传送的信息有以下两大类:
∙ \bullet ∙ 第一类:
是转发源主机和目的主机之间所传送的数据,把源主机所发送的分组,像接力赛跑那样从一个路由器转发到下一个路由器,最后把分组传送到目的主机。
∙ \bullet ∙ 第二类:
则是传送路由信息,是根据路由选择协议所使用的路由算法,彼此不断地交换路由信息分组,目的是为了在路由器中创建路由表,并由此导出为转发分组而用的转发表。这一类信息的传送是为第一类数据的传送服务的。- 协议分层
∙ \bullet ∙ 数据层面的协议IPv4、IPv6
∙ \bullet ∙ 控制层面的各种路由选择协议
▶ \blacktriangleright ▶ IP地址
- 概念
整个的互联网就是一个单一的、抽象的网络。地址就是给连接到互联网上的每一台主机(或路由器)的每一个接口,分配一个在全世界范围内是唯一的32位的标识符。地址的结构使我们可以在互联网上很方便地进行寻址。- 点分十进制记法(dotted decimal notation)
- IP地址组成 ::={<网络号>,<主机号>}
地址采用两级结构,由两个字段组成。指明了连接到某个网络上的一个主机(或路由器)
∙ \bullet ∙ 第一个字段:网络号
标志主机(或路由器)所连接到的网络。一个网络号在整个互联网范围内必须是唯一的。
∙ \bullet ∙ 第二个字段:主机号
标志该主机(对路由器来说,就是标志该路由器)。一个主机号在所连接的网络(即前面的网络号所指明的网络)中必须是唯一的。
▶ \blacktriangleright ▶ 分类的IP地址
- 分类的IP地址
- 各类IP地址占比
- A类地址
∙ \bullet ∙ 组成:
网络号字段占1个字节,其中7位可供使用(该字段的第一位已固定为0)。
∙ \bullet ∙ 特殊地址:网络号为全0
表示“本网络”;
∙ \bullet ∙ 特殊地址:网络号为127(即01111111)
保留作为本地软件环回测试(loopback test)本主机的进程之间的通信之用。
∙ \bullet ∙ A类地址可指派的网络号是126个。
0000 0000 ⇒ \rArr ⇒ 0111 1111 (1~126)- B类地址
∙ \bullet ∙ 组成:
网络号字段占2个字节,其中14位可供使用(该字段的前2位已固定为10)。
∙ \bullet ∙ 特殊地址:网络号为全0
表示“本网络”;
∙ \bullet ∙ 特殊地址:网络号为全1
多播地址
∙ \bullet ∙ B类地址可指派的网络号是65534个。
1000 0000.0 ⇒ \rArr ⇒ 1011 1111.1 (128.0~192.255)- 特殊的IP地址
▶ \blacktriangleright ▶ 子网划分
▶ \blacktriangleright ▶ 地址掩码
- 定义
地址掩码(常简称为掩码)由一连串1和接着的一连串0组成,而1的个数就是网络前缀的长度。又称为子网掩码。
在CIDR记法中,斜线后面的数字就是地址掩码中1的个数。
∙ \bullet ∙ 默认子网掩码:
现在的因特网标准规定:所有的网络都必须使用子网掩码。如果一个网络未划分子网,那么就采用默认子网掩码。A、B、C类地址的默认子网掩码分别为255.0.0.0、255.255.0.0、255.255.255.0。
- 求子网网络地址:
子网掩码与IP地址逐位相与,就得到子网网络地址(网络前缀或子网网络号)。
- 子网内第一个可用的IP地址:
子网内第一个可用的IP地址是子网号(网络地址)后的第一个地址,例如网络地址为194.55.128.0,则子网内第一个可用的IP地址为194.55.128.1;- 子网内最后一个可用的IP地址:
子网内最后一个可用的IP地址是直接广播地址前一个地址,例如直接广播地址为194.55.191.255,则子网内最后一个可用的IP地址为194.55.191.254.
▶ \blacktriangleright ▶ 无分类编址CIDR
- 定义
无分类域间路由选择CIDR(Classless Inter-Domain
Routing,CIDR的读音是“sider’”)[RFC4632]
∙ \bullet ∙ 一个CIDR地址块包含的IP地址数目,取决于网络前缀的位数。
∙ \bullet ∙ 消除了传统的A类,B类和C类地址以及划分子网的概念。
- CIDR记法:
CIDR使用“斜线记法”(slash notation),或称为CIDR记法,即在IP地址后面加上斜线“/”,斜线后面是网络前缀所占的位数。
- 融合子网地址与子网掩码
∙ \bullet ∙ 方便子网划分
∙ \bullet ∙ CIDR把网络前缀都相同的所有连续的IP地址组成一个“CIDR地址块(子网络)”。
- 子网络的最小地址和最大地址
∙ \bullet ∙ 我们只要知道CIDR地址块中的任何一个地址,就可以知道这个地址块的起始地址(即最小地址)和最大地址,以及地址块中的地址数。
∙ \bullet ∙ 最小地址:主机号全为0
∙ \bullet ∙ 最大地址:主机号全为1
∙ \bullet ∙ 例如,已知IP地址128.14.35.7/20是某CIDR地址块中的一个地址。
- 构成超网
∙ \bullet ∙ 将多个子网聚舍成一个较大的子网,叫做构成超网,或路由聚合。
∙ \bullet ∙ 方法:将网络前缀缩短。
∙ \bullet ∙ 好处:
它使得转发表中只用一个项目就可以表示原来传统分类地址的很多个(例如上千个)路由项目,因而大大压缩了转发表所占的空间,减少了查找转发表所需的时间。
- 最长前缀匹配
使用CIDR时,查找路由表可能得到几个匹配结果,应选择具有最长网络前缀的路由。前缀越长,地址块越小,
路由越具体。
▶ \blacktriangleright ▶ 例题
▶ \blacktriangleright ▶ 子网个数、子网中可分配地址数
- 最多子网数
若主机号只占1位,则没有有效的IP地址可供分配(除去0和1),因此最少2位表示主机号- 最多子网有效IP数
即不划分子网、也即只有1个子网时、即主机号占5位时
- 子网个数、子网中可分配地址数
∙ \bullet ∙ 子网个数
通过网络前缀位数与子网掩码,得到子网号位数与主机号位数
子网号位数 = 子网掩码有效位-网络前缀位数 =29-24=5
子网个数 = 2 5 = 32 子网个数=2^5=32 子网个数=25=32
∙ \bullet ∙ 子网中可分配地址数
子网中可分配地址数= 子网中地址数 − 2 = 2 3 − 2 = 6 子网中地址数-2=2^3-2=6 子网中地址数−2=23−2=6
▶ \blacktriangleright ▶ IP数据报格式
- 0-4B
∙ \bullet ∙ 版本:IPv4/IPv6?
∙ \bullet ∙ 首部长度:单位是4B
最小首部为20B,得最小首部长度为5,即0101B.
∙ \bullet ∙ 区分服务:
指示期望获得哪种类型的服务。
∙ \bullet ∙ 总长度:单位是1B
首部+数据
05DCH ⇒ \rArr ⇒ 1500B- 4-8B
∙ \bullet ∙ 标识 2B:
同一数据报的分片使用同一标识。
∙ \bullet ∙ 标志 3bit:
只有2位有意义 X . D F ‾ . M F ‾ X. \underline{DF}. \underline{MF} X.DF.MF
中间位DF(Don’t Fragment):DF=1,禁止分片;DF=O,允许分片
最低位MF(More Fragment):MF=1,后面“还有分片”;MF=0,代表最后一片/没分片
∙ \bullet ∙ 片偏移 13bit:以8B为单位
指出较长分组分片后,某片在原分组中的相对位置。- 8B-12B
∙ \bullet ∙ 生存时间(TTL):
IP分组的保质期。经过一个路由器-1,变成0则丢弃。
∙ \bullet ∙ 协议:
数据部分的协议。
∙ \bullet ∙ 首部检验和:只检验首部。
路由器对收到的IP分组首部进行差错检验,丢弃有差错首部的报文,但不保证IP分组不丢失。- 12B-20B:
源IP地址和目的IP地址:32位。- 可选字段:20~60B
∙ \bullet ∙ 长度可变 0~40B
∙ \bullet ∙ 用来支持排错测量以及安全等措施。
∙ \bullet ∙ 填充:全0,把首部补成4B的整数倍。
▶ \blacktriangleright ▶ IP数据报分片 8个字节为偏移单位
- 分片:
IP分组可以被路径中的路由器分片,在传输过程中仍然存在分片的可能(不同网络的MTU可能不同)- 重组(不按序):
在目的主机进行重组(不按序)
- 分片对象:
将数据部分分片- 最大分片大小:[MTU-IP首部大小]取整(以8个字节) ★ \bigstar ★
片偏移以8个字节为偏移单位,因此除了最后一个分片,其他每个分片的数据部分长度都是8B的整数倍。- 分片个数:数据部分总大小 ÷ \div ÷ 最大片长
分片大小=最大片长+IP首部- 片偏移量
计算每一个数据部分分片的片偏移量- MF与DF
- eg1
数据部分分片大小 = 最大片长 ( 1420 B ) − 数据报头部 ( 20 B ) 数据部分分片大小=最大片长(1420B)-数据报头部(20B) 数据部分分片大小=最大片长(1420B)−数据报头部(20B)- eg2
▶ \blacktriangleright ▶ IP地址与MAC地址
- 两种地址的区别
∙ \bullet ∙ 从层次的角度看
MAC地址是数据链路层使用的地址,而P地址是网络层和以上各层使用的地址,是一种逻辑地址(称IP地址为逻辑地址是因为IP地址是用软件实现的)。
- 传输过程
- 为什么不直接使用MAC地址通信?
∙ \bullet ∙ 由于全世界存在着各式各样的网络,它们使用不同的MAC地址。
∙ \bullet ∙ 要使这些异构网络能够互相通信就必须进行非常复杂的MAC地址转换工作,因此由用户或用户主机来完成这项工作几乎是不可能的事。
∙ \bullet ∙ 而IP编址把这个复杂问题解决了。连接到互联网的主机只需各自拥有一个地址,它们之间的通信就像连接在同一个网络上那样简单方便
∙ \bullet ∙ 即使必须多次调用ARP来找到MAC地址,但这个过程都是由计算机软件自动进行的,对用户来说是看不见的。
∙ \bullet ∙ 因此,在虚拟的P网络上用P地址进行通信给广大的计算机用户带来了很大的方便。
问题:
- 主机或路由器怎样知道应当在MAC帧的首部填入什么样的MAC地址?
- 路由器中的转发表是怎样得出的?
▶ \blacktriangleright ▶ 地址解析协议ARP
- 定义
已知一个机器(主机或路由器)的IP地址,需要找出其相应的MAC地址。 地址解析协议ARP [RFC826,STD37] 就是用来解决这样的问题的。- 实现寻址的方法
地址解析协议ARP解决这个问题的方法是在主机的ARP高速缓存中存放一个从IP地址到MAC地址的映射表,并且这个映射表还经常动态更新(新增或超时删除)。- ARP高速缓存
每一台主机都设有一个ARP高速缓存(ARP cache),存有本局域网上的各主机和路由器的IP地址到MAC地址的映射表,这些都是该主机目前知道的一些MAC地址。- 生存时间:
ARP对保存在高速缓存中的每一个映射地址项目都设置生存时间。凡超过生存时间的项目就从高速缓存中删除掉。
▶ \blacktriangleright ▶ 4种情况分析 ★ \bigstar ★ ★ \bigstar ★ ★ \bigstar ★
- 同一个网段内
∙ \bullet ∙ 请求:
ARP进程在本局域网上广播发送一个ARP请求分组
∙ \bullet ∙ 广播:初始化
在本局域网上的所有主机上运行的ARP进程都收到此ARP请求分组。
∙ \bullet ∙ 响应:
主机B的IP地址与ARP请求分组中要查询的IP地址一致,就收下这个ARP请求分组,单播发送ARP响应分组,同时在这个ARP响应分组中写入自己的MAC地址。
不同网段内:
- 发送方是主机H1,接收方是不同网络上主机
∙ \bullet ∙ 请求:
子网掩码与目的IP地址相与,判断是否在同一个网段内(网络号相同)
不在同个网段内,ARP请求分组的源MAC地址填默认网关MAC
∙ \bullet ∙ 广播:
在本局域网上的所有主机上运行的ARP进程都收到此ARP请求分组。找到默认网关MAC地址
∙ \bullet ∙ 网关路由响应:
单播ARP响应分组- 发送方是网关路由R1,接收方是可达网络N2上主机H3
发送ARP请求分组(在N2上广播),找目的主机H3的MAC地址。
- 发送方是网关路由R1,接收方是不可达网络N3上主机H4
∙ \bullet ∙ H4与R1不是连接在同一个网络上的。
∙ \bullet ∙ 这时R1发送ARP请求分组(在N2上广播)
∙ \bullet ∙ 找连接在N2上的一个路由器R2的MAC地址。
∙ \bullet ∙ 剩下的工作由这个路由器R2来完成。
▶ \blacktriangleright ▶ 动态主机配置协议 DHCP(Dynamic Host Configuration Protocol)
- 定义:
∙ \bullet ∙ 该协议允许服务器向客户端动态分配 IP 地址和配置信息。
∙ \bullet ∙ 应用层协议
∙ \bullet ∙ 使用客户/服务器方式,客户端和服务端通过广播方式进行交互。
∙ \bullet ∙ 基于UDP,DHCP采用UDP作为传输协议
∙ \bullet ∙ DHCP提供即插即用联网的机制,主机可以从服务器动态获取IP地址、子网掩码、默认网关、DNS服务器名称与IP地址。
∙ \bullet ∙ 允许地址重用,支持移动用户加入网络,支持在用地址续租。- DHCP服务器为客户端分配IP地址有三种形式:
∙ \bullet ∙ 管理员将一个IP地址固定分配给一个客户端。
∙ \bullet ∙ 随机地将地址永久性分配给客户端。
∙ \bullet ∙ 随机地将地址分配给客户端使用一段时间。- DHCP服务器为客户端分配IP地址过程:
∙ \bullet ∙ 主机广播DHCP发现报文
“有没有DHCP服务器呀?”
试图找到网络中的服务器,服务器获得一个P地址。
∙ \bullet ∙ DHCP服务器广播DHCP提供报文
“有!”“有!”“有!”
服务器拟分配给主机一个IP地址及相关配置,先到先得。
∙ \bullet ∙ 主机广播DHCP请求报文
“我用你给我的IP地址啦?”
主机向服务器请求提供IP地址。
∙ \bullet ∙ DHCP服务器广播DHCP确认报文
“用吧!”
正式将IP地址分配给主机。
背景:
为了更有效地转发数据报和提高交付成功的机会,在网际层使用了网际控制报文协议ICMP(Internet Control Message Protocol)[RFC792,STD5]。ICMP允许主机或路由器报告差错情况和提供有关异常情况的报告。ICMP是互联网的标准协议。
▶ \blacktriangleright ▶ 网际控制报文协议ICMP
- 定义
∙ \bullet ∙ 用于在IP主机、路由器之间 传递控制消息。
∙ \bullet ∙ 控制消息
是指网络通不通、主机是否可达、路由是否可用等网络本身的消息。- ICMP报文格式
- ICMP报文有两种
∙ \bullet ∙ ICMP差错报告报文
∙ \bullet ∙ ICMP询问报文- 常用的ICMP报文类型。
- ICMP的应用
∙ \bullet ∙ 分组网间探测PING(Packet InterNet Groper)
测试两个主机之间的连通性,使用了ICMP回送请求和回答报文(询问报文)。
PING是应用层直接使用网络层ICMP的一个例子。它没有通过运输层的TCP或UDP。
∙ \bullet ∙ Traceroute
跟踪一个分组从源点到终点的路径,使用了ICMP时间超过差错报告报文。
当路由器监测到拥塞时,可合理丢弃IP分组,并向发出该IP分组的源主机发送一个源点抑制的ICMP报文。
IPv6诞生原因
- 32位IPv4地址空间已分配殆尽.
∙ \bullet ∙ CIDR\ NAT:治标不治本
∙ \bullet ∙ IPv6:从根本上解决地址耗尽问题- 为了 快速处理/ 转发数据报
支持QoS
▶ \blacktriangleright ▶ IPv6
- 定义
IPv6 仍支持无连接的传送,但将协议数据单元 PDU 称为分组。- IPv6数据报组成
基本首部+有效载荷
- IPv6数据报格式:
∙ \bullet ∙ 流标号(flow label) 占20位
IPv6的一个新的机制是支持资源预分配,并且允许路由器把每一个数据报与一个给定的资源分配相联系。
IPv6提出流(flow)的抽象概念。所谓“流”就是互联网络上从特定源点到特定终点(单播或多播)的一系列数据报(如实时音频或视频传输),而在这个“流”所经过的路径上的路由器都保证指明的服务质量。所有属于同一个流的数据报都具有同样的流标号。因此,流标号对实时音频/视频数据的传送特别有用。
- IPv6 与IPv4不同
∙ \bullet ∙ 首部大小固定
∙ \bullet ∙ 不允许分片
▶ \blacktriangleright ▶ 三种基本IPv6的地址类型
- 单播(unicast)
单播就是传统的点对点通信。- 多播(multicast)
多播是一点对多点的通信,数据报发送到一组计算机中的每一个。
IPv6没有采用广播的术语,而是将广播看作多播的一个特例。- 任播(anycast)
这是IPv6增加的一种类型。任播的终点是一组计算机,但数据报只交付其中的一个,通常是按照路由算法得出的距离最近的一个。
▶ \blacktriangleright ▶ IPv6的地址表示形式
▶ \blacktriangleright ▶ 专用网
- 本节讨论:转发表中的路由是怎样得出的。
- 路由选择协议属于网络层控制层面的内容。
- 路由选择协议规定了互联网中有关的路由器应如何相互交换信息并生成出路由表。
▶ \blacktriangleright ▶ 路由算法的分类
- 静态路由算法(非自适应路由算法)
∙ \bullet ∙ 管理员手工配置路由信息。
∙ \bullet ∙ 优点:
简便、可靠,在负荷稳定、拓扑变化不大的网络中运行效果很好,广泛用于高度安全性的军事网络和较小的商业网络。
∙ \bullet ∙ 缺点:
路由更新慢,不适用大型网络。- 动态路由算法(自适应路由算法)
∙ \bullet ∙ 路由器间彼此交换信息,按照路由算法优化出路由表项。
∙ \bullet ∙ 优点:
路由更新快,适用大型网络,及时响应链路费用或网络拓扑变化。
∙ \bullet ∙ 缺点:
算法复杂,增加网络负担。
- 互联网采用的路由选择协议主要是自适应的(即动态的)、分布式路由选择协议。
▶ \blacktriangleright ▶ 互联网分层-自治系统AS
- 互联网采用分层次的路由选择协议的原因:
∙ \bullet ∙ 互联网的规模非常大
如果让所有的路由器知道所有的网络应怎样到达,则这种路由表将非常大,处理起来也太花时间。而所有这些路由器之间交换路由信息所需的带宽就会使互联网的通信链路饱和。
∙ \bullet ∙ 保密性
许多单位不愿意外界了解自己单位网络的布局细节和本部门所采用的路由选择协议(这属于本部门内部的事情),但同时还希望连接到互联网上。- 自治系统AS: ★ \bigstar ★
∙ \bullet ∙ 把整个互联网划分为许多较小的自治系统(autonomous system)
∙ \bullet ∙ 是在单一的技术管理下的一组路由器,而这些路由器 使用一种AS内部的路由选择协议和共同的度量,以确定分组在该AS内的路由。
∙ \bullet ∙ 使用一种AS之间的路由协议,以确定在AS之间的路由。
∙ \bullet ∙ 一个AS内的所有网络都属于一个行政单位来管辖,一个自治系统的所有路由器在本自治系统内都必须连通。
- 路由选择协议划分
∙ \bullet ∙ 内部网关协议IGP(Interior Gateway Protocol)
即在同一个自治系统内部使用的路由选择协议。
目前这类路由选择协议使用得最多的是RIP和OSPF协议
∙ \bullet ∙ 外部网关协议EGP(External Gateway Protocol)
在不同自治系统AS之间使用的路由选择协议。
目前使用最多的外部网关协议是BGP的版本4(BGP-4)。
▶ \blacktriangleright ▶ 内部网关协议RIP
- RIP定义
∙ \bullet ∙ RIP(Routing Information Protocol)是内部网关协议IGP中最先得到广泛使用的协议,它的中文译名是路由信息协议。
∙ \bullet ∙ RIP是一种分布式的基于距离向量的路由选择协议,是互联网的标准协议,其最大优点就是简单。- RIP协议的报文格式
- 路由表:
RIP协议要求网络中每一个路由器都维护从它自己到其他每一个目的网络的唯一最佳距离记录(即一组距离)- 距离:
∙ \bullet ∙ 通常为“跳数”,即从源端口到目的端口所经过的路由器个数,经过一个路由器跳数+1。
∙ \bullet ∙ RIP 不能在两个网络之间同时使用多条路由。RIP 选择一个具有最少路由器的路由(即最短路由)
∙ \bullet ∙ RIP允许一条路由最多只能包含15个路由器,因此距离为16表示网络不可达。
∙ \bullet ∙ 特别的,路由器到直接连接的网络距离为1。- RIP协议好消息传得快,坏消息传得慢 ★ \bigstar ★ ★ \bigstar ★
▶ \blacktriangleright ▶ 通过交换信息建立路由表
- 路由器刚开始工作时,只知道直接连接的网络的距离(距离为1),接着每一个路由器也只和数目非常有限的相邻路由器交换并更新路由信息。
- 交换信息
∙ \bullet ∙ RIP协议和谁交换?
仅和相邻路由器交换信息。
∙ \bullet ∙ 多久交换一次?
每30秒交换一次路由信息,然后路由器根据新信息更新路由表。若超过180s没收到邻居路由器的通告,则判定邻居没了,并更新自己路由表。(即:根据网络情况动态的改变路由)
∙ \bullet ∙ 交换什么?
整个路由表信息。- 经过若干次更新后,所有路由器最终都会知道到达本自治系统任何一个网络的最短距离和下一跳路由器的地址,即“收敛”。
▶ \blacktriangleright ▶ RIP协议:距离向量算法
路由器收到相邻路由器R2(其地址为X)的一个RIP报文:
- 修改此RIP报文中的所有项目:
∙ \bullet ∙ 把“下一跳”字段中的地址都改为X
∙ \bullet ∙ 把所有的“距离”字段的值加1。
- 对修改后的RIP报文中的每一个项目,重复以下步骤:同一路由就更新,不同路由比大小
∙ \bullet ∙ 有没有新增的项(比较两个路由表):
若项目中的目的网络不在路由表中,则添加该项目。
∙ \bullet ∙ 有目的网络:
∙ \bullet ∙ ∙ \bullet ∙ 同一路线 跳数变化 更新跳数:
若下一跳字段给出的路由器地址是同样的,替换原路由表中的项目。
∙ \bullet ∙ ∙ \bullet ∙ 更新更小的下一跳(新的下一跳路由 新的路线)
若收到的项目中的路由器地址的距离更小,则进行更新,
∙ \bullet ∙ 不可达:
若3分钟还没有收到相邻路由器的更新路由表,则把此相邻路由器记为不可达路由器,即将距离置为16(表示不可达)。
∙ \bullet ∙ 返回
循环,隔30s再更新一次
▶ \blacktriangleright ▶ 距离向量算法例题:分别写出从C出发通过B、D、E到达其他点的最短路径,比较三条路径中每一个点的最小值
分别写出从E出发通过A、B、C、D到达其他网络点的最短路径,比较4条路径中同一个网络的每一个点,得距离最小值
▶ \blacktriangleright ▶ 内部网关协议OSPF
- OSPF协议定义
∙ \bullet ∙ 开放最短路径优先OSPF(Open Shortest Path First)。
∙ \bullet ∙ OSPF最主要的特征就是使用分布式的链路状态协议。
∙ \bullet ∙ 注意:
OSPF只是一个协议的名字,它并不表示其他的路由选择协议不是“最短路径优先”- OSPF的区域
∙ \bullet ∙ 区域
为了使OSPF能够用于规模很大的网络,OSPF将一个自治系统再划分为若干个更小的范围,叫做区域。
∙ \bullet ∙ 每一个区域都有一个32位的区域标识符(用点分十进制表示)。
∙ \bullet ∙ 区域也不能太大,在一个区域内的路由器最好不超过200个。
- OSPF分组:IP数据报
- OSPF其他特点
∙ \bullet ∙ 每隔30min,要刷新一次数据库中的链路状态。
∙ \bullet ∙ 由于一个路由器的链路状态只涉及到与相邻路由器的连通状态,因而与整个互联网的规模并无直接关系。因此当互联网规模很大时,OSPF协议要比距离向量协议RIP好得多。
∙ \bullet ∙ OSPF不存在坏消息传的慢的问题,它的收敛速度很快。
▶ \blacktriangleright ▶ 通过交换信息建立路由表
- 交换信息
∙ \bullet ∙ 和谁交换?
使用洪泛法向自治系统内所有路由器发送信息。广播
即路由器通过输出端口向所有相邻的路由器发送信息,而每一个相邻路由器又再次将此信息发往其所有的相邻路由器。
∙ \bullet ∙ 多久交换?
.只有当链路状态发生变化时,路由器才向所有路由器洪泛发送此信息。(即:根据网络情况动态的改变路由)
∙ \bullet ∙ 交换什么?
部分路由表信息
即:发送的信息就是与本路由器相邻的所有路由器的链路状态(本路由器和哪些路由器相邻,以及该链路的度量/代价一一费用、距离、时延、带宽等)。- 最后,所有路由器都能建立一个链路状态数据库
区域内部路由器只知道本区域的完整网络拓扑,而不知道其他区域的网络拓扑情况。
▶ \blacktriangleright ▶ 链路状态路由算法
OSPF协议依靠五种不同类型的分组来建立邻接关系和交换路由信息。
即:问候分组、数据库描述分组、链路状态请求分组、链路状态更新分组和链路状态确认分组。
- 问候(Hello)分组:保持连接
∙ \bullet ∙ 建立和维护邻接关系。
每个路由器发现它的邻居结点,并了解邻居节点的网络地址。
设置到它的每个邻居的成本度量metric。- 交换信息
∙ \bullet ∙ 数据库描述(Data base Description,DBD)分组
向邻站给出自己的链路状态数据库中的所有链路状态项目的摘要信息。- 请求更新
∙ \bullet ∙ 链路状态请求(Link State Request,LSR)分组
LSR分组用来请求邻居发送其链路状态数据库中某些条目的详细信息。
∙ \bullet ∙ 请求自己没有的和比自己新的信息。
路由器与邻居交换了数据库描述分组后,如果发现它的链路状态数据库缺少某些条目或某些条目已过期,就使用LSR分组来取得邻居链路状态数据库中较新的部分。- 进行更新
∙ \bullet ∙ 链路状态更新(Link State Update,LSU)分组
LSU分组被用来应答链路状态请求分组:收到邻站的LSR分组后,发送【LSU链路状态更新分组】进行更新。
∙ \bullet ∙ 洪泛法更新链路状态
在网络运行过程中,只要一个路由器的链路状态发生变化,该路由器就要使用LSU,用洪泛法向全网更新链路状态。- 进行确认
∙ \bullet ∙ 链路状态确认(Link State Acknowledgment,LSAck)分组
LSAck分组被用来应答链路状态更新分组:更新完毕后,邻站返回一个【LSAck链路状态确认分组】进行确认。- 使用Dijkstra根据自己的链路状态数据库构造到其他节点间的最短路径。
▶ \blacktriangleright ▶ 外部网关协议-BGP
- 定义
∙ \bullet ∙ 边界网关协议BGP交换的网络可达性的信息,即要到达某个网络所要经过的一系列AS。
当BGP发言人互相交换了网络可达性的信息后,各BGP发言人就根据所采用的策略从收到的路由信息中找出到达各AS的较好路由。
∙ \bullet ∙ BGP采用了路径向量(path vector)路由选择协议
它与距离向量协议(如RIP)和链路状态协议(如OSPF)都有很大的区别。
∙ \bullet ∙ 为了保证BGP的可靠传输,其使用TCP来承载协议报文;- 使用BGP协议原因
∙ \bullet ∙ 互联网的规模太大,使得自治系统AS之间路由选择非常困难。
∙ \bullet ∙ 自治系统AS之间的路由选择必须考虑有关策略。
因此,自治系统之间的路由选择协议应当允许使用多种路由选择策略。这些策略包括政治、安全或经济方面的考虑。- BGP路由
∙ \bullet ∙ 边界路由器(或边界网关)
一个AS至少要有一个边界路由器和相邻AS的边界路由器直接相连。
∙ \bullet ∙ 内部路由器。
- BGP协议交换路由信息的节点数是以自治系统数为单位的,BGP交换路由信息的节点数不小于自治系统数。
▶ \blacktriangleright ▶ 通过交换信息建立路由表
- 交换信息
∙ \bullet ∙ 和谁交换?
与其他相邻AS的BGP发言人交换信息。
∙ \bullet ∙ 多久交换?
发生变化时更新有变化的部分。
∙ \bullet ∙ 交换什么?
交换的网络可达性的信息,即要到达某个网络所要经过的一系列AS。(一个完整的路径)
- BGP的路由表
BGP支持CIDR,因此BGP的路由表也就应当包括目的网络前缀、下一跳路由器,以及到达该目的网络所要经过的各个自治系统序列 (一个完整的路径)。- BGP-4的四种报文
∙ \bullet ∙ OPEN(打开)报文:
用来与相邻的另一个BGP发言人建立关系,并认证发送方。
∙ \bullet ∙ UPDATE(更新)报文:
通告新路径或撤销原路径。
∙ \bullet ∙ KEEPALIVE(保活)报文:
在无UPDATEI时,周期性证实邻站的连通性;也作为OPEN的确认。
∙ \bullet ∙ NOTIFICATION(差错通知)报文:
报告先前报文的差错;也被用于关闭连接。
▶ \blacktriangleright ▶ 路由器
- 定义
∙ \bullet ∙ 路由器是一种具有多个输入端口和多个输出端口的专用计算机,其任务是转发分组。
∙ \bullet ∙ 路由器是网络层设备,它实现了网络模型的下三层,即物理层、数据链路层和网络层。- 路由表
根据所选定的路由选择协议构造出路由表,同时经常或定期地和相邻路由器交换路由信息而不断地更新和维护路由表。- 交换结构:
∙ \bullet ∙ 根据转发表(路由表得来)对分组进行转发。
∙ \bullet ∙ 若收到RIP/OSPF分组等,则把分组送往路由选择处理机;
∙ \bullet ∙ 若收到数据分组,则查找转发表并输出。
- 输出端口将交换结构传送来的分组发送到线路
∙ \bullet ∙ 路由器中的输入或输出队列产生溢出是造成分组丢失的重要原因。
▶ \blacktriangleright ▶ 路由器与网关
▶ \blacktriangleright ▶ 组播传输方式
▶ \blacktriangleright ▶ IP组播地址
- 定义:
在互联网上进行组播就叫作IP组播。IP组播所传送的分组需要使用组播IP地址。- 组播数据报传送到客户主机的过程
∙ \bullet ∙ 在组播数据报的目的地址写入的是组播组的标识符,然后设法让加入到这个组播组的主机的IP地址与组播组的标识符关联起来。
∙ \bullet ∙ 标识符:
就是IP地址中的D类地址。一个D类地址表示一个组播组- 多播地址只能用于目的地址,而不能用于源地址。
即:多播地址只能作为被请求的主机IP地址,向组播地址发送数据时,所有同一组播组的主机都会收到该数据,即组播地址可以作为目的地址。- 特点
∙ \bullet ∙ 组播数据报也是“尽最大努力交付”,不提供可靠交付,应用于UDP。
∙ \bullet ∙ 对组播数据报不产生ICMP差错报文。PING不会收到响应。
∙ \bullet ∙ 并非所有D类地址都可以作为组播地址。
▶ \blacktriangleright ▶ 在局城网上进行硬件组播
▶ \blacktriangleright ▶ 在因特网的范围内进行组播
▶ \blacktriangleright ▶ IGMP协议
▶ \blacktriangleright ▶ 组播路由选择协议
- 定义:
组播路由选择协议目的是找出以源主机为根节点的组播转发树。- 组播路由选择协议常使用的三种算法:
∙ \bullet ∙ 基于链路状态的路由选择
∙ \bullet ∙ 基于距离-向量的路由选择
∙ \bullet ∙ 协议无关的组播(稀疏/密集)
▶ \blacktriangleright ▶ 专用网
- 专用网定义
∙ \bullet ∙ 假定在一个机构内部的计算机通信也是采用TCP/IP协议,那么从原则上讲,对于这些仅在机构内部使用的计算机就可以由本机构自行分配其IP地址。
∙ \bullet ∙ 这就是说,让这些计算机使用仅在本机构有效的IP地址(这种地址称为本地地址),而不需要向互联网的管理机构申请全球唯一的P地址(这种地址称为全球地址)。- 专用IP地址
RFC1918 指明了一些专用地址(private address)。
∙ \bullet ∙ 避免出现地址的二义性
∙ \bullet ∙ 作用域:
专用地址只能用作本地地址而不能用作全球地址。在互联网中的所有路由器,对目的地址是专用地址的数据报一律不进行转发。
▶ \blacktriangleright ▶ 虚拟专用网VPN
- 定义:
利用公用的互联网作为本机构各专用网之间的通信载体,这样的专用网又称为虚拟专用网VPN(Virtual Private Network)。- 虚拟专用网的通信
∙ \bullet ∙ 如果专用网不同网点之间的通信必须经过公用的互联网,又有保密的要求,那么所有通过互联网传送的数据都必须加密。
∙ \bullet ∙ 使用IP隧道技术实现虚拟专用网。
- 专用网类型
∙ \bullet ∙ 内联网VPN
表示场所A和B都属于同一个机构。
∙ \bullet ∙ 外联网VPN
有时一个机构的VPN需要有某些外部机构(通常就是合作伙伴)参加进来。
∙ \bullet ∙ 远程接入VPN
员工通过拨号接入互联网,而驻留在员工个人电脑中的VPN软件可以在员工的个人电脑和公司的主机之间建立VPN隧道,因而外地员工与公司通信的内容也是保密的。
▶ \blacktriangleright ▶ 网络地址转换NAT(Network Address Translation)
- 定义:
在专用网连接到因特网的路由器上安装NAT软件,安装了NAT软件的路由器叫NAT路由器,它至少有一个有效的外部全球IP地址。
- 私有IP地址网段
- 通信过程
∙ \bullet ∙ NAT路由器收到IP数据报
从专用网内部的主机A 发往互联网上主机B的IP数据报。
从互联网上主机B 发往专用网内部的主机A的IP数据报。
∙ \bullet ∙ 转换数据报中源IP地址
NAT路由器改写数据报中源地址后发送。- 网络地址与端口号转换
∙ \bullet ∙ 使用端口号的NAT叫作网络地址与端口号转换NAPT(Network Address and Port Translation)
∙ \bullet ∙ 当APT路由器收到从互联网发来的应答时,就可以从IP数据报的数据部分找出运输层的端口号,然后根据不同的目的端口号,从NAPT转换表中找到正确的目的主机。
▶ \blacktriangleright ▶ 传输层概述
- 定义
为应用层提供通信服务,使用网络层的服务- 功能:
∙ \bullet ∙ 传输层提供进程和进程之间的逻辑通信。
∙ \bullet ∙ 复用和分用
复用:应用层所有的应用进程都可以通过传输层再传输到网络层。
分用:传输层从网络层收到数据后交付指明的应用进程。
∙ \bullet ∙ 传输层对收到的报文进行差错检测。
▶ \blacktriangleright ▶ 传输层的两个协议
▶ \blacktriangleright ▶ 传输层的寻址与端口
▶ \blacktriangleright ▶ UDP概述
▶ \blacktriangleright ▶ UDP的首部格式
- 字段:UDP首部8B + 数据部分
∙ \bullet ∙ 源端口
源端口号。在需要对方回信时选用。不需要时可用全0。
∙ \bullet ∙ 目的端口
目的端口号。这在终点交付报文时必须使用。
∙ \bullet ∙ 长度
UDP用户数据报的长度,其最小值是8(仅有首部)。
∙ \bullet ∙ 检验和
检测UDP用户数据报在传输中是否有错。有错就丢弃。可以不使用- 伪首部
只有在计算检验和时才出现,不向下传送也不向上递交。
- 校验
发送时:
∙ \bullet ∙ 填上伪首部
∙ \bullet ∙ 全0填充检验和字段
∙ \bullet ∙ 全0填充数据部分
∙ \bullet ∙ 伪首部+首部+数据部分采用二进制反码求和
∙ \bullet ∙ 把和求反码填入检验和字段
接收端:
∙ \bullet ∙ 填上伪首部
∙ \bullet ∙ 伪首部+首部+数据部分采用二进制反码求和
∙ \bullet ∙ 结果全为1则无差错,否则丢弃数据报/交给应用层附上出差错的警告。
▶ \blacktriangleright ▶ TCP协议特点
▶ \blacktriangleright ▶ TCP报文段首部格式
- 序号字段:y
在一个TCP连接中传送的字节流中的每一个字节都按顺序编号,本字段表示本报文段所发送数据的第一个字节的序号。- 确认号:x
期望收到对方下一个报文段的第一个数据字节的序号。若确认号为N,则证明到序号N-1为止的所有数据都已正确收到。- 数据偏移(首部长度):
TCP报文段的数据起始处距离TCP报文段的起始处有多远,以4B位单位,即1个数值是4B。- 6个控制位
∙ \bullet ∙ 紧急位URG:
URG=1时,标明此报文段中有紧急数据,是高优先级的数据,应尽快传送,不用在缓存里排队,配合紧急指针字段使用。
∙ \bullet ∙ 确认位ACK:
ACK=1时确认号有效,在连接建立后所有传送的报文段都必须把ACK置为1。
∙ \bullet ∙ 推送位PSH:
PSH=1时,接收方尽快交付接收应用进程,不再等到缓存填满再向上交付。
∙ \bullet ∙ 复位RST:
RST=1时,表明TCP连接中出现严重差错,必须释放连接,然后再重新建立传输链接。
∙ \bullet ∙ 同步位SYN:
SYN=1时,表明是一个连接请求/连接接受报文。
∙ \bullet ∙ 终止位FIN:
FIN=1时,表明此报文段发送方数据已发完,要求释放连接。- 窗口:
指的是发送本报文段的一方的接收窗口,即现在允许对方发送的数据量。- 检验和:
∙ \bullet ∙ 检验首部+数据,
∙ \bullet ∙ 检验时要加上12B伪首部,伪首部第四个字段为6。
紧急指针:
URG=1时才有意义,指出本报文段中紧急数据的字节数。
▶ \blacktriangleright ▶ TCP连接
- TCP连接传输三个阶段:
∙ \bullet ∙ 连接建立
∙ \bullet ∙ 数据传送
∙ \bullet ∙ 连接释放
▶ \blacktriangleright ▶ TCP连接建立
- 同步位SYN:
SYN=1时,表明是一个连接请求/连接接受报文。- 确认位ACK:
ACK=1时确认号有效,在连接建立后所有传送的报文段都必须把ACK置为1。- 确认号ack:x+1,我要我要我要我要的那个,发我!
期望收到对方下一个报文段的第一个数据字节的序号。若确认号为N,则证明到序号N-1为止的所有数据都已正确收到。- 序号字段seq:给你!
初始序号:y
- 客户端发送连接请求报文段:不携带数据,消耗一个序号。
S Y N = 1 , s e q = x ( 随机序号 ) SYN=1,seq=x(随机序号) SYN=1,seq=x(随机序号)- 服务器向客户端返回确认报文段:服务器端为该TCP连接分配缓存和变量,不携带数据,消耗序号。
S Y N = 1 , A C K = 1 , s e q = y ( 随机序号 ) , a c k = x + 1 ( 确认号 ) SYN=1,ACK=1,seq=y(随机序号), ack=x+1(确认号) SYN=1,ACK=1,seq=y(随机序号),ack=x+1(确认号)- 客户端向服务器端返回确认的确认:客户端为该TCP连接分配缓存和变量,若不携带数据,不消耗序号。
S Y N = 0 , A C K = 1 , s e q = x + 1 ( 发送的 ) , a c k = y + 1 ( 期望从服务器收到的确认号 ) SYN=0,ACK=1,seq=x+1(发送的),ack=y+1(期望从服务器收到的确认号) SYN=0,ACK=1,seq=x+1(发送的),ack=y+1(期望从服务器收到的确认号)
▶ \blacktriangleright ▶ TCP连接释放
- 客户端发送连接释放报文段:停止发送数据,主关闭TCP连接,不携带数据,消耗序号。
F I N = 1 , s e q = u FIN=1,seq=u FIN=1,seq=u- 服务器端回送一个确认报文段,客户到服务器这个方向的连接就释放了一一半关闭状态。
A C K = 1 , s e q = v , a c k = u + 1 ACK=1,seq=v,ack=u+1 ACK=1,seq=v,ack=u+1- 等服务器端发完数据,就发出连接释放报文段,主动关闭TCP连接。
F I N = 1 , A C K = 1 , s e q = w , a c k = u + 1 FIN=1,ACK=1,seq=w,ack=u+1 FIN=1,ACK=1,seq=w,ack=u+1- 客户端回送一个确认报文段,再等到时间等待计时器设置的2MSL(最长报文段寿命)后,连接彻底关闭。
A C K = 1 , s e q = u + 1 , a c k = w + 1 ACK=1,seq=u+1,ack=w+1 ACK=1,seq=u+1,ack=w+1
▶ \blacktriangleright ▶ TCP可靠传输
- 定义
接收方进程从缓存区读出的字节流与发送方发出的字节流是完全一样的。- TCP实现可靠传输的机制
∙ \bullet ∙ 校验
与UDP校验一样,增加伪首部
∙ \bullet ∙ 序号
∙ \bullet ∙ 确认
TCP默认使用累计确认。
∙ \bullet ∙ 重传
超时重传:TCP的发送方在规定的时间内没有收到确认就要重传已发送的报文段。
TCP采用自适应算法,动态改变重传时间RTTs(加权平均往返时间)。
TCP规定每当比期望序号大的失序报文段到达时,就发送一个冗余ACK,指明下一个期待字节的序号。
▶ \blacktriangleright ▶ TCP流量控制
- 定义
∙ \bullet ∙ 流量控制:让发送方慢点,要让接收方来得及接收。
∙ \bullet ∙ TCP利用滑动窗口机制实现流量控制。 ★ \bigstar ★
∙ \bullet ∙ 在通信过程中,接收方根据自己接收缓存的大小,动态地调整发送方的发送窗口大小,即接收窗口rwnd (接收方设置确认报文段的窗口字段来将rwnd通知给发送方)
发送方的发送窗口取 接收窗口rwnd和拥塞窗口cwnd的最小值。 ★ \bigstar ★ ★ \bigstar ★ ★ \bigstar ★- 传输层和数据链路层的流量控制的区别是:传输层定义端到端用户之间的流量控制,数据链路层定义两个中间的相邻结点的流量控制。另外,数据链路层的滑动窗口协议的窗口大小不能动态变化,传输层的窗口大小则可以动态变化。
- 例:
A向B发送数据,连接建立时,B告诉A:“我的rwnd=400(字节)”,设每一个报文段100B,报文段序号初始值为1。
∙ \bullet ∙ TCP为每一个连接设有一个持续计时器,只要TCP连接的一方收到对方的零窗口通知,就启动持续计时器。
∙ \bullet ∙ 若持续计时器设置的时间到期,就发送一个零窗口探测报文段。 接收方收到探测报文段时给出现在的窗口值。
∙ \bullet ∙ 若窗口仍然是0,那么发送方就重新设置持续计时器。
▶ \blacktriangleright ▶ TCP拥塞控制
- 出现拥塞的条件:
∙ \bullet ∙ 对资源需求的总和>可用资源
∙ \bullet ∙ 网络中有许多资源同时呈现供应不足 ⇒ \rArr ⇒网络性能变坏 ⇒ \rArr ⇒网络吞吐量将随输入负荷增大而下降- 拥塞控制:
防止过多的数据注入到网络中。全局性
▶ \blacktriangleright ▶ TCP拥塞控制四种算法
四种算法使用的总结: 在TCP连接建立和网络出现超时时,采用慢开始和拥塞避免算法;当发送方接收到冗余ACK时,采用快重传和快恢复算法。
▶ \blacktriangleright ▶ TCP拥塞控制与TCP流量控制
▶ \blacktriangleright ▶ 应用层协议定义:
- 应用进程交换的报文类型,请求还是响应?
- 各种报文类型的语法,如报文中的各个字段及其详细描述。
- 字段的语义,即包含在字段中的信息的含义。
- 进程何时、如何发送报文,以及对报文进行响应的规则。
▶ \blacktriangleright ▶ 应用层的功能
- 文件传输、访问和管理
- 电子邮件
- 虚拟终端
- 查询服务和远程作业登录
▶ \blacktriangleright ▶ 客户/服务器模型(C/S)
- 定义:
∙ \bullet ∙ 客户(client)和服务器(server’)都是指通信中所涉及的两个应用进程。
∙ \bullet ∙ 客户服务器方式所描述的是进程之间服务和被服务的关系。这里最主要的特征就是:客户是服务请求方,服务器是服务提供方。
- 客户机间不可互相通信
- 客户机是面向用户的
▶ \blacktriangleright ▶ P2P
- 对等关系、逻辑网络
域名空间、域名服务器、解析器
▶ \blacktriangleright ▶ 域名
▶ \blacktriangleright ▶ 域名解析过程
- 客户/服务器模型
- 使用UDP(使用UDP是为了减少开销)
- 53号端口
- 解析过程:
∙ \bullet ∙ 把待解析的域名放在DNS请求报文中,以UDP用户数据报方式发给本地域名服务器。
∙ \bullet ∙ 本地域名服务器在查找域名后,把对应的IP地址放在回答报文中返回。
∙ \bullet ∙ 应用进程获得目的主机的IP地址后即可进行通信。
若本地域名服务器不能回答该请求,则此域名服务器就暂时成为DNS中的另一个客户
∙ \bullet ∙ 并向其他域名服务器发出查询请求。这种过程直至找到能够回答该请求的域名服务器为止。
▶ \blacktriangleright ▶ 互联网域名空间的结构
▶ \blacktriangleright ▶ 区:服务器管辖范围的单位
▶ \blacktriangleright ▶ 域名服务器
- 分类:
根域名服务器 、顶级域名服务器 、权限域名服务器 、本地域名服务器- 根域名服务器
∙ \bullet ∙ 根域名服务器是最高层次的域名服务器,也是最重要的域名服务器。所有的根域名服务器都知道所有的顶级域名服务器的域名和 IP 地址。
∙ \bullet ∙ 不管是哪一个本地域名服务器,若要对互联网上任何一个域名进行解析,只要自己无法解析,就首先求助于根域名服务器。
∙ \bullet ∙ 在互联网上共有 13 个不同 IP 地址的根域名服务器,它们的名字是用一个英文字母命名,从 a 一直到 m(前 13 个字母)。
∙ \bullet ∙ 在使用迭代查询时,根域名服务器把下一步应当找的顶级域名服务器的 IP 地址告诉本地域名服务器。- 顶级域名服务器(即 TLD 服务器)
∙ \bullet ∙ 负责管理在该顶级域名服务器注册的所有二级域名。
∙ \bullet ∙ 当收到 DNS 查询请求时,就给出相应的回答(可能是最后的结果,也可能是下一步应当找的域名服务器的 IP 地址)。- 权限域名服务器
∙ \bullet ∙ 负责一个区的域名服务器。总能将其管辖的主机名转换为该主机的IP地址。
∙ \bullet ∙ 当一个权限域名服务器还不能给出最后的查询回答时,就会告诉发出查询请求的 DNS 客户,下一步应当找哪一个权限域名服务器。- 本地域名服务器
∙ \bullet ∙ 当一个主机发出 DNS 查询请求时,这个查询请求报文就发送给本地域名服务器。
∙ \bullet ∙ 每一个互联网服务提供者 ISP,或一个大学,甚至一个大学里的系,都可以拥有一个本地域名服务器,这种域名服务器有时也称为默认域名服务器。
▶ \blacktriangleright ▶ 域名解析方式
▶ \blacktriangleright ▶ 概述
- 允许客户指明文件的类型与格式,并允许文件具有存取权限。
- 适合于在异构网络中任意计算机之间传送文件。
- 使用TCP实现可靠传输。
▶ \blacktriangleright ▶ FTP的基本工作原理
- FTP的基本概念
∙ \bullet ∙ 即文件传送协议,它允许用户将本地计算机上的文件上传到服务器,或者允许用户从服务器上获得文件副本并将文件下载到本地计算机上。
∙ \bullet ∙ 服务器在进行文件传送时要求用户输入账号和密码。
但Intemet上还有许多FTP服务器都提供自由下载的文件信息,用户登录时不需使用密码,这种FTP服务称为匿名FTP服务。- FTP的工作原理
∙ \bullet ∙ FTP使用“客户机/服务器”的工作方式,客户端需要在自己的计算机上安装FTP客户端软件;
∙ \bullet ∙ 使用FTP可传送任何类型的文件,在进行文件传送时,FTP客户机和服务器之间要建立两个连接:控制连接和数据连接;
∙ \bullet ∙ 控制连接
用于在客户端和服务器之间发送控制信息,如用户名和口令、改变远程目录的命令、取来或放回文件的命令;
∙ \bullet ∙ 数据连接
在控制连接建立之后,即可开始传输文件。
∙ \bullet ∙ 当客户端向服务器发出连接(控制连接) 请求时:
服务器端的默认端口为21,同时将自己选择的端口告知服务器,用于建立数据连接,控制连接在整个会话期间一直打开;
∙ \bullet ∙ FTP客户端所发出的命令通过控制连接发给服务器端的控制进程,控制进程在接收到客户端的请求后,创建一个数据传送过程,该进程用服务器端口号20与客户提供的端口建立用于数据传送的TCP连接, 数据传送完成后关闭该数据传送连接;- FTP的主要参数
∙ \bullet ∙ 命名用户:
在创建命名用户时,一般都要设置密码。用户在登录服务器上传、下载文件时,首先需要输入正确的用户名和密码
∙ \bullet ∙ 匿名用户:
在Serv-UFTP服务器中,对名为anonymous的用户自动识别为匿名用户,但匿名用户只能下载文件;
∙ \bullet ∙ 组:
为简化账户的权限管理,可以将大量的、具有相同访问权限的账户集中到一个组内。在Serv-U FTP服务器中,可以在用户管理中创建用户组。对一个用户组赋予权限,就等同于给组内的每个账户赋予相同的权限。
∙ \bullet ∙ 域:
在Serv-U FTP服务器中,可以创建多个虚拟服务器,每个虚拟的服务器也称作域,一个域是由 IP地址 和端口号唯一识别;
即服务器使用多个IP地址
▶ \blacktriangleright ▶ E-mail概念及原理
- E-mail的基本概念
∙ \bullet ∙ E-mail简称电子邮件,是一种用电子手段进行信息交换的通信方式,也是互联网上最重要的网络应用之一。电子邮件的核心是邮件服务器。
∙ \bullet ∙ 电子邮件地址通常由两部分构成,例如[email protected]
第一部分是信箱名称(yaoliang1949)
第二部分为邮件服务器的域名(sohu.com),两者之间使用@隔开。
∙ \bullet ∙ 发送方的邮件服务器软件在发送邮件时根据第二部分来确定要连接的接收方邮件服务器;
接收邮件服务器软件则使用信箱名来选择对应的邮箱将接收到的邮件存储起来- 发送:SMTP:只能传送一定长度的ASCII码邮件
- 接收:POP3\IMAP
- 基于万维网的电子邮件,如Hotmail、Gmail等。
这种电子邮件的特点是,用户浏览器与Hotmail或Gmail的邮件服务器之间的邮件发送或接收使用的是HTTP,而仅在不同邮件服务器之间传送邮件时才使用SMTP。
▶ \blacktriangleright ▶ 万维网
- 定义
∙ \bullet ∙ 万维网WWW(World Wide Web)是一个大规模的、联机式的信息储藏所/资料空间,是无数个网络站点和网页的集合。- 超媒体与超文本
∙ \bullet ∙ 万维网是一个分布式的超媒体(hypermedia)系统,它是超文本(hypertext)系统的扩充。
∙ \bullet ∙ 每个万维网站点都存放了许多文档。
∙ \bullet ∙ 文档使用链接,从互联网上的一个站点访问另一个站点(即“链接到另一个站点的某个文档”),从而主动地按需获取丰富的信息。
∙ \bullet ∙ 这些文档可以位于世界上任何一个接在互联网上的超文本系统中。超文本是万维网的基础。所谓超文本是指包含指向其他文档的链接的文本(text)。- 万维网的工作方式
∙ \bullet ∙ 万维网以客户/服务器方式工作
∙ \bullet ∙ 用户使用的浏览器就是万维网客户程序,万维网文档所驻留的主机运行服务器程序。
∙ \bullet ∙ 客户程序向服务器程序发出请求,服务器程序向客户程序送回客户所要的万维网文档。
∙ \bullet ∙ 在一个客户程序主窗口上显示出的万维网文档称为页面 (page)。- 统一资源定位符URL
∙ \bullet ∙ 标志分布在整个互联网上的万维网文档
URL一般形式:
<协议>://<主机>:<端口>/<路径>- HTTP协议:
∙ \bullet ∙ 实现万维网上各种超链的链接
资源通过超文本传输协议(HTTP)传送给使用者。- 超文本标记语言 HTML
各种万维网文档的显示与超链链接。
▶ \blacktriangleright ▶ HTTP协议
- 定义
∙ \bullet ∙ HTTP协议定义了浏览器(万维网客户进程)怎样向万维网服务器请求万维网文档,以及服务器怎样把文档传送给浏览器。
∙ \bullet ∙ HTTP 是一个应用层协议,它使用 TCP 连接进行可靠的传送。- 万维网的工作过程 ★ \bigstar ★
- HTTP 的主要特点
∙ \bullet ∙ 是无状态的 (stateless),使用Cookie加数据库跟踪用户,Cookie
∙ \bullet ∙ HTTP采用TCP作为运输层协议,但HTTP协议本身是无连接的(通信双方在交换HTTP报文之前不需要先建立HTTP连接)。- HTTP协议的连接方式
- 非持久连接
对于非持久连接,每个网页元素对象(如JPEG图形、Flash等)的传输都需要单独建立一个TCP连接- 持久连接
万维网服务器在发送响应后仍然在一段时间内保持这条连接,使同一个客户(浏览器)和该服务器可以继续在这条连接上传送后续的 HTTP 请求报文和响应报文。
∙ \bullet ∙ 非流水线方式:
客户在收到前一个响应后才能发出下一个请求。浪费了服务器资源。
∙ \bullet ∙ 流水线方式:
客户在收到 HTTP 的响应报文之前就能够接着发送新的请求报文。提高了下载文档效率。
▶ \blacktriangleright ▶ HTTP报文结构