参考的是谢希仁的第七版。
很粗略地过一下知识点,开学后会有开学后的笔记。
写这篇只是对计网有个大概印象。很多细节有待补充。
第一章 概述
一整章的名字就叫概述。很牛。
第一节没啥东西。跳了。
1.2 互联网概述
1.2.1 网络的网络
- 网络 Network:由若干结点 Node 和连接结点的链路 Link 组成
- 互联网 internet:网络之间用路由器连接起来。也被称为网络的网络 network of network
网络连接计算机,互联网将网络通过路由器连接起来。与网络连接的计算机称为主机 host。互联网往往用一朵云表示。
- 因特网 Internet:首字母大写为专有名词。指当前全球最大的的特定计算机网络。采用TCP/IP协议族作为通信规则,前身是美国ARPANET。
1.2.2 互联网基础结构发展三个阶段
- 第一阶段:单个网络ARPANET发展为互联网
- 第二阶段:逐步建成三级结构的因特网
- 第三阶段:逐步形成了多层ISP结构的因特网
。
- ISP(Internet Service Provider) 互联网服务提供商。
- ISP的不同层次:
- 主干ISP:第一层,面积最大,往往是国家范围。
- 地区ISP:第二层,与主干ISP相连
- 本地ISP:第三层,直接连接用户。可以和地区ISP相连也可以直接和主干ISP相连。
- IXP(Internet eXchange Point) 互联网交换点:允许两个网络直接相连,而不必通过第三个网络。比如直接在两个地区ISP中间插一个IXP,就节省了经过主干ISP的时间和资源。
1.2.3 互联网的标准化工作
- 几个部门
- ISOC 互联网协会
- IAB 互联网体系结构委员会。从属于ISOC
- IETF 互联网工程部。从属于IAB。负责中短期工程问题,主要针对协议开发和标准化。
- IRTF 互联网研究部。从属于IAB。负责理论研究和长期问题。
- 制定互联网/因特网标准的阶段:
- 互联网/因特网草案(Internet Draft):这个阶段还不是RCF文档
- 建议标准(Proposed Standard):这个阶段开始称为RCF文档。
- 互联网/因特网标准。并非所有RCF文档都会变成因特网标准,只有其中一小部分会成为因特网标准。
之前还有一个草案标准阶段,但是在2011年10月取消了这个阶段。
1.3 互联网/因特网的组成
- 边缘部分:所有连接在因特网上的主机组成。用户直接使用
- 核心部分。由大量网络和练连接这些网络的路由器组成。这部分用以给边缘部分提供服务。
1.3.1 互联网的边缘部分
- 连接在互联网上的所有主机被称为端系统(end system)
- 端系统之间的通信方式(主机之间的通信方式):
- 客户-服务器方式 C/S:其中一个主机是服务请求方(客户程序),另一个主机是服务提供方(服务器程序)。
- 对等连接方式 P2P:不区分主机和服务器,两台主机处于平等地位。也可以认为两台主机都是服务器也都是主机。
1.3.2 互联网的核心部分
路由器 router:在核心部分起特殊作用。实现分组交换 packet switching的关键构件。任务是转发收到的分组。
交换 Switching:按照某种方式动态地分配传输线路的资源。
接下来讲三种交换方式:
电路交换 Circuit Switching:电路交换机接通电话线的方式。这种交换方式必须经过三个步骤:
- 建立连接(分配通信资源)
- 通话(一直占用通信资源)
- 释放连接(归还通信资源)
用这种交换方式来传输计算机数据会导致资源浪费
分组交换 Packet Switching:采用存储转发技术。将报文(message)划分为更小的等长数据段,之后为每个数据段添加首部(header)来构成一个分组(packet)。然后将所有分组交给网络,让其最终被交付到正确的传输终点。
- 分组交换的三个部分
- 发送方:构造分组和发送分组
- 路由器:缓存分组和转发分组
- 接收方:接受分组和还原报文
- 分组交换的三个部分
报文交换 Message Switching:也采用存储转发技术。已经被分组交换技术取代。
三种交换方式的对比
- 电路交换:建立连接后整个报文从源点直达终点。通信结束后释放连接。
- 优点:
- 通信时延小
- 有序传输
- 实时性强
- 缺点
- 建立连接时间长
- 线路独占,使用效率低
- 灵活性差
- 优点:
- 报文交换:不需要建立连接。整个报文在相邻节点中传输,直到抵达终点。结点将整个报文存储下来后查看转发表,之后再转发到下一个结点。
- 优点
- 无需建立连接
- 动态分配线路
- 提高线路利用率
- 提供多目标服务
- 缺点
- 引起了转发时延
- 需要较大的存储缓存空间
- 需要存储额外的信息量
- 优点
- 分组交换:不需要建立连接。先将报文切割成分组,然后每个分组在节点中传输,依次抵达终点。存储后查看转发表,转发给下一个结点。
- 优点
- 报文交换的所有优点
- 简化存储管理。使用分组管理,比报文管理要简洁
- 加速了传输
- 减少了出错概率和重发数据量。分组错误率会比报文更低,出错了也只需要重传分组。
- 缺点
- 转发时延
- 额外信息量
- 可能存在分组失序,缺失,重复的问题。
- 优点
- 电路交换:建立连接后整个报文从源点直达终点。通信结束后释放连接。
1.4跳了。没啥东西。
补:计算机网络的组成
- 从组成部分来看,完整的计算机网络主要由硬件、软件、协议组成。
- 从工作方式看,计算机网络可以分成边缘部分和核心部分。
- 功能组成上看,计算机网络由通信子网和资源子网组成。通信子网由各种传输介质、通信设备和相应的网络协议组成。资源子网是实现资源共享功能的设备及其软件的集合。
补:计算机网络的功能
- 数据通信。最基本也最重要的功能。
- 资源共享。
- 分布式处理。
- 提高可靠性。
- 负载均衡。
1.5 计算机网络的类别
1.5.1 关于计算机网络的定义
- 计算机网络最简单的定义:一些互相连接的、自治的计算机的集合。即要求如下:
- 互连:计算机之间可以通过有线或者无线的方式进行数据通信
- 自治:独立的计算机,具有自己的硬件和软件,可以单独运行使用
- 集合:至少有两台计算机
- 关于计算机网络的较好定义:计算机网络主要是由一些通用的、可编程的硬件互连而成,而这些硬件并非专门用来实现某一特定目的。这些可编程的硬件可以用来传送多种不同类型的数据,并能支持广泛的和日益增长的应用。
- 也就是说计算机连接的硬件中不仅限于计算机,也可以包含智能手机等硬件。(但可编程意味着硬件中需要有中央处理器CPU)
- 计算机网络并非专门用来传输数据,而是可以支持很多种的应用。
1.5.2 计算机网络的分类
按照不同的分类角度进行分类
按交换技术分类
- 电路交换网络
- 报文交换网络
- 分组交换网络
按使用者分类
- 公用网。任何按电信公司规定缴纳费用的人都可以使用的网络。
- 专用网。某个部门为了满足本单位特殊业务工作需要而建造的网络。
传输介质分类
- 有线网络
- 无线网络
覆盖范围分类
- 广域网WAN
- 城域网MAN
- 局域网LAN。传统上,局域网使用的是广播技术,广域网使用的是交换技术。二者使用的协议有差别,使用的协议差异也是区分局域网和广域网的主要依据。
- 个人区域网PAN
若中央处理机之间的距离非常近,则一般称之为多处理机系统,而不称为计算机网络。
拓扑结构分类
- 总线型网络。
- 星型网络。
- 环型网络。
- 网状型网络。
传输技术分类
- 广播式网络。所有联网计算机共享一个公共通信通道。
- 点对点网络。每条物理线路连接一对计算机。广域网一般都是点对点网络。
是否采用存储转发技术和路由选择技术是区分这两种的标准。
接入网 AN(Access Network):用户端系统到互联网中第一个路由器之间的一种网络。
1.6 计算机网络的性能
1.6.1 计算机网络的性能指标
速率:速率指的是数据的传送速率,指的是数据率。需要注意的是数据量和数据率中的相同单位表示不同的大小。比如数据量中的
表示 (B(8b)),但数据率中的 表示 (b/s(bps))。之后的单位,数据量中以 递增。数据率中以 递增 带宽:计算机网络中,表示单位时间内网络中的某信道所能通过的”最高数据率“。带宽的单位是bit/s。单位意义和数据率是一致的。
吞吐量:单位时间内通过某个网络(或信道,接口)的实际的数据量。吞吐量的上限就是带宽。
时延:数据从网络一端到另一端所需要的时间。一般由以下几个部分组成,
- 发送时延:指的是主机或者路由器发送数据帧所需要的时间。计算公式为
- 传播时延:电磁波在信道中传播一定的距离需要花费的时间。传播时延的计算公式:
- 处理时延:主机或路由器在收到分组花费一定的时间进行处理,所花费的时间就是处理时延。
- 排队时延:分组在进入路由器后要排队等待处理,处理后要排队等待转发,这就产生了排队时延。排队时延的长短取决于当前通信量的大小。
有些教材中会把排队时延和处理时延合并为处理时延。总时延是这些时延的和。
- 发送时延:指的是主机或者路由器发送数据帧所需要的时间。计算公式为
时延带宽积:是传播时延和带宽的乘积,单位是bit。也可以视为是以比特为单位的链路长度。
往返时间 RTT:信息双向交互一次的所需时间。即从源主机发送分组到源主机收到目的主机的确认分组为止的所需时间。
利用率:
- 信道利用率:表示某信道有百分之几的时间是被利用的(有数据通过)
- 网络利用率:全网络的信道利用率的加权平均
用表示网络空闲时的时延, 表示网络当前时延, 表示利用率。那么关系可以以下公式计算: 信道利用率并非越高越好。如公式,利用率到50%时,网络时延就达到了2
。利用率越高网络时延也就越高。
有的教材中还会提到丢包率。但我这本没有。所以不写了。
1.6.2跳了。好像不是很重要。
- 关于时延的计算问题。稍微提一嘴,好像考的比较多。
1.7 计算机网络体系结构
1.7.1 计算机网络结构的形成
- 法律上的国际标准是OSI
- 事实上的国际标准是TCP/IP
1.7.2 协议与划分层次
- 网络协议(network protocol):为网络中的数据交换而建立的规则、标准或约定。一般由以下三个要素构成
- 语法。数据与控制信息的结构或者格式。
- 语义。即需要发出何种控制信息,完成何种动作和作出何种响应。
- 同步。即事件实现顺序的详细说明。
为了方便操作,一般会将协议区分为不同的模块进行分层管理。位于上层的模块可以调用下层的模块。
- 网络的体系结构 architecture指的就是计算机网络的各层及其协议的集合。
1.7.3 具有五层协议的体系结构
OSI七层协议,TCO/IP四层协议,书上为了方便理解和学习,给的是五层协议,如图:
- 应用层 application layer:体系中的最高层,通过应用进程之间的交互来完成特定的网络应用。应用层定义的是应用进程间的通信和交互规则。这里一般采用大量多种的应用协议。
- 运输层 transport layer:负责向两台主机中进程之间的通信提供通用的数据服务。应用进程通过利用该服务传送应用层报文。可以复用和分用。
主要使用以下两种协议。- 传输控制协议TCP:提供面向连接的、可靠的数据传输服务,数据传输单位是报文段
- 用户数据报协议UDP:提供无连接的,尽最大努力的(best effort)的数据传输服务,数据传输用的单位是用户数据段。UDP是不可靠的,而TCP是可靠的。
- 网络层 network layer:负责为网上的不同主机提供通信服务。发送数据时,网络层负责把运输层产生的报文段或者用户数据报封装成分组或包进行传输。网络层的另一个任务是选择合适的路由。有时也称为IP层或者网际层。一般采用IP协议。
- 数据链路层 data link layer:链路层负责将网络层交下来的IP数据组装成帧。相邻结点之间传送帧。
- 物理层 physical layer:物理层上传输的数据单位是比特。物理层考虑用多大的电压表示“1”和“0”,以及接收方怎么识别、以及连接电缆的插头应当有多少根引脚等。传递信息使用的具体的物理媒介不是物理层考虑的范围。
TCP/IP中,数据链路层和物理层合并为网络接口层。
可靠服务指的是在传输前会建立连接,而不可靠服务不会建立连接,直接进行数据传输,但这样就不能保证信息的正确性。
- 关于各层的应用范围
1.7.4 实体、协议、服务和服务访问点
这一块就是一大堆的术语。
- 实体 entity:表示任何可发送或接收信息的硬件或软件进程。
- 对等实体:通信双方中相同层次的实体。比如应用层对应应用层,运输层对应运输层等,网卡对应网卡之类的。
- 协议:控制两个对等实体进行逻辑通信的规则的集合。
- 协议三要素
- 语法:定义交换信息的格式。
- 语义:定义收发双方所要完成的操作。
- 同步:定义通讯双方的时序关系。
- 协议三要素
- 在协议的控制下,两个对等实体之间的逻辑通信使得本层可以向上一层提供服务。实现本层协议,还需要使用下面一层所提供的服务。
协议是水平的,服务是垂直的。
- 服务访问点 SAP:同一系统中相邻两层实体进行交互的地方。
- 服务原语:上层使用下层服务时与下层交换的命令。
- 协议数据单元 PDU:对等层次之间传送的数据包称为该层的协议数据单元。
- 服务数据单元 SDU:同一系统内,层与层之间交换的数据包称为服务数据单元。不同层的PDU称呼不同,如物理层的PDU称为比特,链路层的PDU称为帧,网络层的PDU称为分组,传输层的PDU称为报文。
- 协议控制信息 PCI:控制协议操作的信息。
- 多个SDU可以合成为一个PDU,一个SDU也可以划分为多个PDU。
- 传输数据时,把n+1层的PDU作为第n层的SDU,然后加上第n层的PCI,就构成了第n层的PDU。
补:OSI的参考模型(包含结构层的详细描述)
物理层:
- 传输单位是比特
- 物理层主要研究以下内容
- 通信链路和通信结点的连接需要一些电路接口,物理层定义了接口的一些参数。比如机械形状和尺寸等。
- 规定了通信链路上传输的信号的意义和电气特征。例如可以规定信号A代表数字0,以此类推,给信号赋予意义。
注意:传输信息用的物理媒体,例如光缆,双绞线等不再物理层协议之内而在物理层协议之下。因此物理媒体也可以认为是第0层。
数据链路层
- 传输单位是帧。任务是将网络层给的IP数据组装成帧。
- 作用主要概括为成帧,差错控制,流量控制和传输管理等。
- 成帧就是指将IP数据组装为帧。
- 差错控制。指通过数据链路层的协议可以判断比特流的传输有没有出错。
- 流量控制。指协调两个结点之间的速率,避免两个结点的发送速率和接收速率相差太大而导致数据丢弃。
网络层
- 传输单位是数据报。主要任务是把网络层的PDU(分组)从源端传输到目的端。
- 关键问题是实现路由选择,并实现流量控制、拥塞控制、差错控制和网际互联等功能。
- 路由选择。就是用网络层的路由算法算出一条更适合的分组传输路径
- 流量控制。这个和数据链路层的流量控制意义是一样的。
- 差错控制。两个通信结点之间判断分组的传输有没有出错。出错了能纠错就纠错,不能就丢弃。
- 拥塞控制。如果所有结点都来不及接受分组,处于要丢弃大量分组的状态,就称这为拥塞状态。拥塞控制就是指网络层会采取一定措施来缓解拥塞,
传输层
- 传输单位是TCP或UDP。负责两个主机中进程的通信。提供的是端到端的服务
- 数据链路层提供的是点到点(IP地址和IP地址)的通信,传输层提供的是端到端的通信
- 提供流量控制、差错控制、服务质量、数据传输管理等服务。
- 复用和分用。复用即多个应用进程可以同时使用下面传输层的服务,分用即传输层把接受到的信息分别交付给应用层中相应的进程。
会话层:构建两个进程之间的会话。
表示层:主要处理两个通信系统之间交换信息的表示方式。
应用层:最高层,是用户和网络的界面。由于应用多种多样,所以应用层的协议多种多样。
1.7.5 TCP/IP的体系结构
- 网络接口层:类似于OSI的物理层和数据链路层。
- 网际层:类似于OSI网络层。网际层定义了标准的分组格式和协议,即IP。
- 传输层:类似于OSI传输层。协议一般是TCP和UDP。
第二章 物理层
2.1 物理层的基本概念
- 物理层考虑的是怎样才能在连接各种计算机的传输媒体上传输数据比特流。
- 物理层为数据链路层屏蔽了各种传输媒体的差异。使数据链路层只需要考虑如何完成本层的协议和服务,而不必考虑具体的传输媒体是什么。
- 物理层协议的主要任务:定义特性
- 机械特性。指明接口所用接线器的形状和尺寸、引脚数目和排列、固定和锁定装置。
- 电气特性。指明接口上各条线出现的电压的范围。
- 功能特性。指明某条线上出现的某一电平的电压表示何种意义。
- 过程特性。指明对于不同功能的各种可能事件的出现顺序。
2.2 物理层下面的传输媒体
一般分为导引型传输媒体和非导引型传输媒体。
- 导引型传输媒体:需要相应的固体媒介的媒体。
- 同轴电缆:
- 双绞线:两根互相绝缘的铜线按照一定规则进行绞合形成了双绞线。
- 无屏蔽双绞线UTP电缆。
- 屏蔽双绞线STP电缆。相比无屏蔽双绞线增加了金属丝编织的屏蔽层。
- 无屏蔽双绞线UTP电缆。
- 光纤:
- 多膜光纤:
- 单膜光纤:
- 多膜光纤:
- 电力线
- 同轴电缆:
- 非导引型传输媒体(无线传输介质)
- 无线电波
- 微波:
- 直线传播,可以穿透电离层
- 应用:地球同步卫星,低轨道卫星
- 地面100m发生塔,最大视距LOS传输距离为100m
- 红外线
- 可见光
2.3 传输方式
- 串行传输:每次发送一个比特。一条传输线路。用于计算机之间的数据传输。
- 并行传输:每次多个比特。多条传输线路。速度快成本高。一般用于计算机内部的数据传输。
- 同步传输:数据以比特流的形式传输,中间没有间隔。接收端在比特信号的中间时刻进行检测,来判断收到的是比特0还是比特1。为了减少判别偏移累积形成的判别错位,一般采取以下两种方式来确保发送端和接收端的时钟同步。
- 外同步。在收发双方之间添加一条单独的时钟信号线。
- 内同步。发送端将时钟同步信号编码到发送数据中一起传输。(例如曼彻斯特编码)
- 异步传输:以字节为单独独立的传输单位,字节之间的时间间隔不是固定的。接收端仅在字节的起始处对字节内部实现同步。因此要在字节前后加上起始位和结束位。异步指的是每个字节之间异步,而字节之间的每个比特仍然同步。
- 单向通信(单工):通信双方只有一个传播方向,如无线电广播。只需要一条信道。
- 双向交替通信(半双工):通信双方可以相互传递数据,但不可以同时进行。例如对讲机。需要两条信道,每个方向各一条。
- 双向同时通信(全双工):通信双方可以同时发送和接收信息。例如电话。需要两条信道,每个方向各一条。
2.4 编码和调制
有一大堆概念,给一张图解释一下。
编码:在不改变信号性质的前提下,仅对数字基带信号的波形进行变换,称为编码。编码完成后的信号仍为数字信号,可以在数字信道中传输。
调制:把数字基带信号的频率范围搬移到较高的频段,并转换为模拟信号,称为调制。调制后产生的信号为模拟信号。可以在模拟信道中传输。
对于模拟基带信号的处理也有编码和调制两种。结果和对数字基带信号处理结果一致,分贝产生了数字信号和模拟信号。
码元:在使用时间域的波形表示数字信号时,代表不同离散数值的基本波形。即码元就是构成信号的一段波形。
传输媒体和信道的关系:对于单工传输,那么要包含一个发送信道。如果是半双工或者全双工传输,则要包含发送信道和接收信道。而如果使用了信道复用技术,一条传输媒体还可以包含多个信道。
常用编码:
- 不归零编码NRZ:正电平为1,负电平为0.不归零指的是整个码元时间内不会出现零电平。但由于不归零编码有同步问题,强行同步会浪费资源,所以计算机中不采用这种编码方式。
- 归零编码RZ:每个码元传输结束之后都要归零。所以接收方只要在信号归零后采样即可,不需要单独的时钟信号,相当于归零编码通过”归零”的方式把时钟信号编码到数据之中。这称为自同步信号。但编码中的大部分数据带宽都因为传输”归零“而被浪费了。因此归零编码是自同步编码,但是编码效率低。
- 曼彻斯特编码:每个码元的中间都会产生“跳变”。正负跳变是1还是0不一定,可以自行假设。码元中间时刻的跳变即表示时钟又表示数据。传统以太网使用的就是曼彻斯特编码。
- 差分曼彻斯特编码:和曼彻斯特编码不同,跳变仅表示时钟。用码元开始处电平是否发生变化来表示数据。差分曼彻斯特编码变化比曼彻斯特编码少,更适合高效率的传输。
基本调制方法:
- 调幅(AM):无载波表示比特0,有载波表示比特1.
- 调频(FM):频率f1的波形表示比特0,频率f2的波形表示比特1.
- 调相(PM):初相位0度的波形表示比特0,初相位180度的波形表示比特1.
采用基本调制方法,每个码元只能包含一个比特信息.可以采用混合调制方法让一个码元中可以包含更多比特的信息。
混合调制:一般考虑三个变量。频率、相位和振幅。其中频率和相位相关,所以调整一个就相当于调整了另一个。所以一般情况下混合调制考虑调整的是相位和振幅。称为正交振幅调制QAM。
- QAM-16:
- 12种相位
- 每种相位有1或2种振幅可选。
- 一共可以调制出16种码元(波形),每种码元可以对应4个比特。
- 码元和4个比特的对应关系采用格雷码,任意两个相邻码只有一个比特不同。
- QAM-16:
2.5 信道的极限容量
信号波形通过信道时会产生一定程度的失真。失真不严重时可以识别波形,失真严重时无法识别输出波形。
失真因素
- 码元传输速率
- 信号传输距离
- 噪声干扰
- 传输媒体质量
奈氏准则:在假定的理想条件下,为了避免码间串扰,码元的传输速率是有上限的。即
其中W为信道带宽(单位为Hz),Baud为波特,即码元/秒。码元传输速率又称为波特率、调制速率、波形速率或符号速率。与比特率有一定关系:
- 当1个码元只携带1比特的信息量时,波特率(码元/秒)和比特率(比特/秒)在数值上是相等的。
- 当1一个码元携带n比特的信息量,则波特率转换成比特率时,数值要乘以n。
要提高信息传输速率(比特率),就必须设法使每一个码元可以携带更多个比特的信息量,这需要采用多元制。
实际信道所能传输的最高码元速率,明显低于奈氏准则给出的上限数值。
注意:并不是一直提高码元携带的比特数量,就可以无限提高信息的传输速率。因为还要受限于实际信号在信道中传输的信噪比。
香农公式:带宽受限且有高斯白噪声干扰的信道的极限信息传输速率。
- c:信道的极限信息传输速率(单位 b/s)
- W:信道带宽(单位 Hz)
- S:信道内所传送信号的平均功率
- N:信道内的高斯噪声功率
- S/N:信噪比,使用分贝(dB)作为度量单位。一般题目中给的都是信噪比,要自己换算成S/N
从香农公式中可以看出,信道带宽或信道中信噪比越大,信息的极限传输速率越高。
实际信道中可以达到的信息传输速率低于该公式的极限传输速率。因为还要受到其他因素的损伤。
从奈氏准则和香农公式中来看,要提高信息的传输速率就必须采用多元制(更好的调制方法)和努力提高信道中的信噪比。
第三章 数据链路层
3.1 数据链路层概述
- 链路(Link):就是从一个结点到相邻节点的一段物理线路,而中间没有其他的交换结点。
- 数据链路(Data Link):是指把实现通信协议的硬件和软件加到链路上,就构成了数据链路。
- 数据链路层以帧为单位传输和处理数据。
- 数据链路层的三个最基本也最重要的问题:
- 封装成帧:数据链路层给网络层交付的协议数据单元添加帧头和帧尾的操作,称为封装成帧。
- 差错检测:发送方在发送帧之前,基于待发送的数据和检错算法计算出检错码,然后将其封装在帧尾。接收方以此来判断传输过程中是否产生了误码。
- 可靠传输:尽管误码是不能完全避免的,但若能实现发送方发送什么,接收方最终都能收到相应的正确内容,就称为可靠传输。
- 封装成帧:数据链路层给网络层交付的协议数据单元添加帧头和帧尾的操作,称为封装成帧。
- 对于使用广播信道的数据链路层(相当于主机都连在一条线上。即共享式局域网)存在一些别的问题。
- 如何确保数据被正确的主机接收:在帧中插入了源地址和目的地址
- 如何解决传输信号碰撞的问题:以太网的解决措施是接入控制协议CSMA/CD,也就是载波监听多点接入/碰撞检测。
- 现在大多采用交换式局域网而非共享式局域网。
3.2 封装成帧
- 定义:封装成帧是指数据链路层给上层交付的协议数据单元添加帧头和帧尾使之成为帧。
- 帧头和帧尾包含有重要的控制信息
- 帧头和帧尾的作用之一就是帧定界(确认哪一段是一个帧)。例如ppp帧就可以通过帧头和帧尾的标志进行帧定界。MAC帧中没有标志,是因为以太网V2会在物理层中添加前导码作处理。同时以太网还规定了一定间隔的帧间间隔。
- 透明传输:透明传输是指数据链路层对上层交付的传输数据没有任何限制,就好像数据链路层不存在一样。 为了达到这一点,会在上层交付的数据中可能引起误解的部分的前端填充转义字符。(如上层交付数据中和将要加入的帧标志相同的部分。)
- 面向字节的物理链路使用字节填充(或称字符填充)的方法实现透明传输。
- 面向比特的物理链路使用比特填充的方法实现透明传输。
下图为例(比特填充):
其中的标志为0111110.而在帧的数据部分中存在和标志相同的部分,为了避免误解,在这几个部分的每5个1后添加一个0,这样就确保了帧定界在整个帧中的唯一性。这个方法是HDLC协议中所采用的。
- 为了提高帧的传输效率,应当使帧的数据部分长度尽可能大一些。但考虑到差错控制等多种因素,每一种数据链路层协议都规定了帧的数据部分的长度上限,即最大传送单元MTU。
3.3 差错检测
- 实际的通信链路都不是理想的,比特在传输过程中可能会产生差错:1可能会变成0,而0也可能会变成1.这称为比特差错。
- 而一段时间内,传输错误的比特占总传输比特总数的比率称为误码率BER(Bit Error Rate)
- 使用差错检测码来检测数据在传输过程中是否产生了比特差错,是数据链路层索要解决的重要问题之一。
- 奇偶校验:在待发送的数据后面添加一位奇偶校验码,使整个数据(包括所添加的校验码在内)中“1”的个数为奇数(奇校验)或偶数(偶校验)。
- 如果有奇数个位发生误码,则奇偶性发生变化,可以检查出误码。如果偶数个位发生误码,奇偶性不发生改变,不能检查出误码(漏检)。这就导致奇偶校验的漏检率较高,因此计算机的数据链路层一般不会采用这种检测方式。
- 循环冗余校验CRC(Cyclic Redundancy Check)
- 收发双方约定好一个生成多项式G(x);
- 发送方基于待发送的数据和生成多项式计算出差错检测码(冗余码),并将其添加到待传输数据的后面一起传输。
- 接收方通过生成多项式来计算收到的数据是否产生了误码。
如图,图中的计算为除法。
eg1:
eg2:
- 检错码只能检测出帧在传输过程中出现了差错,但并不能定位错误,因此无法纠正错误。。想要纠正差错,可以使用冗余信息更多的纠错码进行前向纠错。但纠错码的开销比较大,在计算机网络中较少使用。
- 循环校验码CRC有很好的检错能力(漏检率非常低),虽然计算比较复杂,但是非常易于用硬件实现,因此广泛应用于数据链路层。
- 在计算机网络中通常采用检错重传方式来纠正传输中的差错,或者仅仅是丢弃检测到差错的帧,这取决于数据链路层向上层提供的是可靠传输服务还是不可靠传输服务。
3.4 可靠传输
3.4.1 可靠传输的基本概念
- 对于误码,数据链路层向上层提供的服务类型
- 不可靠传输服务:仅仅丢弃有误码的帧,其他什么也不做;
- 可靠传输服务:想办法实现发送端发送什么,接收端就收到什么。
- 一般情况下,有线链路的误码率比较低,为了减小开销,并不要求数据链路层向上提供可靠传输服务,即使出现了误码,可靠传输的问题由其上层处理。
- 无线链路易受干扰,误码率比较高,因此要求数据链路层必须向上层提供可靠传输服务。
- 比特差错只是传输差错中的一种。
- 从整个计算机网络体系结构来看,传输差错还包括分组丢失、分组失序以及分组重复。
- 分组丢失、分组失序以及分组重复这些传输差错,一般不会出现在数据链路层,而会出现在其上层。
- 可靠传输服务并不仅局限于数据链路层,其他各层均可选择实现可靠传输。
- 可靠传输的实现比较复杂,开销也比较大,是否使用可靠传输取决于应用需求。
3.4.2 停止-等待协议SW(Stop-and-Wait)
先上图:
按照图的顺序进行解释:
- 确认与否认:在SW中,发送方发送数据(Data)后,如果没有误码,接收方要对发送方发送一个确认分组(ACK)。如果有误码,接收方丢弃该数据分组,并向发送方发送一个否认分组(NAK)。发送方收到否认分组后要重传之前的数据分组,因此发送方发送完数据分组后不能立即将分组从缓存中删除,只有收到确认分组后才可以将其删除。
- 超时重传:如果发送方发送的数据分组在传输过程中丢失了,那么接收方不会对发送方发送任何NAK或者ACK,这会导致发送方无法继续操作。因此发送方每次发送数据分组后会启动一个超时计时器,若到了超时计时器的设置时间而仍然收不到ACK或者NAK,则重传原来的数据分组。这就是超时重传。一般这个时间设置为略大于”从发送方到接收方的平均往返时间“。
- 确认丢失:如果接收方给发送方所发送的ACK丢失,那么启动超时重传后会导致发送方接收了重复的数据分组。如果不做处理而直接接收,会导致分组重复而出现传输差错。采取的解决办法是对发送方发送的数据分组进行比特编号(使用结尾0或1编号)。这样只要保证这次收到的数据分组编号和上一次不同即可。
- 确认迟到:如果ACK没有丢失,但抵达时间长于了超时重传的时间,就会让DATA0超时重传。而接收方收到重复分组DATA0后,将其丢弃后向发送方发送了重复分组DATA0的ACK。如图,如果不对这个ACK进行编号,那么发送方会误以为这是对DATA1的确认ACK,而导致发送乱序。因此,对于接收方的回传分组也需要编号。
数据链路层的点对点协议一般不会出现确认迟到的情况,所以如果只是在数据链路层使用SW协议,可以不用给确认分组编号。
总结如下:
- 停止-等待协议的信道利用率:
:发送方发送数据分组所耗费的发送时延。 :双方之间的往返时延 :接收方发送确认分组所耗费的发送时延 - 因此,总时间为
,由于用来发送数据分组的时间才是有效时间,所以信道利用率表示为
其中一般远小于 ,可以忽略。 - 可以看出,当往返时延
远大于数据发送时延 时(例如使用卫星链路),信道利用率非常低。
- SW协议是停止等待ARQ协议。
3.4.3 回退N帧协议GBN(Go-Back-N)
SW中是一个一个数据分组的方式进行发送,而GBN中采用的是多个数据分组的形式进行发送,具体如下图:
这里取n为3,因此可编号为0-7。GBN中分为发送方的发送窗口
无差错情况:发送方一次性发送了编号0-5的数据分组,假设在没有出现乱序和误码的情况下抵达了接收方。接收方每接收一个,接收窗口就往后滑动一个位置,每滑动一次,就给发送方发送针对所接收分组的确认分组。而发送方每接收一个确认分组,发送窗口就往后滑动一个位置,这样就有新的编号的数据分组落入了发送窗口,从而被发送。发送方也可以将被确认的数据分组从缓存中删除。
累积确认:对于采用GBN的接收方,可以采用累积确认的方式。即接收方不一定要对收到的数据分组逐个发送确认,而是可以在收到几个数据分组后(由具体实现决定),对按序到达的最后一个数据分组发送确认。
表示序号为n之前的所有数据分组都已经被正确接收。 累积确认的一个好处是ACK丢失的影响会变小,有时即便确认分组丢失,发送方也不必进行数据分组重传,譬如本例中取每接收两个数据分组后就发送确认分组,第一轮接收时就会发送
和 ,那么即使 丢失了,只要 抵达了,那么发送方就知道数据分组0~4都成功接受了,而不必重新发送数据分组0和数据分组1. 出现差错的情况:假设本例中第一轮数据传输成功,即
成功传输。但在传输数据分组 出现差错,导致 出现了误码。那么接收方接收时就会把 丢弃。而即使后面的四个数据分组没有差错,但无法和此时接收窗口 所要求的数据分组(即正确的 )对应,因此接收方也会将后续的四个数据分组丢弃。接收方每丢弃一个数据分组就会对发送方发送一个之前的确认分组(本例中是 ),来表明分组出错。
发送方收到了重复的确认分组,就可以意识到之前的分组发送出现了问题,因此可以不等到超时重传就立刻重传。至于收到几个重复分组后再立刻重传,取决于具体实现。
若没有触发立即重传,那么超时后发送方就会继续发送发送窗口里的内容,而由于一直收到重复确认分组,导致发送窗口没有移动,所以仍旧相当于把之前的内容重复发送了一遍。可以看出,当通信线路质量不好时,GBN的信道利用率并不以SW的高。
注意:如果
的取值大于了最大编号。那么当ACK丢失的时候,发送方的超时重传会导致接收方无法分辨新、旧分组,从而导致分组重复。
总结如下:
- GBN是在流水线传输的基础上利用发送窗口限制发送方连续发送数据分组的数量,是一种连续ARQ协议
- 再协议的工作过程中发送窗口和接收窗口不断向前滑动,因此这类协议又称为滑动窗口协议。
- 由于回退N帧协议的特性,当通信线路质量不好时,其信道利用率并不比SW协议高。
3.4.4 选择重传协议SR(Selective Request)
由于GBN的
注意:选择重传协议为了使发送方仅重传出现差错的分组,接收方不能再采用累积确认,而需要对每个正确接收到的分组进行逐一确认。
如图:
其中
接收方只要接收了相应的分组,都会对发送方发送确认分组。但只有在按序接收的情况下,接收窗口才会向后滑动。而发送方只要接收到了确认分组,都会对相应的数据分组进行标记,以表明该分组已经发送成功。但只有在按序标记完的情况下,发送窗口才会向后滑动。
总结如下:
3.5 点对点协议PPP(Point-to-Point Protocol)
- 点对点协议PPP是目前使用最广泛的点对点数据链路层协议
- PPP协议是因特网工程任务组IETF在1992年制定的。经过1993年和1994年的修订,现在的PPP协议已经成为因特网的正式标准。
- PPP协议为在点对点链路传输各种协议数据报提供了一个标准方法,主要由以下三部分构成:
- 对各种协议数据报的封装方法(封装成帧)
- 链路控制协议LCP。 用于建立、配置以及测试数据链路的连接。
- 一套网络控制协议NCPs。 其中的每一个协议支持不同的网络层协议
PPP的帧格式:如图
- F:标志字段。取值为0x7E(二进制的01111110)
- A:0xFF。目前没用
- C:0x03。目前没用
- P:指明帧的数据部分交由哪个协议处理
- 0x0021:IP数据报
- 0xC021:LCP分组
- 0x8021:NCP分组
- F:帧检验序列字段。CRC计算出的校验位。
PPP协议的透明传输:即当帧的数据部分出现了F(01111110)时的处理办法
- 对于面向字节的异步链路:采用字节填充法。插入转义字符。
- 发送方:
- 出现的每一个7E(PPP帧的定界符)字节转变成2字节学列(7D,5E)
- 出现的每一个7D(转义字符)字节转变成2字节序列(7D,5D)(不包括后来加上去的7D)
- 出现的每一个ASCII码控制字符(数值小于0x20的字符),则在该字符前面插入一个7D字节。同时将该字符的编码加上0x20
- 接收方:按照发送方的步骤进行反变换即可。
- 发送方:
- 对于面向比特的同步链路:采用比特填充法。即
- 发送方:对帧的数据部分进行扫描(一般由硬件实现),只要发现5个连续的比特1,则立即填充1个比特0(在5个比特1后面)
- 接收方:对帧的数据部分进行扫描,只要发现5个连续的比特1,就把其后的一个比特0删除。
- 对于面向字节的异步链路:采用字节填充法。插入转义字符。
PPP协议的差错检测:使用CRC生成FCS字段。使用的生成多项式如下
其中FCS的计算范围不包括标志字段和FCS本身。
接收方每收到一个PPP帧,就进行CRC检验。若CRC检验正确,就收下这个帧。反之就丢弃这个帧。使用PPP的数据链路层向上不提供可靠传输服务PPP协议的工作状态:
不太看得懂,放个图跑路了。
3.6 媒体接入控制
3.6.1 媒体接入控制的基本概念
共享信道(多台主机连一根线)要着重考虑的一个问题就是如何协调多个发送和接收站点对一个共享传输媒体的占用,即媒体接入控制MAC(Medium Access Control)
媒体接入控制技术分为两种:
- 静态划分信道。即预先分配好信道,这类方法不灵活,对于突发性数据传输信道利用率会很低。通常在无线网络的物理层中使用,而不是在数据链路层使用。
- 频分多地
- 时分多址
- 码分多址
- 动态接入控制
- 受控接入。如今采用较少,基本被淘汰。
- 集中控制。用一个主站以循环的方式轮询每个站点有无数据要发送。只有轮询到的站点才可以发送数据。最大缺点是单点故障问题。
- 分散控制。各站点平等。连接成环型网络。其中用令牌(一种特殊的控制帧)沿着环逐站传递。有令牌的站点才有权发送数据。发送完数据后令牌传递给下一个站点。
- 随机接入。所有站点竞争发送数据。
随着技术发展,交换技术成熟和成本降低,具有更高性能的使用点对点链路和链路层交换机的交换式局域网在有线领域已经完全取代了共享式局域网。但由于无线信道的广播天性,无线局域网仍然使用的是共享媒体技术。
- 受控接入。如今采用较少,基本被淘汰。
- 静态划分信道。即预先分配好信道,这类方法不灵活,对于突发性数据传输信道利用率会很低。通常在无线网络的物理层中使用,而不是在数据链路层使用。
3.6.2 静态划分信道
复用(Multiplexing):复用就是通过一条物理线路同时传输多路用户的信号。
当网络中传输媒体的传输容量大于多条单一信道传输的总通信量时,可利用复用技术在物理线路上建立多条通信信道来充分利用传输媒体的带宽。
常见的信道复用技术有四种
频分复用FDM
复用器负责把子信道区分开来。子信道之间有隔离频带隔开。分用器负责把子信道的内容分离。码分复用TDM
波分复用WDM
8个光载波之间每每相隔1.6nm。经光复用器合并后在光纤中传播。由于损耗,所以会在传输中采用掺铒光纤放大器EDFA。光分用器和光复用器之间可以方四个EDFA。码分复用CDM
码分复用是另一种共享信道的方法。由于该技术主要用于多址接入,人们更常用的名词时码分多址CDMA。(Code Division Multiple Access)
同理,频分复用FDM和时分复用TDM同样可以用于多址接入。相应名词为FDMA和TDMA。
复用和多址的区别
- 复用是将单一媒体的频带资源划分为很多子信道,这些子信道之间相互独立,互不干扰。从媒体的整体频带资源上看,每个子信道只占用该媒体频带资源的一部分。
- 多址(或者更确切地称为多点接入)处理的是动态分配信道给用户。这在用户仅仅暂时性地占用信道地应用中时必须的,而所有的移动通信系统基本都属于这种情况。相反,在信道永久性分配给用户的应用中,多址时不需要的。(比如无线广播或者电视广播站。)
与FDM和TDM不同。CDM的每一个用户可在同样的时间使用同样的频带进行通信
由于各用户使用经过挑选的不同码型,因此各用户之间不会造成干扰
在CDMA中,每一个比特时间再划分为m个短的间隔。称为码片(Chip)。通常m的值是64。
使用CDMA的每一个站被指派一个唯一的m bit码片序列(Chip Sequence)
- 如果一个站要发送比特1,则发送它自己的m bit码片序列
- 如果一个站要发送比特0,则发送它自己的m bit码片序列的二进制反码
这也被称为直接序列扩频DSSS
码片序列的挑选原则如下:
- 分配给每个站的码片序列必须各不相同。实际上常采用伪随机码序列。
- 分配个每个站的码片序列必须相互正交(规格化内积为零)
令向量S表示站S的码片序列,令向量T表示其他任何站的码片序列。两个不同站的S和T的码片序列正交,就是向量S和T的规格化内积为0;
另外,任何码片序列自己和自己的规格化内积为1,即:
同时,任何一个码片向量和其他各站码片反码的向量的内积也是0.
任何一个码片向量和其自身反码的内积为-1:注意:向量计算时,码片序列中的0作为-1看,1作为+1看,如下:
同时,接收方也可以利用规格化内积的规律来判断发送方发送了什么,如:
3.6.3 随机接入——CSMA/CD协议
早期的共享式以太网,为了解决多台主机同时发送数据,导致数据在总线里碰撞冲突的问题。采用载波监听多址接入/碰撞检测,即CSMA/CD协议(总线型局域网使用)。
- 多址接入MA:多个站连接在一条总线上,竞争使用总线。
- 载波监听CS:每一个站再发送帧之前先要检测以下总线上是否有其他站点在发送帧。
- 若检测到总线空闲96比特时间,则发送这个帧。
- 若检测到总线忙,则继续检测并等待总线空闲96比特时间,然后发送这个帧。
- 碰撞检测CD:每一个正在发送帧的站边发送边检测碰撞。
- 一旦发现总线上出现碰撞,则立即停止发送。退避一段随机时间。
以太网还采取一种叫做强化碰撞的措施,这就是当发送帧的站点一旦检测到了碰撞,除了立即停止发送帧意外,还要继续发送32比特或48比特的认为干扰信号,以便有足够多的碰撞信号使所有站点都能检测出碰撞。
- 一旦发现总线上出现碰撞,则立即停止发送。退避一段随机时间。
- 争用期(碰撞窗口):
如图:- 主机最多经过
的时长就可以检测到本次发送是否遭受了碰撞。 - 因此,以太网的端到端往返传播时延
称为争用期或者碰撞窗口。 - 经过争用期这段时间还没有检测到碰撞,才能肯定这次发送不会发生碰撞。
- 每一个主机在自己发送帧之后的一小段时间,存在着遭遇碰撞的可能性。这一小段时间是不确定的。但不会超过总线的端到端往返传播时延,即一个争用期时间。
- 显然,在以太网中发送帧的主机越多,端到端往返传播时延就越大,发生碰撞的概率就越大。因此,共享式以太网不能连接太多的主机,使用的总线也不能太长。
- 10Mb/s以太网把争用期定为512比特发送时间,即51.2μs,因此其总线长度不能超过5120m,但考虑到其他一些因素,以太网规定总线长度不能超过2500m。
- 主机最多经过
- 最小帧长:考虑到如果主机发送的帧过短,那么主机从开始发送帧到结束的这段时间内,不能够完全检测出帧在传递过程中是否会碰撞。因此以太网规定最小帧长为64字节,即512比特(512比特时间即为争用期)。
- 如果要发送的数据非常少,那么必须加入一些填充字节,使帧长不小于64字节。
- 以太网的最小帧长确保了主机可在帧发送完成之前就检测到该帧的发送过程中是否遭遇了碰撞。
- 如果在争用期没有检测到碰撞,那么后续发送的数据就一定不会发生碰撞
- 如果争用期内检测到了碰撞,就立即停止发送,这时已经发送出去的数据一定小于64字节,因此凡长度小于64字节的帧都是由于碰撞而异常中止的无效帧。
- 最大帧长:
- 截断二进制指数退避算法
- 若连续多次发生碰撞,就把表明可能2有较多的主机参与竞争信道,但使用上述退避算法可以使重传需要推迟的平均时间随着重传次数而增大(动态退避),因而减小发生碰撞的概率。有利于整个系统的稳定。
- 当重传达16次仍不能成功时,表明同时打算发送帧的主机太多,以至于连续发生碰撞,则丢弃该帧,并向高层报告。
- 信道利用率:考虑理想情况下的信道利用率,即
- 各主机发送帧都不会产生碰撞
- 总线一旦空闲就有某个主机立即发送帧
- 发送一帧占用总线的时间为
,而帧本身的发送时间为
所以极限信道利用率为: - 其中参数
应尽可能小,以提高信道利用率 - 即以太网到端的距离应该受到限制,以太网帧的长度应尽量长些。
- 帧发送流程:
- 帧接收流程:
3.6.4 随机接入——CSMA/CA协议
无线局域网使用CSMA/CA协议,也是载波监听多址接入/碰撞避免
- 在无线局域网中,仍然可以使用载波监听多址接入CSMA。即在发送帧之前先对传输媒体进行载波监听。若发现有其他站在发送帧,就推迟发送以免发送碰撞。
- 在无线局域网中,不能使用碰撞检测CD,原因如下:
- 由于无线信道的传输条件特殊,信号强度的动态范围非常大。无线网卡上接收的信号强度往往会远远小于发送信号的强度(可能相差百万倍)。如果要在无线网卡上实现碰撞检测CD,对硬件的要求非常高。
- 即使能够在硬件上实现无线局域网的碰撞检测功能,但由于无线电波传播的特殊性(存在隐蔽站问题),进行碰撞检测的意义也不大。
- 802.11无线局域网使用CSMA/CA协议,在CSMA的基础上增加了一个碰撞避免CA功能。
- 由于不可能避免所有碰撞,并且信道误码率比较高,802.11标准还是用了数据链路层确认机制(SW协议)来保证数据被正确接收。
- 802.11的MAC层标准定义了两种不同的媒体接入控制方式:
- 分布协调功能DCF
- 点协调功能PCF
- 帧间间隔IFS
- 802.11标准规定,所有的站点必须在持续检测到信道空闲一段指定事件后才能发送帧,这段时间称为帧间间隔IFS。
- 帧间间隔的长短取决于该站点要发送的帧的类型
- 高优先级帧需要等待的时间较短,因此可优先获得发送权
- 低优先级帧需要等待时间较长
- 常用的帧间间隔有以下两种
- **短帧间间隔SIFS(28μs)**。最短的帧间间隔,用来分隔开属于一次对话的各帧。一个站点应当能够在这段时间内从发送方式切换到接收方式。使用SIFS的帧类型有ACK帧、CTS帧等。
- DFC帧间间隔DIFS(128μs),比短帧间间隔长的多,在DCF方式中用来发送数据帧和管理帧。
- 工作原理
- 发送前等一段DIFS是为了给优先级更高的帧腾时间。
- 以下情况必须使用退避算法
- 在发送数据帧之前检测到信道处于忙状态时
- 在每一次重传一个数据帧时
- 在每一次成功发送后要连续发送下一个帧时(这是为了避免一个站点长时间占用信道)。
- CSMA/CA的退避算法
- 在执行退避算法时,站点为退避计时器设置一个随机的退避时间
- 当退避计时器的时间减小到零时,就开始发送数据;
- 当退避计时器的时间还未减小到零时而信道又转变为忙状态,这时就冻结退避计时器的数值,重新等待信道变为空闲,再经过时间DIFS,继续启动退避计时器。
- 在进行第i次退避时,退避时间在时隙编号
中随机选择一个,然后乘以基本退避时间(也就是一个时隙的长度),就可以得到随机的退避时间。这样做是为了使不同站点选择相同退避时间的概率减小。当时隙编号达到255(对应第六次退避),就不再增加了。 每次解冻之前都要等待一段DIFS的时间。
- 在执行退避算法时,站点为退避计时器设置一个随机的退避时间
- CSMA/CA的信道预约和虚拟载波监听
如图:- 源站在发送数据帧之前会先发送一个短的控制帧,称为请求发送RTS,它包括源地址、目的地址以及这次通信(包括相应的确认帧)所需的持续时间。
- 若目的站正确收到源站发来的RTS帧,且媒体空闲,就发送一个相应控制帧,称为允许发送CTS,它也包括这次通信所需的持续时间。
- 源站收到CTS帧后,再等待一段时间SIFS后,就可发送其数据帧。
- 若目的站正确收到了源站发来的数据帧,在等待时间SIFS后,就向源站发送确认帧ACK。
- 除源站和目的站以外的其他各站,在收到CTS帧(或数据帧)后就推迟接入到无线局域网中,这样就保证了源站和目的站之间的通信不会受到其他站的干扰。
- 如果RTS帧发生碰撞,源站就收不到CTS帧,需执行退避算法重传RTS帧。
- 由于RTS帧和CTS帧都很短,发生碰撞的概率、碰撞产生的开销都很小,因此用很小的代价对信道进行预约往往是值得的。。802.11标准规定了3种情况供用户选择:
- 使用RTS帧和CTS帧
- 不使用RTS帧和CTS帧
- 只有当数据帧的长度超过某一数值才使用CTS帧和RTS帧。
- 除了RTS帧和CTS帧会携带通信所需要持续的时间,数据帧也能携带通信所需要持续的时间,这称为802.11的虚拟载波监听机制。
- 由于虚拟载波监听机制,站点只要监听到了RTS帧、CTS帧或者数据帧之中的任何一个,就能知道信道被占用的持续时间,而不需要真正监听到信道上的信号。因此虚拟载波监听机制可以减少隐蔽站带来的碰撞问题。
3.7 MAC地址,IP地址以及ARP协议
- MAC地址是以太网的MAC子层所使用的地址(属于数据链路层首部内容)
- IP地址是TCP/IP体系结构网际层所使用的地址(属于网际层首部内容)
- ARP协议属于TCP/IP体系结构的网际层,其作用是已知设备所分配到的IP地址,使用ARP可以通过该IP地址获取到该设备的MAC地址。(属于网际层)
- 由于这三者关系比较紧密,所以一般放在一起讨论。
MAC地址
- 当多个主机连接在同一个广播信道上时,要想实现两个主机之间的通信,则每个主机都必须有一个唯一的表示,即一个数据链路层地址。
- 在每个主机发送的帧中必须携带标识发送主机和接收主机的地址,由于这类地址适用于媒体接入控制MAC(Media Access Control),因此这类地址被称为MAC地址
- MAC地址一般被固化在网卡(网络适配器)的电可擦可编程只读存储器EEPROM中,因此MAC地址被称为硬件地址;
- MAC地址有时也被称为物理地址(并不意味着MAC地址属于物理层)
- 一般情况下,用户主机会包含两个网络适配器:有线局域网适配器(有线网卡)和无线局域网适配器(无线网卡)。每个网络适配器都有以恶搞全球唯一的MAC地址。而交换机和路由器往往拥有更多的网络接口,所以会拥有更多的MAC地址。综上所述,严格来说,MAC地址是对网络上各接口的唯一标识,而不是对网络上各设备的唯一标识。
eg:
四种MAC地址:全球多播,全球单播,本地多播,本地单播多播指的是多播组,即在该组内的都会接收该帧。单播即只有一个接收端。广播即是所有端都接收该帧。
- 如果是单播,那么就在目的地址字段就会填入对应目的端的MAC地址。
- 如果是多播,那么就在目的地址字段填入多播MAC组的地址。
- 如果是广播,就填入十六进制的全F。
IP地址
- IP地址是因特网上的主机和路由器所使用的地址,用于标识两部分的信息:
- 网络编号:标识因特网上数以百万计的网络
- 主机编号:标识同一网络上不同主机(或路由器各接口)
- 很显然,之前介绍的MAC地址不具备区分不同网络的功能。
- 如果只是一个单独的网络,不接入因特网,可以只使用MAC地址。
- 如果要接入因特网,则IP地址和MAC地址都需要使用。
- 数据包转发过程中IP地址和MAC地址的变化情况:
- 数据包转发过程中源IP地址和目的IP地址保持不变。
- 数据包转发过程中源MAC地址和目的MAC地址逐个链路(或逐个网络)改变
APR协议
- 源主机在自己的ARP高速缓存表中查找目的主机的IP地址所对应的MAC地址,若找到了,则可以封装MAC帧进行发送;若找不到,则发送ARP请求(封装在广播MAC帧中)
- 目的主机在收到ARP请求后,将源主机的IP地址和MAC地址记录到自己的ARP告诉缓存表中,然后给源主机发送ARP响应(封装在单播MAC帧中)。ARP响应中包含有目的主机的IP地址和MAC地址。
- 源主机收到ARP响应后,将目的主机的IP地址和MAC地址记录到自己的ARP高速缓存表中,然后就可以封装之前想发送的MAC帧并发送给目的主机。
- APR的作用范围:逐段链路或逐个网络使用
- 除ARP请求和响应外,ARP还有其他类型的报文(如检查IP地址冲突的“无故ARP、免费ARP”)
- ARP没有安全验证机制,存在ARP欺骗(攻击)问题。
3.8 集线器与交换机的区别
- 早期总线型以太网使用同轴电缆,后来演进成使用双绞线和集线器HUB的星型以太网。
- 使用集线器的以太网在逻辑上仍然是一个总线网(虽然是星型以太网),各站共享总线资源,使用的还是CSMA/CD协议。在逻辑上共享总线,只能工作在半双工模式。
- 集线器只工作在物理层,其每个接口仅简单地转发比特,不进行碰撞检测。(由各站的网卡检测)。
- 集线器一般都有少量的容错能力和网络管理功能。
- 使用集线器HUB在物理层扩展以太网:通过一个集线器HUB将其余的集线器HUB互联起来。如:
- 以太网交换机通常有多个接口。每个接口都可以直接与一台主机或另一个以太网交换机相连。一般都工作在全双工模式。
- 以太网交换机具有并行性,能同时连通多对接口,使多对主机能同时通信,无碰撞(不使用CSMA/CD协议)
- 以太网交换机工作在数据链路层(也包括物理层),它受到帧后,在帧交换表中查找帧的目的MAC地址所对应-的接口号。然后通过该接口转发帧。
- 以太网交换机是一种即插即用设备,其内部的帧交换表是通过自学习算法自动地逐渐建立起来的。
- 帧的两种转发方式
- 存储转发
- 直通交换。采用基于硬件的交叉矩阵。即收到了之后直接转发,这样交换时延很小,但是不进行差错检测。
- 总结如下:
3.9 以太网交换机自学习和转发帧的流程
- 以太网交换机工作在数据链路层(包括物理层)
- 以太网交换机收到帧之后,在帧交换表中查找帧的目的MAC地址所对应的接口号,然后通过接口转发帧
- 以太网交换机是一种即插即用设备,其内部的帧交换表是通过自学习算法自动地逐渐建立起来的。
- 以太网交换机自学习和转发帧的流程:
- 收到帧之后进行登记。登记的内容为帧的源MAC地址及进入交换机的接口号;
- 根据帧的目的MAC地址和交换机的帧交换表对帧进行转发,有以下三种情况:
- 明确转发:交换机知道应当从哪个(或哪些)接口转发该帧(单播,多播,广播)
- 盲目转发:交换机不知道应当从哪个端口转发帧,只能将其通过除进入交换机的接口外的其他所有接口转发(也称为泛洪)
- 明确丢弃:交换机知道不应该转发该帧,将其丢弃。(譬如当接收接口和目的接口一致时)
- 帧交换表的每条记录都有自己的有效时间,到期删除,原因如下:
- 交换机的接口改接了另一台主机
- 主机更换了网卡。
3.10 以太网交换机的生成树协议STP
- 添加冗余链路可以提高以太网的可靠性(如A
B C,冗余链路就是在A和C之间加一条链路) - 但冗余链路会导致形成网络环路
- 网络环路会带来以下问题
- 广播风暴。大量消耗网络资源,使得网络无法正常转发其他数据帧。
- 主机会收到重复的广播帧。大量消耗主机资源
- 交换机的帧交换表震荡(漂移)
- 以太网交换机使用生成树STP可以在增加冗余链路来提高网络可靠性的同时又避免网络环路带来的各种问题。
- 不论交换机之间采用怎样的物理连接,交换机都能够自动计算并构建一个逻辑上没有环路的网络,其逻辑拓扑结构必须是树型的(无逻辑环路)。
- 最终生成的树型逻辑拓扑要确保连通整个网络
- 当首次连接交换机或网络物理拓扑发生变化时(有可能是人为改变或者发生故障),交换机都需要进行生成树的重新计算。
eg:
3.11 虚拟局域网VLAN
3.11.1 虚拟局域网VLAN概述
- 以太网交换机工作在数据链路层(也包括物理层)
- 使用一个或多个以太网交换机互联起来的交换式以太网,其所有站点都属于同一个广播域。
- 随着交换式以太网规模的扩大,广播域相应扩大
- 巨大的广播域会带来弊端
- 广播风暴
- 难以管理和维护
- 潜在的安全问题
因此应尽量减少广播次数
- 网络中会频繁出现广播信息
- TCP/IP协议栈中的很多协议都会使用广播
- ARP
- RIP
- DHCP
- NETBEUI
- IPX/SPX
- Apple Talk
- TCP/IP协议栈中的很多协议都会使用广播
- 分割广播域的方法
- 使用路由器可以隔离广播域(路由器默认情况下不对广播数据包进行转发)。但路由器成本较高,全部使用路由器是不现实的。
- 因此VLAN应运而生。
- 虚拟局域网VLAN是一种将局域网内的设备划分成与物理位置无关的逻辑组的技术,这些逻辑组具有某些共同的需求
3.11.2 虚拟局域网VLAN的实现机制
- 交换机实现VLAN要实现两方面的内容:对IEEE 802.1Q帧的处理和对不同交换机的端口类型的处理。
- IEEE 802.1Q帧
- IEEE 802.1Q帧(也称Dot One Q帧),对以太网的MAC帧格式进行了扩展,插入了4字节的VLAN标记。
- VLAN标记的最后12比特称为VLAN标识符VID,它唯一地标志了以太网帧属于哪一个VLAN
- VID的取值范围是
- 0和4095都不用来标识VLAN,因此用于标识VLAN的VID有效取值范围为
- VID的取值范围是
- 802.1Q帧是由交换机来处理的,而不是由用户主机来处理的
- 当交换机收到普通的以太网帧,会将其插入4字节的VALN标记转变成802.1Q帧,简称“打标签”
- 当交换机转发802.1Q帧时,可能会删除其4字节的VLAN标记转变为普通以太网帧,简称“去标签”
- IEEE 802.1Q帧(也称Dot One Q帧),对以太网的MAC帧格式进行了扩展,插入了4字节的VLAN标记。
- 交换机的端口类型
- Access
- Trunk
- Hybrid
- 交换机各端口的缺省VLAN ID
- 在思科交换机上称为Native VLAN,即本征交换机
- 在华为交换机上称为Port VLAN ID,即端口VLAN ID,简记为PVID
- Access端口
- Access端口一般用于连接用户计算机
- Access端口只能属于一个VLAN
- Access端口的PVID值与端口所属VALN的ID相同(默认为1)
- Access端口接收处理方法
- 一般只接受“未打标签”的普通以太网帧,根据接收帧的端口的PVID给帧“打标签”,即插入4字节的VLAN标记字段,字段中的VID取值与端口的PVID取值相等。
- Access端口发送处理方法
- 若帧中的VID与端口的PVID相等,则“去标签”并转发该帧,否则不转发。
- 若帧中的VID与端口的PVID相等,则“去标签”并转发该帧,否则不转发。
- Trunk端口
- Trunk端口一般用于交换机之间或交换机和路由器之间的互连。
- Trunk端口可以属于多个VLAN
- 用户可以设置Trunk端口的PVID值,默认情况下,Trunk端口的PVID值为1
- Trunk端口发送处理方法:
- 对VID等于PVID的帧,“去标签”再转发
- 对VID不等于PVID的帧,直接转发
- Trunk端口接收处理方法
- 接收“未打标签”的帧,根据接收帧的端口的PVID给帧“打标签”,即插入4字节的VLAN标记字段,字段中的VID取值与端口的PVID值相等。
- 接收“已打标签”的帧。
- Hybrid端口
- Hybrid端口既可用于交换机之间或交换机与路由器之间的互连(同Trunk端口),也可用于交换机与用户计算机之间的互连(同Access端口)
- Hybrid端口可以属于多个VLAN(同Trunk端口)
- 用户可以设置Hybrid端口的PVID值。默认情况下,Hybrid端口的PVID值为1(同Trunk)
- Hybrid端口发送处理方法(与Trunk端口不同)
查看帧的VID是否在端口的“去标签”列表中- 若存在,则“去标签”后再转发
- 若不存在,则直接转发
- Hybrid端口接收处理方法(同Trunk端口)
- 接收“未打标签”的帧,根据接收帧的端口的PVID给帧“打标签”,即插入4字节的VLAN标记字段,字段中的VID值与端口的PVID值相等。
- 接收“已打标签的帧”