文章目录
- 计算机网络体系结构
- 计算机网络概述
- 计算机网络的组成
- 计算机网络的功能
- 计算机网络的分类
- 计算机网络的性能指标
- 课后习题
- 计算机网络体系结构与参考模型
- 计算机网络协议、接口、服务的概念
- ISO/OSI参考模型和TCP/IP模型
- 课后习题
- 物理层
- 通信基础
- 基本概念
- 奈奎斯特定理与香农定理
- 编码与调制
- 电路交换、报文交换、分组交换
- 数据报与虚电路
- 课后习题
- 传输介质
- 双绞线、同轴电缆、光纤、无线传输介质
- 物理层接口的特性
- 课后习题
- 物理层设备
- 中继器
- 集线器
- 总结
- 数据链路层
- 数据链路层的功能
- 为网络层提供的服务
- 链路管理
- 帧定界、帧同步与透明传输
- 流量控制
- 差错控制
- 课后习题
- 组帧
- 字符计数法
- 字符填充的首尾定界符法
- 零比特填充的首尾标志法
- 违规编码法
- 差错控制
- 检错编码
- 纠错编码
- 流量控制与可靠传输机制
- 流量控制、可靠传输与滑动窗口机制
- **单帧滑动窗口**与**停止-等待协议**
- 多帧滑动窗口与后退N帧协议(GBN)
- 多帧滑动窗口与选择重传协议(SR)
- 介质访问控制
- 信道划分介质访问控制
- 随机访问介质访问控制
- 轮询访问介质访问控制: **令牌传递协议**
- 局域网
- 局域网的基本概念和体系结构
- 以太网与IEEE802.3
- IEEE 802.11
- 令牌环网的基本原理
- 广域网
- 广域网的基本概念
- PPP协议 (**Point-to-Point Protocol**)
- HDLC协议 (**高级数据链路控制,High-level Data Link Control,HDLC**)
- 数据链路层设备
- 网桥的概念及其基本原理
- 局域网交换机及其工作原理
- 总结
- 网络层
- 网络层的功能
- 异构网络互联
- 路由与转发
- 拥塞控制
- 路由算法
- 静态路由与动态路由
- 距离-向量路由算法
- 链路状态路由算法
- 层次路由
- IPv4
- IPv4分组
- IPv4地址与NAT
- 子网划分与子网掩码、CIDR
- ARP、DHCP、ICMP
- IPv6
- IPv6地址
- 路由协议
- 自治系统 (**Autonomous System,AS**)
- 域内路由与域间路由
- 路由信息协议(**Routing Information Protocol,RIP**)
- 开放最短路径优先(OSPF)协议
- 边界网关协议 (**Border Gateway Protocol,BGP**)
- IP组播
- 组播的概念
- IP组播地址
- IGMP与组播路由算法
- 移动IP
- 移动IP的概念
- 移动IP通信过程
- 网络层设备
- 路由器的组成和功能
- 路由表与路由转发
- 传输层
- 传输层提供的服务
- 传输层的寻址与端口
- 无连接服务与面向连接服务
- UDP协议
- UDP数据报
- UDP校验
- TCP协议
- TCP协议的特点
- TCP报文段
- TCP连接管理
- TCP可靠传输
- TCP流量控制
- TCP拥塞控制
- 应用层
- 网络应用模型
- 客户/服务器模型
- P2P模型
- 域名系统(DNS)
- 层次域名空间
- 域名服务器
- 域名解析过程
- 文件传输协议(FTP)
- FTP的工作原理
- 控制连接与数据连接
- 电子邮件
- 电子邮件系统的组成结构
- SMTP和POP3
- 万维网(WWW)
- WWW的概念与组成结构
- 超文本传输协议(HTTP)
计算机网络体系结构
计算机网络概述
计算机网络的组成
- 从组成部分上看,主要由硬件、软件、协议组成
- 从工作方式上看,主要由边缘部分、核心部分组成
- 从功能组成上看,主要由通信子网、资源子网组成
计算机网络的功能
数据通信
资源共享
分布式处理
提高可靠性
负载均衡
计算机网络的分类
-
按分布范围
- 广域网(WAN)
- 城域网(MAN)
- 局域网(LAN)
- 个人局域网(PAN)
若中央处理器之间的距离非常近(如1m的数量级或更小),则一般称为多处理器而非计算机网络
-
按传输技术
-
广播式网络
- 局域网基本上都采用广播式通信技术,广域网中的无线、卫星通信网络也是
-
点对点网络
- 每条物理线路连接一对计算机,若通信的两台主机之间没有直接连接的线路,则它们之间的分组传输就要通过中间结点进行接收、存储、转发直至目的结点
是否采用分组存储转发与路由选择机制是点对点式网络与广播式网络的重要区别。广域网基本都属于点对点网络
-
-
按拓扑结构
- 总线形
- 星形
- 环形
- 网状
-
按使用者
- 公用网
- 专用网
-
按交换技术
- 电路交换网络
- 在源结点和目的结点之间建立一条专用的通路用于传送数据,包括建立连接、传输数据、断开连接
- 报文交换网络
- 用户数据加上源地址、目的地址、校验码封装成报文,整个报文传送到相邻结点,全部存储后,再转发给下一个站点,重复这一过程直到目的结点,每个报文可以单独选择到达目的结点的路径
- 报文交换网络也称存储-转发网络
- 分组交换网络
- 也称包交换网络,将数据分成较短的固定长度的数据块,在每个数据块中加上目的地址、源地址组成分组(包),以存储-转发方式传输
- 主要特点是单个分组(整个报文的一部分)传送到相邻结点
- 电路交换网络
-
按传输介质
- 分为有线与无线
计算机网络的性能指标
-
带宽
-
时延
- 数据从网络一端传送到另一端所需要的总时间,包括了发送时延、传播时延、处理时延、排队时延
- 发送时延(传输时延)
- 结点将分组的所有比特推向链路所需的时间
- 发送时延 = 分组长度 / 信道宽度
- 传播时延
- 电磁波在信道中传播一定的距离需要花费的时间
- 传播时延 = 信道长度 / 电磁波在信道上的传播速率
- 处理时延
- 数据在交换结点为存储转发而进行的一些必要处理所花费的时间
- 排队时延
- 分组在进入路由器后要先在输入队列中排队等待处理。路由器确定转发端口后,还要在输出队列中排队等待转发
排队时延和处理时延一般可忽略不计,除非另有说明;对于高速链路,提高的仅是数据发送速率而非比特在链路上的传播速率。提高数据的发送速率只是为了减少数据的发送时延
-
时延带宽积
- 发送端发送的第一个比特即将到达终点时,发送端已经发出了多少个比特,又称以比特为单位的链路长度
- 时延带宽积 = 传播时延 * 信道宽度
-
往返时延 (Round-Trip Time,RTT)
- 从发送端发出一个短分组,到发送端收到来自接收端的确认(接收端收到数据后立即发送确认),总共经历的时延
-
吞吐量
- 单位时间内通过某个网络(或信道、接口)的数据量
-
速率(数据传输速率、数据率、比特率)
- 连接到计算机网络上的主机在数字信道上传送数据的速率
-
信道利用率
- 某一信道有百分之多少的时间是有数据通过的
- 信道利用率 = 有数据通过时间 / (有+无)数据通过时间
课后习题
- 选择题:4、10、11、16、17
- 综合题:全没有
计算机网络体系结构与参考模型
计算机网络协议、接口、服务的概念
- 协议
- 接口,同一结点内相邻两层间交换信息的连接点,每层只能为紧邻的层次之间定义结点,不能跨层定义接口
- 服务
- 面向连接服务与无连接服务
- 面向连接服务,通信前,双方必须先建立连接,分配资源,传输结束后释放连接和资源
- 面向无连接服务,通信前不需要先建立连接,需要发送数据时可直接发送。是一种不可靠服务,常被描述为尽最大努力交付
- 可靠服务和不可靠服务
- 可靠服务指网络具有纠错、检错、应答机制,能保证数据正确、可靠地传送到目的地
- 不可靠服务指网络只是尽量正确、可靠地传送,而不能保证数据正确、可靠地传送到目的地
- 有应答服务和无应答服务
- 有答应服务是接收方在收到数据后向发送方给出相应的应答,该应答由传输系统内部自动实现,而不由用户实现
- 无答应服务是指接收方收到数据后不自动给出应答
- 面向连接服务与无连接服务
ISO/OSI参考模型和TCP/IP模型
-
OSI参考模型有7层,自下而上为物理层、数据链路层、网络层、传输层、会话层、表示层、应用层,低三层为通信子网,高三层为资源子网
-
物理层
- 传输单位是比特,任务是透明的传输比特流
- 主要定义数据终端设备和数据通信设备的物理与逻辑连接方法
- 传输单位是比特,任务是透明的传输比特流
-
数据链路层
- 传输单位是帧,任务是将网络层传来的IP数据报组装成帧,功能包括成帧、差错控制、流量控制、传输管理
- 常用协议有SDLC、HDLC、PPP、STP、帧中继
-
网络层
- 传输单位是数据报,任务是把网络层的协议数据单元(分组)从源端传送到目的端,功能包括路由选择、流量控制、拥塞控制、差错控制、网际互联
- 常用协议有IP、IPX、ICMP、IGMP、ARP、RARP、OSPF
-
传输层
- 传输单位是报文段TCP或用户数据报UDP,任务是负责主机中两个进程之间的通信,功能是为端到端连接提供可靠的传输服务
- 数据链路层提供的是点到点的通信,传输层提供的是端到端的通信
- 常用协议有TCP、UDP
-
会话层
- 允许不同主机上的各个进程之间进行会话
-
表示层
- 主要处理在两个通信系统中交换信息的表示方式。不同机器采用的编码和表示方法不同,使用的数据结构也不同
-
应用层
- 常用协议有FTP、SMTP、HTTP
-
TCP/IP模型
-
从低到高依次为网络接口层(对应OSI的物理层和数据链路层)、网际层、传输层、应用层(对应OSI的会话层、表示层、应用层)。TCP/IP由于得到广泛应用而成为事实上的国际标准
-
传输层主要使用
- 传输控制协议(TCP),面向连接的,数据传输的单位是报文段,能够提供可靠交付
- 用户数据报协议(UDP),是无连接的,数据传输的单位是用户数据报,不保证提供可靠的交付,只能提供尽最大努力交付
-
课后习题
- 选择题:1、3、7、8、9、12、13、15、16、18、19、23、24、27
- 综合题:全没有
物理层
通信基础
基本概念
-
数据、信号、码元
- 信号是数据的电气、电磁表现,是数据在传输过程中的存在形式
- 码元指用一个固定时长的信号波形表示一位k进制数字,代表不同离散数值的基本波形
-
信源、信道、信宿
-
信道按传输信号形式的不同,可分为模拟信道和数字信道。按传输介质的不同可分为无线信道和有线信道
-
信道上传送的信号由基带信号和宽带信号之分,基带信号送到数字信道,宽带信号送到模拟信道
-
-
速率、波特、带宽
- 速率也称数据传输速率,表示单位时间内传输的数据量
- 波特率也称码元传输速率,表示单位时间内数字通信系统所传输的码元个数
- 比特率也称信息传输速率,表示单位时间内数字通信系统传输的二进制码元个数
奈奎斯特定理与香农定理
- 在理想低通(没有噪声、带宽有限)的信道中,为了避免码间串扰,极限码元传输速率为2W波特(W是理想低通信道的带宽),若用V表示每个码元离散电平的数目(码元的离散电平数目是指有多少种不同的码元,比如有16种不同的码元,则需要4个二进制位),则极限数据率为
- 理想低通信道下的极限数据传输速率 = 2 W l o g 2 V 2Wlog_2V 2Wlog2V(单位为b/s)
- 对于奈氏准则,可得
- 任何信道中,码元传输速率是有上限的。若传输速率超过此上限,就会出现严重的码间串扰问题,使得接收端不可能完全正确识别码元
- 信道的频带越宽(即通过的信号高频分量多),就可用更高的速率进行码元的有效传输
- 奈氏准则给出了码元传输速率的限制,但并未对信息传输速率给出限制,即未对一个码元可以对应多少个二进制位给出限制
- 香农定理给出了带宽受限且有高斯白噪声干扰的信道的极限数据传输速率,当用此速率进行传输时,可以做到不产生误差,香农定理为
- 信道的极限数据传输速率 = W l o g 2 ( 1 + S / N ) Wlog_2(1+S/N) Wlog2(1+S/N),单位为b/s
- W为信道的带宽,S为信道所传输信号的平均功率,N为信道内部的高斯噪声功率,S/N可计算信噪比(信噪比= 10 l o g 10 ( S / N ) 10log_{10}(S/N) 10log10(S/N),当S/N=10,信噪比为10,当S/N=1000,信噪比为30)
- 对于香农定理,可得
- 信道的带宽或信道中的信噪比越大,信息的极限传输速率越高
- 对一定的传输带宽和一定的信噪比,信息传输速率的上限是确定的
- 只要信息传输速率低于信道的极限传输速率,就能找到某种方法来实现无差错的传输
- 香农定理得出的是极限信息传输速率,实际信道能达到的传输速率要比它低不少
- 奈氏准则只考虑了带宽与极限码元 传输速率的关系,而香农定理考虑到带宽、信噪比,这表明,一个码元对应的二进制位数是有限的
编码与调制
-
把数据变换为模拟信号的过程称为调制,把数据变换为数字信号的过程称为编码
-
数字数据编码为数字信号
-
归零编码,高电平代表1,低电平代表0,每个时钟周期的中间均跳变到低电平
-
非归零编码,与归零编码的区别是不用归零,一个周期可以全部用来传输数据,但无法传递时钟信号,双方难以同步
-
反向非归零编码,与非归零编码的区别是用信号的翻转代表0,信号保持不变代表1。这种方式集成了前两种编码的优点,USB2.0通信的编码方式即为此
-
曼彻斯特编码,将一个码元分成两个相等的间隔,前后为高电平 + 低电平表示1,0则相反。这种编码在每个码元的中间出现跳变,以太网使用的编码方式就是曼彻斯特编码
-
差分曼彻斯特编码,常用于局域网传输,在每个码元的中间都有一次电平的跳转,可以实现自同步,且抗干扰性较好
-
4B/5B编码
-
归零编码
与差分曼彻斯特编码
会在中间跳变
-
-
数字数据调制为模拟信号
-
幅移键控(ASK),改变载波信号的振幅
-
频移键控(FSK),改变载波信号的频率
-
相移键控(PSK),改变载波信号的相位
-
正交振幅调制(QAM)
-
-
模拟数据编码为数字信号
- 采样,对模拟信号进行周期性扫描,把时间上连续的信号变成时间上离散的信号
- 量化,把采样取得的电平幅值按照一定的分级标度转化为对应的数字值并取整数,即连续转化离散
- 编码是把量化的结果转换为与之对应的二进制编码
-
模拟数据调制为模拟信号
- 为了实现传输的有效性,可能需要较高的频率
电路交换、报文交换、分组交换
- 电路交换
- 进行数据传输前,两个结点之间必须先建立一条专用(双方独占) 物理通信路径,电路交换技术分为三个阶段:连接建立、数据传输、连接释放
- 优点
- 通信时延小
- 有序传输
- 没有冲突
- 适用范围广
- 实时性强
- 控制简单
- 缺点
- 建立连接时间长
- 线路独占
- 灵活性差
- 难以规格化
- 电路建立后,除源节点和目的结点外,电路上的任何结点都采取直通方式接收数据和发送数据,即不会存在存储转发所耗费的时间
- 报文交换
- 数据交换的单位是报文,报文携带有目标地址、源地址等信息,报文交换在交换结点采用的是存储转发的传输方式
- 优点
- 无须建立连接
- 动态分配线路
- 提高线路可靠性
- 提高线路利用率
- 提供多目标服务
- 缺点
- 由于数据进入交换结点后要经历存储、转发这一过程,因此会引起转发时延(包括接收报文、校验正确性、排队、发送时间)
- 报文交换对报文的大小没有限制
- 报文交换主要使用在早期,现在较少使用,通常被分组交换方式所取代
- 分组交换
- 同报文交换一样,分组交换也采用存储转发方式,但解决了报文交换中大报文传输的问题,分组交换限制了每次传送的数据块大小的上限
- 优点
- 无建立时延
- 线路利用率高
- 简化了存储管理
- 加速传输
- 减少了出错概率和重发数据量
- 缺点
- 存在传输时延
- 需要传输额外的信息量
- 当分组交换采用数据报服务时,可能会出现失序、丢失、重复分组问题,分组到达目的结点时,要对分组按编号进行排序等工作。若采用虚电路服务,虽无失序问题,但有呼叫建立、数据传输、虚电路释放三个过程
数据报与虚电路
-
由网络层提供,是分组交换的两种方式
-
数据报
-
在端系统中实现的高层协议先把报文拆成若干带有序号的数据单元,并在网络层加上地址等控制信息后形成数据报分组(即网络层的PDU)
-
特点
- 发送分组前不需要建立连接。发送方可随时发送分组
- 网络尽最大努力交付,传输不保证可靠性,所以可能丢失,为每个分组独立地选择路由,转发的路径可能不同,因此分组不一定按序到达目的结点
- 发送的分组中要包括发送端和接收端地完整地址,以便可以独立传输
- 分组在交换结点存储转发时,需要排队等候处理,会带来一定的时延
- 网络具有冗余路径,当某个交换结点或一条链路出现故障时,可相应地更新转发表,对故障地适应能力强
- 存储转发延时一般较小,提高了网络的吞吐量
- 收发双方不独占某条链路,资源利用率较高
-
-
虚电路
-
试图将数据报方式与电路交换方式结合起来,在分组发送之前,要求在发送方和接收方建立一条逻辑上相连的虚电路,并且连接一旦建立,就固定了虚电路所对应的物理路径
-
特点
- 通信链路的建立和拆除需要时间开销
- 路由选择体现在连接建立阶段,连接建立后,就确定了传输路径
- 提供了可靠的通信功能,能保证每个分组正确且有序到达
- 致命弱点是当网络中的某个结点或链路出现故障彻底失效时,所有经过该结点或链路的虚电路将遭到破坏
- 分组首部不包含目的地址,包含的是虚电路标识符,相对于数据报方式,其开销小
-
-
数据报与虚电路服务的比较
数据报 虚电路 连接的建立 不需要 必须有 目的地址 每个分组都有完整地址 仅在建立连接阶段使用,之后每个分组使用长度较短的虚电路号 路由选择 每个分组独立地进行路由选择和转发 属于同一条虚电路的分组按照同一路由转发 分组顺序 不保证分组的有序到达 保证分组的有序到达 可靠性 不保证可靠通信,可靠性由用户主机来保证 可靠性由网络保证 对网络故障的适应性 出故障的结点丢失分组,其它分组路径选择发生变化时可以正常传输 所有经过故障结点的虚电路均不能正常工作 差错处理和流量控制 由用户主机进行流量控制,不保证数据报的可靠性 可由分组交换网负责,也可由用户主机负责
课后习题
- 选择题:1、4、6、9、10、11、12、14、18、20、25、27、32、33、34、35、36、37、38、40、41、42
- 综合题:全没有
传输介质
双绞线、同轴电缆、光纤、无线传输介质
-
传输介质可分为导向传输介质(电磁波被导向沿着固体媒介传播)和非导向传输介质(空气、真空、海水)
-
双绞线
- 绞合可以减少对相邻导线的电磁干扰,为了进一步提高抗电磁干扰能力,在外面再加上一层用金属丝编织的屏蔽层,就是屏蔽双绞线(STP)
-
同轴电缆
-
由内导体、绝缘层、网状编织屏蔽层、塑料外层构成
-
-
光纤
- 利用光导纤维传递光脉冲来进行通信。有光脉冲表示1,无光脉冲表示0
- 主要由纤芯、包层构成
-
无线传输介质
- 无线电波
- 具有很强的穿透能力,可以传输很长的距离
- 微波、红外线、激光
- 需要发送方和接收方之间存在一条视线通路
- 无线电波
物理层接口的特性
- 物理层考虑的是如何在连接到各种计算机的传输媒体上传输数据比特流,而不指具体的传输媒体
主要任务
- 机械特性,指明接口所用接线器的形状尺寸等
- 电气特性,指明在接口电缆的各条线上出现的电压的范围
- 功能特性,指明某条线上出现的某一电平的电压表示何种意义
- 过程特性,指明对于不同功能的各种可能事件的出现顺序
课后习题
- 选择题:3、4、7、10、12
- 综合题:全没有
物理层设备
中继器
- 主要功能是将信号给整形并放大再转发出去,以消除信号经过一长段电缆后而产生的失真、衰减,使信号的波形、强度达到所需要的要求,进而扩大网络传输的距离
- 原理是信号再生(不是简单地将衰减地信号放大)
- 如果某个网络设备具有存储转发的功能,那么可以认为它能连接两个不同的协议;如果该网络设备没有存储转发功能,那么认为它不能连接两个不同的协议。中继器没有存储转发功能,因此不能连接两个速率不同的网段,中继器两端的网段一定要使用同一个协议
- 放大器和中继器都起放大作用,只不过放大器放大的是模拟信号,原理是将衰减的信号放大,而中继器放大的是数字信号,原理是将衰减的信号整形再生
集线器
- 实质上是一个多端口的中继器
总结
- 奈氏准则和香农定理的主要区别是什么?
- 奈氏准则指出码元传输的速率是受限的,香农定理给出了信息传输速率的极限
数据链路层
数据链路层的功能
- 主要作用是加强物理层传输原始比特流的功能,将物理层提供的可能出错的物理连接改造为逻辑上无差错的数据链路,使之对网络层表现为一条无差错的链路。
为网络层提供的服务
-
任务是将源机器中来自网络层的数据传输到目标机器的网络层
-
无确认的无连接服务**
- 源机器发送数据帧时,不需先建立链路连接,目的机器收到数据帧时,不需发回确认。对丢失的帧,数据链路层不负责重发而交给上层处理。适用于实时通信或误码率较低的通信信道,如以太网
-
有确认的无连接服务**
- 源机器发送数据帧时,不需先建立链路连接,但目的机器收到数据帧时,必须发回确认。源机器在所规定的时间内未收到确定信号时,就重传丢失的帧,以提高传输的可靠性。该服务适用于误码率较高的通信信道,如无线通信
-
有确认的面向连接服务**
- 帧传输过程分为三个阶段:建立数据链路、传输帧、释放数据链路。目的机器对收到的每一帧都要给出确认,源机器收到确认后才能发送下一帧,因而该服务的可靠性最高。该服务适用于通信要求(可靠性、实时性)较高的场合
有连接就一定要有确认,即不存在无确认的面向连接的服务
链路管理
- 数据链路层连接的 建立、维持和释放过程 称为 链路管理,主要用于 面向连接 的服务。链路两端的结点要进行通信,必须首先确认对方已处于 就绪状态,并交换一些必要的信息以 对帧序号 初始化,然后才能 建立连接,在传输过程中则要能 维持连接,而在传输完毕后要 释放该连接。在多个站点共享同一物理信道的情况下(如在局域网)如何在要求通信的站点间分配和管理信道 也属于数据链路层管理。
帧定界、帧同步与透明传输
- 两台主机之间传输信息时,必须将网络层的 分组封装成帧,以 帧 的格式进行传送。将一段数据的前后分别添加 首部 和 尾部,就构成了 帧。(
帧长
=
数据部分的长度
+
首部长度
+
尾部长度
帧长 = 数据部分的长度 + 首部长度 + 尾部长度
帧长=数据部分的长度+首部长度+尾部长度)。首部 和 尾部 含有很多控制信息,一个重要作用是 确定帧的界限,即帧定界。
- 帧同步 指的是 接收方应能从接受到的二进制比特流中区分出帧的起始与终止。
- 为了提高帧的传输速率,应当使帧的数据部分的长度尽可能地大于首部和尾部的长度,但每种数据链路层协议都规定了帧的数据部分的长度上限,即 最大传输单元(MTU,Maximum Transmission Unit)
- 如果在数据中恰好出现 与帧定界符相同的比特组合 (会误以为“传输结束”而丢弃后面的数据),那么就要采取有效的措施解决这个问题,即 透明传输。更确切地说,透明传输就是不管所传数据是什么样的比特组合,都应当能在链路上传送。
流量控制
- 限制发送方的数据流量,使其发送速率不超过接收方的接收能力
- 不是数据链路层特有的功能,许多高层协议中也提供此功能,只不过控制对象不同而已。
- 对于 数据链路层,控制的是 相邻两结点之间的数据链路上的流量
- 对于 运输层 来说,控制的是从 源端到目的端之间的流量
- 在OSI体系结构中,数据链路层具有流量控制的功能。而在TCP/IP体系结构中,流量控制功能被移到了传输层
差错控制
-
用以使发送方确定接收方是否正确收到由其发送的数据的方法
-
位错
-
帧中某些位出现了差错。通常采用 循环冗余校验(CRC)方式发现位错,通过自动重传请求(Automatic Repeat Request,ARQ)方式来重传出错的帧。
-
ARQ法:让发送方将要发送的数据帧附加一定的CRC冗余检错码一并发送,接收方则根据检错码对数据帧进行错误检测,若发现错误则丢弃,发送方超时重传该数据帧。
-
ARQ法只需返回很少的控制信息就可有效地确认所发送数据帧是否被正确接收。
-
-
帧错
-
指帧的丢失、重复、或失序等错误
-
在数据链路层引入定时器和编号机制,能保证每一帧最终都能有且仅有一次正确地交付给目的结点
-
课后习题
- 选择题:2、7、8
- 综合题:全没有
组帧
把比特组合成 帧为单位传输,是为了在出错时只重发出错的帧,而不必重发全部数据,从而提高效率。 为了使接收方能正确地接收并检查所传输的帧,发送方必须依据一定的规则把网络层递交的分组封装成帧(称为组帧)。组帧 主要解决 帧定界、帧同步、透明传输 等问题。
组帧时,要同时加首部和尾部,这是因为在网络中信息是以帧为最小单位进行传输的。而分组(即IP数据报)仅是包含在帧中的数据部分,所以不需要加尾部来界定
字符计数法
字符计数法,在 帧头部 使用一个计数字段来 标明帧内字符数。目的结点的数据链路层收到字节计数值时,就知道 后面跟随的字节数,从而可以确定 帧结束的位置。(计数字段提供的字节数包含自身所占用的一个字节)。
最大的问题是,如果计数字段出错,即失去帧边界划分的依据,那么接收方就无法判断帧的结束位和下一帧的开始位,收发双方失去同步
字符填充的首尾定界符法
使用特定字符来定界 一帧的开始与结束。如图,控制字符 SOH 放在 帧的最前面,表示 帧的首部开始。控制字符EOT 表示 帧的结束。
为了使信息位中出现的特殊字符不被误判为帧的首尾定界符,可在特殊字符前面填充一个转义字符(ESC)来加以区分
零比特填充的首尾标志法
允许数据帧包含任意个数的比特,也允许每个字符的编码包含任意个数的比特。使用一个特定的 比特模式,即 01111110 来标志一帧的开始和结束。
为了不使信息位中出现的比特流 01111110 被误判为帧的首尾标志,发送方的数据链路层在信息位中遇到5个连续的“1”时,将自动在其后面插入一个“0”;而接收方每收到5个连续的“1”时,自动删除后面紧跟的**“0”**,以恢复原信息。
零比特填充法很容易由硬件来实现,性能优于字符填充法
违规编码法
- 在物理层进行比特编码时,通常采用 违规编码法。例如,曼侧斯特编码方法将 数据比特“1”编码成“高-低”电平对,将 数据比特“0”编码成“低-高”电平对,而 “高-高”电平对 和 “低-低”电平对在数据比特中是 违规的(即没有采用)。可以借用这些违规编码序列来 定界帧的起始和终止。
局域网 IEEE 802标准就采用了这种方法
-
违规编码法不需要采用任何填充技术,便能实现数据传输的 透明性,但它只适用于 采用冗余编码 的特殊编码环境。
-
由于 字节计数法 中计数字段的脆弱性和字符填充法 实现上的复杂性与不兼容性,目前较常用的组帧方法是 比特填充法 和 违规编码法。
差错控制
- 比特差错:实际通信链路都不是理想的,比特在传输过程中可能会产生差错,1可能会变成0,0也可能会变成1
比特差错是传输差错的一种,本节只讨论比特差错
-
利用编码技术进行差错控制
- 自动重传请求(ARQ,Automatic Repeat Request)
接收端检测出差错时,设法通知发送端重发,直到接收到正确的码字为止
- 前向纠错(FEC,Forward Error Correction)
接收端不但能发现差错,而且能 确定比特串的错误位置,从而 加以纠正。
因此,差错控制又可分为
检错编码
和纠错编码
检错编码
- 采用冗余编码技术。核心思想是:有效数据(信息位)被发送前,先按某种关系附加一定的冗余位,构成一个符合某一规则的码字后再发送。当要发送的有效数据变化时,相应的冗余位也随之变化,使得码字遵从不变的规则。接收端根据收到的码字是否仍符合原规则来判断是否出错。
- 常见的检错编码有 奇偶校验码 和 循环冗余码
- 奇偶校验码
最基本的检错码,分为奇校验码 和 偶校验码。由 n-1位信息元和1位校验元组成
只能检测奇数位的出错情况,但并不知道哪些位出错,也不能发现偶数位的出错情况。意思是,当有1个,3个,5个等奇数个位置上的码出错,这样能被检测到。这是因为,
奇数+奇数=偶数,偶数+奇数=奇数
,即奇数是扭转奇偶类型的数。
- 循环冗余码(Cyclic Redundancy Code)(多项式码)
- 任何一个由二进制数位串组成的代码都可以与一个只含有0和1两个系数的多项式建立一一对应关系。一个k位帧可以视为从** X k − 1 到 X 0 X^{k-1}到X^0 Xk−1到X0的k次多项式的系数序列,这个多项式的阶数为k-1**,高位是 X k − 1 X^{k-1} Xk−1项的系数,下一位是 X k − 2 X^{k-2} Xk−2的系数,以此类推。例如,1110011有7位,表示成多项式是 X 6 + X 5 + X 4 + X + 1 X^6+X^5+X^4+X+1 X6+X5+X4+X+1,而多项式 X 5 + X 4 + X 2 + X X^5+X^4+X^2+X X5+X4+X2+X对应的位串是110110。
- 给定一个m bit的帧或报文,发送器生成一个r bit的序列,称为 帧检验序列(FCS)。这样形成的帧将由 m+r 比特组成。发送方和接收方事先商定一个多项式G(x)【最高位和最低位必须是1】,使这个带检验码的帧刚好能被预先确定的多项式**G(x)**整除。接收方用相同的多项式去除收到的帧,如果无余数,那么认为无差错。
- 通过 循环冗余码(CRC)的检错技术,数据链路层做到了对帧的 无差错接收。也就是说,凡是接收端数据链路层接收的帧,我们都认为这些帧在传输过程中没有产生差错;而接收端丢弃的帧虽然也收到了,但最终因为有差错而被丢弃,即未被接受。
循环冗余码(CRC)是具有纠错功能的,只是数据链路层仅使用了它的检错功能,检测到帧出错则直接丢弃
- CRC计算步骤
- 展开多项式得到CRC除数 (为避免出错,从右往左写)
- 原数据末端加0 (多项式最高是几次就加几个0)
- 从左往右,按位异或 (所得结果位数如果不够长,前面的0不要漏了)
- CRC校验和的长度,等于除数的长度-1
纠错编码
在数据通信的过程中,解决差错问题的一种方法是 在每个要发送的数据块上附加足够的冗余信息,使接收方能够推导出发送方实际送出的应该是什么样的比特串。最常见的纠错编码是 海明码,其实现原理是 在有效信息位中加入几个校验位形成海明码,并把海明码的每个二进制位分配到几个奇偶校验组中。当某一位出错后,就会引起有关的几个校验位的值发生变化,这不但可以发现错位,而且能指出错位的位置,为自动纠错提供依据。
-
海明码的编码原理和过程(举例以数据码1010)
-
确定海明码的位数
设 n为有效信息的位数,k为校验位的位数,则信息位n和校验位k应满足
n + k ≤ 2 k − 1 n+k \le 2^k-1 n+k≤2k−1
若要检测两位错,则需再增加1位校验位,即** k + 1 k+1 k+1**位。海明码位数为 n + k = 7 ≤ 2 3 − 1 n+k=7 \le 2^3-1 n+k=7≤23−1成立,则n,k有效。设信息位为 D 4 D 3 D 2 D 1 ( 1010 ) D_4D_3D_2D_1 (1010) D4D3D2D1(1010),共4位,校验位为 P 3 P 2 P 1 P_3P_2P_1 P3P2P1,共3位。对应的海明码为 H 7 H 6 H 5 H 4 H 3 H 2 H 1 H_7H_6H_5H_4H_3H_2H_1 H7H6H5H4H3H2H1。
-
确定校验位的分布
规定 校验位 P i P_i Pi在海明位号为 2 i − 1 2^{i-1} 2i−1的位置上,其余各位为信息位,因此有
P 1 P_1 P1的海明位号为 2 i − 1 = 2 0 = 1 2^{i-1}=2^0=1 2i−1=20=1,即 H 1 为 P 1 H_1为P_1 H1为P1
P 2 P_2 P2的海明位号为 2 i − 1 = 2 1 = 2 2^{i-1}=2^1=2 2i−1=21=2,即 H 2 为 P 2 H_2为P_2 H2为P2
P 3 P_3 P3的海明位号为 2 i − 1 = 2 2 = 4 2^{i-1}=2^2=4 2i−1=22=4,即 H 4 为 P 3 H_4为P_3 H4为P3
将信息位按原来的顺序插入,则海明码各位的分布如下
H 7 H_7 H7 H 6 H_6 H6 H 5 H_5 H5 H 4 H_4 H4 H 3 H_3 H3 H 2 H_2 H2 H 1 H_1 H1
D 4 D_4 D4 D 3 D_3 D3 D 2 D_2 D2 P 3 P_3 P3 D 1 D_1 D1 P 2 P_2 P2 P 1 P_1 P1
-
分组以形成校验关系
每个数据位用 多个校验位 进行校验,但要满足条件: 被校验数据位的海明位号等于校验该数据位的各校验位海明位号之和(即 H i H_i Hi)。 另外,校验位不需要再被校验。分组校验形成的校验关系如下:
-
校验位取值
校验位 P i P_i Pi的值为第i组(由该校验位校验的数据位)所有位求异或。
根据(3)中的分组有
P 1 = D 1 ⊕ D 2 ⊕ D 4 = 0 ⊕ 1 ⊕ 1 = 0 P 2 = D 1 ⊕ D 3 ⊕ D 4 = 0 ⊕ 0 ⊕ 1 = 1 P 3 = D 2 ⊕ D 3 ⊕ D 4 = 1 ⊕ 0 ⊕ 1 = 0 P_1=D_1 \oplus D_2 \oplus D_4=0 \oplus 1 \oplus 1 = 0 \\ P_2=D_1 \oplus D_3 \oplus D_4=0 \oplus 0 \oplus 1 =1 \\ P_3=D_2 \oplus D_3 \oplus D_4 = 1 \oplus 0 \oplus 1 = 0 P1=D1⊕D2⊕D4=0⊕1⊕1=0P2=D1⊕D3⊕D4=0⊕0⊕1=1P3=D2⊕D3⊕D4=1⊕0⊕1=0
所以,1010对应的海明码为 1010
010
(方框内为校验位,其它为信息位) -
海明码的校验原理
每个校验组分别利用校验位和参与形成该校验位的信息位进行奇偶校验检查,构成 k个校验方程:
S 1 = P 1 ⊕ D 1 ⊕ D 2 ⊕ D 4 S 2 = p 2 ⊕ D 1 ⊕ D 3 ⊕ D 4 S 3 = p 3 ⊕ D 2 ⊕ D 3 ⊕ D 4 S_1=P_1 \oplus D_1 \oplus D_2 \oplus D_4 \\ S_2=p_2 \oplus D_1 \oplus D_3 \oplus D_4 \\ S_3 = p_3 \oplus D_2 \oplus D_3 \oplus D_4 S1=P1⊕D1⊕D2⊕D4S2=p2⊕D1⊕D3⊕D4S3=p3⊕D2⊕D3⊕D4
若 S 3 S 2 S 1 S_3S_2S_1 S3S2S1的值为 000,则说明 无错;否则说明 出错,且这个数就是 错误位的位号,如 S 3 S 2 S 1 S_3S_2S_1 S3S2S1=001,说明第1位出错,即 H 1 H_1 H1出错,直接将该位取反就达到了纠错的目的。** P i P_i Pi**在发送前就算好了,一并发送过去,所以如果跟接收方收到的 D 3 、 D 2 、 D 1 D_3、D_2、D_1 D3、D2、D1再计算出来的 P i P_i Pi对不上的话,就说明是 数据发生变化。
-
海明码纠错d位,需要码距为 2 d + 1 2d+1 2d+1的编码方案;检错d位,需要码距 d + 1 d+1 d+1
-
流量控制与可靠传输机制
流量控制、可靠传输与滑动窗口机制
流量控制涉及对链路上的帧的发送速率的控制,以使接收方有足够的缓冲空间来接收每个帧。基本方法是由接收方控制发送方发送数据的速率,常见的方式有两种:停止-等待协议和滑动窗口协议。
-
停止-等待流量控制基本原理
发送方每发送一帧,都要等待接收方的应答信号,之后才能发送下一帧;接收方每接收一帧,都要反馈一个应答信号,表示可接收下一帧,如果接收方不反馈应答信号,那么发送方必须一直等待。每次只允许发送一帧,然后就陷入等待接收方确认信息的过程中,因而传输效率很低
-
滑动窗口流量控制基本原理
在任意时刻,发送方都维持一组连续的允许发送的帧的序号,称为发送窗口;同时接收方也维持一组连续的允许接收帧的序号,称为接收窗口。发送窗口用来对发送方进行流量控制,而发送窗口的大小 W T W_T WT代表还未收到对方确认信息的情况下,发送方最多还可以发送多少个数据帧。同理,在接收端设置接收窗口是为了控制可以接收哪些数据帧和不可以接收哪些帧。在接收方,只有收到的数据帧的序号落入接收窗口内时,才允许将该数据帧收下。若接收到的数据帧落在接收窗口之外,则一律丢弃。
发送端每收到一个确认帧,发送窗口就向前滑动一个帧的位置,当发送窗口内没有可以发送的帧(即窗口内的帧全部是已发送但未收到确认的帧)时,发送方就会停止发送,直到收到接收方发送的确认帧使窗口移动,窗口内有可以发送的帧后,才开始继续发送
接收端收到数据帧后,将窗口向前移一个位置,并发回确认帧,若收到的数据帧落在接收窗口之外,则一律丢弃
滑动窗口有以下重要特性
- 只有接收窗口向前滑动(同时接收方发送了确认帧)时,发送窗口才有可能(只有发送方收到确认帧后才一定)向前滑动
- 从滑动窗口的概念看,停止-等待协议、后退N帧协议和选择重传协议只在发送窗口大小与接收窗口大小上有所差别。
停止-等待协议
:发送窗口大小=1,接收窗口大小=1后退N帧协议
:发送窗口大小>1,接收窗口大小=1选择重传协议
:发送窗口大小>1,接收窗口大小>1
- 接收窗口的大小为1时,可保证帧的有序接收
- 数据链路层的滑动窗口协议中,窗口的大小在传输过程中是固定的。(与传输层的滑动窗口协议不同)
-
可靠传输机制
-
数据链路层的可靠传输通常使用确认和超时重传两种机制来完成。确认是一种无数据的控制帧,这种控制帧使得接收方可以让发送方知道哪些内容被正确接收。
-
有些情况下为了提高传输效率,将确认捎带在一个回复帧中,称为捎带确认。
-
超时重传是指发送方在发送某个数据帧后就开启一个计时器,在一定时间内如果没有得到发送的数据帧的确认帧,那么就重新发送该数据帧,直到发送成功为止。
-
**自动重传请求(Auto Repeat Request,ARQ)**通过接收方请求发送方重传出错的数据帧来恢复出错的帧,是通信中用于处理信道所带来差错的方法之一。
-
传统自动重传请求分为三种,即
- 停止-等待(Stop-and-Wait)ARQ、
- 后退N帧(Go-Back-N)ARQ
- 选择性重传(Selective Repeat)ARQ。
- 后两种协议是滑动窗口技术与请求重发技术的结合,由于窗口尺寸开到足够大时,帧在线路上可以连续的流动,因此又称其为连续ARQ协议。
-
在数据链路层中,流量控制机制和可靠传输机制是交织在一起的
-
现有的实际有线网络的数据链路层很少采用可靠传输(不同于OSI参考模型的思路)
-
单帧滑动窗口与停止-等待协议
-
在停止-等待协议中,源站发送单个帧后必须等待确认,在目的站的回答到达源站之前,源站不能发送其他的数据帧。从滑动窗口机制的角度看,停止-等待协议相当于发送窗口和接收窗口大小均为1的滑动窗口协议。
-
在停止-等待协议中,除数据帧丢失外,还可能出现以下两种差错
-
到达目的站的帧可能已遭破坏,接收站利用差错检测技术检出后,简单地将该帧丢弃。为了对付这种可能发生的情况,源站装备了计时器。在一个帧发送之后,源站等待确认,如果在计时器计满时仍未收到确认,那么再次发送相同的帧。如此重复,直到该数据帧无错误地到达为止。
-
数据帧正确而确认帧被破坏。此时接收方已经收到正确的数据帧,但发送方收不到确认帧,因此发送方会重传已被接收的数据帧,接收方收到同样的数据帧时会丢弃该帧,并重传一个该帧对应的确认帧。发送的帧交替地用0和1来标识,肯定确认分别用ACK0和ACK1来表示,收到的确认有误时,重传已发送的帧。
对于停止-等待协议,由于每发送一个数据帧就停止并等待,因此用1bit来编号就已经足够。在停止-等待协议中,若连续出现相同发送序号的数据帧,表明发送端进行了超时重传。连续出现相同序号的确认帧时,表明接收端收到了重复帧。
-
为了超时重发和判定重复帧的需要,发送方和接收方都须设置一个帧缓冲区。发送端在发送完数据帧时,必须在其发送缓冲中保留此数据帧的副本,这样才能在出差错时进行重传。只有在收到对方发来的确认帧ACK时,方可清除此副本。
-
由下图可知,停止-等待协议通信信道的利用率很低。为了克服这一缺点,就产生了另外两种协议,即后退N帧协议和选择重传协议。
-
多帧滑动窗口与后退N帧协议(GBN)
-
在后退N帧式ARQ中,发送方无须在收到上一个帧的ACK后才能开始发送下一帧,而是可以连续发送帧。当接收方检测出失序的信息帧后,要求发送方重发最后一个正确接收的信息帧之后的所有未被确认的帧;或者当发送方发送了N个帧后,若发现该N个帧的前一个帧在计时器超时后仍未返回其确认信息,则该帧被判为出错或丢失,此时发送方就不得不重传该出错帧及随后的N个帧。换句话说,接收方只允许按顺序接收帧(所以接收窗口大小为1)。
-
如下图,源站向目的站发送数据帧。当源站发完0号帧后,可以继续发送后续的1号帧,2号帧等。源站每发送完一帧就要为该帧设置超时计时器。由于连续发送了许多帧,所以确认帧必须要指明是对哪一帧进行确认。为了减少开销,GBN协议还规定接收端不一定每收到一个正确的数据帧就必须立即发回一个确认帧,而可以在连续收到好几个正确的数据帧后,才对最后一个数据帧发确认信息,或者可在自己有数据要发送时才将对以前正确收到的帧加以捎带确认。这就是说,对某一数据帧的确认就表明该数据帧和此前所有的数据帧均已正确无误地收到
这就是累计确认,即收到了0、5、6的确认帧,则说明1~5号帧都已经收到了,不需要重传
-
如下图,ACKn表示对第n号帧的确认,表示接收方已正确收到第n号帧及以前的所有帧,下一次期望收到第n+1号帧(也可能是第0号帧)。接收端值按序接收数据帧。虽然在有差错的2号帧之后接着又收到了正确的6个数据帧,但接收端都必须将这些帧丢弃。接收端虽然丢弃了这些不按序的无差错帧,但应重复发送已发送的最后一个确认帧ACK1(这是为了防止已发送的确认帧ACK1丢失)。
-
后退N帧协议的接收窗口为1,可以保证按序接收数据帧。若采用n比特对帧编号,则其发送窗口的尺寸 W T W_T WT应满足** 1 ≤ W T ≤ 2 n − 1 1 \le W_T \le 2^n-1 1≤WT≤2n−1。若发送窗口的尺寸大于 2 n − 1 2^n-1 2n−1,则会造成接收方无法分辨新帧和旧帧**。
-
由上图可看出,后退N帧协议一方面因连续发送数据帧而提高了信道的利用率,另一方面在重传时又必须把原来已传送正确的数据帧进行重传(仅因这些数据帧的前面有一个数据帧出了错),这种做法又使传送效率降低。由此可见,若信道的传输质量很差导致误码率较大时,后退N帧协议不一定优于停止-等待协议。
多帧滑动窗口与选择重传协议(SR)
-
为进一步提高信道的利用率,可设法只重传出现差错的数据帧或计时器超时的数据帧,但此时必须加大接收窗口,以便先收下发送序号不连续但仍处在接收窗口中的那些数据帧。等到所缺序号的数据帧收到后再一并送交主机。这就是选择重传ARQ协议。
-
在选择重传协议中,每个发送缓冲区对应一个计时器,当计时器超时时,缓冲区的帧就会重传。另外,该协议使用了比上述其他协议更有效的差错处理策略,即一旦接收方怀疑帧出错,就会发一个否定帧NAK给发送方,要求发送方对NAK中指定的帧进行重传,如下图
-
选择重传协议的接收窗口尺寸 W R W_R WR和发送窗口尺寸 W T W_T WT都大于1,一次可以发送或接收多个帧。若采用n比特对帧编号,为了保证接收方向前移动窗口后,新窗口序号与旧窗口序号没有重叠部分,需要满足条件:接收窗口 W R W_R WR+发送窗口 W T ≤ 2 n W_T \le 2^n WT≤2n。假定仍然采用累计确认的方法,并且接收窗口 W R W_R WR显然不应超过发送窗口 W T W_T WT(否则无意义),那么接收窗口尺寸不应超过序号范围的一半,即** W R ≤ 2 n − 1 W_R \le 2^{n-1} WR≤2n−1。接收窗为最大值时, W T m a x = W R m a x = 2 n − 1 \rm W_{Tmax}=W_{Rmax}=2^{n-1} WTmax=WRmax=2n−1**。
一般情况下,在SR协议中,接收窗口的大小和发送窗口的大小是相同的。
-
选择重传协议可以避免重复传送那些本已正确到达接收端的数据帧,但在接收端要设置具有相当容量的缓冲区来暂存那些未按序正确收到的帧。接收端不能接收窗口下界以下或窗口上界以上的序号的帧,因此所需缓冲区的数目等于窗口的大小,而不是序号数目。
介质访问控制
任务
- 为使用介质的每个结点隔离来自同一信道上其他结点所传送的信号,以协调活动结点的传输。
内容
- 采取一定的措施,使得两对结点之间的通信不会发生互相干扰的情况。
- 控制方法
信道划分介质访问控制
(静态划分信道)随机访问介质访问控制
(动态分配信道)轮询访问介质访问控制
(动态分配信道)
信道划分介质访问控制
-
将使用介质的每个设备与来自同一通信信道上的其他设备的通信隔离开来,把时域和频域资源合理地分配给网络上的设备。
-
多路复用技术(实现信道划分介质访问控制)
- 当传输介质的带宽超过传输单个信号所需的带宽时,人们就通过在一条介质上同时携带多个传输信号的方法来提高传输系统的利用率
- 把多个信号组合在一条物理信道上进行传输,使多个计算机或终端设备共享信道资源,提高了信道的利用率
- 可把多个输入通道的信息整合到一个复用通道中,在接收端把收到的信息分离出来并传送到对应的输出通道
-
信道划分的实质,就是通过分时、分频、分码等方法,把原来的一条广播信道,逻辑上分为几条用于两个结点之间通信的互不干扰的子信道,实际上就是把广播信道转变为点对点信道。
-
频分多路复用(FDM,Frequency-division multiplexing)
-
将多路基带信号调制到不同频率载波上,再叠加形成一个复合信号的多路复用技术。在物理信道的可用带宽超过单个原始信号所需带宽的情况下,可将该物理信道的总带宽分割成若干与传输单个信号带宽相同(或略宽)的子信道,每个子信道传输一种信号
-
每个子信道分配的带宽可不相同,但它们的总和必须不超过信道的总带宽。在实际应用中,为了防止子信道之间的干扰,相邻信道之间需要加入**“保护频带”**
-
频分多路复用的优点在于充分利用了传输介质的带宽,系统效率较高,由于技术比较成熟,实现也较容易
-
-
时分多路复用(TDM,Time-division multiplexing)
-
将一条物理信道按时间分成若干时间片,轮流地分配给多个信号使用。每个时间片由复用的一个信号占用,不像FDM那样,同一时间同时发送多路信号。这样,利用每个信号在时间上的交叉,就可以在一条物理信道上传输多个信号。
-
由于计算机数据的突发性,一个用户对已经分配到子信道的利用率一般不高。统计时分多路复用(STDM,异步时分多路复用,Statistical-Time-division multiplexing)是TDM的一种改进,它采用STDM帧,STDM帧并不固定分配时隙,而按需动态地分配时隙,当终端有数据要传送时,才会分配到时间片,因此可以提高线路的利用率。
-
-
波分多路复用(WDM,Wavelength-division multiplexing)
-
即光的频分多路复用,在一根光纤中传输多种不同波长(频率)的光信号,由于波长(频率)不同,各路光信号互不干扰,最后再用波长分解复用器将各路波长分解出来。
-
由于光波处于频谱的高频段,有很高的带宽,因而可以实现多路的波分复用
-
-
码分多路复用(CDM,Code-division multiplexing)
-
采用不同的编码来区分各路原始信号的一种复用方式。与FDM和TDM不同,它既共享信道的频率,又共享时间
-
更常用的名词是码分多址(Code Division Multiple Access,CDMA),其原理是每个比特时间再划分成m个短的时间槽,称为码片(Chip),通常m的值是64或128。
-
设m为8。每个站点被指派一个唯一的m位码片序列。发送1时,站点发送它的码片序列;发送0时,站点发送该码片序列的反码。当两个或多个站点同时发送时,各路数据在信道中线性相加。为从信道中分离出各路信号,要求各个站点的码片序列相互正交。
-
CDMA的原理
-
假如站点A的码片序列被指派为00011011,则A站发送00011011就表示发送比特1,发送11100100就表示发送比特0。
为了方便,按惯例将码片中的0写作**-1**,将1写作**+1**
因此,A站的码片序列是**-1-1-1+1+1-1+1+1**
-
令向量S表示A站的码片向量,令T表示B站的码片向量。两个不同站的码片序列正交,即向量S和T的规格化内积为0
S ⋅ T ≡ 1 m ∑ i = 0 m S i T i = 0 S·T \equiv \frac{1}{m} \sum_{i=0}^{m}S_iT_i=0 S⋅T≡m1i=0∑mSiTi=0 -
任何一个码片向量和该码片向量自身的规格化内积都是1,任何一个码片向量和该码片反码的向量的规格化内积都是**-1**
S ⋅ S = 1 m ∑ i = 1 m S i S i = 1 m ∑ i = 1 m S i 2 = 1 m ∑ i = 1 m ( ± 1 ) 2 = 1 S·S=\frac{1}{m} \sum_{i=1}^{m}S_iS_i=\frac{1}{m} \sum_{i=1}^mS_i^2=\frac1m\sum_{i=1}^m(\pm1)^2=1 S⋅S=m1i=1∑mSiSi=m1i=1∑mSi2=m1i=1∑m(±1)2=1 -
令向量T为(-1 -1 +1 -1 +1 +1 +1 -1),当A站向C站发送数据1时,就发送了向量(-1 -1 +1 -1 +1 +1 +1 -1)。当B站向C站发送数据0时,就发送了向量(+1 +1 -1 +1 -1 -1 -1 +1)。两个向量到了公共信道上就进行叠加,实际上就是线性相加,得到
S − T = ( 0 0 − 2 2 0 − 2 0 2 ) S-T=(0 \quad 0 \quad -2 \quad 2 \quad 0 \quad -2 \quad 0 \quad 2) S−T=(00−220−202) -
到达C站后,进行数据分离,如果要得到来自A站的数据,C站就必须知道A站的码片序列,让S与S-T进行规格化内积。根据叠加原理,其他站点的信号都在内积的结果中被过滤掉了,内积的相关项都是0,而只剩下A站发送的信号。得到
S ⋅ ( S − T ) = 1 S·(S-T)=1 S⋅(S−T)=1 -
所以A站发出的数据是1。同理,如果要得到来自B站的数据,那么
T ⋅ ( S − T ) = − 1 T·(S-T)=-1 T⋅(S−T)=−1 -
因此从B站发送过来的信号向量是一个反码向量,代表0
-
-
-
码分多址复用技术具有频谱利用率高、抗干扰能力强、保密性强、语音质量好等优点,还可以减少投资和降低运行成本,主要用于无线通信系统,特别是移动通信系统。
-
-
随机访问介质访问控制
-
随机访问协议
-
在随机访问协议中,不采用集中控制方式解决发送信息的次序问题,所有用户能根据自己的意愿随机地发送信息,占用信道全部速率。
-
在总线形网络中,当有两个或多个用户同时发送信息时,就会产生帧的冲突(碰撞,即前面所说的相互干扰),导致所有冲突用户的发送均已失败告终。
-
为了解决随机接入发生的碰撞,每个用户需要按照一定的规则反复地重复传它的帧,直到该帧无碰撞地通过。
-
常用的协议有ALOHA协议,CSMA协议,CSMA/CD协议和CSMA/CA协议等,它们的核心思想是:胜利者通过争用获得信道,从而获得信息的发送权。因此,随机访问介质控制协议又称为争用型协议。
-
如果介质访问控制采用信道划分机制,那么结点之间的通信要么共享空间,要么共享时间,要么两者都共享;而如果采用随机访问控制机制,那么各结点之间的通信就可既不共享时间,也不共享空间。所以随机介质访问控制实质上是一种将广播信道转为点到点信道的行为。
-
-
ALOHA协议
(Additive Link On-line HAwaii system)-
纯ALOHA协议
-
当网络中的任何一个站点需要发送数据时,可以不进行任何检测就发送数据。如果在一段时间内未收到确认,那么该站点就认为传输过程中发生了冲突。
-
发送站点需要等待一段时间后,再发送数据,直至发送成功。
-
假设网络负载( T 0 T_0 T0时间内所有站点发送成功的和未成功而重传的帧数)为G,则纯ALOHA网络的吞吐量( T 0 T_0 T0时间内成功发送的平均帧数)为** S = G e − 2 G S=Ge^{-2G} S=Ge−2G。当G=0.5时,S=$0.5e^-1 \approx 0.184 $,这是吞吐量S可能达到的极大值**。可见,纯ALOHA网络的吞吐量很低。为了克服这一缺点,人们在原始的纯ALOHA协议的基础上改进成时隙ALOHA协议。
-
-
时隙ALOHA协议
-
把所有各站在时间上同步起来,并将时间划分为一段段等长的时隙(Slot),规定只能在每个时隙开始时才能发送一个帧。从而避免了用户发送数据的随意性,减少了数据产生冲突的可能性,提高了信道的利用率。
-
时隙的长度 T 0 T_0 T0使得每个帧正好在一个时隙内发送完毕。每个帧在到达后,一般都要在缓存中等待一段小于 T 0 T_0 T0的时间,然后才能发送出去。在一个时隙内有两个或两个以上的帧到达时,在下一个时隙将产生碰撞。碰撞后重传的策略与纯ALOHA的情况是相似的。
-
时隙ALOHA网络的吞吐量S与网络负载G的关系是** S = G e − G S=Ge^{-G} S=Ge−G。当G=1时, S = e − 1 ≈ 0.368 S=e^{-1} \approx 0.368 S=e−1≈0.368。这是吞吐量S可能达到的极大值。可见,时隙ALOHA的网络比纯ALOHA网络的吞吐量大了1倍**。
-
时隙ALOHA系统的效率虽然是纯ALOHA系统的两倍,但每个站点都是随心所欲地发送数据的,即使其他站点正在发送也照发不误,因此发送碰撞的概率很大。
-
-
-
CSMA协议
(Carrier Sense Multiple Access)-
每个站点在发送前都先侦听一下共用信道,发现信道空闲后再发送,就会大大降低冲突的可能,从而提高信道的利用率。
-
CSMA协议是在ALOHA协议基础上提出的一种改进协议,它与ALOHA协议的主要区别是多了一个载波侦听装置
-
根据侦听方式和侦听到信道忙后的处理方式不同,CSMA分为三种
-
1-坚持CSMA
(1-persistent CSMA)-
一个结点要发送数据时,首先侦听信道;如果信道空闲,那么立即发送数据;如果信道忙,那么等待,同时继续侦听直至信道空闲;如果发生冲突,那么随机等待一段时间后,再重新开始侦听信道
1-坚持的含义是:侦听到信道忙后,继续坚持侦听信道;侦听到信道空闲后,发送帧的概率为1,即立刻发送数据。
-
传播延迟对1-坚持CSMA协议的性能影响较大。结点A开始发送数据时,结点B也正好有数据要发送,但这时结点A发出数据的信号还未到达结点B,结点B侦听到信道空闲,于是立即发送数据,结果必然导致冲突。即使不考虑延迟,1-坚持CSMA协议也可能产生冲突。
- 结点A正在发送数据时,结点B和C也准备发送数据,侦听到信道忙,于是坚持侦听,结果当结点A一发送完毕,结点B和C就会立即发送数据,同样导致冲突。
-
-
非坚持CSMA
(Non-persistent CSMA)- 一个结点要发送数据时,首先侦听信道;如果空闲,立即发送数据;如果忙,放弃侦听,等待一个随机的时间后再重复上述过程。
- 侦听到信道忙后就放弃了侦听,因此降低了多个结点等待信道空闲后同时发送数据导致冲突的概率,但也会增加数据在网络中的平均延迟,可见,信道利用率的提高是以增加数据在网络中的延迟时间为代价的
-
p-坚持CSMA
(P-persistent CSMA)- 用于时分信道
- 一个结点要发送数据时
- 首先侦听信道
- 忙,持续侦听,直到信道空闲
- 空闲,以概览p发送数据,以概览1-p推迟到下一个时隙
- 如果在下一个时隙信道仍然空闲,那么仍以概率p发送数据,以概率1-p推迟到下一个时隙
- 这个过程一直持续到数据发送成功或因其他结点发送数据而检测到信道忙为止,若是后者,则等待下一个时隙再重新开始侦听
- p-坚持CSMA目的是降低1-坚持 CSMA协议中多个结点检测到信道空闲后同时发送数据的冲突概览。采用坚持侦听的目的是,试图克服非坚持CSMA协议中由于随即等待而造成的延迟时间较长的缺点。
- p-坚持CSMA协议是非坚持CSMA协议和1-坚持CSMA协议的折中方案。
-
-
CSMA/CD协议
(Carrier Sense Multiple Access with Collision Detection,载波侦听多路访问/碰撞检测)-
是CSMA协议的改进方案,适用于总线形网络或半双工网络环境
-
发送前先侦听,每个站在发送前先要检测一个总线上是否有其他站点正在发送数据,若有则暂时不发送数据,等待信道变为空闲时再发送。“碰撞检测”就是边发送边侦听,即适配器边发送数据边检测信道上信号电压的变化情况,以便判断自己在发送数据时其他站点是否也在发送数据
-
CSMA/CD的工作流程可简单概括为先听后发,边听边发,冲突停发,随机重发
- 适配器从网络层获得一个分组,封装成以太网帧,放入适配器的缓存,准备发送
- 如果适配器侦听到信道空闲,那么它开始发送该帧。如果适配器侦听到信道忙,那么它持续侦听直至信道上没有信号能量,然后开始发送该帧。
- 在发送过程中,适配器持续检测信道。若一直未检测到碰撞,则顺利地把这个帧发送完毕。若检测到碰撞,则中止数据的发送,并发送一个拥塞信号,以让所有用户知道。
- 在中止发送后,适配器就执行指数退避算法,等待一段随机时间后返回到步骤2
-
电磁波在总线上的传播速率总是有限的,因此,当某个时刻发送站检测到信道空闲时,此时信道不一定是空闲的。如下图,可知CSMA/CD中的站不可能同时进行发送和接收,因此采用CSMA/CD的协议的以太网只能进行半双工通信
-
由上图可知,站A在发送帧后至多经过时间** 2 τ 2\tau 2τ (端到端传播时延的2倍)就能知道所发送的帧有没有发生碰撞(当 δ → 0 \delta \rightarrow 0 δ→0时)。因此把以太网端到端往返时间 2 τ 2 \tau 2τ称为争用期(又称冲突窗口或碰撞窗口)。每个站在自己发送数据之后的一小段时间内,存在发生碰撞的可能性,只有经过争用期这段时间还未检测到碰撞时,才能确定**这次发送不会发生碰撞。
-
为了确保发送站在发送数据的同时能检测到可能存在的碰撞,需要在发送完帧之前就能收到自己发送出去的数据,即帧的传输时延至少要两倍于信号在总线中的传播时延,所以CSMA/CD总线网中的所有数据帧都必须要大于一个最小帧长。
-
任何站点收到帧长小于最小帧长的帧时,就把它当作无效帧立即丢弃。
最小帧长 = 总线传播时延 × 数据传输速率 × 2 最小帧长=总线传播时延 \times 数据传输速率 \times 2 最小帧长=总线传播时延×数据传输速率×2 -
除检测冲突外, CSMA/CD还能从冲突中恢复, 一旦发生了冲突, 参与冲突的两个站点紧接着再次发送是没有意义的, 如果它们这样做, 那么将会导致无休止的冲突, CSMA/CD采用二进制指数退避算法来解决碰撞问题, 算法精髓如下
- 确定基本退避时间, 一般取两倍的总线端到端传播时延** 2 τ 2 \tau 2τ** (即争用期)
- 定义参数k, 它等于重传次数, 但k不超过10, 即k=min[重传次数, 10]
- 从离散的整数集合[0, 1, …, 2 k − 1 2^k-1 2k−1]中随机取出一个数r,重传所需要退避的时间就是r倍的基本退避时间, 即** 2 r τ 2r\tau 2rτ**
- 当重传达16次仍不能成功时, 说明网络太拥挤, 认为此帧永远无法正确发出, 抛弃此帧并向高层报告出错
-
使用二进制指数退避算法可使重传需要推迟的平均时间随重传次数的增大而增大, (也称动态退避), 因而能降低发生碰撞的概率, 有利于整个系统的稳定
-
-
CSMA/CA协议
-
CSMA/CD协议已成功应用于使用有线连接的局域网, 但在无线局域网环境下, 却不能简单地搬用CSMA/CD协议, 特别是碰撞检测部分, 主要原因有二
- 接收信号的强度往往会远小于发送信号的强度, 且在无限介质上信号强度的动态变化范围很大, 因此若要实现碰撞检测, 则在硬件上的花费就会过大
- 在无线通信中, 并非所有的站点都能够听见对方, 即存在隐蔽站问题
-
为此, 802.11标准定义了广泛应用于无线局域网的CSMA/CA协议, 它对CSMA/CD协议进行修改, 把碰撞检测改为碰撞避免 (Collision Avoidance, CA), 碰撞避免并不是指协议可以完全避免碰撞, 而是指协议的设计要尽量降低碰撞发生的概率. 由于802.11无线局域网不使用碰撞检测, 一旦站点开始发送一个帧, 就会完全地发送该帧, 但碰撞存在时仍然发送整个数据帧(尤其是长数据帧)会严重降低网络的效率, 因此要采用碰撞避免技术降低碰撞的可能性
-
由于无线信道的通信质量远不如有线信道, 802.11使用链路层**确认/重传 (ARQ)**方案, 即站点每通过无线局域网发送完一帧, 就要在收到对方的确认帧后才能继续发送下一帧
-
为了尽量避免碰撞, 802.11规定, 所有的站完成发送后, 必须再等待一段很短的时间( 继续监听) 才能发送下一帧. 这段时间称为帧间间隔(InterFrame Space, IFS). 帧间间隔的长短取决于该站要发送的帧的类型, 802.11使用了3种IFS
SIFS (短IFS)
- 最短的IFS, 用来分隔属于一次对话的各帧, 使用SIFS的帧类型有ACK帧, CTS帧, 分片后的数据帧, 以及所有回答AP探询的帧等
PIFS (点协调IFS)
- 中等长度的IFS, 在PCF操作中使用
DIFS (分布式协调IFS)
- 最长的IFS, 用于异步帧竞争访问的时延
-
CSMA/CA的退避算法和CSMA/CD稍有不同, 信道从忙态变为空闲态时, 任何一个站要发送数据帧, 不仅都要等待一个时间间隔, 而且要进入争用窗口, 计算随机退避时间以便再次试图接入信道, 因此降低了碰撞发生的概率. 当且仅当检测到信道空闲且这个数据帧是要发送的第一个数据帧时, 才不使用退避算法, 其他所有情况都必须使用退避算法, 具体为
- 在发送第一个帧前检测到信道忙
- 每次重传
- 每次成功发送后要发送下一帧
-
CSMA/CA算法归纳如下
- 若站点最初有数据要发送 (而不是发送不成功再进行重传), 且检测到信道空闲, 在等待时间DIFS后, 就发送整个数据帧
- 否则, 站点执行CSMA/CA退避算法, 选取一个随机回退值. 一旦检测到信道忙, 退避计时器就保持不变. 只要信道空闲, 退避计时器就进行倒计时
- 当退避计时器减到0时 (这时信道只可能是空闲的) , 站点就发送整个帧并等待确认
- 发送站若收到确认, 就知道已发送的帧被目的站正确接收, 这时如果要发送第二帧, 就要从步骤2开始
-
若发送站在规定时间内没有收到确认帧ACK (由重传计时器控制), 就必须重传该帧, 再次使用CSMA/CA协议争用该信道, 直到收到确认, 或经过若干次重传失败后放弃发送
-
处理隐蔽站问题, RTS 和 CTS
-
如下图, 站A和B都在AP的覆盖范围内, 但A和B相距较远, 彼此都听不见对方. 当A和B检测到信道空闲时, 都向AP发送数据, 导致碰撞的发生, 这就是隐蔽站问题
-
为了避免该问题, 802.11允许发送站对信道进行预约, 源站要发送数据帧之前先广播一个短请求发送RTS控制帧, 它包括源地址, 目的地址, 这次通信(含相应的确认帧) 所持续的时间, 该帧能被其范围内包括AP在内的所有站点听到. 若信道空闲, 则AP广播一个允许发送CTS控制帧, 它包括这次通信所需的持续时间(从RTS帧复制), 该帧也能被其范围内包括A和B在内的所有站点听到. B和其他站听到CTS后, 在CTS帧中指明的时间内将抑制发送
- CTS帧有两个目的
- 给源站明确的发送许可
- 指示其他站点在预约期内不要发送
- CTS帧有两个目的
-
-
-
-
CSMA/CD与CSMA/CA主要有如下区别
CSMA/CD可以检测冲突, 但无法避免
, CSMA/CA发送数据的同时不能检测信道上有无冲突, 本结点处没有冲突并不意味着在接收结点处就没有冲突, 只能尽量避免
-
传输介质不同
-
CSMA/CD用于总线形以太网, CSMA/CA用于无线局域网802.11a/b/g/n等
-
检测方式不同
-
CSMA/CD通过电缆中的电压变化来检测
- 而CSMA/CA采用能见检测, 载波检测和能量载波混合检测三种检测信道空闲的方式
-
轮询访问介质访问控制: 令牌传递协议
-
用户不能随机地发送信息, 而是要通过一个集中控制地监控站, 以循环方式轮询每个结点, 再决定信道的分配. 当某结点使用信道时, 其他结点都不能使用信道. 典型的轮询访问介质访问控制协议是令牌传递协议, 主要用在令牌局域网中
-
一个令牌在各结点间以某个固定的次序交换. 令牌是由一组特殊的比特组合而成的帧. 当环上的一个站希望传送帧时, 必须等待令牌. 一旦收到令牌, 站点便可启动发送帧.
- 帧中包括目的站的地址, 以标识哪个站应接收此帧
- 帧在环上传送时, 不管该帧是否是发给本站点的, 所有站点都进行转发, 直到该帧回到它的始发站, 并由该始发站撤销该帧
- 帧的目的站除转发帧外, 应针对该帧维持一个副本, 并通过在帧的尾部设置响应比特来指示已收到此副本
- 站点在发送完一帧后, 应释放令牌, 以便让其他站使用
-
当计算机都不需要发送数据时, 令牌就在环形网上游荡, 而需要发送数据的计算机只有在拿到该令牌后才能发送数据帧, 因此不会发生冲突 (因为令牌只有一个)
-
在令牌传递网络中, 传输介质的物理拓扑不必是一个环, 但是为了把对介质访问的许可从一个设备传递到另一个设备, 令牌在设备间的传递通路逻辑上必须是一个环
-
轮询介质访问控制非常适合负载很高的广播信道(指多个结点在同一时刻发送数据概率很大的信道), 可以想象, 如果这样的广播信道采用随机介质访问控制, 那么发生冲突的概率很大, 而采用轮询介质访问控制则可以很好地满足各结点间的通信需求
-
轮询介质访问控制既不共享时间, 也不共享空间, 它实际上是在随机介质访问控制的基础上, 限定了有权力发送数据的结点只能有一个
-
即使是广播信道也可通过介质访问控制机制使广播信道逻辑上变为点对点的信道, 所以说数据链路层研究的是点到点之间的通信
局域网
局域网的基本概念和体系结构
-
主要特点
- 为一个单位所拥有, 且地理范围和站点数目均有限
- 所有站点共享较高的总带宽(即较高的数据传输速率)
- 较低的时延和较低的误码率
- 各站为平等关系而非主从关系
- 能进行广播和组播
-
局域网的特性主要由三个要素决定,
拓扑结构
,传输介质
,介质访问控制方式
, 其中最重要的是介质访问控制方式
, 它决定着局域网的技术特性 -
常见的局域网拓扑结构主要有以下4大类
星形结构
环形结构
总线形结构
星形和总线形结合的复合型结构
-
局域网可以使用双绞线, 铜缆, 光纤等多种传输介质, 其中双绞线为主流传输介质
-
局域网的介质访问控制方式主要有CSMA/CD, 令牌总线, 令牌环
- 前两种方法主要用于总线形局域网
- 令牌环主要用于环形局域网
-
三种特殊的局域网拓扑实现如下
以太网
- 目前使用范围最广的局域网, 逻辑拓扑是总线形结构, 物理拓扑是星形或拓展星形结构
令牌环
(Token Ring, IEEE 802.5)- 逻辑拓扑是环形结构, 物理拓扑是星形结构
FDDI
(光纤分布数字接口, IEEE 802.8)- 逻辑拓扑是环形结构, 物理拓扑是双环结构
-
IEEE802标准定义的局域网参考模型只对应于OSI参考模型的
数据链路层
和物理层
, 并将数据链路层
拆分为两个子层:逻辑链路控制(LLC)子层
和媒体接入控制(MAC)子层
, 与接入传输媒体有关的内容都放在MAC子层, 它向上层屏蔽对物理层访问的各种差异, 提供对物理层的统一访问接口, 主要功能包括: 组帧和拆卸帧, 比特传输差错检测, 透明传输. LLC子层与传输媒体无关, 它向网络层提供无确认无连接, 面向连接, 带确认无连接, 高速传送共4种不同的连接服务类型由于以太网在局域网市场中取得垄断地位, 几乎成为局域网的代名词, 而802委员会制定的LLC子层作用已经不大, 因此现在很多网卡仅装有MAC协议而没有LLC协议
以太网与IEEE802.3
-
该标准是一种基带总线形的局域网标准, 它描述
物理层
和数据链路层
的MAC子层的实现方法 -
以太网逻辑上采用总线形拓扑结构, 以太网中所有计算机共享同一条总线, 信息以广播方式发送. 为了保证数据通信的方便性和可靠性, 以太网简化了通信流程并使用了CSMA/CD方式对总线进行访问控制
-
严格来说, 以太网应当是指符合DIX Ethernet V2标准的局域网, 但DIX Ethernet V2标准与IEEE 802.3标准只有很小的差别, 因此通常将802.3局域网简称为以太网
-
以太网采用两项措施以简化通信
- 采用无连接的工作方式, 不对发送的数据帧编号, 也不要求接收方发送确认, 即以太网尽最大努力交付数据, 提供的是不可靠服务, 对于差错的纠正则由高层完成
- 发送的数据都使用曼彻斯特编码的信号, 每个码元的中间出现一次电压转换, 接收端利用这种电压转换方便地把位同步信号提取出来
-
以太网的传输介质与网卡
-
常用的传输介质有4种, 粗缆, 细缆, 双绞线, 光纤, 各种传输介质的适用情况如下
参数 10 BASE 5 10 BASE 2 10 BASE-T 10 BASE-FL 传输媒体 基带同轴电缆(粗缆) 基带同轴电缆(细缆) 非屏蔽双绞线 光纤对(850nm) 编码 曼彻斯特编码 曼彻斯特编码 曼彻斯特编码 曼彻斯特编码 拓扑结构 总线形 总线形 星形 点对点 最大段长 500m 185m 100m 2000m 最多结点数目 100 30 2 2 10 BASE-T 非屏蔽双绞线以太网拓扑结构为星形网, 星形网中心为集线器, 但使用集线器的以太网在逻辑上仍然是一个总线网, 属于一个冲突域
-
计算机与外界局域网的连接时通过网络接口板(网络适配器 Adapter)或(网络接口卡 Network Interface Card, NIC)实现的. 网卡上装有处理器, 存储器, 是工作在
数据链路层
的网络组件. 网卡和局域网的通信是通过电缆或双绞线以串行方式进行的, 而网卡和计算机的通信则是通过计算机主板上的I/O总线以并行方式进行的. 因此, 网卡的重要功能就是进行数据的串并转换. 网卡不仅实现与局域网传输介质之间的物理连接和电信号匹配,还涉及帧的发送与接收、帧的封装与拆封、介质访问控制、数据的编码与解码、数据缓存功能。 -
全世界的每块网卡在出厂时都有一个唯一的代码,称为介质访问控制地址(MAC),这个地址用于控制主机在网络上的数据通信。数据链路层设备(网桥,交换机等)都使用各个网卡的MAC地址。另外,网卡控制着主机对介质的访问,因此网卡也工作在物理层,因为它只关注比特,而不关注任何地址信息和高层协议信息。
-
-
以太网的MAC帧
-
每块网卡中的MAC地址也称为物理地址;MAC地址长6字节,一般用连字符(或冒号)分隔的12个十六进制数表示,如02-60-8c-e4-b1-21。高24位为厂商代码,低24位为厂商自行分配的网卡序列号,严格来讲,局域网的地址应是每个站的名字或标识符
-
由于总线上使用的是广播通信,因此网卡从网络上每收到一个MAC帧,首先要用硬件检查MAC帧中的MAC地址。如果是发往本站的帧,那么就收下,否则丢弃
-
以太网MAC帧格式有两种标准:DIX Ethernet V2标准(即以太网V2标准)和IEEE 802.3标准
-
以太网V2标准
-
前导码
- 使接收端与发送端时钟同步。在帧前面插入的8字节可再分为两个字段
- 第一个字段共7字节,是前同步码,用来快速实现MAC帧的比特同步
- 第二个字段是帧开始定界符,表示后面的信息就是MAC帧
MAC帧并不需要帧结束符,因为以太网在传送帧时,各帧之间必须有一定的间隙。因此,接收端只要找到帧开始定界符,其后面连续到达的比特流就属于同一个MAC帧,所以上图只有帧开始定界符,但不要误以为以太网MAC帧不需要尾部,在
数据链路层
上,帧即要加首部,也要加尾部 - 使接收端与发送端时钟同步。在帧前面插入的8字节可再分为两个字段
-
地址
- 通常使用6字节(48bit)地址(MAC地址)
-
类型
- 2字节,指出数据域中携带的数据应交给哪个协议实体处理
-
数据
- 461500字节,包含高层的协议消息。由于CSMA/CD算法的限制,以太网帧必须满足最小长度要求64字节,数据较少时必须加以填充(046字节)
46和1500是怎么来的?首先,由CSMA/CD算法可知以太网帧的最短帧长为64B,而MAC帧的首部和尾部的长度为18字节,所以数据字段最短为64 - 18 = 46字节。其次,最大的1500字节是规定的,没有为什么。
-
填充
- 0~46字节,当帧长太短时填充帧,使之达到64字节的最小长度
-
校验码(FCS)
- 4字节,校验范围从目的地址段到数据段的末尾,算法采用32位循环冗余码(CRC),不但需要校验MAC帧的数据部分,还要检验目的地址、源地址、类型字段,但不校验前导码
- 802.3帧格式与DIX以太帧格式的不同之处在于用长度域替代了DIX帧中的类型域,指出数据域的长度。在实践中,前述长度/类型两种机制可以并存,由于IEEE 802.3数据段的最大字节数是1500,所以长度段的最大值是1500,因此从1501到65535的值可用于类型段标识符
-
-
-
-
高速以太网
- 速率达到或超过100Mb/s的以太网称为高速以太网
100BASE-T
以太网- 在双绞线上传送100Mb/s基带信号的星形拓扑结构以太网,它使用CSMA/CD协议
- 这种以太网支持全双工方式、半双工方式,可在全双工方式下工作而无冲突发生
- 因此,在全双工方式下,不使用CSMA/CD协议
- MAC帧格式仍然是802.3标准规定的。保持最短帧长不变,但将一个网段的最大电缆长度减小到100m。帧间时间间隔从原来的9.6us改为现在的0.96us
吉比特以太网
(千兆以太网)- 允许在1Gb/s下用全双工、半双工两种方式工作。使用802.3协议规定的帧格式。在半双工方式下使用CSMA/CD协议,全双工方式不需要使用CSMA/CD协议。与10BASE-T和100BASE-T技术向后兼容
10吉比特以太网
- 与10Mb/s、100Mb/s、1Gb/s以太网的帧格式完全相同,还保留了802.3标准规定的以太网最小和最大帧长,便于升级。
- 不再使用铜线而只使用光纤作为传输媒体,只工作在全双工方式,因此没有争用问题,也不使用CSMA/CD协议
IEEE 802.11
-
有固定基础设施无线局域网
-
IEEE制定了无线局域网的802.11系列协议标准,包括802.11 a/b/g/n 等。802.11使用星形拓扑,其中心称为接入点(Access Point,AP),在MAC层使用CSMA/CA协议,使用802.11系列协议的局域网又称WIFI
-
802.11标准规定无线局域网的最小构件是基本服务集BSS(Basic Service Set,BSS),一个基本服务集包括一个基站、若干移动站。所有的站在本BSS内都可以直接通信,但在和本BSS外的站通信时,都必须通过本BSS的基站。
-
AP就是基本服务集中的基站(base station)。安装AP时,必须为该AP分配一个不超过32字节的服务集标识符(Service Set IDentifier,SSID)和一个信道。一个基本服务集覆盖的地理范围称为一个基本服务区(Basic Service Area,BSA),无线局域网的基本服务区的直径一般不超过100m
-
一个基本服务集可以是孤立的,也可通过AP连接到一个分配系统(Distribution System,DS),然后连接到另一个基本服务集,构成一个扩展的服务集(Extended Service Set,ESS),ESS还可以通过一种Portal(门桥)的设备为无线用户提供到有线连接的以太网的接入。门桥的作用相当于一个网桥。
-
-
无固定基础设施移动自组织网络
(自组网络,ad hoc network)-
没有基本服务集中的AP,而是由一些平等状态的移动站相互通信组成的临时网络。各结点之间地位平等,中间结点都为转发结点,因此都具有路由器功能
-
自组网络通常这样组成
-
一些可移动设备发现在它们附近还有其他可移动设备,并且要求和其他移动设备进行通信。自组网络中的每个移动站都要参与网络中其他移动站的路由的发现和维护,同时由移动站构成的网络拓扑可能随时间变化得很快,因此在固定网络中行之有效的一些路由选择协议对移动自组网络已不适用,需引起特别关注
-
自组网络和移动IP并不相同
- 移动IP技术使漫游的主机可以用多种方法连接到因特网,其核心网络功能仍然是基于固定网络中一直使用的各种路由选择协议
- 自组网络是把移动性扩展到无线领域中的自治系统,具有自己特定的路由选择协议,并且可以不和因特网相连。
-
-
令牌环网的基本原理
-
令牌环网的每一站通过电缆与**环接口干线耦合器(TCU)**相连。TCU的主要作用是,传递所有经过的帧,为接入站发送和接收数据提供接口。与此对应,TCU的状态也有两个:收听状态、发送状态。数据总是在某个特定的方向上从一个TCU到下一个TCU逐比特地依次传送,每个TCU重新产生并重新传输每一比特。
-
令牌环网地媒体接入控制机制采用的是分布式控制模式的循环方法。在令牌环网中有一个令牌(Token)沿着环形总线在入网结点计算机间依次传递,令牌实际上是一个特殊格式的MAC控制帧,它本身并不包含信息,仅控制信道的使用,确保在同一时刻只有一个结点能够独占信道
-
站点只有取得令牌后才能发送数据帧,因此令牌环网不会发生碰撞。由于令牌在环网上是按顺序依次传递的,因此对所有入网计算机而言,访问权是公平的
-
令牌环网中令牌、数据的传递过程如下
- 网络空闲时,环路中只有令牌帧在循环传递
- 令牌传递到有数据要发送的站点时,该站点就修改令牌中的一个标志位,并在令牌中附加自己需要传输的数据,将令牌变成一个数据帧,然后将这个数据帧发送出去
- 数据帧沿着环路传输,接收到的站点一边转发数据,一边查看帧的目的地址。如果目的地址和自己的地址相同,那么接收站就复制该数据帧以便进一步处理
- 数据帧沿着环路传输,直到到达该帧的源站点,源站点接收到自己发出去的数据帧后便不再进行转发。同时,发送方可以通过检验返回的数据帧来查看数据传输过程中是否有错,若有错则重传该帧
- 源站点传送完数据后,重新产生一个令牌,并将令牌传递给下一个站点,以交出对媒体的访问权限
-
令牌环网在物理上采用星形拓扑结构,但逻辑上仍是环形拓扑结构,其标准由IEEE 802.5定义
广域网
广域网的基本概念
-
指覆盖范围很广(远超一个城市的范围)的长距离网络。是因特网的核心部分,其任务是长距离运送主机所发送的数据。连接广域网各结点交换机的链路都是高速链路,它可以长达几千千米的光缆线路,也可以是几万千米的点对点卫星链路
- 因此,广域网首要考虑通信容量必须足够大
-
不等于互联网,互联网可以连接不同类型的网络(局域网或广域网),通常使用路由器来连接
-
由一些结点交换机及连接这些交换机的链路组成。结点交换机的功能是将分组存储并转发。结点之间都是点到点连接,但为了提高网络的可靠性,通常一个结点交换机往往与多个结点交换机相连。
- 结点交换机不是路由器,它和路由器都用来转发分组,他们的工作原理也类似。结点交换机在单个网络中转发分组,而路由器在多个网络构成的互联网中转发分组
-
从层次上考虑,广域网和局域网的区别很大,因为局域网使用的协议主要在
数据链路层
(还有少量在物理层
),而广域网使用的协议主要在网络层
- 如果网络中的两个结点要进行数据交换,那么结点除要给出的数据外,还要给数据包装上一层控制信息,用于实现检错纠错等功能。如果这层控制信息是
数据链路层
协议的控制信息,那么就称使用了数据链路层
协议,如果这层控制信息是网络层
的控制信息,那么就称使用了网络层
协议
- 如果网络中的两个结点要进行数据交换,那么结点除要给出的数据外,还要给数据包装上一层控制信息,用于实现检错纠错等功能。如果这层控制信息是
-
广域网和局域网的区别联系
广域网 局域网 覆盖范围 很广,通常跨区域 较小,通常在一个区域内 连接方式 结点之间都是点到点连接,但为了提高网络的可靠性,一个节点交换机往往与多个结点交换机相连 普通采用多点接入技术 OSI参考模型层次 三层:物理层,数据链路层,网络层 两层:物理层,数据链路层 联系与相似点 1,广域网和局域网都是互联网的重要组成构件,从互联网角度上看,二者平等(不是包含关系)
2,连接到一个广域网或一个局域网上的主机在该网内进行通信时,只需要使用其网络的物理地址同左 着重点 强调资源共享 强调数据传输 -
广域网中一个重要问题是路由选择和分组转发。路由选择协议负责搜索分组从某个结点到目的结点的最佳传输路由,以便构造路由表,然后从路由表再构造出转发分组的转发表。分组是通过转发表进行转发的
-
PPP、HDLC协议是目前最常用的两种广域网数据链路层控制协议
PPP协议 (Point-to-Point Protocol)
-
使用串行线路通信的面向字节的协议,该协议应用在直接连接两个结点的链路上.设计的目的主要是用来通过拨号或专线方式建立点对点连接发送数据,使其成为各种主机、网桥和路由器之间简单连接的一种共同的解决方案。
-
PPP协议是在SLIP协议的基础上发展而来的,可以在异步线路、同步线路上使用,不仅用于Modem链路,也用于租用的路由器到路由器的线路
- SLIP主要完成数据报的传送,但没有寻址、数据校验、分组类型识别、数据压缩等功能,只能传送IP分组。如果上层不是IP协议,那么无法传输,并且此协议对一些高层应用也不支持,但实现比较简单。为了改进SLIP的缺点,于是制定了点对点协议(PPP)
-
PPP协议有三个组成部分
-
链路控制协议(LCP)
- 一种扩展链路控制协议,用于建立、配置、测试和管理数据链路
-
网络控制协议(NCP)
- PPP协议允许同时采用多种网络层协议,每个不同的网络层要用一个相应的NCP来配置,为网络层协议建立和配置逻辑连接
-
一个将IP数据报封装到串行链路的方法
- IP数据报在PPP帧中就是其信息部分,这个信息部分的长度受**最大传送单元(MTU)**的限制
-
-
如下图,PPP帧的前3个字段和最后2个字段与HDLC帧是一样的,标志字段(F)仍为7E(01111110),前后各占1字节,若它出现在信息字段中,就必须做字节填充,使用的控制转义字节是7D(01111101)。但在PPP中,地址字段(A)占1字节,规定为0xFF,控制字段(C)占1字节,规定为0x03,两者的内容始终是固定不变的。PPP是面向字节的,因而所有PPP帧的长度都是整数个字节
-
第4个字段是协议段,占2字节,在HDLC中没有该字段,它是说明信息段中运载的是什么种类的分组。以比特0开始的是诸如IP、IPX、AppleTalk这样的网络层协议;以比特1开始的被用来协商其他协议,包括LCP及每个支持的网络层协议的一个不同的NCP
-
第5段信息段的长度是可变的,大于等于0且小于等于1500B。为了实现透明传输,当信息段中出现和标识字段一样的比特组合时,必须采用一些措施来改进
- 因为PPP是点对点的,并不是总线形,所以无需采用CSMA/CD协议,自然就没有最短帧,所以信息段占01500字节,而不是461500字节。另外,当数据部分出现和标志位一样的比特组合时,就需要采用一些措施来实现透明传输。
-
第6个字段是帧校验序列(FCS),占2字节,即循环冗余码校验中的冗余码。校验区包括地址字段、控制字段、协议字段、信息字段
-
下图为PPP链路建立、使用、撤销所经历的状态图
-
当线路处于静止状态时,不存在
物理层
连接 -
当线路检测到载波信号时,建立物理连接,线路变为建立状态
-
LCP开始选项商定,商定成功后就进入身份验证状态
-
双发身份验证通过后,进入网络状态。这时,采用NCP配置网络层,配置成功后,进入打开状态,然后就可进行数据传输。当数据传输完成后,线路转为终止状态。载波停止后则回到静止状态
- PPP提供差错检测但不提供纠错功能,只保证无差错接收(通过硬件进行CRC检验)。它是不可靠的传输协议,因此也不使用序号、确认机制
- 它仅支持点对点的链路通信,不支持多点线路
- PPP只支持全双工链路
- PPP的两端可以运行不同的网络层协议,但仍然可以使用同一个PPP进行通信
- PPP是面向字节的,当信息字段出现和标识字段一致的比特组合时,PPP有两种不同的处理方法
- 若PPP用在异步线路(默认),则采用字节填充法
- 若PPP用在SONET/SDH等同步线路,则协议规定采用硬件来完成比特填充(和HDLC的做法一样)
-
-
HDLC协议 (高级数据链路控制,High-level Data Link Control,HDLC)
-
是ISO制定的面向比特(PPP协议面向字节)的
数据链路层
协议。该协议不依赖于任何一种字符编码集 -
数据报文可透明传输,用于实现透明传输的0比特插入法易于硬件实现
-
全双工通信,有较高的数据链路传输效率
-
所有帧采用CRC检验,对信息帧进行顺序编号,可防止漏收或重发,传输可靠性高
-
传输控制功能与处理功能分离,具有较大的灵活性
-
适用于链路的两种基本配置
非平衡配置
- 由一个主站控制整个链路的工作
平衡配置
- 链路两端的两个站都是复合站,每个复合站都可以平等地发起数据传输,而不需要得到对方复合站的允许
-
站
主站
- 负责控制链路的操作,主站发出的帧称为命令帧
从站
- 受控于主站,按主站的命令进行操作,发出的帧称为响应帧
复合站
- 同时拥有主站、从站功能,可以发出命令帧、响应帧
-
数据操作方式
正常响应方式
- 非平衡结构操作方式,即主站向从站传输数据,从站响应传输,但从站只有在收到主站的许可后,才可进行响应
异步平衡方式
- 平衡结构操作方式,每个复合站都可以进行对另一站的数据传输
异步响应方式
- 非平衡结构操作方式,从站即使未受到主站的允许,也可进行传输
-
HDLC帧
-
帧格式如下所示,由**标志、地址、控制、信息、帧校验序列(FCS)**等字段构成
- 标志字段F,为01111110
- 在接收端只要找到标志字段就可确定一个帧的位置。HDLC协议采用比特填充的首尾标志法实现透明传输
- 在发送端,当一串比特流数据中有5个连续的1时,就立即在其后填入一个0
- 接收帧时,先找到F字段以确定帧的边界,接着对比特流进行扫描
- 每当发现5个连续的1时,就将其后的一个0删除,以还原成原来的比特流
- 地址字段A,共8位
- 使用非平衡方式传送数据时,站地址字段总是写入从站的地址
- 使用平衡方式传送数据时,站地址字段填入的是应答站的地址
- 控制字段C,共8位
- 最复杂的字段,HDLC的许多重要功能都靠控制字段来实现
- 根据其第1位或第1、2位的取值,可将HDLC帧划分三类
信息帧(I)
- 第1位为0,用来传输数据信息,或使用捎带技术对数据进行确认
监督帧(S)
- 第1、2位分别为1、0,用于流量控制和差错控制,执行对信息帧的确认、请求重发和请求暂停发送等功能
无编号帧(U)
- 第1、2位均为1,用于提供对链路的建立、拆除等多种控制功能
- 标志字段F,为01111110
-
-
PPP帧和HDLC帧的格式很相似,区别如下
- PPP协议面向字节,HDLC协议面向比特
- PPP帧比HDLC帧多一个2字节的协议字段。当协议字段值为0x0021时,表示信息字段是IP数据报
- PPP协议不使用序号和确认机制,只保证无差错接收(通过硬件进行CRC检验),而端到端差错检测由高层协议负责。HDLC协议的信息帧使用了编号和确认机制,能够提供可靠传输
数据链路层设备
网桥的概念及其基本原理
-
两个或多个以太网通过网桥连接后,就成为一个覆盖范围更大的以太网,而原来的每个以太网就称为一个网段。网桥工作在链路层的MAC子层,可以使以太网各网段成为隔离开的碰撞域。如果把网桥换成工作在物理层的转发器,那么就没有这种过滤通信量的功能。由于各网段相对独立,因此一个网段的故障不会影响到另一个网段的运行
网桥处理数据的对象是帧,所以它是工作在数据链路层的设备,中继器、放大器处理数据的对象是信号,所以它是工作在物理层的设备
-
如下图,设每个网段的数据率都是10Mb/s,那么三个网段合起来的最大吞吐量就变成30Mb/s。如果把两个网桥换成集线器或转发器,那么整个网络仍然是一个碰撞域(即冲突域),当A和B通信时,所有其他站点都不能通信,整个碰撞域的最大吞吐量仍然是10Mb/s
-
网桥的优点
- 能过滤通信量
- 扩大了物理范围
- 可使用不同的物理层
- 可互联不同类型的局域网
- 提高了可靠性
- 性能得到改善
-
网桥的缺点
- 增大了时延
- MAC子层没有流量控制功能(流量控制需要用到编号机制,编号机制的实现在LLC子层)
- 不同MAC子层的网段桥接在一起时,需要进行帧格式的转换
- 网桥只适合于用户数不多和通信量不大的局域网,否则有时还会因传播过多的广播信息而产生网络拥塞(即广播风暴)
-
网桥必须具有路径选择的功能,接收到帧后,要决定正确的路径,将该帧转送到相应的目的局域网站点。根据路径选择算法的不同,可将网桥分为透明网桥和源路由网桥
-
透明网桥(选择的不是最佳路由)
- 以混杂方式工作,接收与之连接的所有LAN传送的每一帧。到达帧的路由选择过程取决于源LAN和目的LAN
- 如果源LAN和目的LAN相同,那么丢弃该帧
- 如果源LAN和目的LAN不同,那么转发该帧
- 如果目的LAN未知,那么扩散该帧
- 当网桥刚连接到以太网时,其转发表是空的,网桥按照自学习算法处理收到的帧。该算法的基本思想是
- 若从站A发出的帧,从某端口进入网桥,那么从这个端口出发沿相反方向一定可把一个帧传送到站A
- 所以网桥每收到一个帧,就记下其源地址和进入网桥的端口,作为转发表中的一个项目(源地址、进入的接口、时间)
- 建立转发表时,把帧首部中的源地址写在地址一栏下面
- 转发帧时,根据收到的帧首部中的目的地址来转发
- 这时就把在地址栏下面已经记下的源地址当作目的地址,而把记下的进入端口当作转发端口
- 网桥就是在这样的转发过程中逐渐将其转发表建立起来
- 为了避免转发的帧在网络中不断地兜圈子,透明网桥使用了一种生成树算法(五环),以确保每个源到每个目的地只有唯一的路径。生成树使得整个扩展局域网在逻辑上形成树形结构,所以工作时,逻辑上没有环路,但生成树一般不是最佳路由
- 以混杂方式工作,接收与之连接的所有LAN传送的每一帧。到达帧的路由选择过程取决于源LAN和目的LAN
-
源路由网桥
(选择的是最佳路由)- 在源路由网桥中,路由选择由发送数据帧的源站负责,网桥只根据数据真正的路由信息对帧进行接收和转发
- 源路由网桥对主机是不透明的,主机必须直到网桥的标识及连接到哪个网段上。路由选择由发送帧的源站负责
- 为了找到最佳的路由,源站以广播方式向目的站发送一个**发现帧(Discovery Frame)**作为探测之用
- 源路由的生成过程是
- 在未知路径前,源站要先发送一个发现帧
- 途中的每个网桥都转发此帧,最终该发现帧可能从多个途径到达目的站
- 目的站也将一一发送应答帧
- 每个应答帧将通过原路径返回,途径的网桥把自己的标志记录在应答帧中
- 源站选出一个最佳路由
- 以后,凡是从这个源站向该目的站发送的帧的首部,都必须携带这一路由信息
- 发送帧还可以帮助源站确定整个网络可以通过的帧的最大长度,由于发现帧的数量指数式增加,可能会使网络严重拥塞
-
两种网桥的比较
-
使用源路由网桥可以利用最佳路由。若在两个以太网之间使用并联的源路由网桥,则还可使通信量较平均地分配给每个网桥
-
采用透明网桥时,只能使用生成树,而使用生成树一般并不能保证所用的路由是最佳的,也不能在不同的链路中进行负载均衡
透明网桥和源路由网桥中提到的最佳路由并不是经过路由器最少的路由,而可以是发送帧往返时间最短的路由,这样才能真正地进行负载平衡,因为往返时间长说明中间某个路由器可能超载了,所以不走这条路,换个往返时间短的路走
-
局域网交换机及其工作原理
局域网交换机
- 桥接器的主要限制是在任一时刻通常只能执行一个帧的转发操作,于是出现了局域网交换机,又称以太网交换机。从本质上说,以太网交换机是一个多端口的网桥,它工作在数据链路层。交换机能经济地将网络分成小的冲突域,为每个工作站提供更高的带宽
- 以太网交换机对工作站是透明的,因此管理开销低廉,简化了网络结点的增加、移动和网络变化的操作
- 利用以太网交换机还可以方便地实现虚拟局域网(Virtual LAN,VLAN),VLAN可以隔离冲突域,广播域
原理
- 它检测从以太端口来的数据帧的源和目的地的MAC(介质访问层)地址,然后与系统内部的动态查找表进行比较,若数据帧的MAC地址不在查找表中,则将该地址加入查找表,并将数据帧发送给相应的目的端口
特点
- 每个端口都直接与单台主机相连(普通网桥的端口往往连接到以太网的一个网段),并且一般都工作在全双工方式
- 能同时连通许多对端口,使每对相互通信的主机都能像独占通信媒体那样,无碰撞地传输数据
- 也是一种即插即用设备(和透明网桥一样),其内部的帧的转发表也是通过自学习算法自动地逐渐建立起来的
- 由于使用了专用的交换结构芯片,因此交换速率较高
- 独占传输媒体的带宽
两种交换模式
直通式
- 只检查帧的目的地址,这使得帧在接收后几乎能马上被传出去
- 优点是速度快,缺点是缺乏智能性和安全性,也无法支持具有不同速率的端口的交换
存储转发式
- 先将接收到的帧缓存到高速缓存器中,并检查数据是否正确,确认无误后通过查找表转换成输出端口将该帧发送出去。如果发现帧有错,那么就将其丢弃。
- 优点是可靠性高,并能支持不同速率端口间的转换,缺点是延迟较大
总结
-
冗余编码
所用符号数或信号码元数比表示信息所必需的数目多的代码,应用了冗余加密技术,即利用了纠错码的编码原理
-
信道的效率
-
也称信道利用率,从时间角度定义:信道效率是对发送方而言的,指发送方在一个发送周期的时间内,有效地发送数据所需要的时间占整个发送周期的比率
-
发送方从开始发送数据到收到第一个确认帧为止,称为一个发送周期,设为T,发送方在这个周期内共发送L比特的数据,发送方的数据传输速率为C,则发送方用于发送有效数据的时间为L/C,在这种情况下,信道的利用率为**(L/C)/T**。
简单理解,信道利用率,就是实际发送的数据速度,跟信道速度之比。但是实际发送的数据速度,是**发送的数据量(不包括确认帧)对整个发送周期(包括发送和接收确认帧)**的比值。
-
信道吞吐率 = 信道利用率 * 发送方的发送效率
-
由其注意题目中说的忽略确认帧的传输时延,传输时延和传播时延有所区别,传输时延也叫发送时延,跟传播时延不同。
-
-
连续ARQ(后退N帧 ARQ,选择性重传ARQ)协议中,接收方一般采用累计确认的方式,即接收方对按序到达的最后一个分组发送确认。
-
规格化内积
- 向量的内积结果再除以向量的维数
网络层
网络层的功能
异构网络互联
-
指将两个以上的计算机网络,通过一定的方法,用一种或多种通信处理设备(即中间设备)相互连接起来,以构成更大的网络系统。中间设备又称为中间系统或中继系统。根据所在的层次,中继系统分为以下4种
物理层中继系统
- 中继器,集线器(Hub)
数据链路层中继系统
- 网桥或交换机
网络层中继系统
- 路由器
网络层以上的中继系统
- 网关
-
使用物理层或数据链路层的中继系统时,只是把一个网络扩大了,而从网络层的角度看,它仍然是同一个网络,一般并不称为网络互联。因此网络互联通常是指用路由器进行网络互联和路由选择。路由器是一台专用计算机,用于在互联网中进行路由选择
由于历史原因,许多有关TCP/IP的文献也把网络层的路由器称为网关
-
TCP/IP体系在网络互联上采用的做法是在**网络层(即IP层)**采用标准化协议,但相互连接的网络可以是异构的。下图a表示用许多计算机网络通过一些路由器进行互联。由于参加互联的计算机网络都使用相同的网际协议(Internet Protocol,IP),因此可以把互联后的计算机网络视为图b的一个虚拟IP网络
-
虚拟互联网络,即逻辑互联网络,即互联起来的各种物理网络的异构性本来是客观存在的,但是通过IP就可以使这些性能各异的网络在网络层上看起来好像是一个统一的网络。这种使用IP的虚拟互联网络简称IP网络
-
使用虚拟互联网络的好处是,当互联网上的主机进行通信时,就好像在一个网络上通信一样,而看不见互联网的具体的网络异构细节
- 如具体的编址方案、路由选择协议等
路由与转发
- 路由器主要完成两个功能:路由选择(确定哪一条路径)和分组转发(当一个分组到达时所采取的动作)。前者是根据特定的路由选择协议构造出路由表,同时经常或定期地和相邻路由器交换路由信息而不断地更新和维护路由表。后者处理通过路由器的数据流,关键操作是转发表查询、转发及相关的队列管理和任务调度等
路由选择
- 按照复杂的分布式算法,根据从各相邻路由器所得到的关于整个网络拓扑的变化情况,动态地改变所选择的路由
分组转发
- 指路由器根据转发表将用户的IP数据报从合适的端口转发出去。
- 路由表是根据路由选择算法得出的,转发表是从路由表得出的。转发表的结构应当使查找过程最优化,路由表则需要对网络拓扑变化的计算最优化。
- 在讨论路由选择的原理时,往往不去区分转发表和路由表,而是笼统地使用路由表一词
拥塞控制
-
在通信子网中,因出现过量的分组而引起网络性能下降的现象,称为拥塞
-
如下图,当分组到达路由器的速率接近于R时,平均时延急剧增加,并且会有大量的分组被丢弃(路由器端口的缓冲区是有限的),整个网络的吞吐量会骤降,源与目的地之间的平均时延也会变得近乎无穷大
-
判断网络是否进入拥塞状态的方法是
- 观察网络的吞吐量与网络负载的关系
- 如果随着网络负载的增加,网络的吞吐量明显小于正常的吞吐量,那么网络就可能已进入轻度拥塞状态
- 如果网络的吞吐量随着网络负载的增大而下降,那么网络就可能已进入拥塞状态
- 如果网络的负载继续增大,而网络的吞吐量下降到零,那么网络就可能已进入死锁状态
- 观察网络的吞吐量与网络负载的关系
-
为避免拥塞现象的出现,要采用能防止拥塞的一系列方法对子网进行拥塞控制。拥塞控制主要解决的问题是如何获取网络中发生拥塞的信息,从而利用这些信息进行控制,以避免由于拥塞而出现分组丢失,以及严重拥塞而产生网络死锁的现象
- 拥塞控制的作用是确保子网能够承载所达到的流量,这是一个全局性的过程
- 主机、路由器、路由器内部的转发处理等
- 单一地增加资源并不能解决拥塞
- 拥塞控制的作用是确保子网能够承载所达到的流量,这是一个全局性的过程
-
流量控制VS拥塞控制
- 流量控制往往是指在发送端和接收端之间的点对点通信量的控制
- 流量控制所要做的是抑制发送端发送数据的速率,以便使接收端来得及接收
- 拥塞控制必须确保通信子网络能够传送待传送的数据,是一个全局性的问题,涉及网络中所有的主机、路由器、网络传输能力下降的所有因素
-
拥塞控制的方法
开环控制
- 设计网络时事先将有关发生拥塞的因素考虑周到,力求网络在工作时不产生拥塞
- 这是一种静态的预防方法,一旦整个系统启动运行,中途就不再需要修改
- 开环控制手段如下
- 确定何时可接收新流量
- 确定何时可丢弃分组及丢弃哪些分组
- 确定何种调度策略
- 这些手段的共性是,在做决定时,不考虑当前网络状态
闭环控制
- 事先不考虑有关发生拥塞的各种因素,采用检测网络系统去监视,及时检测哪里发生了拥塞,然后将拥塞信息传到合适的地方,以便调整网络系统的运行,并解决出现的问题
- 闭环控制是基于反馈环路的概念,是一种动态的方法
路由算法
静态路由与动态路由
- 路由器转发分组是通过路由表转发的,而路由表是通过各种算法得到的,从能否随网络的通信量或拓扑自适应地进行调整变化来划分
静态路由算法(非自适应路由算法)
- 由网络管理员手工配置的路由信息
- 当网络的拓扑结构或链路的状态发生变化时,网络管理员需要手工去修改路由表中相关的静态路由信息
- 不能及时适应网络状态的变化,对于简单的小型网络,可以采用静态路由
动态路由算法(自适应路由算法)
- 路由器上的路由表项是通过相互连接的路由器之间彼此交换信息,然后按照一定的算法优化出来的,而这些路由信息会在一定时间间隙里不断更新,以适应不断变化的网络,随时获得最优的寻路效果
- 静态路由算法的特点是简便、开销较小,在拓扑变化不大的小网络中运行效果很好
- 动态路由算法能改善网络的性能并有助于流量控制,但算法复杂,会增加网络负担,有时因对动态变化的反应太快而引起振荡,或反应太慢而影响网络路由的一致性
距离-向量路由算法
链路状态路由算法
距离-向量路由算法
-
所有结点都定期地将它们的整个路由选择表传送给所有与之直接相邻的结点,这种路由表包含
-
每条路径的目的地
另一结点 -
路径的代价
距离这里的距离是一个抽象概念,如RIP将距离定义为跳数,跳数指从源端口到达目的端口所经过的路由器个数,每经过一个路由器,跳数加1
-
-
这种算法中,所有结点都必须参与距离向量交换,以保证路由的有效性和一致性,也就是说,所有的结点都监听从其他结点传来的路由选择更新信息,并在下列情况下更新它们的路由选择表
- 被通告一条新的路由,该路由在本结点的路由表中不存在,此时本地系统加入这条新的路由
- 发来的路由信息中有一条到达某个目的地的路由,该路由与当前使用的路由相比,有较短的距离(较小的代价)。此种情况下,就用经过发送路由信息的结点的新路由替换路由表中到达那个目的地的现有路由
-
距离-向量路由算法的实质是,迭代计算一条路由中的站段数或延迟时间,从而得到到达一个目标的最短(最小代价)通路。
- 它要求每个结点在每次更新时,都将它的全部路由表发送给所有相邻的结点
- 显然,更新报文的大小与通信子网的结点个数成正比,大的通信子网将导致很大的更新报文
- 由于更新报文发给直接邻接的结点,所以所有结点都将参加路由选择信息交换
- 基于这些原因,在通信子网上传送的路由选择信息的数量很容易变得非常大
-
最常见的距离-向量路由算法是RIP算法,它采用跳数作为距离的度量
链路状态路由算法
-
要求每个参与该算法的结点都具有完全的网络拓扑信息,它们执行以下两项任务
- 主动测试所有邻接结点的状态。两个共享一条链接的结点是相邻结点,它们连接到同一条链路,或者连接到同一广播型物理网络
- 定期地将链路状态传播给所有其他结点(或称路由结点),典型的链路状态算法是OSPF算法
-
在一个链路状态路由选择中,一个结点检查所有直接链路的状态,并将所得的状态信息发送给网上的所有其他结点,而不是仅送给那些直接相连的结点。每个结点都用这种方式从网上所有其他的结点接收包含直接链路状态的路由选择信息
-
每当链路状态报文到达时,路由结点便使用这些状态信息去更新自己的网络拓扑和状态视野图,一旦链路状态发生变化,结点就对更新的网络图利用Dijkstra最短路径算法重新计算路由,从单一的源出发计算到达所有目的结点的最短路径
-
链路状态路由算法主要有三个特征
-
向本自治系统中的所有路由器发送信息,这里使用的方法是泛洪法,即路由器通过所有端口向所有相邻的路由器发送信息。而每个相邻路由器又将此信息发往其所有相邻路由器
- 不再发送给刚刚发来信息的那个路由器
-
发送的信息是与路由器相邻的所有路由器的链路状态,但这只是路由器所知道的部分信息。所谓链路状态,是指说明本路由器与哪些路由器相邻及该链路的度量。对于OSPF算法,链路状态的度量主要用来表示费用、距离、时延、带宽等
-
只有当链路状态发生变化时,路由器才向所有路由器发送此信息
-
-
由于一个路由器的链路状态只涉及相邻路由器的连通状态,而与整个互联网的规模并无直接关系,因此链路状态路由算法可以用于大型的或路由信息变化聚敛的互联网环境
-
链路状态路由算法的主要优点是
- 每个路由结点都使用同样的原始状态数据独立地计算路径,而不依赖中间结点的计算
- 链路状态报文不加改变地传播,因此采用该算法易于查找故障
- 当一个结点从所有其他结点接收到报文时,它可以在本地立即算计正确的通路,保证一步汇聚
- 最后,由于链路状态报文仅运载来自单个结点关于直接链路的信息,其大小与网络中的路由结点数目无关,因此链路状态算法比距离-向量算法有更好的规模可伸展性
-
距离-向量路由算法VS链路状态路由算法
- 距离-向量路由算法中,每个结点仅与它的直接邻居交谈,它为它的邻居提供从自己到网络中所有其他结点的最低费用估计
- 链路状态路由算法中,每个结点通过广播的方式与其他结点交谈,但它仅告诉它们与它直接相连的链路的费用
- 相较之下,距离-向量路由算法有可能遇到路由环路等问题
层次路由
- 当网络规模扩大时,路由器的路由表成比例的增大。这不仅会消耗越来越多的路由器缓冲区空间,而且需要用更多的CPU时间来扫描路由表,用更多的带宽来交换路由状态信息。因此路由选择必须按照层次的方式进行
- 因特网将整个互联网划分为许多较小的自治系统(一个自治系统包含很多局域网),每个自治系统有权自主地决定本系统内应采用何种路由选择协议。如果两个自治系统需要通信,那么就需要一种在两个自治系统之间的协议来屏蔽这些差异。因此,因特网把路由选择协议划分两大类
- 一个自治系统内部所使用的路由选择协议称为内部网关协议(IGP),也称域内路由选择,具体的协议有RIP、OSPF等
- 自治系统之间所使用的路由选择协议称为外部网关协议(EGP),也称域间路由选择,用在不同自治系统的路由器之间交换路由信息,并负责为分组在不同自治系统之间选择最优的路径。具体的协议有BGP
- 使用层次路由时,OSPF将一个自治系统再划分为若干区域(Area),每个路由器都知道在本区域内如何把分组路由到目的地的细节,但不用知道其他区域的内部结构
- 采用分层次划分区域的方法虽然会使交换信息的种类增多,但也会使OSPF协议更加复杂,但这样做却能使每个区域内部交换路由信息的通信量大大减小,因而使OSPF协议能够用于规模很大的自治系统中
IPv4
IPv4分组
-
IPv4即现在普遍使用的IP(版本4)。IP定义数据传送的基本单元——IP分组及其确切的数据格式。IP也包括一套规则,指明分组如何处理、错误怎样控制。特别是IP还包含非可靠投递的思想,以及与此关联的分组路由选择的思想。
-
IPv4分组的格式
-
一个IP分组由首部和数据部分组成。首部前一部分的长度固定,共20B,是所有IP分组必须具有的。在首部固定部分的后面是一些可选字段,其长度可变,用来提供错误检测及安全等机制
-
IP数据包的格式如下
-
IP首部的部分重要字段含义如下
-
版本
- IP的版本,目前广泛使用的是4
-
首部长度
- 占4位,可以表示的最大十进制数是15,以32位为单位,最大值为60B(15*4B)。
- 最常用的首部长度是20B,此时不使用任何选项(即可选字段)
-
总长度
- 占16位,指首部和数据之和的长度,单位为字节,因此数据报的最大长度为** 216 − 1 = 65535 B 2{16}-1=65535B 216−1=65535B**
- 以太网帧的最大传送单元(MTU)为1500B,因此当一个IP数据报封装成帧时,数据报的总长度(首部加数据)一定不能超过下面的
数据链路层
的MTU值
-
标识
- 占16位
- 是一个计数器,每产生一个数据报就加1,并赋值给标识字段
- 不是序号,因为IP是无连接服务
- 当一个数据报的长度超过网络的MTU时,必须分片,此时每个数据报片都复制一次标识号,以便能正确重装成原来的数据报
-
标志
- 占3位
- 标志字段的最低位为MF,MF=1表示后面还有分片,MF=0表示最后一个分片。标志字段中间的一位是DF,只有当DF=0时才允许分片
-
片偏移
- 占13位,它指出较长的分组在分片后,某片在原分组中的相对位置
- 片偏移以8个字节为偏移单位,即每个分片的长度一定是**8B(64位)**的整数倍
-
生存时间
(TTL)- 占8位
- 数据报在网络中可通过的路由器数的最大值,标识分组在网络中的寿命,以确保分组不会永远在网络中循环
- 路由器在转发分组前,先把TTL减少1
- 若TTL被减为0,则该分组必须丢弃
-
协议
- 占8位
- 指出此分组携带的数据使用何种协议,即分组的数据部分应交给哪个传输层协议
- 如TCP、UDP等
- 值为6表示TCP,为17表示UDP
-
首部校验和
- 占16位
- IP数据报的首部校验和只校验分组的首部,而不校验数据部分
-
源地址字段
- 占4B,标识发送方的IP地址
-
目的地址字段
- 占4B,标识接收方的IP地址
在IP数据报首部中有三个关于长度的标记
- 首部长度,基本单位为4B
- 总长度,基本单位为1B
- 片偏移,基本单位为8B
-
-
-
IP数据报分片
-
一个数据链路层数据报能承载的最大数据量称为最大传送单元(MTU)。因为IP数据报被封装在数据链路层数据报中,因此数据链路层的MTU严格地限制着IP数据报的长度,而且在IP数据报的源与目的地路径上的各段链路可能使用不同的数据链路层协议,有不同的MTU
-
当IP数据报的总长度大于链路MTU时,就需要将IP数据报中的数据分装在两个或多个较小的IP数据报中,这些较小的数据报称为片
-
片在目的地的网络层被重新组装。目的主机使用IP首部中的标识、标志和片偏移字段来完成对片的重组
-
创建一个IP数据报时,源主机为该数据报加上一个标识号
- 当一个路由器需要将一个数据报分片时,形成的每个数据报(即片)都具有原始数据报的标识号
- 当目的主机收到来自同一发送主机的一批数据报时,它可以通过检查数据报的标识号来确定哪些数据报属于同一个原始数据报的片
-
IP首部中的标志位有3比特,但只有后2比特有意义,分别是MF位(More Fragment)和DF位(Don’t Fragment)
- 只有当DF=0时,该IP数据报才可以被分片
- MF则用来告知目的主机该IP数据报是否为原始数据报的最后一个片
- 当MF=1时,表示相应的原始数据报还有后续的片
- 当MF=0时,表示该数据报是相应原始数据报的最后一个片
-
目的主机在对片进行重组时,使用片偏移字段来确定片应放在原始IP数据报的哪个位置
-
IP分片涉及一定的计算
-
一个长4000B的IP数据报(首部20B,数据部分3980B)到达一个路由器,需要转发到一条MTU为1500B的链路上。这意味着原始数据报中的3980B数据必须被分配到3个独立的片中(每片也是一个IP数据报)。假定原始数据报的标识号为777,那么分成的3片如下图
-
可以看出,由于偏移值的单位是8B,所以除了最后一个片外,其他的所有片中的有效数据载荷都是8的倍数
-
-
-
网络层转发分组的流程
-
网络层的路由器执行的分组转发算法如下
- 从数据报的首部提取目的主机的IP地址D,得出目的网络地址N
- 若网络N与此路由器直接相连,则把数据报直接交付给目的主机D,这称为路由器的直接交付,否则是间接交付,执行步骤3
- 若路由表中有目的地址为D的特定主机路由(对特定的目的主机指明一个特定的路由,通常是为了控制或测试网络,或出于安全考虑才采用的),则把数据报传送给路由表中所指明的下一跳路由器,否则,执行步骤4
- 若路由表中有到达网络N的路由,则把数据报传送给路由表指明的下一跳路由器;否则,执行步骤5
- 若路由表中有一个默认路由,则把数据报传送给路由表中所指明的默认路由器;否则,执行步骤6
- 报告转发分组出错
得到下一跳路由器的IP地址后并不是直接将该地址填入待发送的数据报,而是将该IP地址转换成MAC地址(通过ARP),将其放到MAC帧首部中,然后根据这个MAC地址找到下一跳路由器。在不同网络中传送时,MAC帧中的源地址和目的地址要发送变化,但是网桥在转发帧时,不改变帧的源地址,请注意区分
-
IPv4地址与NAT
-
IPv4地址
-
连接到因特网上的每台主机(或路由器)都分配一个32比特的全球唯一标识符,即IP地址。传统的IP地址是分类的地址,分为A、B、C、D、E五类
-
无论哪类IP地址,都由网络号和主机号两部分组成。即IP地址::={<网络号>, <主机号>}。其中网络号标志主机(或路由器)所连接到的网络。一个网络号在整个因特网范围内必须是唯一的。主机号标志该主机(或路由器)。一台主机号在它前面的网络号所指明的网络范围必须是唯一的。由此可见,一个IP地址在整个因特网范围内是唯一的。
-
分类的IP地址如下
-
在各类IP地址中,有些IP地址具有特殊用途,不用做主机的IP地址
- 主机号全为0表示本网络本身,如 202.98.174.0
- 主机号全为1表示本网络的广播地址,又称直接广播地址,如 202.98.174.255
- 127.0.0.0保留为**环回自检(Loopback Test)**地址,此地址表示任意主机本身,目的地址为环回地址的IP数据报永远不会出现在任何网络上
- 32位全为0,即0.0.0.0表示本网络上的本主机
- 32位全为1,即255.255.255.255表示整个TCP/IP网络的广播地址,又称受限广播地址。实际使用时,由于路由器对广播域的隔离,255.255.255.255等效为本网络的广播地址
-
常用的三种类别IP地址的使用范围如下
网络类别 最大可用网络数 第一个可用的网络号 最后一个可用的网络号 每个网络中的最大主机数 A 2^7 - 2 1 126 2^24 - 2 B 2^14 - 2 128.1 191.255 2^16 - 2 C 2^21 - 1 192.0.1 223.255.255 2^8 - 2 - A类地址可用的网络数,减2的原因
- 网络号字段全为0的IP地址是保留地址,意思是本网络
- 网络号为127的IP地址是环回自检地址
- B类地址可用的网络数,减1的原因
- 128.0这个网络号是不可指派的
- C类地址可用的网络数,减1的原因
- 网络号为192.0.0的网络是不可指派的
- A类地址可用的网络数,减2的原因
-
-
IP地址有以下重要特点
- 每个IP地址都由网络号和主机号两部分组成,因此IP地址是一种分等级的地址结构
- 分等级的好处是
- IP地址管理机构在分配IP地址时,只分配了网络号(第一级),而主机号(第二级)则由得到该网络的单位自行分配,方便了IP地址的管理
- 路由器仅根据目的主机所连接的网络号来转发分组(而不考虑目标主机号),从而减少了路由表所占的存储空间
- 分等级的好处是
- IP地址是标志一台主机(或路由器)和一条链路的接口。当一台主机同时连接到两个网络时,该主机就必须同时具有两个相应的IP地址,每个IP地址的网络号必须与所在网络的网络号相同,且这两个IP地址的网络号是不同的。因此,IP网络上的一个路由器必然至少应具有两个IP地址(路由器每个端口必须至少分配一个IP地址)
- 用转发器或桥接器(网桥等)连接的若干LAN仍然是同一个网络(同一个广播域),因此该LAN中所有主机的IP地址的网络号必须相同,但主机号必须不同
- 在IP地址中,所有分配到网络号的网络(无论是LAN还是WAN)都是平等的
- 在同一个局域网上的主机或路由器的IP地址中的网络号必须是一样的。路由器总是具有两个或两个以上的IP地址,路由器的每个端口都有一个不同网络号的IP地址
- 每个IP地址都由网络号和主机号两部分组成,因此IP地址是一种分等级的地址结构
-
-
网络地址转换(NAT)
-
指通过将专用网络地址(如Intranet)转换为公用地址(如Internet),从而对外隐藏内部管理的IP地址。它使得整个专用网只需要一个全球IP地址就可以与因特网连通,由于专用网本地IP地址是可重用的,所以NAT大大节省了IP地址的消耗。同时,它隐藏了内部网络结构,从而降低了内部网络受到攻击的风险。
-
此外,为了网络安全,划出了部分IP地址为私有IP地址。私有IP地址只用于LAN,不用于WAN连接(因此私有IP地址不能直接用于Internet,必须通过网关利用NAT把私有IP地址转换为Internet中合法的全球IP地址后才能用于Internet),并且允许私有IP地址被LAN重复使用。这有效地解决了IP地址不足的问题。
-
私有IP地址网段如下
- A类:1个A类网段,即 10.0.0.0 ~ 10.255.255.255
- B类:16个B类网段,即172.16.0.0 ~ 172.31.255.255
- C类:256个C类网段,即192.168.0 ~ 192.168.255.255
-
在因特网中的所有路由器,对目的地址是私有地址的数据报一律不进行转发。这种采用私有IP地址的互联网络称为专用互联网或本地互联网。私有IP地址也称可重用地址
-
使用NAT时,需要在专用网连接到因特网的路由器上安装NAT软件,NAT路由器至少有一个有效的外部全球地址。使用本地地址的主机和外界通信时,NAT路由器使用NAT转换表将本地地址转换成全球地址,或将全球地址转换成本地地址。NAT转换表中存放着**{本地IP地址:端口}到{全球IP地址:端口}的映射。通过{IP地址:端口}这样的映射方式,可让多个私有IP地址映射到同一个全球IP地址**
普通路由器在转发IP数据报时,不改变其源IP地址和目的IP地址。而NAT路由器在转发IP数据报时,一定要更换其IP地址(转换源IP地址或目的IP地址)。普通路由器仅工作在网络层,而NAT路由器转发数据报时,需要查看和转换传输层的端口号
-
子网划分与子网掩码、CIDR
-
子网划分
-
两级IP地址的缺点
- IP地址空间的利用率有时很低
- 给每个物理网络分配一个网络号会使路由表变得太大而使网络性能变坏
- 两级的IP地址不够灵活
-
1985年起,IP地址中增加一个子网号字段,使两级IP地址变成了三级IP地址。这种做法称为子网划分。子网划分已经成为因特网的正式标准协议
-
子网划分的基本思路如下
- 子网划分纯属一个单位内部的事情。单位对外仍然表现为没有划分子网的网络
- 从主机号借用若干比特作为子网号,当然主机号也就相应减少了相同的比特。三级IP地址的结构如下
- IP地址={<网络号>, <子网号>, <主机号>}
- 凡是从其他网络发送给本单位某台主机的IP数据报,仍然是根据IP数据报的目的网络号,先找到连接到本单位网络上的路由器。然后该路由器在收到IP数据报后,按目的网络号和子网号找到目的子网。最后把IP数据报直接交付给目的主机
- 划分子网只是把IP地址的主机号这部分进行再划分,而不改变IP地址原来的网络号。因此,从一个IP地址本身或IP数据报的首部,无法判断源主机或目的主机所连接的网络是否进行了子网划分
- RFC 950规定,对分类的IPv4地址进行子网划分时,子网号不能全为1或全为0。但随着CIDR的广泛使用,现在全1和全0的子网号也可使用,但一定要谨慎使用,要弄清你的路由器所用的路由选择软件是否支持全1或全0的子网号
- 不论是分类的IPv4地址还是CIDR,其子网中的主机号为全0或全1的地址都不能被指派。子网中主机号全0的地址为子网的网络号,主机号全1的地址为子网的广播地址
-
-
子网掩码
- 为了告诉主机或路由器对一个A类、B类、C类网络进行了子网划分,使用子网掩码来表达对原网络中主机号的借位
- 子网掩码是一个与IP地址相对应的、长32bit的二进制串,它由一串1和跟随的一串0组成。其中,1对应于IP地址中的网络号及子网号,而0对应于主机号。计算机只需将IP地址和其对应的子网掩码逐位与,就可得出相应子网的网络地址
- 现在的因特网标准规定:所有的网络都必须使用子网掩码,如果一个网络未划分子网,那么就采用默认子网掩码。A、B、C类地址的默认子网掩码分别为255.0.0.0、255.255.0.0、255.255.255.0
- 由于子网掩码是一个网络或一个子网的重要属性,所以路由器在相互之间交换路由信息时,必须把自己所在网络(或子网)的子网掩码告诉对方。路由表中的每个条目,除要给出目的网络地址和下一跳地址外,还要同时给出该目的网络的子网掩码
- 使用子网掩码的情况下
- 一台主机在设置IP地址信息的同时,必须设置子网掩码
- 同属于一个子网的所有主机及路由器的相应端口,必须设置相同的子网掩码
- 路由器的路由表中,所包含信息的主要内容必须有目的网络地址、子网掩码、下一跳地址
- 使用子网掩码时路由器的分组转发算法如下
- 从收到的分组的首部提取目的IP地址,记为D
- 先判断是否为直接交付。对路由器直接相连的网络逐个进行检查
- 用各网络的子网掩码和D逐位相与,看结果是否和相应的网络地址匹配
- 若匹配,则将分组直接交付,否则间接交付,执行步骤3
- 若路由表中有目的地址为D的特定主机路由,则将分组传送给路由表中所指明的下一跳路由器,否则,执行4
- 对路由器中的每一行(目的网络地址、子网掩码、下一跳地址)中的子网掩码和D逐位相与,其结果为N。若N与该行的目的网络地址匹配,则将分组传送给该行指明的下一跳路由器;否则,执行步骤5
- 若路由表中有一个默认路由,则将分组传送给路由表中所指明的默认路由器;否则,执行步骤6
- 报告转发分组出错
-
无分类域间路由选择(CIDR)
- 是在变长子网掩码的基础上提出的一种消除传统(A、B、C类网络划分),并且可以在软件的支持下实现超网构造的一种IP地址的划分方法
- CIDR的主要特点如下
- 消除了传统A、B、C类地址及划分子网的概念,因而可以更有效地分配IPv4的地址空间
- CIDR使用网络前缀的概念代替了子网络的概念
- 因此,IP地址的无分类两级编址为IP::={<网络前缀>, <主机号>}
- CIDR使用斜线记法(或称CIDR记法),即IP地址/网络前缀所占比特数
- 网络前缀所占比特数对应于网络号的部分,等效于子网掩码中连续1的部分
- CIDR虽然不使用子网,但仍然使用掩码一词
- CIDR并没有在32位地址中指明若干位作为子网字段。但分配到一个CIDR地址块的组织,仍可以在本组织内根据需要划分出一些子网
- 某组织分配到地址块/20,就可以再继续划分为8个子网(从主机号中借用3位来划分子网),这时候每个子网的网络前缀就变成了23位。全0和全1的主机号地址一般不用
- CIDR并没有在32位地址中指明若干位作为子网字段。但分配到一个CIDR地址块的组织,仍可以在本组织内根据需要划分出一些子网
- 将网络前缀都相同的连续IP地址组成CIDR地址块。一个CIDR地址块可以表示很多地址,这种地址的聚合称为路由聚合,或称构成超网。路由聚合使得路由表的一个项目可以表示多个原来传统分类地址的路由,有利于减少路由器之间的路由选择信息的交换,从而提高网络性能
- CIDR地址块中的地址数一定是2的整数次幂,实际可指派的地址数通常为** 2 N − 2 2^N-2 2N−2,N表示主机号的位数**,主机号全0代表网络号,主机号全1为广播地址。网络前缀越短,其地址块所包含的地址数就越多。而在三级结构的IP地址中,划分子网使网络前缀变长
- CIDR的优点在于网络前缀长度的灵活性。由于上层网络的前缀长度较短,因此相应的路由表的项目较少。而内部又可采用延长网络前缀的方法来灵活地划分子网
- 最长前缀匹配(最佳匹配):
- 使用CIDR时,路由表中的每个项目由网络前缀和下一跳地址组成。在查找路由表时可能会得到不止一个匹配结果。此时,应当从匹配结果中选择具有最长网络前缀的路由,因为网络前缀越长,其地址块就越小,因而路由就越具体
- CIDR查找路由表的方法
- 为了更加有效地查找最长前缀匹配,通常将无分类编址的路由表存在放一种层次式数据结构中,然后自上而下地按层次进行查找。
- 这里最常用的数据结构就是二叉线索
- 为了更加有效地查找最长前缀匹配,通常将无分类编址的路由表存在放一种层次式数据结构中,然后自上而下地按层次进行查找。
ARP、DHCP、ICMP
-
IP地址与硬件地址
-
IP地址是网络层使用的地址,它是分层次等级的。
-
硬件地址是数据链路层使用的地址,它是平面式的
-
在网络层及网络层之上使用IP地址,IP地址放在IP数据报的首部,而MAC地址放在MAC帧的首部。通过数据封装,把IP数据报分组封装为MAC帧后,数据链路层看不见数据报分组中的IP地址
-
由于路由器的隔离,IP网络中无法通过广播方式依靠MAC地址来完成跨网络的寻址,因此在IP网络的网络层只使用IP地址来完成寻址。
-
寻址时,每个路由器依据其路由表(依靠静态路由或动态路由协议生成)选择到目标网络(即主机号全为0的网络地址)需要转发到的下一跳(路由器的物理端口号或下一网络地址),而IP分组通过多次路由转发到达目标网络后,改为在目标LAN中通过数据链路层的MAC地址以广播方式寻址,这样可以提高路由选择的效率。
- 在IP层抽象的互联网上只能看到IP数据报
- 虽然在IP数据报首部中有完整的源IP地址和目的IP地址,但路由器只根据目的IP地址的网络号进行路由选择
- 在局域网的数据链路层,只能看见MAC帧。而通过路由器转发IP分组时,此IP分组在每个网络中都被路由器解封装和重新封装。因此IP数据报在被路由器转发时,其数据链路层封装所使用的MAC地址是不断改变的。这也决定了无法使用MAC地址跨网络通信。
- 尽管互联在一起的网络的硬件地址体系各不相同,但IP层抽象的互联网却屏蔽了下层这些复杂的细节。只要我们在网络层上讨论问题,就能够使用统一的、抽象的IP地址研究主机与主机或路由器之间的通信
路由器由于互联多个网络,因此它不仅有多个IP地址,也有多个硬件地址
-
-
地址解析协议(ARP)
-
无论网络层使用什么协议,在实际网络的链路上传送数据帧时,最终必须使用硬件地址。所以需要一种方法来完成IP地址到MAC地址的映射,这就是地址解析协议(Address Resolution Protocol, ARP)。每台主机都设有一个ARP高速缓存,用来存放本局域网上各主机和路由器的IP地址到MAC地址的映射表,称ARP表。使用ARP来动态维护此ARP表。
-
ARP工作在网络层,其工作原理如下
-
主机A欲向本局域网上的某台主机B发送IP数据报时,先在其ARP高速缓存中查看有无主机B的IP地址
- 有,就可查出其对应的硬件地址,再将此硬件地址写入MAC帧,然后通过局域网将该MAC帧发往此硬件地址
- 没有,就通过使用目的MAC地址为FF-FF-FF-FF-FF-FF的帧来封装并广播ARP请求分组,使同一个局域网里的所有主机收到ARP请求
- 主机B收到该ARP请求后,向主机A发出响应ARP分组,分组中包含主机B的IP与MAC地址的映射关系,主机A在收到后将此映射写入ARP缓存,然后按查询到的硬件地址发送MAC帧
- ARP由于看到了IP地址,所以它工作在网络层,而NAT路由器由于看到了端口,所以它工作在传输层。
- 对于某个协议工作在哪个层次,读者应该能通过协议的工作原理进行猜测
ARP用于解决同一个局域网上的主机或路由器的IP地址和硬件地址的映射问题。如果所要找的主机和源主机不在同一个局域网上,那么就要通过ARP找到一个位于本局域网上的某个路由器的硬件地址,然后把分组发送给这个路由器,让这个路由器把分组转发给下一个网络。剩下的工作就由下一个网络来做,尽管ARP请求分组是广播发送的,但ARP相应分组是普通的单播,即从一个源地址发送到一个目的地址
-
-
ARP的4种典型情况如下
- 发送方是主机时,要把IP数据报发送到本网络上的另一台主机。这时用ARP找到目的主机的硬件地址
- 发送方是主机时,要把IP数据报发送到另一个网络上的一台主机。这时用ARP找到本网络上的一个路由器的硬件地址,剩下的工作由这个路由器来完成
- 发送方是路由器时,要把IP数据报转发到本网络上的一台主机。这时用ARP找到目的主机的硬件地址
- 发送方是路由器时,要把IP数据报转发到另一个网络上的一台主机。这时用ARP找到本网络上的一个路由器的硬件地址,剩下的工作由找到这个路由器完成
-
从IP地址到硬件地址的解析是自动进行的,主机的用户并不知道这种地址解析过程。只要主机或路由器和本网络上的另一个已知IP地址的主机或路由器进行通信,ARP就会自动将这个IP地址解析为数据链路层所需要的硬件地址
-
-
动态主机配置协议(Dynamic Host Configuration Protocol,DHCP)
-
常用于给主机动态地分配IP地址,它提供了即插即用的联网机制,这种机制允许一台计算机加入新的网络和获取IP地址而不用手工参与
-
是应用层协议,基于UDP
-
工作原理如下
-
使用客户/服务器方式
-
需要IP地址的主机在启动时就向DHCP服务器广播发送发现报文,这时该主机就成为DHCP客户
-
本地网络上所有主机都能收到此广播报文,但只有DHCP服务器才回答此广播报文
-
DHCP服务器先在其数据库中查找该计算机的配置信息
- 若找到,则返回找到的信息
- 若找不到,则从服务器的IP地址池中取一个地址分配给该计算机
-
DHCP服务器的回答报文称为提供报文
-
-
DHCP服务器聚合DHCP客户端的交换过程如下
- DHCP客户机广播DHCP发现消息,试图找到网络中的DHCP服务器,以便从DHCP服务器获得一个IP地址
- DHCP服务器收到DHCP发现消息后,向网络中广播DHCP提供消息,其中包括提供DHCP客户机的IP地址和相关配置信息
- DHCP客户机收到DHCP提供消息,如果接收DHCP服务器所提供的相关参数,那么通过广播DHCP请求消息向DHCP服务器请求提供IP地址
- DHCP服务器广播DHCP确认消息,将IP地址分配给DHCP客户机
-
DHCP允许网络上配置多台DHCP服务器,当DHCP客户机发出DHCP请求时,有可能收到多个应答消息。这时,DHCP客户机只会挑选其中的一个,通常挑选最先到达的
-
DHCP服务器分配给DHCP客户的IP地址是临时的,因此DHCP客户只能在一段有限的时间内使用这个分配到的IP地址。DHCP称这段时间为租用期。租用期的数值应由DHCP服务器自己决定,DHCP客户也可在自己发送的报文中提出对租用期的要求
-
DHCP是应用层协议,因为它是通过客户/服务器方式工作的,DHCP客户端向DHCP服务器请求服务。
应用层协议有两种工作方式
- 客户/服务器方式
- P2P方式
其他层次的协议是没有这两种工作方式的
-
DHCP的客户端和服务器端需要通过广播方式来进行交互,原因是在DHCP执行初期,客户端不知道服务器端的IP地址,而在执行中间,客户端并未被分配IP地址,从而导致两者之间的通信必须采用广播的方式。采用UDP而不采用TCP的原因也很明显:TCP需要建立连接,如果连对方的IP地址都不知道,那么更不可能通过双方的套接字建立连接
-
-
网际控制报文协议(Internet Control Message Protocol,ICMP)
-
为了提高IP数据报交付成功的机会,在网络层使用了ICMP来让主机或路由器报告差错和异常情况。ICMP报文作为IP层数据报的数据,加上数据报的首部,组成IP数据报发送出去。
-
ICMP是IP层协议
-
ICMP报文的种类有两种
-
ICMP差错报告报文
-
用于目标主机或到目标主机路径上的路由器向源主机报告差错和异常情况,共有5种类型
-
终点不可达
- 当路由器或主机不能交付数据报时,就向源点发送终点不可达报文
-
源点抑制
- 当路由器或主机由于拥塞而丢弃数据报时,就向源点发送源点抑制报文,使源点知道应当把数据报的发送速率放慢
-
时间超过
- 当路由器收到生存时间(TTL)为零的数据报时,除丢弃该数据报外,还要向源点发送时间超过报文。当终点在预先规定的时间内不能收到一个数据报的全部数据报片时,就把已收到的数据报片都丢弃,并向源点发送时间超过报文
-
参数问题
- 当路由器或目的主机收到的数据报的首部中有的字段的值不正确时,就丢弃该数据报,并向源点发送参数问题报文
-
改变路由(重定向)
- 路由器把改变路由报文发送给主机,让主机知道下次应将数据报发送给另外的路由器(可通过更好的路由)
-
-
不应发送ICMP差错报告报文的几种情况如下
- 对ICMP差错报告报文不再发送ICMP差错报告报文
- 对第一个分片的数据报片的所有后续数据报片都不发送ICMP差错报告报文
- 对具有组播地址的数据报都不发送ICMP差错报告报文
- 对具有**特殊地址(如127.0.0.1或0.0.0.0)**的数据报不发送ICMP差错报告报文
-
-
ICMP询问报文
回送请求和回答报文
时间戳请求和回答报文
掩码地址请求和回答报文
路由器询问和通告报文
- 前两类最常用
-
-
ICMP的两个常见应用是分组网间探测PING(用来测试两台主机之间的连通性)和Traceroute(UNIX中的名字,在Windows中是Tracert,可以用来跟踪分组经过的路由)
- PING使用了ICMP回送请求和回答报文,工作在应用层,直接使用网络层的ICMP,而未使用传输层的TCP或UDP
- Traceroute使用了ICMP时间超过报文,工作在网络层
-
IPv6
- 解决IP地址耗尽的措施有以下三种
- 采用无类别编址CIDR,使IP地址的分配更加合理
- 采用网络地址转换(NAT)方法以节省全球IP地址
- 采用具有更大地址空间的新版本IPv6
- IPv6的主要特点
- 更大的地址空间,IPv6将地址从IPv4的32位增大到了128位,IPv6的字节数(16B)是IPv4字节数(4B)的平方
- 扩展的地址层次结构
- 灵活的首部格式
- 改进的选项
- 允许协议继续扩充
- 支持即插即用(即自动配置)
- 支持资源的预分配
- IPv6只有在包的源结点才能分片,是端到端的,传输路径中的路由器不能分片,所以从一般意义上说,IPv6不允许分片(不允许类似IPv4的路由分片)
- IPv6的首部长度必须是8B的整数倍,而IPv4的首部是4B的整数倍
- 增大了安全性。身份验证和保密功能是IPv6的关键特征
- 虽然IPv6与IPv4不兼容,但总体而言它与所有其他的因特网协议兼容,包括TCP、UDP、ICMP、IGMP、OSPF、BGP、DNS,只是在少数地方做了必要的修改(大部分是为了处理长的地址)。IPv6相当好地满足了预定的目标,主要体现在
- IPv6有比IPv4长得多的地址
- 简化了IP分组头,包含8个域(IPv4是12个域)。这一改变使得路由器能够更快地处理分组,从而可以改善吞吐率
- 更好地支持选项。这一改变对新的分组首部很重要,因为一些从前必要的段现在变成了可选段。此外,表示选项的方式的改变还能加快分组的处理速度
IPv6地址
- IPv6数据报的目的地址可以是以下三种基本类型地址之一
单播
- 传统的点对点通信
多播
- 一对多的通信,分组被交付到一组计算机的每台计算机
任播
- IPv6新增的一种类型,任播的目的站是一组计算机,但数据报在交付时只交付其中的一台计算机,通常是距离最近的一台计算机
- IPv4地址通常使用点分十进制表示法。如果IPv6也采用这种表示法,那么地址写起来将会想当长。在IPv6标准中指定了一种比较紧凑的表示法,把地址中的每4位用一个十六进制数表示,并用冒号分割每16位。
- 如4BF5:AA12:0216:FEBC:BA5F:039A:BE9A:2170
- 通常可以把IPv6地址缩写成更紧凑的形式。当16位域的开头有一些0时,可以采用一种缩写表示法,但在域中必须至少有一个数字
- 例如,可以把地址 4BF5:0000:0000:BA5F…缩写为4BF5:0:0:BA5F
- 当有相继的0值域时,还可以进一步缩写。这些域可以用双冒号缩写。双冒号表示法在一个地址中仅能出现一次,因为0值域的个数没有编码,需要从指定的总的域的个数来推算,这样一来,前述地址可以缩写成4BF5::BA5F…
- IPv6扩展了IPv4地址的分级概念,它使用以下3个等级。主要是为了使路由器能够更快地查找路由
- 第一级,顶级,指明全球都知道的公共拓扑
- 第二级,场点级,指明单个场点
- 第三级,指明单个网络接口
- IPv4向IPv6过渡可以采用双协议栈和隧道技术两种策略
- 双协议栈技术是指在一台设备上同时装有IPv4和IPv6协议栈,那么这台设备能与IPv4和IPv6网络通信
- 如果这台设备是路由器,那么在路由器的不同接口上分别配置了IPv4和IPv6地址,并很可能分别连接了IPv4和IPv6网络
- 如果这台设备是计算机,那么它将同时拥有IPv4和IPv6地址,并具备同时处理这两个协议地址的功能
- 隧道技术是将整个IPv6数据报封装到IPv4数据报的数据部分,使得IPv6数据报可以在IPv4网络的隧道中传输
- 双协议栈技术是指在一台设备上同时装有IPv4和IPv6协议栈,那么这台设备能与IPv4和IPv6网络通信
路由协议
自治系统 (Autonomous System,AS)
- 单一技术管理下的一组路由器,这些路由器使用一种AS内部的路由选择协议和共同的度量来确定分组在该AS内的路由,同时还使用一种AS之间的路由选择协议来确定分组在AS之间的路由
- 一个自治系统内的所有网络都由一个行政单位管辖,一个自治系统的所有路由器在本自治系统内都必须是连通的
域内路由与域间路由
- 自治系统内部的路由选择称为域内路由选择,自治系统之间的路由选择称为域间路由选择
- 因特网有两大类路由选择协议
内部网关协议
(Interior Gateway Protocol,IGP)- 在一个自治系统内部使用的路由选择协议,它与互联网中其他自治系统选用什么路由选择协议无关
- 目前这类路由选择协议使用得最多
- 如RIP、OSPF
外部网关协议
(External Gateway Protocol,EGP)- 若源点和目的站处在不同的自治系统中,当数据报传到一个自治系统的边界时(两个自治系统可能使用不同的IGP),就需要使用一种协议将路由选择信息传递到另一个自治系统中
- 目前使用最多的外部网关协议是BGP-4
路由信息协议(Routing Information Protocol,RIP)
- 是内部网关协议(IGP)中最先得到广泛应用的协议。RIP是一种分布式的基于距离向量的路由选择协议,其最大优点是简单
- RIP规定
- 网络中的每个路由器都要维护从它自身到其他每个目的网络的距离记录(因此这是一组距离,称为距离向量)
- 距离也称跳数(Hop Count),规定从一个路由器到直接连接网络的距离(跳数)为1。而每经过一个路由器,距离(跳数)加1
- RIP认为好的路由就是它通过的路由器的数目最少,即优先选择跳数少的路径
- RIP允许一条路径最多只能包含15个路由器(即最多允许15跳)。因此距离等于16时,它表示网络不可达。可见RIP只适用于小型互联网。距离向量路由可能会出现环路的情况,规定路径上的最高跳数的目的是为了防止数据报不断循环在环路上,减少网络拥塞的可能性
- RIP默认在任意两个使用RIP的路由器之间每30秒广播一次RIP路由更新信息,以便自动建立并维护路由表(动态维护)
- 在RIP中不支持子网掩码的RIP广播,所以RIP中每个网络的子网掩码必须相同。但在新的RIP2中,支持变长子网掩码和CIDR
- RIP的特点(注意对比OSPF的特点)
- 仅和相邻路由器交换信息
- 路由器交换的信息是当前路由器所知道的全部信息,即自己的路由表
- 按固定的时间间隔交换路由信息,如每隔30秒
- RIP通过距离向量算法来完成路由表的更新。最初,每个路由器只知道与自己直接相连的网络。通过每30秒的RIP广播,相邻两个路由器相互将自己的路由表发给对方。
- 于是经过第一次RIP广播,每个路由器就知道了与自己相邻的路由器的路由表(即知道了距离自己跳数为1的网络的路由)
- 同理,经过第二次RIP广播,每个路由器就知道了距离自己跳数为2的网络的路由
- 因此,经过若干RIP广播后,所有路由器都最终知道了整个IP网络的路由表,成为RIP最终是收敛的
- 通过RIP收敛后,每个路由器到每个目标网络的路由都是距离最短的(即跳数最少,最短路由),哪怕还存在另一条高速(低时延)但路由器较多的路由
- 距离向量算法
- 每个路由表项目都有三个关键数据:<目的网络N,距离d,下一跳路由器地址X>。对于每个相邻路由器发送过来的RIP报文,执行如下步骤
- 对地址为X的相邻路由器发来的RIP报文,先修改此报文中的所有项目
- 把下一跳字段中的地址都改为X,并把所有距离字段的值加1
- 对修改后的RIP报文中的每个项目,执行如下步骤
- 当原来的路由表中没有目的网络N时,把该项目添加到路由表中
- 当原来的路由表中有目的网络N,且下一跳路由器的地址是X时,用收到的项目替换原路由表中的项目
- 当原来的路由表中有目的网络N,且下一跳路由器的地址不是X时
- 如果收到的项目中的距离d小于路由表中的距离,那么就用收到的项目替换原路由表中的项目
- 否则什么也不做
- 如果180秒(RIP默认超过时间为180秒)还没有收到相邻路由器的更新路由表,那么把此相邻路由器记为不可达路由器,即把距离设置为16(距离为16表示不可达)
- 返回
- 对地址为X的相邻路由器发来的RIP报文,先修改此报文中的所有项目
- RIP最大的优点是实现简单、开销小、收敛过程较快,RIP的缺点如下
- RIP限制了网络的规模,它能使用的最大距离为15(16表示不可达)
- 路由器之间交换的是路由器中的完整路由表,因此网络规模越大,开销也越大
- 网络出现故障时,会出现慢收敛现象(即需要较长时间才能将此信息传送到所有路由器),俗称坏消息传得慢,使更新过程的收敛时间长
- RIP是应用层协议,它使用UDP传送数据(端口520),RIP选择的路由不一定是时间最短的,但一定是具有最少路由器的路径,因为它是根据最少跳数进行路径选择的
- 每个路由表项目都有三个关键数据:<目的网络N,距离d,下一跳路由器地址X>。对于每个相邻路由器发送过来的RIP报文,执行如下步骤
开放最短路径优先(OSPF)协议
-
OSPF协议的基本特点(对比RIP)
- OSPF向本自治系统中的所有路由器发送信息,这里使用的方法是洪泛法。而RIP仅向自己相邻的几个路由器发送信息
- 发送的信息是与本路由器相邻的所有路由器的链路状态,但这只是路由器所知道的部分信息
- 链路状态说明本路由器和哪些路由器相邻及该链路的度量,而在RIP中,发送的信息是本路由器所知道的全部信息,即整个路由表
- 只有当链路状态发生变化时,路由器才用洪泛法向所有路由器发送此信息,并且更新过程收敛得快,不会出现RIP坏消息传得慢的问题。而在RIP中,不管网络拓扑是否发生变化,路由器之间都会定期交换路由表的信息
- OSPF是网络层协议,它不使用UDP或TCP,而直接用IP数据报传送(其IP数据报首部的协议字段为89)。而RIP是应用层协议,它在传输层使用UDP。
-
OSPF的其他特点
- OSPF对不同的链路可根据IP分组的不同服务类型(TOS)而设置成不同的代价,因此,OSPF对于不同类型的业务可计算出不同的路由,十分灵活
- 如果到同一个目的网络有多条相同代价的路径,那么可以将通信量分配给这几条路径。这称为多路径间的负载平衡
- 所有在OSPF路由器之间交换的分组都具有鉴别功能,因而保证了仅在可信赖的路由器之间交换链路状态信息
- 支持可变长度的子网划分和无分类编址CIDR
- 每个链路状态都带上一个32位的序号,序号越大,状态就越新
-
OSPF的基本工作原理
-
由于各路由器之间频繁地交换链路状态信息,因此所有路由器最终都能建立一个链路状态数据库。这个数据库实际上就是全网的拓扑结构图,它在全网范围内是一致的(称为链路状态数据库的同步)。
- 然后,每个路由器根据这个全网拓扑结构图,使用Dijkstra最短路径算法计算从自己到各目的网络的最优路径,以此构造自己的路由表。
- 此后,当链路状态发生变化时,每个路由器重新计算到各目的网络的最优路径,构造新的路由表
虽然使用了Dijkstra算法能计算出完整的最优路径,但路由表中不会存储完整路径,而只存储下一跳(只有到了下一跳路由器,才能知道再下一跳应当怎样走)
-
为使OSPF能够用于规模很大的网络,OSPF将一个自治系统再划分为若干更小的范围,称为区域。划分区域的好处是,将利用洪泛法交换链路状态信息的范围局限于每个区域而非整个自治系统,减少了整个网络上的通信量。在一个区域内部的路由器只知道本区域的完整网络拓扑,而不知道其他区域的网络拓扑情况。这些情况也有层次之分。处在上层的域称为主干区域,负责连通其他下层的区域,并且还连接其他自治域。
-
-
OSPF的五种分组类型
问候分组
- 用来发现和维持邻站的可达性
数据库描述分组
- 向邻站给出自己的链路状态数据库中的所有链路状态项目的摘要信息
链路状态请求分组
- 向对方请求发送某些链路状态项目的详细信息
链路状态更新分组
- 用洪泛法对全网更新链路状态
链路状态确认分组
- 对链路更新分组的确认
-
通常每隔10秒,每两个相邻路由器要交换一次问候分组,以便知道哪些站可达
-
在路由器刚开始工作时,OSPF让每个路由器使用数据库描述分组和相邻路由器交换本数据库中已有的链路状态摘要信息
-
然后,路由器使用链路状态请求分组,向对方请求发送自己所缺少的某些链路状态项目的详细信息
-
经过一系列的这种分组交换,就建立了全网同步的链路数据库
-
如下图所示
-
-
在网络运行中,只要一个路由器的链路状态发生变化,该路由器就要使用链路状态更新分组,用洪泛法向全网更新链路状态。其他路由器在更新后,发送链路状态确认分组对更新分组进行确认
-
为了确保链路状态数据库与全网的状态保持一致,OSPF还规定每隔一段时间(如30分钟)就刷新一次数据库中的链路状态。由于一个路由器的链路状态只涉及与相邻路由器的连通状态,因而与整个互联网的规模并无直接关系。因此,当互联网规模很大时,OSPF要比RIP好得多,而且OSPF协议没有坏消息传播得慢的问题
教材上说OSPF协议不使用UDP数据报传送,而是直接使用IP数据报传送
- 用UDP传送是指将该信息作为UDP报文的数据部分,RIP报文是作为UDP数据报的数据部分
- 直接使用IP数据报传送是指将该信息直接作为IP数据报的数据部分
边界网关协议 (Border Gateway Protocol,BGP)
-
不同自治系统的路由器之间交换路由信息的协议,是一种外部网关协议。边界网关协议常用于互联网的网关之间。路由表包含已知路由器的列表、路由器能够到达的地址及到达每个路由器的路径的跳数
-
内部网关协议主要设法使数据报在一个AS中尽可能有效地从源站传送到目的站。在一个AS内部不需要考虑其他方面的策略。然而BGP使用的环境却不同,主要原因如下
- 因特网的规模太大,使得自治系统之间路由选择非常困难
- 对于自治系统之间的路由选择,要寻找最佳路由是很不现实的
- 自治系统之间的路由选择必须考虑有关策略
-
BGP只能力求寻找一条能够到达目的网络且比较好的路由(不能兜圈子),而并非寻找一条最佳路由。BGP采用的是路径向量路由选择协议,它与距离向量协议和链路状态协议有很大的区别。BGP是应用层协议,它是基于TCP的。
-
BGP的工作原理如下
- 每个自治系统的管理员要选择至少一个路由器(可以有多个)作为该自治系统的BGP发言人
- 一个BGP发言人与其他自治系统中的BGP发言人要交换路由信息,就要先建立TCP连接
- BGP报文是通过TCP传送的,也就是说BGP报文是TCP报文的数据部分
- 然后在此连接上交换BGP报文以建立BGP会话,再利用BGP会话交换路由信息
- 当所有BGP发言人都相互交换网络可达性的信息后,各BGP发言人就可找出到达各个自治系统的较好路由
-
每个BGP发言人除必须运行BGP外,还必须运行该AS所用的内部网关协议,如OSPF或RIP。BGP所交换的网络可达性信息就是要到达某个网络(用网络前缀)表示所要经过的一系列AS
-
下图是BGP发言人交换路径向量的例子
-
-
BGP的特点如下
- BGP交换路由信息的结点数量级是自治系统的数量级,要比这些自治系统中的网络数少很多
- 每个自治系统中BGP发言人(或边界路由器)的数目是很少的,这样就使得自治系统之间的路由选择不致过分复杂
- BGP支持CIDR,因此BGP的路由表也就应当包括目的网络前缀、下一跳路由器,以及到达该目的网络所要经过的各个自治系统序列
- 在BGP刚运行时,BGP的邻站交换整个BGP路由表,但以后只需在发生变化时更新有变化的部分。这样做对节省网络带宽和减少路由器的处理开销都有好处
-
BGP共使用4种报文
打开报文 Open
- 用来与相邻的另一个BGP发言人建立关系
更新报文 Update
- 用来发送某一路由的信息,以及列出要撤销点多条路由
保活报文 Keepalive
- 用来确认打开报文并周期性地证实邻站关系
通知报文 Notification
- 用来发送检测到的差错
-
RIP、OSPF与BGP的比较如下
协议 RIP OSPF BGP 类型 内部 内部 外部 路由算法 距离-向量 链路状态 路径-向量 传递协议 UDP IP TCP 路径选择 跳数最少 代价最低 较好,非最佳 交换结点 和本结点相邻的路由器 网络中的所有路由器 和本结点相邻的路由器 交换内容 当前本路由器知道的全部信息,即自己的路由表 与本路由器相邻的所有路由器的链路状态 首次是整个路由表,非首次则是有变化的部分
IP组播
组播的概念
-
为了能够支持像视频点播、视频会议这样的多媒体应用,网络必须实施某种有效的组播机制。使用多个单播传送来仿真组播总是可能的,但这会引起主机上大量的处理开销、网络上太多的交通量。人们所需要的组播机制是让源计算机一次发送的单个分组可以抵达用一个组地址标识的若干目标主机,并被它们正确接收
-
组播一定仅应用于UDP,它对将报文同时送往多个接受者的应用来说非常重要。而TCP是一个面向连接的协议,它意味着分别运行于两台主机(由IP地址来确定)内的两个进程(由端口号来确定)之间存在一条连接,因此会一对一地发送
-
使用组播的缘由是,有的应用程序要把一个分组发送给多个目的地主机。不是让源主机给每个目的地主机都发送一个单独的分组,而是让源主机把单个分组发送给一个组播地址,该组播地址标识一组地址。网络(如因特网)把这个分组的副本投递给该组中的每台主机。主机可以选择加入或离开一个组,因此一台主机可以同时属于多个组
-
因特网中的IP组播也使用组播组的概念,每个组都由一个特别分配的地址,要给该组发送的计算机将使用这个地址作为分组的目标地址。在IPv4中,这些地址在D类地址空间中分配,而IPv6也有一部分地址空间保留给组播组
-
主机使用一个称为IGMP(因特网组管理协议)的协议加入组播组。它们使用该协议通知本地网络上的路由器关于要接收发送给某个组播组的分组的愿望。通过扩展路由器的路由选择和转发功能,可以在许多路由器互联的支持硬件组播的网络上实现因特网组播
需要注意的是,主机组播时仅发送一份数据,只有数据在传送路径出现分岔时才将分组复制后继续转发。因此,对发送者而言,数据只需发送一次就可发送到所有接收者,大大减轻了网络的负载和发送者的负担。组播需要路由器的支持才能实现,能够运行组播协议的路由称为组播路由器
-
单播与组播的对比如下图
IP组播地址
- IP组播使用D类地址格式。D类地址的前四位是1110,因此D类地址范围是224.0.0.0 ~ 239.255.255.255,每个D类地址标志一个组播组
- 组播数据报和一般的IP数据报的区别
- 前者使用D类IP地址作为目的地址,并且首部中的协议字段值是2,表明使用IGMP
- 需要注意的是
- 组播数据报也是尽最大努力交付,不提供可靠交付
- 组播地址只能用于目的地址,而不能用于源地址
- 对组播数据报不产生ICMP差错报文,因此,若在PING命令后面键入组播地址,将永远不会收到响应
- 并非所有的D类地址都可作为组播地址
- IP组播可分两类
- 只在本局域网上进行硬件组播
- 在因特网的范围内进行组播。在因特网上进行组播的最后阶段,还是要把组播数据报在局域网上用硬件组播交付给组播组的所有成员
IGMP与组播路由算法
- 要使路由器知道组播组成员的信息,需要利用因特网组管理协议(Internet Group Management Protocol,IGMP)。连接到局域网上的组播路由器还必须和因特网上的其他组播路由器协同工作,以便把组播数据报用最小代价传送给所有组成员,这就需要使用组播路由选择协议
- IGMP并不是在因特网范围内对所有组播组成员进行管理的协议。IGMP不知道IP组播组包含的成员数,也不知道这些成员分布在哪些网络上。IGMP让连接到本地局域网上的组播路由器知道本局域网上是否有主机参加或退出了某个组播组。
- IGMP应视为TCP/IP的一部分,其工作可分为两个阶段
- 当某台主机加入新的组播组时,该主机应向组播组的组播地址发送一个IGMP报文,声明自己要成为该组的成员。本地的组播路由器收到IGMP报文后,将组成员关系转发给因特网上的其他组播路由器
- 因为组成员关系是动态的,本地组播路由器要周期性探询本地局域网上的主机,以便知道这些主机是否仍继续是组的成员。只要对某个组有一台主机响应,那么组播路由器就认为这个组是活跃的。但一个组在经过几次的探询后仍然没有一台主机响应时,则不再将该组的成员关系转发给其他的组播路由器
- 组播路由选择实际上就是要找出以源主机为根结点的组播转发树,其中每个分组在每条链路上只传送一次(即在组播转发树上的路由器不会收到重复的组播数据报)。不同的多播组对应于不同的多播转发树;同一个多播组,对不同的源点也会有不同的多播转发树
- 在许多由路由器互联的支持硬件多点传送的网络上实现因特网组播时,主要有三种路由算法
- 基于链路状态的路由选择
- 基于距离-向量的路由选择
- 可以建立在任何路由器协议之上的,因此称为协议无关的组播(PIM)
移动IP
移动IP的概念
- 支持移动性的因特网体系结构与协议共称为移动IP,它是为了满足移动结点(计算机、服务器、网段等)在移动中保持其连接性而设计的。更确切地说,移动IP技术是指移动结点以固定的网络IP地址实现跨越不同网段的漫游功能,并保证基于网络IP的网络权限在漫游过程中不发生任何改变。移动IP的目标是把分组自动地投递给移动结点。一个移动结点是把其连接点从一个网络或子网改变到另一个网络或子网的主机。使用移动IP,一个移动结点可以在不改变其IP地址的情况下改变其驻留位置。
- 基于IPv4的移动iP定位三种功能实体:
移动结点
、归属代理
(也称本地代理)和外埠代理
(也称外部代理)。归属代理
和外埠代理
又称移动代理移动结点
- 具有永久IP地址的移动结点
本地代理
- 在一个网络环境中,一个移动结点的永久居所被称为归属网络,在归属网络中代表移动结点执行移动管理功能的实体称为归属代理(本地代理),它根据移动用户的转交地址,采用隧道技术转交移动结点的数据包
外部代理
- 在外部网络中帮助移动结点完成移动管理功能的实体称为外部代理
- 移动IP和移动自组网络并不相同
- 移动IP技术使漫游的主机可以用多个方式连接到因特网,移动IP的核心网络功能仍然是基于固定互联网中一直使用的各种路由选择协议
- 移动自组网络是将移动性扩展到无线领域中的自治系统,它具有自己独特的路由选择协议,并且可以不和因特网相连。
- 移动IP和动态IP是两个完全不同的概念
- 动态IP指的是局域网中的计算机可以通过网络中的DHCP服务器动态地获得一个IP地址,而不需要用户在计算机的网络设置中指定IP地址,动态IP和DHCP经常会应用在我们的实际工作环境中
移动IP通信过程
- 在移动IP中,每个移动结点都有一个唯一的本地地址,当移动结点移动时,它的本地地址是不变的,在本地网络链路上每个本地结点还必须有一个本地代理来为它维护当前的位置信息,这就需要引入转交地址。当移动结点连接到外地网络链路上时,转交地址就用来标识移动结点现在所处的位置,以便进行路由选择。移动结点的本地地址与当前转交地址的联合称为移动绑定或简称绑定。当移动结点得到一个新的转交地址时,通过绑定向本地代理进行注册,以便让本地代理即时了解移动结点的当前位置
- 移动IP的基本通信流程如下
- 移动结点在本地网时,按传统的TCP/IP方式进行通信(在本地网中有固有的地址)
- 移动结点漫游到一个外地网络时,仍然使用固定的IP地址进行通信。为了能够收到通信对端发给它的IP分组,移动结点需要向本地代理注册当前的位置地址,这个位置地址就是转交地址(它可以是外部代理的地址或动态配置的一个地址)
- 本地代理接收来自转交地址的注册后,会构建一条通向转交地址的隧道,将截获的发给移动结点的IP分组通过隧道传送到转交地址处
- 在转交地址处解除隧道封装,恢复原始的IP分组,最后送到移动结点,这样移动结点在外网就能够收到这些发送给它的IP分组
- 移动结点在外网通过外网的路由器或外部代理向通信对端发送IP数据包
- 移动结点来到另一个外网时,只需向本地代理更新注册的转交地址,就可继续通信
- 移动结点回到本地网时,移动结点向本地代理注销转交地址,这时移动结点又将使用传统的TCP/IP方式进行通信
- 移动IP为移动主机设置了两个IP地址,即主地址和辅地址(转交地址)。移动主机在本地网时,使用的是主地址。当移动到另一个网络时,需要获得一个临时的辅地址,但此时主地址仍然不变。从外网移回本地网时,辅地址改变或撤销,而主地址仍然保持不变
网络层设备
路由器的组成和功能
-
是一种具有多个输入/输出端口的专用计算机,其任务是连接不同的网络(连接异构网络)并完成路由转发。在多个逻辑网络(即多个广播域)互联时必须使用路由器。
-
当源主机要向目标主机发送数据报时,路由器先检查源主机与目标主机是否连接在同一个网络上
- 如果源主机和目标主机在同一个网络上,那么直接交付而无须通过路由器。
- 如果源主机和目标主机不在同一个网络上,那么路由器按照转发表(路由表)指出的路由将数据报转发给下一个路由器,这称为间接交付
-
从结构上看,路由器由路由选择和分组转发两部分构成。而从模型的角度上看,路由器是网络层设备,它实现了网络模型的下三层,即物理层、数据链路层、网络层。如下图
如果一个存储转发设备实现了某个层次的功能,那么它就可以互联两个在该层次上使用不同协议的网段(网络)。
- 网桥实现了物理层、数据链路层,那么网桥可以互联两个物理层和数据链路层不同的网段
- 中继器实现了物理层后,却不能互联两个物理层不同的网段,这是因为中继器不是存储转发设备,它属于直通式设备
-
路由选择部分也称控制部分,其核心构件是路由选择处理机。路由选择处理机的任务是根据所选定的路由选择协议构造出路由表,同时经常或定期地和相邻路由器交换路由信息而不断更新和维护路由表
-
分组转发部分由三部分组成,
交换结构
,一组输入端口
,一组输出端口
- 输入端在从物理层接收到的比特流中提取出数据链路层帧,进而从帧中提取出网络层数据报,输出端口则执行恰好相反的操作。
- 交换结构是路由器的关键部件,它根据转发表对分组进行处理,将某个输入端口进入的分组从一个合适的输出端口转发出去。交换结构本身就是一个网络,有三种常用的交换方法
- 通过存储器交换
- 通过总线交换
- 通过互联网络交换
-
路由器主要完成两个功能,
分组转发
和路由计算
- 前者处理通过路由器的数据流,关键操作是转发表查询、转发及相关的队列管理和任务调度
- 后者通过和其它路由器进行基于路由协议的交互,完成路由表的计算
-
路由器和网桥的重要区别是
- 网桥与高层协议无关,而路由器是面向协议的,它依据网络地址进行操作,并进行路径选择、分段、帧格式转换、对数据报的生存时间和流量进行控制 等
- 现今的路由器一般都提供多种协议的支持,包括OSI、TCP/IP、IPX等
路由表与路由转发
-
路由表是根据路由选择算法得出的,主要用途是路由选择,标准路由表有4个项目:
目的网络IP地址
、子网掩码
、下一跳IP地址
、接口
。如下图所示 -
转发表是从路由表得出的,其表项和路由表项有直接的对应关系。但转发表的格式和路由表的格式不同,其结构应使查找过程最优化(而路由表则需对网络拓扑变化的计算最优化)。
-
转发表中含有一个分组将要发往的目的地址,以及分组的下一跳(即下一步接收者的目的地址,实际为MAC地址)。为了减少转发表的重复项目,可以使用一个默认路由代替所有具有相同下一跳的项目,并将默认路由设置得比其他项目的优先级低。如下图
-
路由表总是用软件来实现的,转发表可以用软件来实现,甚至也可以用特殊的硬件来实现
-
-
注意转发和路由选择的区别
- 转发是路由器根据转发表把收到的IP数据报从合适的端口转发出去,它仅涉及一个路由器。
- 路由选择涉及很多路由器,路由表是许多路由器协同工作的结果。这些路由器按照复杂的路由算法,根据从各相邻路由器得到的关于网络拓扑的变化情况,动态地改变所选择的路由,并由此构造出整个路由表
在讨论路由选择的原理时,往往不去区分转发表和路由表的区别,但要注意路由表不等于转发表。分组的实际转发是靠直接查找转发表,而不是直接查找路由表
传输层
传输层提供的服务
-
从通信和信息处理的角度看,传输层向它上面的应用层提供通信服务,它属于面向通信部分的最高层,同时也是用户功能中的最底层
-
位于网络层之上,它为运行在不同主机上的进程之间提供了逻辑通信,而网络层提供主机之间的逻辑通信。显然,即使网络层协议不可靠(网络层协议使分组丢失、混乱或重复),传输层同样能为应用程序提供可靠的服务。
-
从下图可看出,网络的边缘部分的两台主机使用网络核心部分的功能进行端到端的通信时,只有主机的协议栈才有传输层和应用层,而路由器在转发分组时都只用到下三层的功能(即在通信子网中没有传输层,传输层只存在于通信子网以外的主机中)
-
传输层的功能如下
-
传输层提供应用进程之间的逻辑通信(即端到端的通信)。与网络层的区别是,网络层提供的是主机之间的逻辑通信
- 从网络层来说,通信的双方是两台主机,IP数据报的首部给出了这两台主机的IP地址。但两台主机之间的通信实际上是两台主机中的应用进程之间的通信,应用进程之间的通信又称端到端的逻辑通信。这里逻辑通信的意思是,传输层之间的通信好像是沿水平方向传送的数据,但事实上这两个传输层之间并没有一条水平方向的物理连接
-
复用、分用
复用
- 指发送方不同的应用进程都可使用同一个传输层协议传送数据
分用
- 指接收方的传输层在剥去报文的首部后能够把这些数据正确交付到目的应用程序
网络层也有复用分用的功能,但网络层的复用是指发送方不同协议的数据都可以封装成IP数据包发送出去,分用是指接收方的网络层在剥去首部后把数据交付给相应的协议
-
传输层还要对接收到的报文进行差错检测(首部和数据部分)。而网络层只检查IP数据报的首部,不检验数据部分是否出错
-
提供两种不同的传输协议,即面向连接的TCP和无连接的UDP。而网络层无法同时实现两种协议(即在网络层要么只提供面向连接的服务,如虚电路;要么只提供无连接服务,如数据报,而不可能在网络层同时存在这两种方式)
-
-
传输层向高层用户屏蔽了底层网络核心的细节(如网络拓扑、路由协议等),它使应用进程看见的好像是两个传输层实体之间有一条端到端的逻辑通信信道,这条逻辑通信信道对上层的表现却因传输层协议不同而有很大差别。
-
当传输层采用面向连接的TCP时,尽管下面的网络是不可靠的(只提供最大努力的服务),但这种逻辑通信信道就相当于一条全双工的可靠信道。但当传输层采用无连接的UDP时,这种逻辑通信信道仍然时一条不可靠信道
传输层的寻址与端口
-
端口的作用
- 端口能够让应用层的各种应用进程将其数据通过端口向下交付给传输层,以及让传输层知道应当将其报文段中的数据向上通过端口交付给应用层相应的进程。
- 端口是传输层服务访问点(TSAP),它在传输层的作用类似于IP地址在网络层的作用或MAC地址在数据链路层的作用,只不过IP地址和MAC地址标识的是主机,而端口标识的是主机中的应用程序
- 数据链路层的SAP是MAC地址,网络层的SAP是IP地址,传输层的SAP是端口
- 在协议栈层间的抽象的协议端口是软件端口,它与路由器或交换机上的硬件端口是完全不同的概念。硬件端口是不同硬件设备进行交互的接口,而软件端口是应用层的各种协议进程与传输实体进行层间交互的一种地址。传输层使用的是软件端口
-
端口号
-
应用进程通过端口号进行标识,端口号长度为16bit,能够表示65536( 2 16 2^{16} 216)个不同的端口号。端口号只具有本地意义,即端口号只标识本计算机应用层中的各进程,在因特网中不同计算机的相同端口号是没有联系的。根据端口号范围可将端口分为两类
-
服务端使用的端口号。它又分为两类,最重要的一类是熟知端口号,数值为0~1023,IANA(互联网地址指派机构)把这些端口号指派给了TCP/IP最重要的一些应用程序,让所有的用户都知道。另一类称为登记端口号,数值为1024~49151。它是供没有熟知端口号的应用程序使用的,使用这类端口号必须在IANA登记,以防止重复
- 一些常用的熟知端口号如下
应用程序 FTP TELNET SMTP DNS TFTP HTTP SNMP 熟知端口号 21 23 25 53 69 80 161 -
客户端使用的端口号,数值为49152~65535。由于这类端口号仅在客户进程运行时才动态地选择,因此又称为短暂端口号(临时端口)。通信结束后,刚用过的客户端口号就不复存在,从而这个端口号就可供其他客户进程以后使用
-
-
-
套接字
- 在网络中通过IP地址来标识和区别不同的主机,通过端口号来标识和区分一台主机中的不同应用进程,端口号拼接到IP地址即构成套接字Socket。在网络中采用发送方和接收方的套接字来识别端点。套接字,实际上是一个通信端点,即
- 套接字Socket = (IP地址:端口号)
- 它唯一地标识网络中的一台主机和其上的一个应用(进程)
- 在网络通信中,主机A发给主机B的报文段包含目的端口号和源端口号,源端口号是返回地址的一部分,即当B需要发回一个报文段给A时,B到A的报文段中的目的端口号便是A到B的报文段中的源端口号(完全的返回地址是A的IP地址和源端口号)
- 在网络中通过IP地址来标识和区别不同的主机,通过端口号来标识和区分一台主机中的不同应用进程,端口号拼接到IP地址即构成套接字Socket。在网络中采用发送方和接收方的套接字来识别端点。套接字,实际上是一个通信端点,即
无连接服务与面向连接服务
- 面向连接服务就是在通信双方进行通信之前,必须先建立连接,在通信过程中,整个连接的情况一直被实时地监控和管理。通信结束后,应该释放这个连接
- 无连接服务是指两个实体之间地通信不需要先建立好连接,需要通信时,直接将信息发送到网络中,让该信息的传递在网上尽力而为地往目的地传送
- TCP/IP协议族在IP层之上使用了两个传输协议
- 面向连接的传输控制协议(TCP),采用TCP时,传输层向上提供的是一条全双工地可靠逻辑信道
- 无连接地用户数据包协议(UDP),采用UDP时,传输层向上提供的是一条不可靠的逻辑信道
- TCP提供面向连接的服务,在传送数据之前必须先建立连接,数据传送结束后要释放连接。TCP不提供广播或组播服务。由于TCP提供面向连接的可靠传输服务,因此不可避免地增加了许多开销,如确认、流量控制、计时器、连接管理等。这不仅使协议数据单元的头部增大很多,还要占用许多的处理机资源。因此TCP主要适用于可靠性更重要的场合,如文件传输协议FTP、超文本传输协议HTTP、远程登录TELNET等
- UDP是一个无连接的非可靠传输层协议。它在IP之上仅提供两个附加服务:多路复用、对数据的错误检查。IP知道怎样把分组投递给一台主机,但不知道怎样把它们投递给主机上的具体应用。
- UDP在传送数据之前不需要先建立连接,远程主机的传输层收到UDP报文后,不需要给出任何确认。由于UDP比较简单,因此执行速度比较快、实时性好
- 使用UDP的应用主要包括小文件传送协议(TFTP)、DNS、SNMP、实时传输协议(RTP)
- IP数据报和UDP数据报的区别
IP数据报
在网络层要经过路由的存储转发UDP数据报
在传输层的端到端的逻辑信道中传输,封装成IP数据报在网络层传输时,UDP数据报的信息对路由是不可见的
- TCP和网络层虚电路的区别
TCP
报文段在传输层抽象的逻辑信道中传输,对路由器不可见虚电路
所经过的交换结点都必须保存虚电路状态信息。在网络层若采用虚电路方式,则无法提供无连接服务;而传输层采用TCP不影响网络层提供无连接服务
UDP协议
UDP数据报
-
UDP概述
- UDP仅在IP的数据报服务之上增加了两个最基本的服务:复用、分用和差错检测。如果应用开发者选择UDP而非TCP,那么应用程序几乎直接与IP打交道
- UDP优点如下
- UDP无须建立连接。因此UDP不会引入建立连接的时延。试想如果DNS运行在TCP而非UDP上,那么DNS的速度会慢很多。HTTP使用TCP而非UDP,是因为对于基本文本数据的Web网页来说,可靠性是至关重要的
- 无连接状态。TCP需要在端系统中维护连接状态。此连接状态包括接收和发送缓存、拥塞控制参数、序号与确认号的参数,而UDP不维护连接状态,也不跟踪这些参数。因此,某些专用应用服务器使用UDP时,一般都能支持更多的活动客户机
- 分组首部开销小,TCP有20B的首部开销,而UDP仅有8B的开销
- 应用层能更好地控制要发送的数据和发送时间。UDP没有拥塞控制,因此网络中的拥塞不会影响主机的发送效率。某些实时应用要求以稳定的速度发送,能容忍一些数据的丢失,但不允许有较大的时延,而UDP正好满足这些应用的需求
- UDP支持一对一、一对多、多对一和多对多的交互通信
- UDP常用于一次性传输较少数据的网络应用,如DNS、SNMP等,因为对于这些应用,若采用TCP,则将为连接创建、维护、拆除带来不小的开销。UDP也常用于多媒体应用
- UDP不保证可靠交付,但这并不意味着应用对数据的要求是不可靠的,所有维护可靠性的工作可由用户在应用层来完成。应用开发者可根据应用的需求来灵活设计自己的可靠性机制
- UDP是面向报文的。发送方UDP对应用层交下来的报文,在添加首部后就向下交付给IP层,一次发送一个报文,既不合并,也不拆分,而是保留这些报文的边界;接收方UDP对IP层交上来的UDP数据报,在去除首部后就原封不动地交付给上层应用进程,一次交付一个完整的报文。因为报文是不可分割的,是UDP数据报处理的最小单位。因此,应用程序必须选择合适大小的报文,若报文太长,UDP把它交付给IP层后,可能会导致分片;若报文太短,UDP把它交付给IP层后,会使IP数据报的首部的相对长度太大,两者都会降低IP层的效率
-
UDP的首部格式
-
UDP数据报包含两部分:UDP首部和用户数据。UDP首部有8B,由4个字段组成,每个字段的长度都是2B,如下图
- 各字段意义如下
源端口
- 源端口号,在需要对方回信时选用,不需要时可用全0
目的端口
- 在终点交付报文时必须使用到
长度
- 包含首部、数据,最小值是8B(仅有首部)
校验和
- 检测UDP数据报在传输中是否有错。有错就丢弃。该字段是可选的,当源主机不想计算校验和时,则直接令该字段为全0
- 各字段意义如下
-
当传输层从IP层收到UDP数据报时,就根据首部中的目的端口,把UDP数据报通过相应的端口上交给应用程序,如下图
- 如果接收方UDP发现收到的报文中的目的端口号不正确,那么就丢弃该报文,并由ICMP发送端口不可达差错报文给发送方
-
UDP校验
-
计算校验和时,要在UDP数据报之前增加12B的伪首部,伪首部并不是UDP的真正首部。只是在计算校验和时,临时添加在UDP数据报的前面,得到一个临时的UDP数据报。校验和就是按照这个临时的UDP数据报来计算的。伪首部不向下传送、不向上递交,而只是为了计算校验和。如下图
-
UDP校验和的计算方法和IP数据报首部校验和的计算方法相似,不同的是,IP数据报的校验和只检验IP数据报的首部,但UDP的校验和则检查首部、数据部分
- 发送方首先把全零放入校验和字段并添加伪首部,然后把UDP数据报视为许多16位的字链接起来
- 若UDP数据报的数据部分不是偶数个字节,则要在数据部分末尾填入一个全零字节(但此字节不发送)
- 按二进制反码计算出这些16位字的和,将此和的二进制反码写入校验和字段,并发送
- 接收方把收到的UDP数据报加上伪首部(如果不为偶数个字节,那么还需要补上全零字节)后,按二进制反码求这些16位字的和
- 当无差错时,其结果应为全1,否则就表明有差错出现,接收方就应该丢弃这个UDP数据报
- 校验时,若UDP数据报部分的长度不是偶数个字节,则需填入一个全零字节。但是此字节和伪首部一样,是不发送的
- 如果UDP校验和校验出UDP数据报是错误的,那么可以丢弃,也可以交付给上层,但是需要附上错误报告,即告诉上层这是错误的数据
- 通过伪首部,不仅可以检查源端口号、目的端口号、UDP用户数据报的数据部分,还可以检查IP数据报的源IP地址和目的地址
-
这种简单的差错检验方法的检错能力并不强,但它的好处是简单、处理速度快
TCP协议
TCP协议的特点
- TCP是在不可靠的IP层之上实现的可靠的数据传输协议,它主要解决传输的可靠、有序、无丢失、不重复问题。TCP是TCP/IP体系中非常复杂的一个协议,主要特点如下
- TCP是面向连接的传输层协议
- 每条TCP连接只能有两个端点,每条TCP连接只能是点对点(一对一)
- TCP提供可靠的交付服务,保证传送的数据无差错、不丢失、不重复且有序
- TCP提供全双工通信,允许通信双方的应用进程在任何时候都能发送数据,为此TCP连接的两端都设有发送缓存和接收缓存,用来临时存放双向通信的数据
发送缓存
暂存的数据- 发送应用程序传送给发送方TCP准备发送的数据
- TCP已发送但尚未收到确认的数据
接收缓存
暂存的数据- 按序到达但尚未被接收应用程序读取的数据
- 不按序到达的数据
- TCP是面向字节流的,虽然应用程序和TCP的交互是一次一个数据块(大小不等),但TCP把应用程序交下来的数据仅视为一连串的无结构的字节流
- TCP和UDP在发送报文时所采用的方式完全不同。UDP报文的长度由发送应用程序决定,而TCP报文的长度则根据接收方给出的窗口值和往前网络拥塞程度来决定。如果应用程序传送到TCP缓存的数据块太长,TCP就把它划分得短一些再传送;如果太短,TCP也可以等到积累足够多的字节后再组成报文段发送出去
TCP报文段
-
TCP传送的数据单位称为报文段。TCP报文段既可以用来运载数据,又可以用来建立连接、释放连接、应答。一个TCP报文段分为首部、数据两部分,整个TCP报文段作为IP数据报的数据部分封装在IP数据报中,其首部的前20B是固定的。TCP报文段的首部最短为20B,后面有4N字节是根据需要而增加的选项,通常长度为4B的整数倍,如下图
- 各字段意义如下
源端口和目的端口
- 各占2B。端口是运输层与应用层的服务接口,运输层的复用和分用功能都要通过端口实现
序号
- 各占4B,范围是**
0
到
2
32
−
1
0 到 2^{32}-1
0到232−1,共
2
32
2^{32}
232个序号。TCP是面向字节流的(即TCP传送时是逐个字节传送的),所以TCP连接传送的字节流中的每个字节都按顺序编号。序号字段的值指的是本报文段所发送的数据的第一个字节的序号**
- 例如,一报文段的序号字段值是301,而携带的数据共有100B,表明本报文段的数据的最后一个字节的序号是400,因此下一个报文段的数据序号应从401开始
- 各占4B,范围是**
0
到
2
32
−
1
0 到 2^{32}-1
0到232−1,共
2
32
2^{32}
232个序号。TCP是面向字节流的(即TCP传送时是逐个字节传送的),所以TCP连接传送的字节流中的每个字节都按顺序编号。序号字段的值指的是本报文段所发送的数据的第一个字节的序号**
确认号
- 占4B,是期望收到对方下一个报文段的第一个数据字节的序号。若确认号为N,则表明到序号N-1为止的所有数据都已正确收到
数据偏移
(首部长度)- 占4位,这里不是IP数据报分片的那个数据偏移,而是表示首部长度(首部中还有长度不确定的选项字段),它指出TCP报文段的数据起始处距离TCP报文段的起始处有多远。数据偏移的单位是32位(以4B为计算单位)。因此当此字段的值为15时,达到TCP首部的最大长度为60B
保留
- 占6位,保留为今后使用,但目前应置为0
紧急位URG
- URG=1时,表明紧急指针字段有效。它告诉系统此报文中有紧急数据,应尽快传送(相当于高优先级的数据)。但URG需要和紧急指针配合使用,即数据从第一个字节到紧急指针所指字节就是紧急数据
确认位ACK
- 仅当ACK=1时,确认号字段才有效。当ACK=0时,确认号无效。TCP规定,在连接建立后,所有传送的报文段都必须把ACK置1
推送位PSH(PUSH)
- 接收方TCP收到PSH=1的报文段,就尽快地交付给接收应用进程,而不再等到整个缓存都填满后再向上交付
复位位RST(Reset)
- RST=1时,表明TCP连接中出现严重差错(如主机崩溃或其他原因),必须释放连接,然后再重新建立运输连接
同步位SYN
- 同步SYN=1表示这是一个连接请求或连接接受报文。当SYN=1,ACK=0时,表明这是一个连接请求报文,对方若同意建立连接,则应在响应报文中使用SYN=1,ACK=1
终止位FIN(Finish)
- 用来释放一个连接。当FIN=1时,表明此报文段的发送放的数据已发送完毕,并要求释放传输连接
窗口
- 占2B,范围为**
0
到
2
16
−
1
0 到 2^{16}-1
0到216−1,它指出现在允许对方发送的数据量**,接收方的数据缓存空间是有限的,因此用窗口值作为接收方让发送方设置其发送窗口的依据
- 例如,设确认号是701,窗口字段是1000。这表明,从701号算起,发送此报文段的一方还有接收1000字节数据(字节序号是701~1700)的接收缓存空间
- 占2B,范围为**
0
到
2
16
−
1
0 到 2^{16}-1
0到216−1,它指出现在允许对方发送的数据量**,接收方的数据缓存空间是有限的,因此用窗口值作为接收方让发送方设置其发送窗口的依据
校验和
- 占2B。校验和字段校验的范围包括首部和数据两部分。在计算校验和时,和UDP一样,要在TCP报文段的前面加上12B的伪首部(只需将UDP伪首部的第4个字段,即协议字段的17改成6,其他的和UDP一样)
紧急指针
- 占2B。紧急指针仅在URG=1时才有意义,它指出在本报文段中紧急数据共有多少字节(紧急数据在报文段数据的最前面)
选项
- 长度可变。TCP最初只规定了一种选项,即最大报文段长度(Maximum Segment Size,MSS)。MSS是TCP报文段中的数据字段的最大长度
填充
- 这是为了使整个首部长度是4B的整数倍
- 各字段意义如下
TCP连接管理
-
TCP是面向连接的协议,因此每个TCP连接都有三个阶段:连接建立、数据传送、连接释放。TCP连接的管理就是使运输连接的建立和释放都能正常进行
-
TCP连接建立的过程中,要解决以下三个问题
- 要使每一方能够确知对方的存在
- 要允许双方协商一些参数
- 如最大窗口值、是否使用窗口扩大选项、时间戳选项、服务质量等
- 能够对运输实体资源进行分配
- 如缓存大小、连接表中的项目等
-
TCP把连接作为最基本的抽象,每条TCP连接有两个端点,TCP连接的端点不是主机,不是主机的IP地址,不是应用程序,也不是传输层的协议端口。TCP连接的端口即为**套接字(socket)**或插口,每条TCP连接唯一地被通信的两个端点(即两个套接字)确定
-
TCP连接的建立采用客户/服务器方式。主动发起连接建立的应用进程称为客户(client),而被动等待连接建立的应用进程称为服务器(server)
-
TCP连接的建立
-
连接建立前,服务器进程处于**LISTEN(收听)**状态,等待客户的连接请求
-
客户机的TCP首先向服务器的TCP发送连接请求报文段。这个特殊报文段的首部中的同步位SYN置1,同时选择一个初始序号seq=x。TCP规定,SYN报文段不能携带数据,但要消耗掉一个序号。这时,TCP客户进程进入**SYN-SEND(同步已发送)**状态
-
服务器的TCP收到连接请求报文段后,如同意建立连接,则向客户机发回确认,并为该TCP连接分配缓存和变量。在确认报文段中,把SYN、ACK都置1,确认号是ack=x+1,同时也为自己选择一个初始序号seq=y。注意,确认报文段不能携带数据,但也要消耗掉一个序号。这时,TCP服务器进程进入**SYN-RCVD(同步收到)**状态
-
当客户机收到确认报文段后,还要向服务器给出确认,并为该TCP连接分配缓存和变量。确认报文段的ACK置1,确认号ack=y+1,序号seq=x+1。该报文段可以携带数据,若不携带数据则不消耗序号。这时,TCP客户进程进入**ESTABLISHED(已建立连接)**状态
服务器端的资源是在完成第二次握手时分配的,而客户端的资源是在完成第三次握手时分配的,这就使得服务器易于受到SYN洪泛攻击
-
-
TCP连接的释放
-
客户机打算关闭连接时,向其TCP发送连接释放报文段,并停止发送数据,主动关闭TCP连接,该报文段的终止位FIN置1,序号seq=u,它等于前面已传送过的数据的最后一个字节的序号加1,FIN报文段即使不携带数据,也消耗掉一个序号。这时,TCP客户进程进入**FIN-WAIT-1(终止等待1)**状态。
- TCP是全双工的,即可以想象为一条TCP连接上有两条数据通路,发送FIN的一端不能再发送数据,即关闭了其中一条数据通路,但对方还可以发送数据。
-
服务器收到连接释放报文段后即发出确认,确认号ack=u+1,序号seq=v,等于它前面已传送过的数据的最后一个字节的序号加1。然后服务器进入CLOSE-WAIT(关闭等待)状态。此时,从客户机到服务器这个方向的连接就释放了,TCP连接处于半关闭状态。但服务器若发送数据,客户机仍要接收,即从服务器到客户机这个方向的连接并未关闭。
-
若服务器已没有要向客户机发送的数据,就通知TCP释放连接,此时其发出FIN=1的连接释放报文段。设该报文段的序号为w(在半关闭状态服务器可能又发送了一些数据),还须重复上次已发送的确认号ack=u+1。这时服务器进入LAST-ACK(最后确认)状态
-
客户机收到连接释放报文段后,必须发出确认。把确认报文段中的确认位ACK置1,确认号ack=w+1,序号seq=u+1。此时TCP连接还未释放,必须经过时间等待计时器设置的时间2MSL(最长报文段寿命)后,客户机才进入**CLOSED(连接关闭)**状态
-
-
TCP连接的建立、释放总结如下
- 连接
建立
分3步- SYN=1,seq=x
- SYN=1,ACK=1,seq=y,ack=x+1
- ACK=1,seq=x+1,ack=y+1
- 连接
释放
分4步- FIN=1,seq=u
- ACK=1,seq=v,ack=u+1
- FIN=1,ACK=1,seq=w,ack=u+1
- ACK=1,seq=u+1,ack=w+1
- ACK、SYN、FIN一定等于1
- 连接
TCP可靠传输
-
TCP的任务是在IP层不可靠的,尽力而为服务的基础上建立一种可靠数据传输服务。TCP提供的可靠数据传输服务保证接收方进程从缓冲区读出的字节流与发送方发出的字节流完全一样。TCP使用了校验、序号、确认、重传等机制来达到这一目的。
- TCP的校验机制与UDP一样
-
序号
-
TCP首部的序号字段用来保证数据能有序提交给应用层,TCP把数据视为一个无结构但有序的字节流,序号建立在传送的字节流之上,而不建立在报文段之上
-
TCP连接传送的数据流中的每个字节都编上一个序号。序号字段的值是指本报文段所发送的数据的第一个字节的序号
- 如下图,A的发送缓存区中共有10B,序号从0开始标号,第一个报文包含第0~2个字节,则该TCP报文段的序号是0,第二个报文段的序号是3
-
-
确认
- TCP首部的确认号是期望收到对方的下一个报文段的数据的第一个字节的序号
- 上图中,如果接收方B已收到第一个报文段,此时B希望收到的下一个报文段的数据从第3个字节开始的,那么B发送给A的报文中的确认号字段应为3。发送方缓存区会继续存储那些已发送但未收到确认的报文段,以便在需要时重传
- TCP默认使用累计确认,即TCP只确认数据流中至第一个丢失字节为止的字节。例如,图5.8,接收方B收到了A发送的包含字节0~2及字节6~7的报文段。由于某种原因,B还未收到字节3~5的报文段,此时B仍在等待字节3(和其后面的字节),因此B到A的下一个报文段将确认号字段置为3
- TCP首部的确认号是期望收到对方的下一个报文段的数据的第一个字节的序号
-
重传
-
超时
- TCP每发送一个报文段,就对这个报文段设置一次计时器。计时器设置的重传时间到期但还未收到确认时,就要重传这一报文段
- 由于TCP的下层是一个互联网环境,IP数据报所选择的路由变化很大,因而传输层的往返时延的方差也很大。为了计算超时计时器的重传时间,TCP采用一种自适应算法,它记录一个报文段发出的时间,以及收到相应确认的时间,这两个时间之差称为报文段的往返时间(Round-Trip-Time,RTT)。TCP保留了RTT的一个加权平均往返时间 R T T s RTT_s RTTs,它会随新测量RTT样本值得变化而变化。显然,超时计时器设置的超时重传时间(Retransmission Time-Out,RTO)应略大于 R T T s RTT_s RTTs,但也不能大太多,否则当报文段丢失时,TCP不能很快重传,导致数据传输时延大。
-
冗余ACK
(冗余确认)- 超时触发重传存在的一个问题是超时周期往往太长。所幸的是,发送方通常可在超时事件发生之前通过注意所谓的冗余ACK来较好地检测丢包情况。冗余ACK就是再次通过确认某个报文段的ACK,而发送方先前已经收到过该报文段的确认。
- 例如,发送方A发送了序号为1,2,3,4,5的TCP报文段,其中2号报文段在链路中丢失,它无法到达接收方B。因此,3,4,5号报文段对于B来说就成了失序报文段。TCP规定每当比期望序号大的失序报文段到达时,就发送一个冗余ACK,指明下一个期待字节的序号。在本例中, 3,4,5号报文到达B,但它们不是B所期望收到的下一个报文,于是B就发送3个对1号报文段的冗余ACK,表示自己期望接收2号报文段。TCP规定当发送方收到对同一个报文段的3个冗余ACK时,就可以认为跟在这个被确认报文段之后的报文段已经丢失。就前面的例子而言,当A收到对于1号报文段的3个冗余ACK时,它可以认为2号报文段已经丢失,这时发送方A可以立即对2号报文执行重传,这种技术通常称为快速重传。当然冗余ACK还被用在拥塞控制中
- 超时触发重传存在的一个问题是超时周期往往太长。所幸的是,发送方通常可在超时事件发生之前通过注意所谓的冗余ACK来较好地检测丢包情况。冗余ACK就是再次通过确认某个报文段的ACK,而发送方先前已经收到过该报文段的确认。
-
TCP流量控制
- TCP提供流量控制服务来消除发送方(发送速率太快)使接收方缓存区溢出的可能性,因此可以说流量控制是一个速度匹配服务(匹配发送方的发送速率与接收方的读取速率)
- TCP提供一种基于滑动窗口协议的流量控制机制
- 在通信过程中,接收方根据自己接收缓存的大小,动态地调整发送方的发送窗口大小,这称为接收窗口rwnd,即调整TCP报文段首部中的窗口字段值,来限制发送方向网络注入报文的速率。同时,发送方根据其对当前网络拥塞程序的估计而确定的窗口值,这称为拥塞窗口cwnd,其大小与网络的带宽、时延密切相关
- 传输层和数据链路层的流量控制的区别是:传输层定义端到端用户之间的流量控制,数据链路层定义两个中间的相邻结点的流量控制。另外,数据链路层的滑动窗口协议的窗口大小不能动态变化,传输层的则可以动态变化
TCP拥塞控制
-
防止过多的数据注入网络,保证网络中的路由器或链路不致过载。出现拥塞时,端点并不了解拥塞发生的细节,对通信连接的端点来说,拥塞往往表现为通信时延的增加。
-
拥塞控制和流量控制的区别
- 拥塞控制是让网络能够现有的网络负荷,是一个全局性的过程,涉及所有的主机、所有的路由器,以及与降低网络传输性能有关的所有因素。
- 流量控制往往是指点对点的通信量的控制,是个端到端的问题(接受端控制发送端),它所要做的是抑制发送端发送数据的速率,以便使接受端来得及接收。
-
因特网建议标准定义了进行拥塞控制的4种算法:
慢开始
、拥塞避免
、快重传
、快恢复
-
发送方在确定发送报文段的速率时,既要根据接收方的接收能力,又要从全局考虑不要使网络发生拥塞。因此,TCP协议要求发送放维护以下两个窗口
接收窗口rwnd
- 接收方根据目前接收缓存大小所允诺的最新窗口值,反映接收方的容量。由接收方根据其放在TCP报文的首部的窗口字段通知发送方
拥塞窗口cwnd
- 发送方根据自己估算的网络拥塞程度而设置的窗口值,反映网络的当前容量。只要网络未出现拥塞,拥塞窗口就再增大一些,以便把更多的分组发送出去。但只要出现网络拥塞,拥塞窗口就减小一些,以减少注入网络的分组数
-
发送窗口的上限值应取接收窗口rwnd和拥塞窗口cwnd中较小的一个,即
- 发送窗口的上限值 = min[rwnd, cwnd]
-
接收窗口的大小可根据TCP报文首部的窗口字段通知发送方
- 这里假设接收方总是有足够大的缓存空间,因而发送窗口大小由网络的拥塞程度决定,也就是说,可以将发送窗口等同为拥塞窗口
-
慢开始
和拥塞避免
-
慢开始算法
- 在TCP刚刚连接好并开始发送TCP报文段时,先令拥塞窗口cwnd=1,即一个最大报文段长度MSS。每收到一个对新报文段的确认后,将cwnd加1,即增大一个MSS。用这样的方法逐步增大发送放的cwnd,可使分组注入网络的速率更加合理
- 使用慢开始算法后,每经过一个传输轮次(即往返时延RTT),cwnd就会加倍,即cwnd的大小指数式增长。这样,慢开始一直把cwnd增大到一个规定的慢开始门限(ssthresh),然后改用拥塞避免算法
-
拥塞避免算法
- 思路是让拥塞窗口cwnd缓慢增大,具体做法是:每经过一个往返时延RTT就把发送方的拥塞窗口cwnd加1,而不是加倍,使拥塞窗口cwnd按线性规律缓慢增长(即加法增大),这比慢开始算法的拥塞增长速率要缓慢得多
- 根据cwnd的大小执行不同的算法,可以归纳
- 当cwnd < ssthresh时,使用慢开始算法
- 当cwnd > ssthresh时,停止使用慢开始算法而改用拥塞避免算法
- 当cwnd = ssthresh时,即可使用慢开始算法,又可使用拥塞避免算法(通常做法)
-
网络拥塞的处理
-
无论是在慢开始阶段还是在拥塞避免阶段,只要发送方判断网络出现拥塞(未按时收到确认),就要把慢开始门限ssthresh设置为出现拥塞时的发送方的cwnd值的一半(但不能小于2)。然后把拥塞窗口cwnd重新设置为1,执行慢开始算法。这样做的目的是迅速减少主机发送到网络中的分组数,使得发生拥塞的路由器有足够的时间把队列中积压的分组处理完
-
慢开始和拥塞避免算法的实现过程如下图
-
初始时,拥塞窗口置为1,即cwnd=1,慢开始门限置为16,即ssthresh=16
-
慢开始阶段,cwnd的初值为1,以后发送方每收到一个确认ACK,cwnd值加1,也即经过每个传输轮次(RTT),cwnd呈指数规律增大。当拥塞窗口cwnd增长到慢开始门限ssthresh时(即当cwnd=16),就改用拥塞避免算法,cwnd按线性规律增大
-
假定cwnd=24时,网络出现超时,更新ssthresh值为12(即变为超时时cwnd值的一半),cwnd重置为1,并执行慢开始算法,当cwnd=12时,改为执行拥塞避免算法
在慢开始阶段,若2cwnd > ssthresh,则下一个RTT后的cwnd等于ssthresh,而不等于2cwnd,即cwnd不能跃过ssthresh值。
- 如上图,第16个轮次时,cwnd=8,ssthresh=12
- 第17个轮次时,cwdn=12,而不等于16
-
在慢开始和拥塞避免算法中使用了乘法减小和加法增大方法
- 乘法减小指不论是在慢开始阶段还是在拥塞避免阶段,只要出现超时(即很可能出现了网络拥塞),就把慢开始门限值ssthresh设置为当前拥塞窗口的一般(并执行慢开始算法)。当网络频繁出现拥塞时,ssthresh值就下降得很快,以大大减少注入网络的分组数。
- 加法增大指执行拥塞避免算法后,在收到对所有报文段的确认后(即经过一个RTT),就把拥塞窗口cwnd增加一个MSS大小,使拥塞窗口缓慢增大,以防止网络过早出现拥塞
-
拥塞避免并不能完全避免拥塞。利用以上措施要完全避免网络拥塞是不可能的。拥塞避免是指在拥塞避免阶段把拥塞窗口控制为按线性规律增大,使网络比较不容易出现拥塞
-
-
-
-
快重传
和快恢复
(对慢开始和拥塞避免算法的改进)-
快重传
- 快重传技术使用了冗余ACK来检测丢包的发生。同样,冗余ACK也用于网络拥塞的检测(丢了包当然意味着网络可能出现了拥塞)。快重传并非取消重传计时器,而是在某些情况下可更早地重传丢失的报文段
- 当发送方连续收到三个重复的ACK报文时,直接重传对方尚未收到的报文段,而不必等待那个报文段设置的重传计时器超时
-
快恢复
-
原理
-
当发送方连续收到三个冗余ACK(即重复确认)时,执行乘法减小算法,把慢开始门限ssthresh设置为此时发送方cwnd的一半。这是为了预防网络发生拥塞。但发送方现在认为网络很可能没有发生(严重)拥塞,否则就不会有几个报文段连续到达接收方,也不会连续收到重复确认。因此与慢开始不同之处是它把cwnd值设置为慢开始门限ssthresh改变后的数值,然后开始执行拥塞避免算法(加法增大),使拥塞窗口缓慢地线性增大
-
由于跳过了拥塞窗口cwnd从1起始的慢开始过程,所以被称为快恢复。快恢复算法实现过程如下图(作为比对,虚线为慢开始的处理过程)
-
-
-
-
在流量控制中,发送方发送数据的量由接收方决定,而在拥塞控制中,则由发送方自己通过检测网络状况来决定。实际上,慢开始、拥塞避免、快重传、快恢复几种算法是同时应用在拥塞控制机制中。四种算法使用的总结
- 在TCP连接建立和网络出现超时时,采用慢开始和拥塞避免算法
- 当发送方接收到冗余ACK时,采用快重传和快恢复算法
接收方的缓存空间总是有限的。因此,发送方发送窗口的实际大小由流量控制和拥塞控制共同决定。当题目中同时出现接收窗口rwnd和拥塞窗口cwnd时,发送方实际的发送窗口大小是由rwnd和cwnd中较小的那一个确定的
应用层
网络应用模型
客户/服务器模型
- 在(Client/Server,C/S)模型中,有一个总是打开的主机称为服务器,它服务于许多来自其他称为客户机的主机请求,其工作流程如下
- 服务器处于接收请求的状态
- 客户机发出服务请求,并等待接收结果
- 服务器收到请求后,分析请求,进行必要的处理,得到结果并发送给客户机
- 客户/服务器模型的主要特点还有
- 网络中各计算机的地位不平等,服务器可以通过对用户权限的限制来达到管理客户机的目的,使它们不能随意存储/删除数据,或进行其他受限的网络活动。整个网络的管理工作由少数服务器担当,因此网络的管理非常集中和方便
- 客户机相互之间不直接通信
- 可扩展性不佳。受服务器硬件和网络带宽的限制,服务器支持的客户机数有限
P2P模型
- P2P模型的思想是整个网络中的传输内容不再被保存在中心服务器上,每个结点都同时具有下载、上传功能,其权利和义务都是大体对等的
- 在P2P模型中,各计算机没有固定的客户和服务器划分。相反,任意一对计算机——称为对等方(Peer),直接相互通信。
- 与C/S模型相比,P2P模型的优点主要体现如下
- 减轻了服务器的计算压力,消除了对某个服务器的完全依赖,可以将任务分配到各个结点上,因此大大提高了系统效率和资源利用率
- 例如,播放流媒体时,对服务器的压力过大,而通过P2P模型,可以利用大量的客户机来提供服务
- 多个客户机之间可以直接共享文档
- 可扩展性好,传统服务器有响应和带宽的限制,因此只能接受一定数量的请求
- 网络健壮性强,单个结点的失效不会影响其他部分的结点
- 减轻了服务器的计算压力,消除了对某个服务器的完全依赖,可以将任务分配到各个结点上,因此大大提高了系统效率和资源利用率
- P2P的缺点
- 在获取服务的同时,还要给其他结点提供服务,因此会占用较多的内存,影响整机速度
- 例如,经常进行P2P下载还会对硬盘造成较大的损伤
- 在获取服务的同时,还要给其他结点提供服务,因此会占用较多的内存,影响整机速度
域名系统(DNS)
- DNS系统采用客户/服务器模型,其协议运行在UDP之上,使用53号端口
- 从概念上可将DNS分为3部分:层次域名空间、域名服务器、解析器
层次域名空间
- 因特网采用层次树状结构的命名方法。任何一个连接到因特网的主机或路由器,都有一个唯一的层次结构名称,即域名(Domain Name)。域(Domain)是名字空间中一个可被管理的划分。域还能划分子域。每个域名都由标号序列组成,而各标号之间用点隔开
- 关于域名中的标号有以下几点需要注意
- 标号中的英文不区分大小写
- 标号中除**连字符(-)**外不能使用其他的标点符号
- 每个标号不超过63个字符,多标号组成的完整域名最长不超过255个字符
- 级别最低的域名写在最左边,级别最高的顶级域名写在最右边
- 顶级域名(Top Level Domain,TLD)分为如下三类
国家顶级域名
(nTLD)- 国家和某些地区的域名
通用顶级域名
(gTLD)- 常见的有**.com**,.net等
基础结构域名
- 这种顶级域名只有一个,即arpa,用于反向域名解析,因此又称为反向域名
- 在域名系统中,每个域分别由不同的组织进行管理。每个组织都可以将它的域再分成一定数目的子域,并将这些子域委托给其他组织去管理
域名服务器
- 因特网的域名系统被设计成一个联机分布式的数据库系统,并采用客户/服务器模型。域名到IP地址的解析是由运行在域名服务器上的程序完成的,一个服务器所负责管辖的(或有权限的)范围称为区(不以域为单位)
- DNS使用了大量的域名服务器,它们以层次方式组织。没有一台域名服务器具有因特网上所有主机的映射,相反,该映射分布在所有的DNS上。采用分布式设计的DNS,是一个在因特网上实现分布式数据库的精彩范例。主要有4类域名服务器
根域名服务器
- 最高层次的域名服务器,所有的根域名服务器都知道所有的顶级域名服务器的IP地址。根域名服务器也是最重要的域名服务器,不管是哪个本地域名服务器,若要对因特网上任何一个域名进行解析,只要自己无法解析,就首先要求助于根域名服务器。
- 因特网上有13个根域名服务器,需要注意的是,根域名服务器用来管辖顶级域,通常它并不直接把带查询的域名直接转换成IP地址,而是告诉本地域名服务器下一步应当找哪个顶级域名服务器进行查询
顶级域名服务器
- 负责管理在该顶级域名服务器注册的所有二级域名,收到DNS查询请求时,就给出相应的回答(可能是最后的结果,也可能是下一步应当查找的域名服务器的IP地址)
授权域名服务器
(权限域名服务器)- 每台主机都必须在授权域名服务器登记。为了更可靠地工作,一台主机最好至少有两个授权域名服务器。实际上,许多域名服务器都同时充当本地域名服务器和授权域名服务器。授权域名服务器总能将其管辖的主机名转换为该主机的IP地址
本地域名服务器
- 本地域名服务器对域名系统非常重要。每个因特网服务提供者(ISP),或一所大学,都可以拥有一个本地域名服务器。当一台主机发出DNS查询请求时,这个查询请求报文就发送给该主机的本地域名服务器
域名解析过程
-
把域名映射成为IP地址,或把IP地址映射成为域名的过程,前者称为正向解析,后者称为反向解析。当客户端需要域名解析时,通过本机的DNS客户端构造一个DNS请求报文,以UDP数据报方式发往本地域名服务器
-
域名解析有两种方式:递归查询和递归与迭代相结合的查询
-
递归查询,由于该方法给根域名服务器造成的负载过大,所以在实际中几乎不使用
-
递归与迭代相结合,该方式分为两部分
- 主机向本地域名服务器的查询采用的是递归查询
- 本地域名服务器向根域名服务器的查询采用迭代查询
-
如下图
-
-
为了提高DNS的查询效率,并减少因特网上的DNS查询报文数量,在域名服务器中广泛地使用了高速缓存。当一个DNS服务器接收到DNS查询结果时,它能将该DNS信息缓存在高速缓存中。
文件传输协议(FTP)
FTP的工作原理
- FTP采用客户/服务器的工作方式,使用TCP可靠的传输服务。一个FTP服务器进程可同时为多个客户进程提供服务。FTP服务器进程由两大部分组成
- 主进程,负责接收新的请求
- 若干从属进程,负责处理单个请求
- FTP工作步骤如下
- 打开熟知端口21(控制端口),使客户进程能够连接上
- 等待客户进程发连接请求
- 启动从属进程来处理客户进程发来的请求。主进程与从属进程并发执行,从属进程对客户进程的请求处理完毕后立即终止
- 回到等待状态,继续接收其他客户进程的请求
- FTP服务器必须在整个会话期间保留用户的状态信息。特别是服务器必须把指定的用户账户与控制连接联系起来,服务器必须追踪用户在远程目录树上的当前位置。
控制连接与数据连接
- FTP在工作时,使用两个并行的TCP连接,一个是控制连接(端口号21),一个是数据连接(端口号20)。可使协议更加简单和更容易实现
控制连接
- 服务器监听21号端口,等待客户连接,建立在这个端口上的连接称为控制连接,控制连接用来传输控制信息(如连接请求、传送请求)等,并且控制信息都以7位ASCII格式传送。FTP客户发出的传送请求,通过控制连接发送给服务器端的控制进程,但控制连接并不用来传送文件。在传输文件时还可以使用控制连接(如客户在传输中途发一个中止传输的命令),因此控制连接在整个会话期间一直保持打开状态
数据连接
- 服务器端的控制进程在接收到FTP客户发来的文件传输请求后,就创建数据传送进程和数据连接。数据连接用来连接客户端和服务器端的数据传送进程,数据传送进程实际完成文件的传送,在传送完毕后关闭数据传送连接并结束运行
- 数据连接有两种传输模式:主动模式PORT和被动模式PASV
PORT
模式的原理- 客户端连接到服务器的21端口,登陆成功后要读取数据时,客户端随机开放一个端口,并发送命令告知服务器,服务器收到PORT命令和端口号后,通过20端口和客户端开放的端口连接,发送数据
PASV
模式的原理- 客户端要读取数据时,发送PASV命令到服务器,服务器在本地随机开放一个端口,并告知客户端,客户端再连接到服务器开放的端口进行数据传输。
- 用PORT模式还是PASV模式,选择权在客户端。简单概述,主动模式是服务器连接到客户端的端口。被动模式是客户端连接到服务器的端口。
- 因为FTP使用了一个分离的控制连接,所以也称FTP的控制信息是带外Out-of-band传送的。使用FTP时,若要修改服务器上的文件,则需要先将此文件传送到本地主机,然后再将修改后的文件副本传送到原服务器,来回传送耗费很多时间。
- **网络文件系统(NFS)**采用另一种思路,它允许进程打开一个远程文件,并能在该文件的某个特定位置开始读写数据。这样,NFS可使用户复制一个大文件中的一个很小的片段,而不需要复制整个大文件
电子邮件
电子邮件系统的组成结构
- 一个电子邮件系统应具有三个最主要的组成构件,即用户代理(User Agent)、邮件服务器、电子邮件使用的协议
用户代理(UA)
- 用户与电子邮件系统的接口。用户代理向用户提供一个接口来发送、接收邮件,用户代理至少应当具有撰写、显示、邮件处理的功能。通常情况下,用户代理就是一个运行在PC上的程序(电子邮件客户端)
邮件服务器
- 功能是发送、接收邮件。采用客户/服务器方式工作
邮件发送协议和读取协议
- 用于用户代理向邮件服务器发送邮件,或在邮件服务器之间发送邮件
SMTP和POP3
- SMTP (简单邮件传输协议,Simple Mail Transfer Protocol,SMTP)
- 是一种提供可靠且有效的电子邮件传输的协议,它控制两个相互通信的SMTP进程交换信息。由于SMTP使用客户/服务器方式,因此负责发送邮件的SMTP进程就是SMTP客户,而负责接收邮件的SMTP进程就是SMTP服务器。SMTP用的是TCP连接,端口号为25。SMTP通信有以下三个阶段
连接建立
- 发件人的邮件发送到发送方邮件服务器的邮件缓存后,SMTP客户就每隔一段时间对邮件缓存扫描一次。发现有邮件,就使用SMTP的熟知端口号25与接收方邮件服务器的SMTP服务器建立TCP连接。连接建立后,接收方SMTP服务器发出220 Service ready(服务就绪)。然后SMTP客户向SMTP服务器发送HELO命令,附上发送方的主机名
- SMTP不使用中间的邮件服务器。TCP连接总是在发送方和接收方这两个邮件服务器之间直接建立,而不管它们相隔多远,不管在传送过程中要经过多少个路由器。当接受方邮件服务器因故障暂时不能建立连接时,发送方的邮件服务器只能等待一段时间后再次尝试连接
邮件传送
- 连接建立后,就可开始传送邮件。邮件的传送从MAIL命令开始,MAIL命令后面有发件人的地址。若SMTP服务器已准备好接收邮件,则回答250 OK。接着SMTP客户端发送一个活多个RCPT命令,格式为REPT TO:<收件人地址>。每发送一个REPT命令,都应有相应的信息从SMTP服务器返回,如250 OK或550 No such user here(无此用户)
- RCPT命令的作用是,先弄清接收方系统是否已做好接收邮件的准备,然后才发送邮件,以便不至于发送了很长的邮件后才知道地址错误,进而避免浪费通信资源
- 获得OK的回答后,客户端就使用DATA命令,表示要开始传输邮件的内容。正常情况下,SMTP服务器回复的信息是354 Start mail input; end with 。
连接释放
- 邮件发送完毕后,SMTP客户应发送QUIT命令。SMTP服务器返回的信息是221(服务关闭),表示SMTP同意释放TCP连接。邮件传送的全部过程就此结束
- 是一种提供可靠且有效的电子邮件传输的协议,它控制两个相互通信的SMTP进程交换信息。由于SMTP使用客户/服务器方式,因此负责发送邮件的SMTP进程就是SMTP客户,而负责接收邮件的SMTP进程就是SMTP服务器。SMTP用的是TCP连接,端口号为25。SMTP通信有以下三个阶段
- POP3和IMAP
- 邮局协议(Post Office Protocol,POP)是一个非常简单但功能有限的邮件读取协议,现在使用的是它的第3个版本POP3。POP3采用的是**Pull(拉)**的通信方式,当用户读取邮件时,用户代理向邮件服务器发出请求,拉取用户邮箱中的邮件
- POP也使用客户/服务器的工作方式,在传输层使用TCP,端口号为110。接收方的用户代理上必须运行POP客户程序,而接收方的邮件服务器上则运行POP服务器程序。POP有两种工作方式:下载并保留和下载并删除。
- 因特网报文存取协议(IMAP)也是邮件读取协议,比POP复杂很多,IMAP为用户提供了创建文件夹、在不同文件夹之间移动邮件、在远程文件夹中查询邮件等联机命令,为此IMAP服务器维护了会话用户的状态信息。
万维网(WWW)
WWW的概念与组成结构
- 万维网的内核部分是由三个标准构成的
统一资源定位符(URL)
- 负责标识万维网上的各种文档,并使每个文档具有唯一的标识符URL
超文本传输协议(HTTP)
- 一个应用层协议,它使用TCP连接进行可靠的传输,HTTP是万维网客户程序和服务器程序之间交互所必须严格遵守的协议
超文本标记语言(HTML)
- 一种文档结构的标记语言,它使用一些约定的标记对页面上的各种信息进行描述
超文本传输协议(HTTP)
-
HTTP操作过程
-
用户单击鼠标后所发生的事件按顺序如下
- 浏览器分析链接指向页面的URL
- 浏览器向DNS请求解析URL的IP地址
- 域名系统DNS解析出清华大学服务器的IP地址
- 浏览器与该服务器建立TCP连接(默认端口号为80)
- 浏览器发出HTTP请求
- 服务器通过HTTP响应把文件index.htm发送给浏览器
- 释放TCP连接
- 浏览器解释文件index.htm,并将web页显示给用户
-
-
HTTP的报文结构