3.数据链路层
3.1 数据链路层概述
3.1.1 数据链路层的地位
- 我们在学习数据链路层时,可以将其传输单独看作一条传输线路来进行学习
3.1.2 链路、数据链路、帧
- 链路:是指一个节点到另一个节点之间直接相互连接(有线或者无线),例如主机H1 和 路由器R1之间相互连接就是一条链路
- 若中间有多个节点,这样的线路就叫做通信线路
- 数据链路:在链路通信中我们不仅仅需要物理层面上的链路,还需要各种协议来支撑,这些协议以及为了实现协议所安装的硬件和软件,再加上物理链路总的就叫做数据链路
- 计算机中的网络适配器(网卡)和其软件驱动就实现了这些协议,一般的网络适配器都具有数据链路层和物理层的功能
- 帧:是在数据链路层进行逻辑通信的协议数据单元PDU,在第一章的学服务的时候就见过
3.2 数据链路的主要三个问题
3.2.1 问题概述
- 数据链路主要的三个问题其实也是数据链路的主要的三个功能,封装成帧和透明传输、差错检测、可靠传输
3.2.1.2 封装成帧和透明传输
- 在进行数据链路传输时,首先需要解决怎样将上层传输下拉的数据封装成帧,无论是以太网还是PPP传输都需要考虑这个问题,其实就是在上层传输的PDU首部和尾部加上帧部
- FCS位其实就是进行差错检测的比特位
- 在进行数据链路传输的过程中,可能会出现数据端和帧首部或者帧尾部相同,这时会无法进行数据传输,此时我们要考虑怎么样将下层透明化,让上层在进行数据传输时不需要考虑下层实现,其本质就是下层为上层提供服务
3.2.2.2 差错检测
- 当我们的数据在传输中出现误码时,此时就需要差错检测,其工作原理就是在帧尾部设置检验位FSC,在发送数据时存储检测值,当接受端接受时进行校验,判断是否出现误码
3.2.2.3 可靠传输
- 在进行传输时,经常会遇到误码或者其他的问题,此时我们就要根据是不可靠运输(直接丢弃含有误码的帧) 还是 可靠传输(再次向发送端发送重发信号,申请进行重发信号)
3.3 封装成帧和透明传输
3.3.1 封装成帧
- 封装成帧:就是指将上层传输下来的协议数据单元PDU 加上首部和尾部,使之变成帧
- 帧的首部和尾部含有重要的信息,其中FSC就是差错检测的重要部分
- 其中帧的首部和尾部具有帧定界作用
-
例如:PPP点对点传输帧中,首部和尾部就标志来进行帧定界,注意帧定界符FLAG为 01111110
但是不是所以的数据帧都有标志来进行定界
-
例如:在以太网V2中的MAC帧中首部和尾部就没有标志来进行定界,但是在物理层封装时会加上前导码来进行识别定界,其中发送时还会有帧间间隔来进行间隔时间(96比特的发送时间),这个帧间间隔在后面还会有作用
-
为了提高数据链路层传输帧的效率,相对于首部和尾部来说应该尽可能的提升 数据载荷的长度,但是由于各种因素的显示,数据载荷的长度是有上限的即就是 最大传送单元MTU,在以太网中最大传送为1500字节
3.3.2 透明传输
- 透明传输就是数据链路对上层传输下来的数据没有限制,就像透明的一样
- 透明传输中的问题:在数据端中出现帧定界符数据(01111110),此时就可能出现接收端接收时帧提前截断帧,此时就是对数据端进行处理,分为两种方式 面向字节的字节填充方式、面对比特的比特填充方式
- 面向字节的字节填充方式,如果在数据段中出现了ESC转义字符或者 Flag帧定界符 就在前面在加上一个转义符ESC,在接收端接收数据时,如果遇到一个转义字符就去掉转义字符且后面的Flag和ESC都会被认为是数据
- ESC转义字符是一个特殊字符,十进制为27
- FLAG帧定界符,其值为01111110
- 面向比特的比特填充方式,如果出现连续的5个1就在后面加上一个0,接收端接收帧时,如果出现连续5个1就在后面去掉一个0
例题:
3.4 差错检测
3.4.1 误码概述
- 在进行通信链路上传输难免一些影响因素(如噪音,传输媒体质量)导致比特信号发生,此时发生的信号就会和原始信号不同,造成数据错乱,这种因素就是误码出现的原因,使得比特1变成比特0,比特0变成比特1
- 误码的比特位数比上总数据的比特数就叫做误码率
- 我们可以提高信噪比来降低误码率,但是不可能将误码率降低为0,所以差错检测就变得十分重要了
- 在帧的尾部都有对应校验码,可以通过不同的校验码形式来找到帧中数据是否出现误码
3.4.2 奇偶校验
- 奇校验:事现规定好数据中比特1的数量为奇数,然后再数据段后面加上一个校验位
- 偶校验:事现规定好数据中比特1的数量为奇数,然后再数据段后面加上一个校验位
- 实际使用中奇偶检验有分为 垂直奇偶校验、水平奇偶校验、水平垂直奇偶校验
- 对应奇校验来说,产生奇数位的误码可以通过计数其中比特1为奇数还是偶数判断出来,但是如果产生了偶数位误码的比特1数量的奇偶性将不会改变,就会出现漏检(未发现产生误码)
- 同样的,对于偶校验也一样
3.4.3 循环冗余校验
- 循环冗余校验码(CRC)在实际使用中误码极低,所以被广泛使用于数据链路的差错检测
- 循环冗余校验码原理: 1.首先收发双方确定一个计算校验码的生成多项式 2.发送方根据多项式计算出冗余码,并将其加到数据段后面 3.接收方根据多项式进行计算判断数据段是否产生误码
- 发送方进行如上计算,将获得的余数(如果位数小于生成式的最高次,前面补0,放到数据段后,然后进行数据帧的发送
- 接收方接收数据时,进行上图计算,如果余数不为0则产生了误码,否则就是没有产生误码
3.5 可靠传输
3.5.1可靠传输概念
-
在传输数据过程中我们可以使用差错检测检测出是否有误码(比特差错)出现
数据链路层之上接收数据链路的服务:
-
不可靠传输服务:直接丢弃出现误码的数据帧
-
可靠传输服务:发送方发送什么数据帧,接收方就要接收到什么数据帧
- 当接收端接收到数据时,如果检测到出现误码且是可靠传输(不可靠传输会直接丢弃数据帧),会发送重发帧到发送端,此时发送端会重新当前数据帧,然后接收在接收数据
- 但是实际情况可能并不是这样的简单,可能重发帧数据也出现误码那就无法保证可靠传输服务
- 在传输形式中,有限连接往往误码率比较低,所以数据链路层可以为上层提供不可靠服务;但是对于无线连接来说误码率都比较高,所以数据链路层必须为上层提供可靠服务
3.5.2 传输差错
- 在实际情况中,误码(比特差错)只是一种在数据链路层的传输差错,在更高层也存在传输差错,例如:分组丢失、分组失序、分组重复
3.5.2.1 分组丢失
- 分组丢失:在之前丢包率就有上述情况,当进行转发的路由器的输入队列已经满了,根据丢包原则该分组被丢弃
3.5.2.2 分组失序
- 分组失序:由于各分组选择不同的路由导致接收端就收的分组顺序和发送端的顺序不同,从而导致数据无法正常使用
3.5.2.3 分组重复
- 分组重复:由于分组在某个路由器等待时间过长,发送进行超时重发分组,但是原来的分组在路由器处理好之后又就行发送,此时接受端就会接受两个相同的分组
总结: 在传输差错中,除了误码属于数据链路层的,其他皆是数据链路层之上出现的,而对于上层的不同协议来说应该根据其具体特性来选择使用 不可靠传输服务 还是 可靠传输服务
3.5.3 可靠传输的协议
- 对于基础可靠传输的协议有:停止-等待协议、回退N帧协议、选择重传协议
- 注意:这些协议不仅仅局限于数据链路层的使用,还可以在更高层的可靠传输中使用
3.5.3 停止-等待协议
3.5.3.1停止-等待协议原理
- 在停止-等待协议中有四个机制,确认、否认和重传机制、超时重发协议、确认丢失数据分组机制、确认迟到确认分组机制
- 首先,在确认、否认和重传机制中,当接收方成功接收数据分组之后会向发送方一个确认分组(ACK);如果接受方收到的数据分组是有误码的,则会向发送方发送一个否认分组(NAK),当发送方接受到NAK时就会在重新上层发送的数据分组
- 注意: 停止-等待协议是一个一对一的协议,当发送收到ACK或者NAK才会进行接下来的操作,那如果连接受方没有接受到数据分组,发送方该如何处理
- 当数据分组丢失,发送方就会一直等待接收方的ACK或者NAK,但是接收方有没有接收到数据分组,根本就不会发送ACK或者NAK,此时就需要超时传输机制
- 超时重传机制:当数据分组丢失时,若发送方等待时间超过超时重传时间RTO,就会重新发送数据分组,在数据链路中RTO时间的设置一般略大于RTT(往返时间),而在传输层中RTO则不好确定
- 注意:有了超时重传机制,可以不使用否认NAK而直接利用超时重传进行数据分组的二次发送,当然在物误码率比较高的还是使用否认NAK比较好
- 处理数据分组可能会丢出,接收方传输会发送方的ACK也可能会出现分组丢失的情况,如上图,此时接受方将会接受当两个一样的数据分组,此时就出现了分组重复这种传输差错
- 因为接受方接受到两个一样的数据分组,所以我们要对分组进行编号,将重发的数据分组和新的数据分组进行区分
- 接受方发送的ACK会丢失是一种情况,除此之外ACK确认分组还有可能迟到,导致发送进行超时重发,此时在发送方发送下一数据分组之前,发送方会接受到两个ACK信号,然后就会一直有两个ACK在发送接受方之间传输,所以对于对确认分组也需要进行编号
- 注:数据链路层一般不会有确认信号迟到现象,所以数据链路层一般不用进行确认分组编号
停止-等待协议:属于自动请求重传,即重传是发送方自动发送的,而不是接收方发送请求要求发送方进行层数据重发
3.5.3.2 停止-等待协议信道利用率
- 信道利用率U = T_D(数据分组发送时延) / T_D + RTT(往返时间,其实就是数据分组和确认分组的传输时延) + T_A(确认分组发送时延)
- 在实际网络中,T_A远小于T_D,T_A将会被忽略
- 在实际网络中,如果往返时间过大(例如卫星链路),停止-等待协议并不适用,此处还只是之后正常出传输的,如果有误码出现或者其他传输差错信道利用率还会下降,所以在通信路径比较大的时候通常使用回退N帧协议(GBN) 或者 选择重发协议(SN)
3.5.4 回退N帧协议
3.5.4.1 回退N帧协议简述
- 在停止-等待协议中,如果往返时间过长的通信链路会导致信道利用率非常低,所以需要一种方式来解决这种问题,如图如果使用单线传输的停止-等待协议的效率低,就可以使用流水线形式的传输,也就是回退N帧协议
3.5.4.2 无差错传输情况
- W_R,接受接受数据分组的数量;W_T 发送发送数据分组的数量
- 在无差错传输情况下,W_R = 1,这和停止-等待协议一致,而对于W_T其取值范围为 1 < W_T < = (2_n) - 1,上图中n取3,其W_T取值范围为 1 ~ 7,上图W_T取5,
- 为什么W_T不能取1呢?因为W_T取1就是和停止-等待协议一样
- 当无差错进行出传输,首先发送方发送5个分组,接受方依次一个一个接受数据分组且接受方的W_R窗口每接受一个数据分组就向前移动,直到所以数据分组都被接受,此时接受方需要尽快取走已经被缓存好的数据分组,然后发送发送发再次方式W_T个数据分组
- 那么如果发送方的一组数据分组中某个数据分组出现误码或者丢失,接受方就会卡在某个数据分组不再前进,此时就会出现超时传输情况
3.5.4.3 超时传输情况、
- 首先,当一组数据分组中的2号数据分组出现误码,接受方由于每成功接受一个数据分组才会向后移动一个窗口,所以此时数据只会传输前两个数据分组
- 2号数据分组未落入接受窗口中
- 当接受方无法接受到后面的数据时,首先接收方会发送ACK确认分组数据,此时发送方就会移动其中ACK编号最大的数据分组距离
- 此时接受方就移动两个数据分组块,为什么回退N帧是移动其中最大的数据分组块数量呢?因为退回N帧协议使用的是累计确认(在连续接受确认分组之后,只根据最后一个确认分组来移动窗口)
- 即使2、3、4数据分组已经被发送,但是由于2号数据分组产生误码,发送方还是要从2号数据分组向后发送W_T个数据分组,这就是回退N帧协议的缘来
- 当中间数据分组由于传输差错导致后面的数据分组无法被接受,此时就会在第一个产生传输差错的数据分组处出现数据分组超时的问题
3.5.4.4 W_T大于最大值传输情况
- 在前面,我们规定了W_T > 1 && W_T <= (2^n - 1),那么如果W_T > (2^n - 1) 会怎么样呢?
- 当我们产生0号数据分组超时传输时(0号数据分组的ACK丢失),需要重发0号数据分组,但是接收发已经移动到新的0号分组处
- 此时就会导致接受方不知道新的一组数据分组是之前超时重发的数据分组还是后面新的数据分组,就无法辨别新旧数据分组了
例题:
总结:
3.5.5 选择重传协议
3.5.4.1 选择重传协议简述
- 以滑动窗口的角度来看三个协议,对于选择回退N帧协议当出现超时重传时,就需要对出现超时的数据分组及后面已经发送过的数据分组进行重发,此时就需要选择重传协议来进行优化
- 选择重传协议:其W_R 和 W_T最大值都可以为2^(n - 1),当然如果W_R > W_T是没有意义的,因为发送方一次只能传输W_T给数据分组
- 注意:选择重传协议不是使用累积确认,而是使用逐个确认的方法
3.5.4.2 超时传输情况
- 当第一个数据分组出现误码,其他正常的数据分组将会逐个确认,然后并发送ACK
- 当发送方长时间为接受到0号数据分组的ACK,就会对0号分组进行重发,期间发送方不会移动窗口,直到收到接收方的ACK时,发送方才会移动窗口,且接受方接受到数据分组就会向后移动窗口
3.5.4.3 W_T大于最大值传输情况
- 当W_T大于2^(n-1)时,就如图中W_T = 5 > 4,此时进行整个数据窗口的分组传输,传输到接受方,接受方逐个接受数据分组,并移动窗口,此时接受方的ACK确认分组中0号确认分组丢失
- 0号ACK确认分组丢失,进行超时重传,此时接收方已经移动窗口,后面的新窗口却接受到了之前已经被接受的数据分组,所以当W_T + W_R > 2^3,接受方将无法分辨新旧数据分组
例题:
总结:
3.3 点对点协议PPP
3.3.1 PPP概述
- 点对点协议PPP是现在使用最广的点对点数据链路协议
- 其两个功能:1.通过点对点协议连接ISP服务,通过ISP服务连接因特网
- 2.广域网路由器的连接
处于数据链路层的点对点协议PPP,为了和上层网络层连接有网络控制协议NCP,为了和下层的物理层有数据链路控制协议LCP,在使用PPP协议的数据链路层时,物理层通常使用面向字节的异步链路 或者 面向比特的同步链路
3.3.2 PPP帧格式
- 当PDU是ip数据报时,PPP帧就是传输数据的数据分组,当是LCP就是数据链路控制包,是NCP就是网络控制包
3.3.3 PPP帧的透明传输
3.3.3.1 面向字节
3.3.3.2 面向比特
3.3.4 PPP的差错检测
- PPP帧的差错检测使用循环冗余校验码,生成多项式如图
3.3.5 PPP的工作状态
- 首先,数据链路层检测到载波,尝试和物理层建立起联系,若LCP协商(最大帧长,鉴别协议等)失败重回静止状态,若成功则进行鉴别。期间可以使用口令鉴别协议PAP或者挑战握手协议CHAP,若鉴别失败直接进行终止,若无需鉴别或者鉴别成功则进入网络,此时进行NCP配置,成功后就可以打开数据链路层进行数据传输,当出现故障或者另一端进行终止请求则进行终止状态,至此传输完成
3.4 共享式以太网
- 以太网:以最初假象的电磁波传输介质——以太网作为命名
- 最初以太网以无缘电缆进行数据传输,属于基带总线局域网,传输速率为2.94MB/s
- 最初共享式以太网以总线性,后来改进成集线器式的,直至现在已经不再使用共享式的以太网
3.4.1 网络适配器和MAC地址
3.4.1.1 网络适配器
- 在计算机中连接网络的媒介就是网络适配器,也就是网卡,其具体构成如上图
- 网卡连接着内部计算机和外部局域网,在内部通过IO总线可进行并行传输,在外部通过传输媒介(同轴电缆、光纤、双绞线电缆)进行串行传输
- 在计算机种网卡一般都实现了物理层和数据链路层的功能,其中一个重要的功能就是进行串行传输和并行传输的数据转化,所以其内部就有一个数据缓冲区,同时还需要计算机安装与网卡相关的驱动程序才能使网卡正常工作
3.4.1.2 MAC地址
3.4.1.2.1MAC地址概述
- 在广播传输时,需要一个唯一标志来识别每个主机,即就是数据链路地址
- 在数据链路中的帧首部包括目的数据链路地址 和 源数据链路地址,由于这类地址都是由媒体接入控制(MediumAccessControl,MAC),所以叫做MAC地址
- MAC地址一般被固化在网卡中的EERROM中,也叫硬件地址或者物理地址,注意这里的物理并不是指物理层地址
- 对于普通计算机中一般都有以太网网卡和WIFI网卡,每个网卡都有全球唯一的MAC地址
- 交换机和路由器一般都要有个MAC地址
例题:
3.4.1.2.2 IEEE802局域网下MAC地址
- IEEE802局域网下MAC地址由6个字节构成,MAC地址前三位需要厂商向OUI申请,后三位由厂商自行分配
- 一般有标志表示方法以及其他的表示方法,通常将四个比特转化成16进制数来表示
- 对于MAC地址格式,第一个字节的b_0位表示传播形式:0表示单播,1表示多播 ,b_1位表示是否由IEEE管理还是本地自行管理,即就是全球管理和本地管理:0表示全球管理,1表示本地管理
- 其中FF-FF-FF-FF表示MAC广播地址,交换机的生成树协议STP的多播地址为01-80-C2-00-00-00
- IEEE802局域网中MAC地址的传输顺序:对于字节由第一个到第六个,字节内部从低位向高位进行传输
- 注意:这里用不匹配而不是不相同是因为还有广播
- 当使用广播地址作为目标地址时,其他主机都会进行接收帧
- 循环多播中可以使用生成树协议STP来避免帧的循环链路中持续传输
总结:
- 在进行帧传输时,如果帧首部目标地址是广播地址、 网卡接收的多播地址 或者 与本地MAC地址相同 则进行接收即可,其他情况下丢弃该帧
- 网卡还有一种模式:混乱模式,即无论什么帧都进行接收,这种方式可以被网络管理员来监听和分析网络流量
- 嗅探器(Sniffer)就是一种工作在混杂方式的网卡,再配合相应的工具软件(WireShark),就可以作为一种非常有用的网络工具来学习和分析网络
- 注意:对于帧的接收代表收到该帧,对于帧的接受代表该帧与数据链路层以及匹配
3.4.2 CSMA/CD协议
3.4.2.1 CSMA/CD协议的基本原理
- 共享式以太网自带有广播特性,某台站点在发送帧时,会独占总线且其他站点将无法传输帧数据,若其他站点进行帧数据的发送就会产生信号碰撞,而共享式以太网需要解决的一个重要问题就是:处理总线上的信号碰撞问题
- 为了解决信号碰撞问题,使用了专有协议即:CAMS/CD协议,即就是载波监听多址接入/碰撞检测的缩写
- 多址接入(MA): 是指多个站点连接在一台总线之上,也就是共享式以太网
- 载波监听(CS): 每个站点在发送帧的之前先检测总线上是否由96比特的空闲发送时间,如果有的话就可以在当前站点上发送帧,如果没有96比特的空闲发送时间就一直监听
- 注意:如果总线已经有站点发送帧(即不空闲),也有可能被其他站点认为是空闲的,因为可能当前站点还没有收到占用总线站点发送的帧,可以简单理解一个人(A)已经发送了信件,但是另一个人(B)还没有收到,然后B也去发送了信件
- 碰撞检测(CD): 站点在发送帧的同时不断检测总线上是否由其他帧在传输,若检测到碰撞,则发送碰撞的双发同时退避一段时间之后,在进行载波监听
- 载波监听:在需要发送帧时,检测总线上是否有96比特的空闲传输时间
- 在已经由站点B在总线上发送帧时,另一个站点C并没有收到栈定B的帧,即站点C认为此时总线是空闲的但是总线此时并不是空闲的
- 然后站点B和站点C同时边发送帧边检测碰撞
- 此时总线就会发生碰撞,两个站点发送的数据帧都会失效,然后两个站点同时停止数据帧的发送并且退避随机是时间后在进行载波检测
- 在发生数据帧碰撞之后,还有一种为了防止出错数据帧在总线上被站点接受,使用强换碰撞在发生碰撞之后还有人为的发生32或48比特的干扰信号,造成更多的碰撞
例题:
3.4.2.2. 共享式以太网的竞争期
- 一方先发送数据帧出现碰撞时(两个站点分别处以总线的两端),如上图情况
- 当发送时间t = 2τ时,就可以检测总线中是否有碰撞情况
- 其中2τ就是端到端之间往返时间,被称为争用期或者碰撞窗口,只要在2τ时间内没检测到碰撞,这一次帧传输就是不会放生碰撞
- τ值取决有两端点之间的距离(τ是端对端站点之间的传播时延)
- 显然在总线中,总线长度越长(τ越大,时间片越大就可能有差错),总线中站点越多发送碰撞的概率就越大
- 争用率极计算:2 * 端到端距离 / 电磁波传输速率,在以太网中争用率为51.2μs ,总线长度不能超过2500m
例题:
- 注意:题目中要求均检测到碰撞冲突时,最小的时间就是两者同时发生帧,此时两者同时检测到是的时间就是 τ / 2, 最大的时间就是一方先发送帧,然后发送碰撞冲突,后发送帧的哪一方先检测到冲突,然后后发送的那一方在检测到碰撞,其时间就是争用率,近似为2τ
3.4.2.3 共享式以太网的最小帧长和最大帧长
最小帧长:
- 为了确保共享以太网中每一个站点在发送一个完帧时,能够检测出是否发送碰撞,帧的发送时延不能小于最远两个站点的帧发送的往返时间,即就是争用期2τ
- 有了对于时间的要求对于发送帧的长度也有对于的要求,因为帧的发送时延是2τ,所以有对应关系最小的帧长度应该为 传输速率 * 争用期(2τ)
- 在10Mb/s的共享式以太网中,争用期为51.2us,所以最小帧长为512b,也就是64byte
- 如果发送帧的前64byte中没有出现碰撞,那么本次帧发送就不会出现碰撞
- 若接受端接受的帧长度小于64byte就证明此时帧发送出现了碰撞,不应该接受该帧
最大帧长:
- 一般来说,为了提高信道利用率我们应该提高最大帧长度,但是如果帧长度过长则会造成一系列的问题,所以最大帧长度也会有一定的限制
以太网V2的MAC帧
- 其最小数据载荷为46B,加上首部和尾部刚好为64B,其中最大帧长为1518B
例题:
- 上述两题都要使用好最小帧长的计算公式
3.4.2.4 共享式以太网的退避算法
- 在进行碰撞检测CD时,若出现碰撞则MAC帧发送双发需要同时退避一段随机时间,再进行载波监听
- 截断二进制指数退避算法: 退避时间为 争用期 * 随机数,其中随机数的其中为 {0, …… ,(2^k) - 1},其中k = min(10, 重传次数),所以可能退避的时间在计算出的随机数中随机选取
- 若链路中出现多次碰撞,证明有多个站点参与信道竞争,数据帧重传次数就会上升,然后每个站点的退避时间就会上升,从而减少碰撞的概率
- 注意:若同一数据帧重传16次都不成功时,则应该停止重传并向上层报告
3.4.2.5 共享式以太网的信道利用率
- 计算共享式以太网中的信道利用率,考虑在理想情况下不会发生数据帧的碰撞课重传,也就是没有争用期,此时信道利用率就是 T_0 / T_0(传播时延) + τ(发送时延),令a = τ / T_0,为了提高信道利用率应该是a足够小,τ应该小,而T_0应该足够大,所以端到端距离应该尽量小,而帧长应该经量大
例题:
3.4.3 使用集线器的共享式以太网
- 早期使用粗同轴电缆的共享式以太网,后来有发展到细同轴电缆的共享式以太网,在以有源器件被认为是不可靠的,而无源器件别认为是可靠的
- 但是无源器件需要主机有带BNC的网卡,在总线中需要许多机械连接点,一旦某一个连接点出现问题就有可能导致整个总线传输无法使用
- 后来使用集线器来构建成共享式以太网,同轴电缆也换成了更便宜、更灵活的**双绞线
集线器特点:
- 集线器中虽然物理上是星性结构,但是逻辑上还是总线结构,还是使用的CSMA/CD协议
- 集线器工作在物理层
- 集线器有少量的若错能力和网络管理功能
- 10BASE-T,传输距离较短,每个集线器距离不超过100m
- 10BASE-F,只是将双绞线换成光纤
例题:
3.4.4 在物理层拓展以太网
3.4.4.1 拓展站点和集线器之间的距离
- 最早在数据链路层中两个节点的距离不能太远,否则信号就会衰减到CSMA/CD协议无法正常工作
- 在最早使用的物理层中转发器,任意两个网段可以使用转发器连接,但是IEEE802.3规定任意两个站点只能最多可以经过三个网段
- 随着10BASE-T星型以太网的成为以太网的主流,转发器就逐渐不被使用的
- 10BASE-T星型以太网两节点距离集线器最大距离为100,所以两站点之间的距离最大为200m
- 在10BASE-T星型以太网中,可以使用光纤和一对光纤调制解调器来连接两个网段,且使用光纤信号失真和信号衰减很小,可以和简单的将站点和集线器之间拓展到1000m以上
3.4.4.2 拓展以太网的拓展范围和站点数量
- 集线器通常可以有8到32个接口,当我们的集线器接口将要满时,可以通过集线器将本网段和其他网段连接起来,依次来拓展以太网的范围和站点数量
- 但是将多个网段连接起来也有其缺陷,因为将两个网段连接其起来可能会导致碰撞范围更大,从而降低了整个以太网范围内的吞吐量
3.4.5 在数据链路层拓展以太网
3.4.5.1 使用网桥在数据链路层拓展以太网
- 网桥工作在数据链路层,可以识别帧结构、识别MAC地址、利用自身的转发表进行数据帧的转发和丢弃
3.4.5.2 网桥的接口和工作原理
- 在网桥内部有其连接外部的接口、网桥管理软件和网桥协议实体、转发表(转发操作)
- 在进行传输数据帧时,有三种情况发送端和接受端在同一网段、发送端和接受端在不同网段、发送数据帧为广播帧
- 在同一网段时:发送端的数字帧在发送端所属的网段进行传输,接受端接受数据,其他站点识别MAC帧并丢弃数据帧,网桥接受到数据帧查询MAC地址并找到其接受端所在的接口,发现接受端和发送端是同一网段,丢弃数据帧
- 在不同网段时:发送端的数据帧在本网段传输,本网段其他站点丢弃数据帧,网桥接受到数据帧查询MAC地址并找到其接受端所在的接口,然后将数据帧发送到对于的数据帧
- 数据帧为广播帧:发送端发送数据后,本网段就收数据帧,网桥接受到数据帧查询MAC地址,向其他接口发送数据帧(除了当前网段连接的接口)
3.4.5.3 网桥的自学习和转发帧
-
当数据帧发送到网桥时,网桥进行登记然后进行自学习,登记内容为MAC地址和进入网桥接口号
-
网桥对帧的转发有三种情况:
1.盲目转发: 并不知道该帧的目的地址,登录后向非接入接口转发该帧
2.明确转发:知道该帧的目的地址,直接把该帧发送至目的接口的网段(目的地址不能是接入处的网段
3.丢弃:网桥不应该发送该帧,直接丢弃
-
对于有误码的帧,网桥将直接丢弃
-
网桥对于无误码的帧,直接将其发送到所以的除发送端的接口网段
-
转发表的每条记录都有其存在时限,到时会自动删除,因为站点的MAC地址和接入接口号可能会改变
3.4.5.4 透明网桥生产树协议STP
- 有时为了提高以太网的可靠性,会在两个站点之间形成环路,但是这样也会造成不好的影响,如数据广播在传输的过程中会永久的在环路中兜圈,使网络资源被浪费(这里忽略了碰撞现象)
- 为了解决上述问题,使用透明网桥生产树协议STP来进行解决,这里的透明是指站点并不知道有网桥的存在只是进行收发数据帧
- 不过网桥中有怎么样的复杂拓扑结构,网桥通过交互网桥协议单元BPDU,找到拓扑图中的一个无环连通子集(生成树),使得在整个结构中不出现环路
- 注意:若环路结构出现改变,则网桥会重新生成生成树
3.5 交换式以太网
3.5.1 交换式以太网
- 网桥的接口很少,一般有2 ~ 4个,用来连接不同网段
- 后来1990问世的交换集线器,其实本质就是一个多接口网桥,称为以太网交换式(Switch) 或者 二层交换机,二层是指即工作在物理层也工作在数据链路层
- 以太网交换机也使用自学习转发帧 和 STP透明网桥生成树协议
- 注意:仅使用交换的以太网叫做交换式以太网
3.5.2以太网交换机
3.5.2.1 以太网交换机概述
!](./%E5%9B%BE%E7%89%87/QQ%E6%88%AA%E5%9B%BE20230319094216.png)
- 以太网交换机:本质上是一个网桥,其具有自学习、转发帧、并在环路中使用STP协议
- 每个以太网交换机接口可以连接一个 交换机 或者 集线器,对于连接交换机,交换机具有存储转发功能,所以可以进行全双工通信,而连接集线器,只能进行半双工通信,网卡可以识别上述两种方式并进行模式的切换
- 交换机具有多速率的接口,10MB/s、100MB/s、1GB/s等等,大多数接口都速率自适应
例题:
- 需要注意的是,在查交换机中的转发表时只有三种操作:盲目转发、明确转发、丢弃,只要做题时按照这三个步骤来就没有问题
- 注意题目中的PDU,以太网工作在数据链路层,其PDU一定是帧,而帧的所包含的地址就是MAC地址,也就是物理地址
3.5.2.2以太网交换机的转发方式
- 一般来说以太网交换都使用存储转发方式,但是为了减小转发时延,某些交换机采用 直通 的方式
- 采用直通发送方式,在数据帧到交换机的时候 只检测数据帧的目的MAC地址,然后直接将数据帧发送出去,而不检测帧是否含有误码
- 直通虽然减少了转发时延,但是没有检测是否存在误码,导致可能传输没有用的帧
- 注意:这种方式的发送时延就是检测MAC帧的时间,即就是 MAC帧的位数 / 数据传输速率
例题:
- 此题中就是求采用直通方式的以太网交换机的转发时延,就是检测MAC地址所要消耗的时间
3.5.3 共享式以太网和交换式以太网的比较
单发帧:
- 对于单发帧,共享式以太网其他站点还会接收到数据帧然后并检测后丢弃;而交换式以太网会直接进行精准转发
多发帧:
- 以太网交换机进行单多帧时不会产生碰撞,而集线器会产生碰撞
广播帧:
- 多播帧,集线器和交换机都不会发生碰撞
交换机和集线器连接网段
- 对使用集线器连接两个网段,即扩大广播域,也扩大了碰撞域;而交换机连接两个网段时,指扩大了广播域而没有扩大碰撞域
例题:
- A:以太网交换机本质上是一个多接口网桥
- B:交换机隔冲突域,并会不够成一个冲突域
- C:交换机不隔离广播域,所以会构成一个广播域
- 以太网交换机工作在数据链路层,并不可以进行网络互联
- 注意:交换机进行转发的步骤即可,盲目转发、明确转发、丢弃
- 对于集线器即不隔离冲突域也不隔离广播域,对于交换机隔离冲突域但是不隔离广播域,对于路由器即隔离冲突域也隔离广播域
3.6 以太网帧的格式
3.7 虚拟局域网VLAN
3.7.1 虚拟局域网VLAN的产生背景
- 由于多个交换机连接,不同节点直接连接会构成一个庞大的广播域,当某个节点发送广播时,会占用巨大的网络资源,所以我们就需要将不同节点之间的广播域隔离开来、
- 而在现实中确有许多协议中需要使用发送广播信号,
- 例如:TCP/IP协议栈中的很多协议都会使用广播、地址解析协议、ARP路由信息协议RIPv1、动态主机配置协议DHC
- 我们需要解决这个问题,虽然使用路由器也可以隔离广播域但是那样成本太高,所以VLAN就应运产生,但是要注意VLAN是一个服务并不是像其名字一样虚拟局域网,其并不是一个网络
概念:
- 虚拟局域网(VLAN): 是将局域网中一些站点分割成与物理位置无关的逻辑组的技术,一个逻辑组就是一个VLAN,同组内的站点需求相似
- 不同VLAN中的站点不可以相互通信,同一VALN可以相互通信
- 同一VLAN中的站点可以由交换机相连接,也可以是同一台交换机相连
3.7.2 VLAN实现机制
- VLAN实现在交换机之上,所以我们对交换机由两个要求:能够处理含VLAN标志的帧即就是IEEE802.1Q帧,交换机有不同的接口,且对不同接口的帧有不同的处理方式
IEEE802.1Q帧格式:
- IEEE802.1Q帧就是在MAC帧的2源地址和类型中加入4字节的VLAN标志
- 标签协议标识符TPID:长度为16bit,值为0x8100,表示为IEEE802.1Q帧
- 优先级PRI:表示当前帧的优先级,0~7,越高优先级越大
- 规范格式指示符CFI:1表示规范的,0表示非规范的,其中以太网的MAC地址取的就为1
- 虚拟局域网标识符VID:长为12bit,范围为0~4095,不取最大和最小值
交换机接口:
- 交换机接口有Access 和 Trunk两种,接口默认为Access ,却省VID为1
- 对于不同接口的帧通过VID来进行识别,在思科交换机中VID被称为本征VID,华为交换机中被称为PVID
- 注意:帧中VLAN端都是由交换机来进行处理的,主机并不处理
交换帧示例:
- 交换机接口默认为Access,VID默认为1,对于Access接口传输帧同过交换机节点传输,并在接口处打上标签,然后由交换机找到其VID相同的接口,去标签后将帧发送到对于的接口处,然后主机接收帧
- 对于不同VLAN的站点之间无法相互通信,即就是根据VID来判读不同VLAN然后再同一VLAN中发送帧接收帧
- Trunk接口是用来连接不同交换机的接口,即就是为了使不同交换机但同一VLAN的站点可以相互传输帧
- Trunk接口"去标签"后转发:例如A站点发送帧,因为其VID和5号接口相同所以将其取标签后发送到对于的另一给交换机的Trunk接口处,然后另一个Trunk接口就加上标签,然后由个主机对于的接口处理标签
- Trunk接口直发:例如C站点发送帧,因为其VID与5号接口不同,帧直接发送另一个交换机的Trunk接口,然后再由站点对于的接口处理帧(即去点VLAN标志)
- 注意:两个交换机之间的Trunk接口VID要相同,否则可能会出问题
例题:
3.8 802.11无线局域网
3.8.1 无线局域网的组成
- 802.11无线局域是现在使用最广泛的无线局域网,被称为WIFI(Wireless Fidelity,无线保真度)
- 其主要分为以下两种:有固定基础设施的、无固定基础设施的
- 固定基础设施是指:事先建立好的、能覆盖一定范围、多个固定的通信基站
3.8.1.1 有固定基础设施
- 有固定设施由星型拓扑结构,其中心站点为接入点AP,AP和其他站点构成基本服务集BSS,无论站点再BSS内还是和其他BSS通信都要经过AP
- 网络管理员需要为AP分配一个32为的服务表示符SSID,其就是该AP的无线局域网地址
- BSS覆盖的范围为基本服务区BSA,通常BSA的覆盖范围在100m内
- BSS可以独立也可以和其他BSS够成一个拓展服务集ESS,不同的BSS之间通信需要经过一个分配系统DS(例如:以太网)
- 当一个站点(BSS1)发送信息到另一个站点(BSS2)时,首先经过AP1,然后经过DS,再经过AP2,然后到达目的站点
- 当站点从一个BSS漫游到另一个BSS时,该站点还是可以通信,但是802.11中没有规定漫游服务
- 其规定了两种服务:关联服务、重建关联和分离服务(需要进行该操作时使用对于服务即可)
- 关联服务:被动关联和主动关联
- 被动关联,AP会定时向其他站点发送信标帧,然后站点接收信标帧,再发送关联帧
- 主动关联,其他站点主动向AP发送探测请求帧,AP接收到之后发送探测响应帧
3.8.1.2 无固定基础设施
- 无固定基础设施又称为自组织网络(ad hot network)
- 每个站点之间通过站点来传输帧,源站和目的站之间经过的站点叫做转发站,转发站需要由路由功能
- 无固定基础设施的无线局域网转发需要特点路由选择协议,往往选哟通过网关或者其他协议转换器
- 802.11无线局域网中的ad hot network只支持站点间单跳通信,而没有多跳路由标准,所以使用比较少
3.8.2 无线局域网的物理层
- 无线局域网的物理层工作十分复杂,可以通过频率、调制方式、最高速率来将无线网分为多个标志
-
为了适应多种标准,通常无线网卡会被设置为多模的
-
最早无线局域网中使用红外技术和调频技术,而现在也很少使用了
-
最近又有一下新标准被发行
3.8.3 无线局域网的数据链路层
3.8.3.1 CSMA/CA协议
- 在802.11无线局域网中并不使用CSMA/CD协议,由于无线传播 形式无法使用CSMA/CD协议,转而使用CSMA/CA协议,即就是载波监听多址接入/碰撞避免,注意:这里的碰撞避免并不是没有碰撞发生,只是减少发生碰撞的几率
无法使用CD的原因:
- 无线网卡在实际情况中接收的信号强度都会远远小于发送时的信号强度,所以如果进行碰撞检需要对硬件有非常严格的标准
- 除此之外,无线局域网中的站点(除中心站点)的任意两个站点互为隐蔽站点,两者发生信号发生碰撞时两战点也无法发现信号发生碰撞(由于信号强度过小)
3.8.3.2 CSMA/CA协议基本原理
3.8.3.2.1 CSMA/CA传输简介
-
DIFS:帧间间隔长度为128us,在DCF方式中,DIFS用来发送数据帧和管理帧,DCF方式是分布协调功能,在这种方式下没有中心控制器,需要各个站点使用CSMA/CA协议通过争用信道来进行通信,这种方式是802.11方式定义,所以必须要实现
-
DIFS工作的意义:是因为防止有更高优先级的帧需要发送,来作为缓冲的时间
-
SIFS短帧间隔:长度为28us,它是最短的帧间隔,用来分割属于一次对话的帧,一个站点可以在这个时间从发送方式转化到接受方式,可以用来分割ACK帧、CTS帧
-
数据帧中的持续时间指出当前帧要占用信道的时间(包括SIFS和发送ACK确定帧的时间),此时其他站点会检测到信道忙,并推迟帧的发送
-
当数据帧被就收到之后接受方会发送ACK确认帧,这是因为在无线信道中误码率比较高,需要使用停止等待协议来实现可靠传输
例题:
3.8.3.2.2 CSMA/CA退避算法
- 在上面时候需要使用退避算法?
- 在信道已经被占用时候
- 在重传一个帧的时候
- 在发送一个帧还要连续发送下一帧的时候
- 在执行退避算法时,将会为每一个需要发送帧的站点分配随机时间
- 当随机时间减为零时,当前站点将会占有信道,开始发送数据
- 当站点的随机时间未减为零时但是信道又被占有时,站点的随机时间将会被冻结,等到信道变得空闲之后然后经过DIFS时隔之后,继续启动随机时间计数器
- 在进行第i次碰撞之后,将会在{1, 2, 3, ……, 2^(2 + i) - 1}中随机选择一个数字,然后乘上一个基本碰撞时间(就是一个时隙的时间),就会得到站点的退避随机时间,当最大随机数选择为255时(k = 6)时,就不再增减最大随机值了
3.8.3.2.3 CSMA/CA信道预约
- RTS(Request to send)帧是短的控制帧,包括源地址、目的地址、当前站点需要占用信道的时间(包括到ACK帧的传输时间)
- CTS(Clear to send)帧是短响应帧,也包括站点占用信道的时间
- 如果RTS帧发送碰撞,当前站点就会使用退避算法重传算法,使用RTS帧和CTS帧会增加开销,但是可以减少信道中的碰撞
- 在802.11无线局域网中可以选择,使用RTS帧和CTS帧、只有帧长达到一定长度才使用RTS帧和CTS帧、不是RTS帧和CTS帧
使用RTS帧和CTS帧,当其他站点接收到帧数据时,因为RTS帧和CTS帧中有站点占用信道的时间,所以其他接收到帧后不需要进行载波监听就可以冻结退避算法的随机时间,这个点可以解决隐蔽站点的问题
- 当其他站点接收到CTS帧时,会默认识别信道被占用中,并且冻结退避随机时间
例题:
- 最长的时间就是,IFS1(DIFS 128us),其他都是SIFS(28us)
3.8.4 无线局域网的MAC帧
- 在802.11无线以太网中主要有上述三种帧格式,我们主要使用的就是数据帧
- 数据帧主要由帧头(30字节),数据段(通常不大于1500字节)、帧尾FSC检错码为(使用循环冗余校验码)
- 持续期(2字节):用来实现虚拟载波监听和预约信道功能,指出是RTS和CTS中的站点占用信道持续时间
- 序号控制(2字节):对数据帧进行编号
- 帧控制(2字节):其中的子类型和类型决定了帧的类型和形式, 其中去往DS和来自DS决定地址1、2、3、4代表的使用情况
- 最常使用的就是 发送数据帧 和 接受数据帧的时候
- 同一基本服务集中发送数据,不需要进行数据帧的转换
- 无线局域网中向路由器中发送数据,需要现将数据发送到AP1中,然后将无线局域网数据帧转换成MAC帧,然后在输出给路由器,同样的接受路由器发送的MAC也需要将其转换成无线局域网中的数据帧
- 为什么在无线局域网中的帧需要包含AP中的地址,而在以太网中不需要?
- 因为AP在以太网中是透明化的,而在无线局域网中不是透明的
例题:
- 注意发送和接受时AP地址 和 目的地址 和源地址在那个地址段即可!