提交 0859e7cd 编写于 作者: 2 2293736867

Computer network chapter3

上级 da669068
# Table of Contents
* [1 概述](#1-概述)
* [2 数据链路层的三个问题](#2-数据链路层的三个问题)
* [3 透明传输](#3-透明传输)
* [4 最大传送单元](#4-最大传送单元)
* [5 可靠传输](#5-可靠传输)
* [5.1 概念](#51-概念)
* [5.2 停止等待协议](#52-停止等待协议)
* [5.2.1 概念](#521-概念)
* [5.2.2 信道利用率](#522-信道利用率)
* [5.3 回退N帧协议](#53-回退n帧协议)
* [5.4 选择重传协议](#54-选择重传协议)
* [6 `PPP`](#6-ppp)
* [6.1 简介](#61-简介)
* [6.2 报文格式](#62-报文格式)
* [6.3 透明传输](#63-透明传输)
* [6.3.1 面向字节的链路](#631-面向字节的链路)
* [6.3.1 面向比特的链路](#631-面向比特的链路)
* [6.4 差错检测](#64-差错检测)
* [7 媒体接入控制](#7-媒体接入控制)
* [7.1 复用](#71-复用)
* [7.2 静态划分信道的四种复用技术](#72-静态划分信道的四种复用技术)
* [7.2.1 频分复用`FDM`](#721-频分复用fdm)
* [7.2.2 时分复用`TDM`](#722-时分复用tdm)
* [7.2.3 波分复用`WDM`](#723-波分复用wdm)
* [7.2.4 码分复用`CDM`](#724-码分复用cdm)
* [7.2.4.1 概念](#7241-概念)
* [7.2.4.2 码片挑选原则](#7242-码片挑选原则)
* [7.2.4.3 计算规则](#7243-计算规则)
* [7.3 动态接入控制](#73-动态接入控制)
* [7.3.1 `CSMA/CD`协议](#731-csmacd协议)
* [7.3.1.1 碰撞](#7311-碰撞)
* [7.3.1.2 一些概念](#7312-一些概念)
* [7.3.1.3 争用期(碰撞窗口)](#7313-争用期碰撞窗口)
* [7.3.1.4 最小帧长](#7314-最小帧长)
* [7.3.1.5 最大帧长](#7315-最大帧长)
* [7.3.1.6 退避算法](#7316-退避算法)
* [7.3.1.7 帧发送流程](#7317-帧发送流程)
* [7.3.1.8 帧接收流程](#7318-帧接收流程)
* [7.3.2 `CSMA/CA`协议](#732-csmaca协议)
* [7.3.2.1 `IFS`](#7321-ifs)
* [7.3.2.2 工作原理](#7322-工作原理)
* [7.3.2.3 退避算法](#7323-退避算法)
* [7.3.2.4 信道预约](#7324-信道预约)
* [7.3.2.5 虚拟载波监听](#7325-虚拟载波监听)
* [8 `MAC`地址](#8-mac地址)
* [8.1 简介](#81-简介)
* [8.2 格式](#82-格式)
* [8.3 发送顺序](#83-发送顺序)
* [9 `IP`地址(网络层)](#9-ip地址网络层)
* [10 `ARP`协议](#10-arp协议)
* [10.1 工作过程](#101-工作过程)
* [10.2 `ARP`高速缓存](#102-arp高速缓存)
* [11 集线器和交换机](#11-集线器和交换机)
* [11.1 集线器](#111-集线器)
* [11.2 交换机](#112-交换机)
* [11.3 区别](#113-区别)
* [12 交换机自学习过程](#12-交换机自学习过程)
* [13 `VLAN`](#13-vlan)
* [13.1 出现原因](#131-出现原因)
* [13.2 实现机制](#132-实现机制)
* [13.2.1 `IEEE 802.1Q`帧](#1321-ieee-8021q帧)
* [13.2.2 交换机的端口类型](#1322-交换机的端口类型)
* [13.2.2.1 `Access`端口](#13221-access端口)
* [13.2.2.2 `Trunk`端口](#13222-trunk端口)
* [13.2.2.3 `Hybrid`端口](#13223-hybrid端口)
# 1 概述
几个概念:
- 链路:一个结点到相邻结点的一段物理线路,中间没有其他任何交换结点
- 数据链路:把实现通信协议的硬件和软件加到链路上,就构成了数据链路
- 数据链路以帧为单位传输和处理数据
# 2 数据链路层的三个问题
- 封装成帧:数据链路层将上层(网络层)交付的协议数据单元加上帧头和帧尾的操作,目的就是以帧为单位传送数据,帧头和帧尾含有重要的控制信息,作用之一就是帧定界
- 差错检测:帧尾带有检错码,传输之前发送方会将检错码封装在帧尾中,以便接收方可以进行差错检测。一般采用`CRC`(循环冗余检验)的方法,余数为0表示没有差错,余数不为0表示出错
- 可靠传输:如果数据链路层提供不可靠服务,收到错误帧后直接丢弃,如果提供可靠服务,则会采取一些其他措施来保证可靠传输
# 3 透明传输
透明传输是指数据链路层堆上层交付的传输数据没有任何限制,因为在传输的时候,数据链路层需要加上帧头和帧尾,如果数据部分包含了帧尾,则会导致接收方不能正确识别,此时就需要进行一些特定的处理,处理之后,帧数据中就可以包含帧尾或帧头,这样就叫透明传输。
比如下面中的`flag`表示帧头和帧尾,如果数据中含有`flag`,就在前面填充一个转义字符`ESC`,如果含有转义字符`ESC`本身,则再次再前面添加一个`ESC`
![在这里插入图片描述](https://img-blog.csdnimg.cn/20210513135811203.png)
面向字节的物理链路使用字节填充(或叫字符填充的方式)来实现透明传输,而面向比特的物理链路中采用比特填充的方式(例如`HDLC`协议规定每五个连续的1后面必须插入一个0)。
# 4 最大传送单元
帧的数据部分,就叫最大传送单元,也叫`MTU`
# 5 可靠传输
## 5.1 概念
数据链路层向上提供的服务类型包括:
- 不可靠传输服务:仅仅丢弃有错误的帧,其他什么也不做
- 可靠传输服务:想办法实现发送端发送什么,接收端就收到什么
一般情况下,有线链路的误码率比较低,并不要求数据链路层提供可靠服务,出错一般由上层处理,而在无线链路中,误码率比较高,数据链路层必须向上层提供可靠传输服务。
下面会介绍可靠传输的三种机制:
- 停止等待协议`SW`
- 回退`N`帧协议`GBN`
- 选择重传协议`SR`
## 5.2 停止等待协议
### 5.2.1 概念
实际上与超时重传比较类似,具体可以参考下图:
![在这里插入图片描述](https://img-blog.csdnimg.cn/20210513151353817.png)
- 最左边的表示完全正常的情况,不需要进行任何的额外处理,收到正确的数据回复`ACK`,错误数据回复`NAK`
- 第二个是超时重传的情况,发送方在发送数据的时候数据超时未到达,发送方超时重传
- 第三个是接收方的确认分组超时,触发了发送方进行超时重传
- 第四个是接收方收到了重复的分组,接收方会进行丢弃,并且回送对该分组的确认分组
注意事项:
- 对于误码率较高的点对点链路,为了使对方尽早重传,可以给发送方发送`NAK`
- 数据分组编号的时候,只需要一个比特,因为只需要判断与上一个分组是否相同即可
- `ACK`分组编号的时候,所用的比特数量与数据分组编号所用的比特数量一样,另外数据链路层一般不会出现`ACK`分组迟到的情况,因此实现的时候可以不用给`ACK`分组编号
- 重传时间应选择略大于“从发送方到接收方的平均往返时间”
### 5.2.2 信道利用率
停止等待协议的信道利用率计算如下:
![在这里插入图片描述](https://img-blog.csdnimg.cn/20210513154437767.png)
其中`TA`可以忽略不计,而`TD`表示数据分组的发送时延,`RTT`表示往返时间,可以看到,当`RTT`远大于`TD`的时候(比如使用卫星链路),信道利用率非常低。
## 5.3 回退N帧协议
回退N帧协议的核心是发接双方都维护一个滑动窗口:
- 发送方滑动窗口叫`WT`,取值最低为2(如果为1则是停止等待协议),最高为`2^n-1`(n为编码的比特数量)
- 接收方的滑动窗口叫`WR`,取值只能为1
接收方收到分组后并确认后,会将滑动窗口向前移动1个单位,而每次发送方收到`ACK`确认后,向前移动`n`个单位(比如收到`ACK3`,表示前面的3个分组都已经接收,可以向前移动3个单位)。
而累积确认机制就是接收方每次收到并确认数据后,不需要每一个数据都返回一个`ACK`,而是可以返回一个`ACKn`,表示第`n`个数据包以及前面的`n-1`个数据包都已经被正确接收。使用累积确认的好处,就是即使接收方发送的确认分组丢失,发送方也不需要重传,另外还可以减小接收方的开销。
另外还需要注意的是发送窗口的尺寸最大为`2^n-1`,如果超过了,比如为`2^n`,则出现差错的时候,发送方会重传以前的数据,而接收方会认为这些是新数据并再次进行接收,这样就出现问题了。
![在这里插入图片描述](https://img-blog.csdnimg.cn/20210513160634638.png)
比如上图中的8个数据分组,接收方已经接收过了,但是因为窗口与数据分组对应,会认为是新的数据分组并进行接收,这样就会造成数据错乱、分组重复。
## 5.4 选择重传协议
选择重传协议与回退N帧协议一样采用了滑动窗口,但是克服了回退N帧协议的一个重要的不足:就是出现差错是只需要重传出现差错的那一个分组,而不是接收正确分组后跟随的的所有分组。
选择重传协议中的滑动窗口要求:
- 发送方滑动窗口`WT`取值`(1,2^(n-1)]`
- 接收方滑动窗口`WR`取值`(1,WT]`
发送方发送分组的时候,如果没有出现差错,被接收方依次接收,接收方的滑动窗口依次移动,并对每个分组回送`ACK`确认分组(注意这个不是累积确认),发送方收到后移动自己的滑动窗口。
而如果传输过程中出现误码,比如下图中:
![在这里插入图片描述](https://img-blog.csdnimg.cn/20210513165322997.png)
分组1、3、4收到了,但是分组2出现误码,此时返回1、3、4分组的`ACK`,然后等待发送方的窗口移动:
![在这里插入图片描述](https://img-blog.csdnimg.cn/20210513165422952.png)
发送方发送4、5分组,并标记分组3已经成功接收了,而等待4、5分组的`ACK`到达后,再标记4、5分组已经成功接收了,此时触发超时重传发送分组2:
![在这里插入图片描述](https://img-blog.csdnimg.cn/20210513165541492.png)
发送完成后,当接收方收到后会将自己的滑动窗口向前移动,而等到分组2的`ACK`到达后,发送方也会将滑动窗口前移:
![在这里插入图片描述](https://img-blog.csdnimg.cn/20210513165654568.png)
# 6 `PPP`
## 6.1 简介
点对点协议(`Point-to-Point Protocol`)是目前使用最广泛的点对点数据链路层协议。
`PPP`由以下三个部分组成:
- 对各种协议数据包的封装方法(封装成帧)
- 链路控制协议`LCP`,用于建立、配置以及测试数据链路层的连接
- 一套网络控制协议`NCPs`,其中的每一个协议支持不同的网络层协议
## 6.2 报文格式
![在这里插入图片描述](https://img-blog.csdnimg.cn/20210513170253817.png)
## 6.3 透明传输
如果帧数据部分出现了标志字段,则需要采用一些手段才能让帧正确被识别:
- 如果是面向字节的异步链路,采用字节填充法,插入转义字符
- 如果是面向比特的同步链路,采用补贴填充法,插入0
### 6.3.1 面向字节的链路
处理如下:
![在这里插入图片描述](https://img-blog.csdnimg.cn/20210513170742984.png)
发送方处理就是`7E->7D 5E``7D-> 7D 5D``ASCII->7D ASCII+0x20`,而接收方进行相应的反变换。
### 6.3.1 面向比特的链路
数据部分连续5个1插入1个0:
![在这里插入图片描述](https://img-blog.csdnimg.cn/20210513170927240.png)
## 6.4 差错检测
使用`CRC`实现,多项式如下:
![在这里插入图片描述](https://img-blog.csdnimg.cn/20210513171027228.png)
`RFC 1662`给出了查表法实现。若`CRC`检验正确,则收下该帧,若不正确则丢弃该帧。
# 7 媒体接入控制
共享信道主要考虑的一个问题就是如何协调多个发送和接收站点对一个共享传输媒体的占用,也就是媒体接入控制`MAC``Medium Access Control`)。
方式大体上可以分为两类:
- 静态划分信道:也就是预先固定分配好信道,方法非常不灵活,通常在无线网络的物理层使用,方法包括频分多址、时分多址、码分多址
- 动态接入控制:随机接入、受控接入(包括集中控制和分散控制)
## 7.1 复用
复用就是通过一条物理线路同时传输多路用户的信号。当网络传输媒体的传输容量大于多条单一信道传输的总通信量时,可利用复用技术在一条物理线路上建立多条通信信道来充分利用传输媒体带宽。
![在这里插入图片描述](https://img-blog.csdnimg.cn/20210514103324668.png)
## 7.2 静态划分信道的四种复用技术
### 7.2.1 频分复用`FDM`
- 将传输线路的频带资源划分成多个子频带,同时每个子信道之间留出隔离频带
- 多路信号输入一个多路复用器的时候,复用器将每一路信号调制到不同频率的载波上
- 接收端的分用器通过滤波将各路信号分开,将合成的复用信号恢复成原始的多路信号
![在这里插入图片描述](https://img-blog.csdnimg.cn/2021051410370698.png)
频分复用的特点是所有用户同时占用不同的频带资源进行通信。
### 7.2.2 时分复用`TDM`
时分复用技术将时间划分成了一段段等长的时分复用帧,每一个时分复用的用户在每一个时分复用帧占用固定序号的时隙,如图所示:
![在这里插入图片描述](https://img-blog.csdnimg.cn/20210514103904122.png)
时分复用的特点是所有用户在不同时间占用同样的频带宽度。
### 7.2.3 波分复用`WDM`
波分复用就是光的频分复用,如下图所示:
![在这里插入图片描述](https://img-blog.csdnimg.cn/20210514104043967.png)
因为光信号传输一段信号后会衰减,因此需要对衰减的光信号进行放大,因此多了一个叫掺铒光纤放大器的装置,用来放大衰减的光信号。
### 7.2.4 码分复用`CDM`
#### 7.2.4.1 概念
由于码分复用经常用于多址接入,因此更常用的名词是码分多址(`CDMA``Code Division Multiple Access`)。
码分复用每一个用户可以在同样的时间使用同样的频带进行通信,因为各用户使用经过挑选的不同码型,不会造成干扰。
`CDMA`中,每一个比特时间再划分成`m`个短的间隔,称为码片,通常`m`的值是`64``128`,使用`CDMA`的每一个站被指派一个唯一的`m`位的码片序列:
- 如果想要发送比特1,则发送`m`位码片序列
- 如果发送比特0,发送`m`为码片序列的反码
例子:
![在这里插入图片描述](https://img-blog.csdnimg.cn/20210514104902693.png)
#### 7.2.4.2 码片挑选原则
两个:
- 码片必须互不相同(这个容易理解)
- 码片必须相互正交(规格化内积为0)
规格化内积计算公式如下(`0``-1`表示,1用`+1`表示):
![在这里插入图片描述](https://img-blog.csdnimg.cn/2021051410525897.png)
#### 7.2.4.3 计算规则
如下图所示:
![在这里插入图片描述](https://img-blog.csdnimg.cn/20210514110405628.png)
只需要将收到的码片序列将发送方的码片序列进行规格化内积的计算,得出结果为1、-1、0:
- 结果1表示该发送方发送了数据,发送的数据是比特1
- 结果-1表示该发送方发送了数据,发送的数据是比特0
- 结果0表示该发送方没有发送数据
![在这里插入图片描述](https://img-blog.csdnimg.cn/20210514110537254.png)
## 7.3 动态接入控制
### 7.3.1 `CSMA/CD`协议
#### 7.3.1.1 碰撞
在早期的共享式以太网中,多个主机连接到同一总线上,各主机随机发送帧,当两个或多个主机同时发送帧的时候,就会发生碰撞:
![在这里插入图片描述](https://img-blog.csdnimg.cn/20210514110810804.png)
早期的共享式以太网使用载波监听/碰撞检测来解决该问题,也就是`CSMA/CD`协议。
#### 7.3.1.2 一些概念
- 多址接入:多个站连接在一条总线上,竞争使用总线
- 载波监听:每一个站发送帧之前检测一下总线上是否有其他站点发送帧,检测单位为96比特时间,若检测到有96比特时间空闲则发送帧,没有则继续等待直到有96比特时间空闲
- 碰撞检测:每一个正在发送帧的站边发送边检测,一旦总线上出现碰撞,立即停止发送,退避一段时间后再次发送
#### 7.3.1.3 争用期(碰撞窗口)
以太网的端往返传播时延称为争用期或碰撞窗口:
![在这里插入图片描述](https://img-blog.csdnimg.cn/20210514122523840.png)
以太网中发送帧的主机越多,端到端传播时延越大,发生碰撞概率越大,因此共享式以太网不能连接太多的主机,使用的总线也不能太长。
#### 7.3.1.4 最小帧长
因为在传输过程中可能会发生碰撞,如果发生了碰撞,那么接收端收到的帧长一定会小于正常帧,因此,以太网规定最小帧长为64字节,也就是512比特。
最小帧长确保了主机可以在帧发送完成之前就可以检测到该帧的发送过程是否遭遇到了碰撞(如果帧长过短,那么发送完成后可能一段时间后才会发生碰撞,但此时发送方认为自己已经发送完成,而不会重发碰撞了的帧)。
如果在争用期内检测到了碰撞,那么会立即停止发送,此时发送出去的数据一定小于64字节,小于64字节的都是由于碰撞而异常中止的无效帧。
![在这里插入图片描述](https://img-blog.csdnimg.cn/20210514123114955.png)
#### 7.3.1.5 最大帧长
帧过长的危害:
- 某个主机长期占用总线
- 可能导致接收主机的缓冲区溢出
因此也规定了最大帧长,换句话说规定了数据最大的大小为1500字节:
![在这里插入图片描述](https://img-blog.csdnimg.cn/20210514123606905.png)
也就是以太网的帧长为`64-1522字节`
#### 7.3.1.6 退避算法
退避时间由基本退避时间乘以一个随机数确定,具体计算方式如下:
![在这里插入图片描述](https://img-blog.csdnimg.cn/20210514123907441.png)
随着重传次数的增大,从概率上来说,退避时间也有可能会增大,但是重传16次还是失败的时候,表明打算发送帧的主机太多,此时会丢弃该帧并向高层报告。
#### 7.3.1.7 帧发送流程
![在这里插入图片描述](https://img-blog.csdnimg.cn/20210514125149289.png)
#### 7.3.1.8 帧接收流程
![在这里插入图片描述](https://img-blog.csdnimg.cn/20210514125340407.png)
### 7.3.2 `CSMA/CA`协议
无线局域网使用的协议就是`CSMA/CA`协议,也就是载波监听多址接入/碰撞避免。
#### 7.3.2.1 `IFS`
所有站点必须在持续检测信道空闲一段指定时间后才能发送帧,这段时间称为帧间间隔`IFS``IFS`的长短取决于该站点要发送的帧的类型:
- 高优先级帧先发送
- 低优先级帧需要等待较长时间
常用的两种帧间间隔如下:
- 短帧间间隔`SIFS`(28微秒),最短的帧间间隔,用来分隔开属于一次对话的各帧
- `DCF`帧间间隔`DIFS`(128微秒),在`DCF`方式中发送数据帧和管理帧
#### 7.3.2.2 工作原理
![在这里插入图片描述](https://img-blog.csdnimg.cn/2021051621255032.png)
过程如下:
- 源站检测到信道空闲的时候,等待一段`DIFS`时间
- 源站发送第一帧
- 目的站收到后,等待`SIFS`时间
- 目的站回送`ACK`
- 若源站没有收到`ACK`,会重传帧
关于两个等待时间:
- 源站检测到信道空闲后还需要等待`DIFS`是因为有可能有其他高优先级的帧需要发送
- 目的站收到后等待`SIFS`是为了让源站有足够时间从发送方式切换到接收方式
#### 7.3.2.3 退避算法
使用退避算法的情况:
- 发送数据帧之前检测到信道处于忙状态
- 每一次重传一个数据帧
- 每一次成功发送后要连续发送下一个帧
具体算法如下:
- 执行退避算法的时候,设置一个随机退避时间,当退避时间减少到0后,开始发送数据,为减小到0但是信道又变为忙状态,就冻结退避计时器的数值,重新等待信道变为空闲且经过`DIFS`后,继续启动退避计时器
-`i`次退避的时候,退避时间在时隙编号`{0,1,...2^(2+i)-1}`随机选择一个,然后乘以基本退避时间,就可以得到随机退避时间
图示:
![在这里插入图片描述](https://img-blog.csdnimg.cn/20210516213832178.png)
#### 7.3.2.4 信道预约
信道预约就是利用一个很小的数据帧对信道进行提前预约,这样发送数据的时候就不会出现碰撞,触发退避算法。具体如下:
- 源站发送数据帧之前发送一个短的控制帧,也叫请求发送`RTS`
- 目的站收到`RTS`帧后,且媒体空闲,就响应一个控制帧,称为允许发送`CTS`
- 源站收到`CTS`后,再等待`SIFS`,就可以发送数据帧
- 目的站收到数据帧后,等待`SIFS`回送确认帧`ACK`
图示:
![在这里插入图片描述](https://img-blog.csdnimg.cn/20210516214139756.png)
#### 7.3.2.5 虚拟载波监听
由于`RTS`/`CTS`/数据帧都能携带通信需要持续的时间,监听其中一个帧就能知道信道被占用的持续时间,这样就能减少隐蔽站带来的碰撞问题:
![在这里插入图片描述](https://img-blog.csdnimg.cn/20210516214318842.png)
# 8 `MAC`地址
## 8.1 简介
每个主机发送的帧中必须携带标识发送主机和接收主机的地址,这类地址是用于媒体接入控制(`MAC`)的,也叫`MAC`地址。
`MAC`地址一般被固化在网卡的`EEPROM`中,也叫硬件地址或物理地址,是对网络上各接口的一个唯一标识。
## 8.2 格式
`IEEE 802`局域网中规定`MAC`地址格式为48个比特构成,也就是6个字节,其中:
- 前三个字节由组织唯一标识符`OUI`分配
- 后三个字节为厂商自行分配
可以分为四类:
- 全球管理的单播地址(`00`开头)
- 全球管理的多播地址(`01`开头)
- 本地管理的单播地址(`10`开头)
- 本地管理的多播地址(`11`开头)
## 8.3 发送顺序
发送顺序如下:
- 字节发送顺序:第一字节到第六字节
- 比特发送顺序:`b0``b7`
![在这里插入图片描述](https://img-blog.csdnimg.cn/20210517001114201.png)
# 9 `IP`地址(网络层)
`IP`地址可以标识两部分信息:
- 网络编号
- 主机编号
但是`MAC`地址不具备区分不同网络的功能:
- 如果只是需要一个单独的网络,不接入因特网,可以只使用`MAC`地址
- 如果需要接入因特网,需要使用这两个地址
![在这里插入图片描述](https://img-blog.csdnimg.cn/20210517002003351.png)
在数据包传输过程中,源`IP`地址和目的`IP`保持不变,而源`MAC`地址和目的`MAC`地址随逐个链路(或逐个网络)改变:
![在这里插入图片描述](https://img-blog.csdnimg.cn/2021051700441798.png)
# 10 `ARP`协议
`ARP`协议能够通过`IP`地址找到对应设备的`MAC`地址。
## 10.1 工作过程
这里以主机A获取主机B的`MAC`地址为例,主机A的`IP`地址用`IP-A`表示,`MAC`地址用`MAC-A`表示,主机B同理,流程如下:
- 前提:主机A知道了主机B的`IP`,也就是`IP-B`
- 主机A发送一个广播的`ARP`广播报文,内容包括`IP-A``MAC-A``IP-B``ffff...ffff`(因为是广播报文)
- 主机B收到后,交付上层(网络层)处理,判断报文中的`IP-B`,因为是自己的`IP`地址,此时先将主机A的`IP-A``MAC-A`记录到自己的`ARP`高速缓存中
- 其他主机收到`ARP`广播报文后交付上层处理,发现不是自己的`IP`地址,会直接忽略
- 主机B将`IP-A``MAC-A`记录到自己的`ARP`高速缓存后,回送单播的`ARP`响应报文,内容包括`IP-B``MAC-B`
- 主机A收到`ARP`响应报文后,记录`IP-B``MAC-B``ARP`高速缓存中
- 其他主机收到`ARP`响应报文后,因为`MAC`地址不是自己,因此会直接丢弃
## 10.2 `ARP`高速缓存
实际上是一个表,内容包括三列:
- `IP`地址
- `MAC`地址
- 类型
![在这里插入图片描述](https://img-blog.csdnimg.cn/20210517010613307.png)
其中:
- 动态类型表示是自动获取的,默认生命周期五分钟
- 静态类型表示是人为添加的,过期时间不确定
# 11 集线器和交换机
## 11.1 集线器
集线器中的各个接口与主机中的网卡通过`RJ-45`接口去连接,也就是俗称的水晶头,它们之间通过双绞线连接,图示如下:
![在这里插入图片描述](https://img-blog.csdnimg.cn/20210517113507935.png)
特点:
- 使用集线器的以太网在逻辑上仍是一个总线网,使用`CSMA/CD`协议
- 集线器工作在物理层
- 集线器一般都有少量的容错能力和网络管理功能
但是使用集线器扩展以太网的话,虽然扩大了广播域,但是也扩大了冲突域:
![在这里插入图片描述](https://img-blog.csdnimg.cn/20210517113808207.png)
## 11.2 交换机
相比起集线器,最大的一个区别是发送单播帧的时候不会触发广播操作,图示如下:
![在这里插入图片描述](https://img-blog.csdnimg.cn/20210517113932987.png)
交换机的特点:
- 全双工工作方式(集线器只是半双工,因为会有碰撞)
- 具有并行性,能同时连通多对接口(且可以速率不同的接口组合),无碰撞
- 工作在数据链路层(也包括物理层),收到帧后,在帧交换表中查找帧的目的`MAC`地址所对应的接口号
- 是一种即插即用设备,内部的帧交换表是通过自学习算法建立起来的
帧交换表示例如下:
![在这里插入图片描述](https://img-blog.csdnimg.cn/20210517114652568.png)
帧有两种转发方式:
- 存储转发
- 直通交换
## 11.3 区别
使用集线器扩展以太网的话,在扩展广播域的同时也扩展了冲突域,而用交换机扩展以太网的话,扩展广播域的同时不会扩展冲突域:
![在这里插入图片描述](https://img-blog.csdnimg.cn/20210517115053624.png)
![在这里插入图片描述](https://img-blog.csdnimg.cn/20210517115135264.png)
集线器特点:
- 早期以太网互连设备
- 工作在`OSI`体系结构的物理层
- 对接收到的信号进行放大、转发
- 使用集线器作为互连设备的以太网仍然属于共享总线式以太网
交换机特点:
- 以太网使用最广泛的互连设备
- 工作在`OSI`体系结构的数据链路层(也包括物理层)
- 根据`MAC`地址对帧进行转发
- 使用交换机作为互连设备的以太网,称为交换式以太网,交换机可以根据`MAC`地址过滤帧,即隔离碰撞域
- 交换机每个接口是一个独立碰撞域
- 交换机隔离碰撞域但不隔离广播域(`VLAN`除外)
# 12 交换机自学习过程
当从一个接口收到某个帧时:
- 首先判断帧交换表是否有该帧的源`MAC`地址与接口的映射,没有的话就添加
- 如果帧交换表有该帧的目的`MAC`接口的映射,则发送到该接口
- 如果没有,会进行泛洪,也就是广播操作,会将该帧发送到所有的接口上
- 帧交换表中的每条记录都会有过期时间,过期自动删除
如果源接口与目的接口相同,则交换机会丢弃该帧,比如下图中的A向G发送帧(A和G之间通过集线器和交换机相连):
![在这里插入图片描述](https://img-blog.csdnimg.cn/20210517124616923.png)
# 13 `VLAN`
## 13.1 出现原因
`VLAN`出现的原因是交换机连接的网络,在一个主机发送广播的时候会出现广播风暴的问题,如下所示:
![在这里插入图片描述](https://img-blog.csdnimg.cn/20210517125635153.png)
因此,`VLAN`就出现了,`VLAN`是一种将局域网内的设备划分成与物理位置无关的逻辑组技术,这些逻辑组具有某些共同的需求:
![在这里插入图片描述](https://img-blog.csdnimg.cn/20210517125740163.png)
`VLAN1``VLAN2`就是两个不同的`VLAN``VLAN1`中的主机可以在`VLAN1`中广播通信,而不会广播到`VLAN2`,也就是不同`VLAN`之间不能广播通信。
## 13.2 实现机制
`VLAN`是在交换机上实现的,需要交换机支持两个功能:
- 支持识别`VLAN`帧,也就是`IEEE 802.1Q`
- 交换机的各端口可以支持不同的端口类型
### 13.2.1 `IEEE 802.1Q`帧
对以太网`MAC`帧进行了扩展,插入了4个字节的`VLAN`标记:
![在这里插入图片描述](https://img-blog.csdnimg.cn/2021051713014218.png)
`VLAN`标记的最后12比特称为`VLAN`标识符`VID`,标志了以太网属于哪一个`VLAN`,表示`VID`的有效范围是`1-4094`
`802.1Q`帧是由交换机来处理的:
- 收到普通的以太网帧的时候,会将其插入4字节的`VLAN`标记,转变为`802.1Q`帧,简称打标签
- 转发`802.1Q`帧的时候,可能会删除4个字节的`VLAN`标记转变为普通的以太网帧,简称为去标签
### 13.2.2 交换机的端口类型
交换机各个端口都带有一个缺省的`VLAN ID`,在华为交换机上叫`PVID`,而端口的类型包括:
- `Access`端口
- `Trunk`端口
- `Hybrid`端口(华为交换机独有)
#### 13.2.2.1 `Access`端口
`Access`端口一般用于连接用户计算机,只能属于一个`VLAN`,端口的`PVID`值与端口所属的`VLAN``ID`相同。
`Access`端口处理帧的过程:
- 接收:一般只会接收没有打标签的普通`MAC`帧,收到帧后打上`VID`的标签,值与端口的`PVID`一致
- 发送:若帧中的`VID`与端口的`PVID`相等,则去标签并转发,若不相等则不转发
示例如下:
![在这里插入图片描述](https://img-blog.csdnimg.cn/20210517131314543.png)
- A、B属于`VLAN2`,C、D属于`VLAN3`,C想要发送广播帧
- 端口3收到广播帧后,给广播帧打上自己端口`PVID`的标签,也就是给广播帧加上`VID=3`的标签
- 打标签后,会判断端口的`PVID`与广播帧中的`VID`
- 如果相等,比如广播帧中的`VID`与端口4的`PVID`相等,则会将标签去掉并转发到主机D
- 如果不相等,比如广播帧中的`VID`与端口1、2的`PVID`不相等,则端口1、2不会转发
#### 13.2.2.2 `Trunk`端口
`Trunk`一般用于交换机或交换机与路由器之间的连接,可以属于多个`VLAN`,用户可以手动配置`Trunk``PVID`值。
帧处理过程:
- 发送帧:若`VID``PVID`相等,去标签转发,若不相等,直接转发
- 接收帧:若帧为已打标签,直接接收,若未打标签,则打标签
如下图所示:
![在这里插入图片描述](https://img-blog.csdnimg.cn/20210517132301989.png)
以C发送广播帧为例:
- 首先经过`Access`类型的端口3,打上了`VID=2`的标签
- 端口4的`PVID`与广播帧的`VID`相等,从端口4转发到主机D
- 端口1、2的`PVID`与广播帧的`VID`不等,不转发
- 端口5,也就是`Trunk`端口,判断`PVID`的值与广播帧的`VID`不相等,直接转发到交换机2的端口5
- 由于已打标签的帧会直接接收,因此交换机2从端口5进行广播
- 交换机2的端口3、端口4中的`PVID`与广播帧中的`VID`相同,从这两个端口转发,分别送达主机G、H
- 交换机2的端口1、2中的`PVID`与广播帧中的`VID`不同,不转发
注意,若`Trunk`端口的`PVID`的值与广播帧中的`VID`一致,则先去标签,然后再打标签并转发到其他交换机/路由器。
#### 13.2.2.3 `Hybrid`端口
`Hybrid`端口与`Trunk`端口基本类似,但是还加上了`Access`端口的功能,还有就是加上了一个标签列表。标签列表中包含了若干个`VID`的值,表示能够接收来自这些`VID`的帧,例子如下:
![在这里插入图片描述](https://img-blog.csdnimg.cn/20210517133554499.png)
比如要求A和C、B和C之间能通信,但是A、B不能通信,当B向C发送数据帧的时候:
- 经过`Hybrid`端口,打上了`VID=20`的标签
- 交换机转发到端口3,且发现`VID=20`在C的去标签列表中
- 因此端口3去掉标签`VID=20`,并转发给主机C
但是如果A向B发送数据帧:
![在这里插入图片描述](https://img-blog.csdnimg.cn/20210517133543742.png)
- 经过`Hybrid`端口1,打上了`VID=10`的标签
- 交换机转发到端口2
- 端口2发现帧的`VID`不在去标签列表中,不对该帧进行去标签处理
- 直接转发该帧到主机B,因为主机只能识别普通的以太网帧,不能识别`802.1Q`帧,也就是打上了`VLAN`标记的以太网帧
- 不能被识别`802.1Q`帧被主机B丢弃
......@@ -2,3 +2,4 @@
- [第一章:计算机网络概述](https://github.com/2293736867/CSBookNotes/blob/main/ComputerNetwork/Chapter1/README.md)
- [第二章:物理层](https://github.com/2293736867/CSBookNotes/blob/main/ComputerNetwork/Chapter2/README.md)
- [第三章:数据链路层](https://github.com/2293736867/CSBookNotes/blob/main/ComputerNetwork/Chapter3/README.md)
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册