链路层

Wednesday, November 16, 2022
本文共9638字
20分钟阅读时长

⚠️本文是作者P3troL1er原创,首发于https://peterliuzhi.top/principle/%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%BD%91%E7%BB%9C/%E9%93%BE%E8%B7%AF%E5%B1%82/。商业转载请联系作者获得授权,非商业转载请注明出处!

To follow, without halt, one aim: There is the secret of success. — Anna Pavlova

计算机网络中的任何设备都需要实现链路层

图 10

两类信道

有两类不同的链路

  • 点对点信道:专供两台设备,现今少用
  • 广播信道:几对设备共享,现今多用

两个子层

  • 数据链路控制(DLC):处理点对点信道和广播信道共有的问题,功能包括成帧、流量控制、差错控制(差错检测和差错纠正)
  • 介质访问控制(MAC):只处理广播信道的问题

图 5

基本概念

图 11

  • 链路(link):从一个结点到相邻结点的一段物理线路(有线或无线)
  • 数据链路(data link):当需要在一条线路上传送数据时,除了必须有一条物理线路外,还必须有一些必要的通信协议来控制这些数据的传输,把实现这些协议的硬件和软件加到链路上,就构成了数据链路

通常,链路层实现为适配器(NIC、网卡)或者在芯片上实现

图 3

数据链路控制(DLC)

流量控制和差错控制

  • 流量控制在接收确认前调整能够被发送的数据数量
  • 差错控制包括差错检测和差错纠正
    • 在数据链路层中,差错控制是节点到节点的,只要有一个差错,就要求重传

三个基本问题

三个基本问题是封装成帧、透明传输和差错检测

封装成帧

  • 封装成帧(framing)就是在一段数据的前后分别添加首部和尾部,这样就构成了一个帧。
  • 首部和尾部的一个重要作用就是进行帧定界(即确定帧的界限)
  • 在发送帧时,是从帧首部开始发送的
  • 显然,为了提高帧的传输效率,应当使帧的数据部分长度尽可能地大于首部和尾部的长度。但是,每一种链路层协议都规定了所能传送的帧的数据部分长度上限—最大传送单元 MTU (Maximum Transfer Unit)

如果直接将整个数据打包成一个帧,那么流量控制和差错控制将非常低效。如果这个数据中有一点错误,那么就可能要求整个数据重传。 因此,要把一个报文拆成多个小的帧,这样错误只能影响比较小的一个部分

图 1

面向字符成帧

当数据是由可打印的 ASCII 码组成的文本文件时,帧定界可以使用特殊的帧定界符:

  • 控制字符 SOH (Start Of Header) 放在一帧的最前面,表示帧的首部开始。
  • 另一个控制字符 EOT (End Of Transmission) 表示帧的结束。

这样,用两个标记我们区分了不同的帧

图 6

头部携带源地址和目的地址等控制信息;尾部携带差错检测冗余位

当发送出差错时

假定发送端在尚未发送完一个帧时突然出故障,中断了发送。但随后很快又恢复正常,于是重新从头开始发送刚才未发 送完的帧。

  1. 由于使用了帧定界符,接收端就知道前面收到的数据是个不完整的帧(只有首部开始符 SOH 而没有传输结束符 EOT),必须丢弃
  2. 而后面收到的数据有明确的帧定界符(SOH 和 EOT),因此这是一个完整的帧,应当收下
面向位成帧

在发送非文本信息(图片、音频等)时,数据中可能会出现和 SOH\EOT 相同的字节,我们常常使用面向位成帧

SOH\EOT → 0 111 111 0:

这种方法也可能会产生和上面一样的问题,数据中也可能出现和标记相同的字节,这时候我们使用位填充

当发送方连续读取到一个 0 和五个 1 时(011111),就在后面插入一个 0。虽然有时候数据并构不成标记,但这种方法避免了传输数据中出现标记。

图 7

透明传输

由于帧的开始和结束的标记使用专门指明的控制字符,因此,所传输的数据中的任何 8 比特的组合一定不允许和用作帧定界的控制字符的比特编码一样,否则就会出现帧定界的错误。

图 3

  • “透明"意味着:某一个实际存在的事物看起来却好像不存在一样
  • “在数据链路层透明传送数据”表示:无论什么样的比特组合的数据,都能够按照原样没有差错地通过这个数据链路层(数据链路层对这些数据来说是透明的)

因此,必须设法使数据中可能出现的控制字符“SOH”和“EOT”在接收端不被解释为控制字符:

字节填充(byte stuffing)/字符填充(character stuffing):

  • 发送端的数据链路层在数据中出现控制字符“SOH”或“EOT”的前面插入一个转义字符“ESC”
  • 在接收端的数据链路层在把数据送往网络层之前删除这个插入的转义字符
  • 如果转义字符也出现在数据当中,那么解决方法仍然是在转义字符的前面插入一个转义字符(当接收端收到连续的两个转义字符时,就删除其中前面的一个

图 4

差错检测

1 可能会变成 0,而 0 也可能变成 1。这就叫做比特差错

在信噪越小的情况下,误码率 BER (Bit Error Rate)越高

相较于有线信道,无线网络会遇到像多个 WiFi 干扰等的情况,误码率比较高

在链路层中,广泛使用循环冗余检验(CRC,Cyclic Redundancy Check)的检错技术

CRC 检错技术

CRC 运算就是在数据 M 的后面添加供差错检测用的 n 位冗余码,然后构成一个帧发送出去,一共发送$(k + n)$位,这种为了进行检错而添加的冗余码常称为帧检验序列 FCS (Frame Check Sequence)

计算方法

CRC 是基于模二运算的

模二加法和模二减法相当于异或运算,他们是一回事 图 14
图 15
模二乘法相当于且运算 图 12
模二除法相当于模二乘法的逆运算 图 13
乘法和除法相当于多个加法和多个减法

图 19

在发送端: 用二进制的模 2 运算进行$2^n$ 乘 M 的运算,这相当于在 M 后面添加 n 个 0。得到的$(k + n)$ 位的数除以收发双方事先商定的长度为 $(n + 1)$位的除数 P,得出商是 Q 而余数是 R(n 位,比 P 少一位),余数 R 就作为余码拼接在数据 M 的后面发送出去

图 16

在接收端: 把收到的每一个帧都除以同样的除数 P(模 2 运算),然后检查得到的余数 R,如果在传输过程中无差错,那么经过 CRC 检验后得出的余数 R 肯定是 0,就接收;若余数 R ≠ 0(正确的概率很小很小),则判定这个帧有差错(但无法确定究竟是哪一位或哪几位出现了差错),就丢弃

图 17

因为加法和减法是一回事,所以$2^nM=QP+R=QP+CRC$,但是发送的是$2^nM+CRC=QP+CRC+CRC=QP+CRC-CRC=QP$,所以如果没有错,那余数必为 0

在数据链路层若仅仅使用循环冗余检验 CRC 差错检测技术,则只能做到对帧的无差错接受,即:“凡是接收端数据链路层接受的帧,我们都能以非常接近于 1 的概率认为这些帧在传输过程中没有产生差错”。 接收端丢弃的帧虽然曾收到了,但最终还是因为有差错被丢弃,即没有被接受。以上所述的可以近似地表述为(通常都是这样认为):“凡是接收端数据链路层接受的帧均无差错”

注意事项:

  • 选择除数,可以随机选择,也可以按照既定标准选择(按照国际通行标准选择,最高位和最低为必须为 1)。除数往往也用多项式表示,所以 CRC 又称多项式编码方法,这个多项式也称为生成多项式 图 20
  • 余数的位数一定是比除数位数小一位,即使前面全是 0,也不要省略
  • 帧检验序列 FCS – Frame Check Sequence。这里的冗余码就称为 FCS,由其他的校验方法,也能得到对应的 FCS
  • 并不能做到可靠传输 ,必须加上确认和重传机制(其他层协议负责)

介质访问控制(MAC)–专用于广播信道

多路访问

广播信道中,往往只有 1 条共享的广播信道 (single shared broadcast channel),却有两个或多个节点,可能发生同时的数据传输

这会导致干涉的发生(或“碰撞 collision”):如果一个 node 同时需要发送两个信号,或者多个 node 需要同时发送多个信号。

如何使众多用户能够合理而方便地共享通信媒体资源,这在技术上有两种方法:

  1. 静态划分信道:频分复用时分复用、波分复用和码分复用等,不适合局域网
  2. 动态媒体接入控制,又称为多点接入(multiple access),包括随机接入受控接入

图 2

  • 分布式算法 – 每个节点上分别决定是否应该发送信号
  • “how nodes share channel”“何时可以发送信号”
  • 注意,所有的协议通信用到的也是该广播信道自身!即,没有额外的信道用于协调这些节点。

共有三种信道复用的协议:

信道划分 (channel partitioning)

  • 将信道分为小块(例如分成 time slots、根据频率划分、采用不同的编码调制信号等)
  • 每一小块被一个节点独享
TDMA

TDMA:time division multiple access 时分复用

节点分轮(in “rounds”)使用信道:每个节点在每一轮都会获得定长的 slot(通常 slot 的长度等于传输 packet 的时间)分配但未用的 slot 则保持闲置

例:6 个节点,节点 1、3、4 发送数据,而节点 2、5、6 不发送数据 图 21

FDMA

FDMA:frequency division multiple access 频分复用

信道的频谱划分为不同的频段,每个节点分配使用固定的频段发送数据,对于不发送数据的节点,对应的频段即为闲置状态

图 22

CDMA

CDMA:code division multiple access 码分复用

将需要发送的信号通过不同的编码进行调制,然后复用广播信道

随机接入 (random access)

不划分信道,允许碰撞:

  • 如果恰巧有两个或更多的用户在同一时刻发送信息,那么在共享媒体上就要产生碰撞,使得这些用户的发送都失败

问题在于:

  • 尝试从“碰撞”中“恢复”
  • 如何避免碰撞发生和碰撞发生怎么办
ALOHA 协议——最早的随机访问方法
纯 ALOHA

只要有站点需要发送帧,它就发送帧

图 5

纯 ALOHA 依赖于接收方的确认,如果接收方确实收到了帧,它就会向发送方发送确认,只有当发送方收到该确认通知后,发送方才判定该帧成功发送,否则就要重发

但是,如果多个同时发送失败的站点同时重发,那么还是很可能发送失败。所以,为了避免再一次堵车,纯 ALOHA 指定站点重发之前随机等待一段时间(补偿时间 $T_{B}$ ),相当于错峰开车

同时,如果站点多次失败,站点就暂时躺平不发送了,等到以后再发送该帧,相当于摆烂

图 6

我们程脆弱时间为可能碰撞的时间长度,则纯 ALOHA 虽弱时间为 2T

图 1

slotted ALOHA
  • 时间轴划分为等长的时隙(slots),通常是传输一帧的时间,而且节点均只在时隙开始的时候传输
  • 节点的行为是同步的
  • 如果超过两个节点在一个时隙同时传输,则所有节点能侦测到碰撞

所以时隙 ALOHA 是对纯 Aloha 的一种改进,其基本思想是把时间分成若干个相同的时间片,所有用户在时间片开始时刻同步接入网络信道,若发生冲突,则必须等到下一个时间片开始时刻再发送,这样就只有完全碰撞没有部分碰撞,脆弱时间从 2T 减少到 T

图 2

步骤:

图 4

  • 当节点进入阅读器的识别范围后,节点自身携带的随机数发生器产生一随机数,节点按此随机数选择时隙,若查询时的时隙数与节点选择的时隙相匹配时节点即响应,并立即发送自身的数据信息
  • 若时隙内有碰撞时,阅读器将终止节点继续发送信息并令节点等待下一次查询,该节点在以后的每一个时隙均以概率 𝑝 进行重传,直至传输成功

图 3

(C-collide,E-empty,S-success)

优点:

  • 每个时隙中,都有一个节点可以一直以全速进行传输
  • 高度分布式算法:只需把所有节点的时隙进行同步即可,其余全部是通过节点自行探测解决(不像纯 ALOHA 要收到一个确认,然后进行决策)
  • 算法十分简单

缺点:

  • 碰撞浪费了很多时隙,也会有很多时隙是闲置的
  • 需要一个时隙去侦测碰撞的发生。但事实上节点可能只需要更少的时间就可以侦测碰撞
  • 需要时钟同步(不然时隙的划分就没有用了)
  • 效率不高 图 5
载波侦听多点接入/碰撞检测(CSMA/CD)
基本策略

CSMA/CD 仅用于有线网络,不用于无线网络;无线网络使用 CSMA/CA

发送数据前先监听广播信道,如果信道空闲,则发送整个帧;如果信道正忙,则延迟发送

“碰撞检测”就是计算机边发送数据边检测信道上的信号电压大小,就是这个 CSMA 的侦听方式(节点同时在总线上发送数据时,总线上的信号电压摆动值将会增大(互相叠加))

然后我们可以设置一个门限值,当电压超过门限值的时候,我们就判断它发生了碰撞

因为有线网络中信号相对于噪声更明显,所以这种侦听方式比较有效;但在无线网络中太多噪声了,这种方式就不管用了

一旦发现总线上出现了碰撞,总线上传输的信号就产生了严重的失真,无法从中恢复出有用的信息,就要立即停止发送,然后等待一段随机时间后再次发送

碰撞检测
  • 最先发送数据帧的站,在发送数据帧后至多经过时间 2𝜏(两倍的端到端往返时延)就可知道发送的数据帧是否遭受了碰撞。
    • 以太网的 端到端往返时延 2𝜏 称为争用期(contention period) ,又称为碰撞窗口(collision window)。
  • 只有经过争用期这段时间还没有检测到碰撞,才能肯定这次发送不会发生碰撞。

图 6

由上图易知:一个站不可能同时进行发送和接收(但必须边发送边监听信道),当 B 已经收到 A 发送的数据,就准备一直接收,也就是说,只有在争用期内,B 没有发送数据,B 才能顺利开始接收,A 才算通过了考验

重传机制

截断二进制指数退避(truncated binary exponential backoff):

让发生碰撞的站在停止发送数据后,等待信道变为空闲后推迟(这叫做退避)一个随机的时间

$k = Min[重传次数, 10]$ $[0,1,…, 2^{k −1}]$中随机取一个数乘以争用期$τ$就是需要等待的时间

当重传达 16 次仍不能成功时,则丢弃该帧,并向高层报告。

使用上述退避算法可使重传需要推迟的平均时间随重传次数而增大(这也称为动态退避),因而减小发生碰撞的概率,有利于整个系统的稳定

脆弱时间

图 21

优缺点

优点:

  • 简单
  • 便宜
  • 完全去中心化

缺点:

  • 使用 CSMA/CD 协议的以太网不能进行全双工通信而只能进行双向交替通信(半双工通信)。
  • 每个站在发送数据之后的一小段时间内,存在着遭遇碰撞的可能性(争用期)

受控接入(taking turns)

  • 用户不能随机地发送信息而必须服从一定的控制
  • 节点轮流发送信息

典型代表有:

  • 分散控制的令牌环局域网
  • 集中控制的多点线路探询(polling),或称为轮询
Taking turns 轮流接入

让受控的节点轮流发送就不会碰撞了

轮询 polling

图 7

主节点管理次节点,决定他们什么时候轮流发送数据(主节点需要具备一定智能,而次节点不需要),这种方法称为轮询

图 8

存在轮询的开销、延迟、单点故障(即 master 节点)的问题

令牌传递 token passing

图 9

受控的令牌从一个节点依次序传递到下一个节点,有令牌的节点即可发送帧(击鼓传花,传到花的就唱歌)

节点之间不必物理地连成环,只要逻辑上每个节点都有前驱和后继即可

图 10

存在传递令牌的开销、延迟,单点故障(令牌本身)的问题

链路层寻址

链路层地址:又称为链路地址、物理层地址、MAC 地址

MAC 地址用于将一个帧传输到另一个接口 used ‘locally” to get frame from one interface to another physically-connected interface (same network, in IP-addressing sense)

图 12

48 位的 MAC 地址 EUI-48

  • IEEE 的注册管理机构 RA 负责向厂家分配地址字段 6 个字节中的前三个字节 (即高位 24 位),称为组织唯一标识符。
  • 地址字段 6 个字节中的后三个字节 (即低位 24 位) 由厂家自行指派,称为扩展唯一标识符,必须保证生产出的适配器没有重复地址。

因此就保证了全世界每个适配器、每个接口/端口,有唯一的 MAC 地址($2^{24}$个不同的地址),用这种方式得到的 48 位地址称为 EUI-48,这里 EUI 表示扩展的唯一标识符(Extended Unique Identifier)

同时,MAC 地址不是等级化的(与上级其他设备无关),保证了可移植性(可以把网卡从这个局域网移动到另一个局域网使用)

图 13

MAC 地址有什么用

适配器从网络上每收到一个 MAC 帧就首先用硬件检查 MAC 帧中的 MAC 地址

  • 如果是发往本站的帧则收下,然后再进行其他的处理。
  • 否则就将此帧丢弃,不再进行其他的处理。

这里“发往本站的帧”包括:

  1. 单播(unicast)帧(一对一):即收到的帧的 MAC 地址与本站的硬件地址相同
  2. 广播(broadcast)帧(一对全体):即发送给本局域网上所有站点的帧(全 1 地址)。
  3. 多播(multicast)帧(一对多):即发送给本局域网上一部分站点的帧。

混杂方式(promiscuous mode)

嗅探器(Sniffer)就使用了设置为混杂方式的网络适配器

适配器只要“听到”有帧在以太网上传输就都悄悄地接收下来,而不管这些帧是发往哪个站(抓包)

ARP 协议 – Address Resolution Protocol

MAC 帧的格式

图 14

类型意为收到该帧之后,应传送给网络层的何种协议(大部分为 IP 协议)

ARP 表-转 IP 为 MAC

在实际工作时,不可能总是和与我们实际相邻的物理设备通信,我们往往会和离我们很远的主机通信,这样我们无法知道那个主机接口的 MAC 地址。这时候我们需要利用网络层的 IP 地址转为 MAC 地址 IP 地址是在全球范围内标识一台主机的地址

图 15

局域网中的每个节点(主机、路由器等)都有一张 ARP 表,存储了局域网中某些节点的 IP 地址/MAC 地址的映射关系<IP address; MAC address; TTL(多久删除)>

只有找到接口的 MAC 地址,我们才能在物理相邻的网络中与其通信

图 16

在局域网中学习 ARP 表

图 18

由此可见,ARP 协议是“即插即用”的:节点创建自己的 ARP 表格,并不需要网络管理员的人工干涉

不在局域网中学习 ARP 表

过程基本相同,但需要分开先从边缘路由器跳转,获得各自的 MAC 地址

-> 具体过程,需要先学习 IP 协议,此处不展开

局域网–典型广播信道

因为局域网中的以太网过于优秀而被广泛使用,现在以太网几乎成为了局域网的同义词

局域网最主要的特点是:网络为一个单位所拥有,且地理范围和站点数目均有限,每一台主机都是物理相邻的

图 1

以太网

以太网,是现在的事实上的主流有线局域网技术

  • 单一芯片,可以实现多种带宽(自适应带宽)
  • 第一个广泛采用的局域网技术
  • 简单、便宜、速度快

以太网的物理拓扑(physical topology)

  • 总线拓扑(直至 90 年代中期)
    • 所有节点处于同一碰撞域(可能互相发生碰撞)
  • 星形拓扑(现今)
    • 采用交换机(switch)
    • 每个“辐条”运行各自的以太网协议,各自组成碰撞域

星形环状拓扑结构有一个集线器充当连接线,站点通过两条电线连接集线器,这种结构即使一条链路失效了其他节点也能正常运行,因此不宜故障

图 11

星形拓扑也可用于受控接入

以太网的帧的结构

图 20

preamble 前同步码是不算以太网的帧的首部的,以太网的帧首部包括源地址、目的地址、类型,尾部为冗余码

同见MAC 帧的结构

一个以太网帧的长度一定要大于争用期,因传统规定,至少要大于 64 字节

当数据字段的长度小于 46 字节时,应在数据字段的后面加入整数字节的填充字段,以保证以太网的 MAC 帧长不小于 64 字节。 传统的$10M/s$以太网,争用期为$51.2μs$,最短帧长为 64bit;而对于$100M/s$的以太网(快速以太网),争用期为$5.12μs$,最短帧长仍为 64bit。争用期变化而最短帧长不变

无效的帧

  • 帧长度不是整数字节
  • CRC 校验失败
  • 数据字段的长度不在 46~1500 字节之间(MAC 帧长度不在 64~1518 字节之间)

对于检查出的无效 MAC 帧就简单地丢弃,以太网不负责重传丢弃的帧

以太网的特征(链路层的特征)

  • 无连接:发送的 NIC 和接收的 NIC 并不需要用握手来建立连接
  • 不可靠:接受方不需要发送确认
    • 如果发错了就要靠上层协议修补;上层如果不管下层也不管,没发到就没发到

以太网的信道利用率

在争用期内,各站点发送的帧可能碰撞,那它们碰撞之前花的时间就白费了,这样信道占用率就达不到 100%

一个站在发送帧时出现了碰撞。经过一个争用期 2t 后(t 是以太网单程端到端传播时延),可能又出现了碰撞。这样经过若干个争用期后,一个站发送成功了。假定发送帧需要的时间是 $T_{0}$,总占用信道时间为$T_{0}+τ$ (最后一个比特发出去后还要在信道上跑$τ$的时间)

图 1

因此,要提高以太网的信道利用率,就必须减小$τ$与$T_{0}$之比 ,我们可以将 这个比定义为 $a = \frac{τ}{T_{0}}$ ,这样就可以知道,a 越小越好

为了使得 a 更小,$τ$应尽可能小,而$T_{0}$应该大一点,这就是说,当数据率一定时,以太网的连线的长度受到限制,同时以太网的帧长不能太短

假设碰撞不会发生,那么信道利用率的极限就应该是$S_{max}=\frac{T_{0}}{T_{0}+τ}=\frac{1}{1+a}$,因此 a 应远小于 1

交换机

同见导论中的《交换机是什么》

最初人们使用的是网桥(bridge),后来用交换机(switch)取代了网桥

为了在链路层扩展以太网,把不同网络连接在一起,我们就需要一个【链路层的专有设备】——交换机,通常也称为“第二层交换机”(L2 switch) 有一种非主流的结构,在第三层也有交换机

作用:

  • 存储并转发以太网帧
  • 检查收到的帧的 MAC 地址,选择性地转发该帧到一个或多个链路(寻址

图 1

特点:

  • 交换机是透明的:主机并不知道交换机的存在
  • 即插即用、自学习:交换机不需要手动配置,它自动学习网络拓扑
  • 接口多:每个接口都直接与一个单台主机或另一个交换机相连,并且一般都工作在全双工方式
  • 并行性:能同时连通多对接口,使多对主机能同时通信。
  • 能缓存帧
  • 交换机使用了专用的交换结构芯片用硬件转发,其转发速率非常高。
  • 便宜好用:交换机的性能远远超过普通的集线器,而且价格并不贵。

交换机学习交换表/转发表

交换机通过自动学习知道通过哪个接口能够访问对应主机

图 4

当交换机收到一个帧的时候,就记录源地址,然后根据目的地 MAC 地址,从交换表里面寻找对应条目

  • 如果找到了,就直接发送(若源地址==目的地址,直接丢弃该帧)
  • 如果没找到,就同时向剩下的几个接口同时发送帧(泛洪 flooding)

图 2

在交换机最初发明的时候,这个表是静态的,需要手动添加,虽然简单但是麻烦,而且表会变得很臃肿

因此,只有当几台主机开始发送数据的时候,交换机才需要开始学习(没用的东西学来干嘛)

交换机自学习产生的问题

但有时为了增加网络的可靠性,在使用以太网交换机组网时,往往会增加一些冗余的链路。在这种情况下,自学习的过程就可能导致以太网帧在网络的某个环路中无限制地兜圈子

图 3

如图,四个交换机的接口在自娱自乐

解决方法:

IEEE 的 802.1D 标准制定了一个生成树协议 STP

要点是不改变网络的实际拓扑,但在逻辑上则切断某些链路,使得从一台主机到所有其他主机的路径是无环路的树状结构

简而言之,避免环路的出现

虚拟局域网 VLAN

情景一:CS 系的学生到 EE 系后还想使用 CS 系的局域网,但是这样就要经过中间整个局域网,效率又低,又不安全 情景二:如果公司中工程部门的两个工程师临时调去别的部门,然后又调回来,那就要在物理上重新布线两次

图 5

官方定义:虚拟局域网 VLAN 是由一些局域网网段构成的与物理位置无关的逻辑组,而这些网段具有某些共同的需求。每一个 VLAN 的帧都有一个明确的标识符,指明发送这个帧的计算机是属于哪一个 VLAN。

因此->虚拟局域网其实只是局域网给用户提供的一种服务,而并不是一种新型局域网。

图 6

如图,虚拟局域网内各主机是逻辑上的同组,而不是物理上的同组

比如 B3 向 B1 发送信息, 以太网交换机不向虚拟局域网以外的计算机传送 B1 的广播信息,这样消息就不会发给其他的主机(交换机可能泛洪),这样子流量也节省了,也更安全了(防止混杂模式)

VLAN 限制了接收广播信息的工作站数,使得网络不会因传播过多的广播信息 (即 “广播风暴” ) 而引起性能恶化

虚拟局域网的优点

  • 改善了性能
  • 简化了管理
  • 降低了成本
  • 改善了安全性

虚拟局域网的实现方法

基于交换机端口

靠交换机的端口区分不同组的人,但这样就不能换端口,人员就不能移动

属于在第一层划分虚拟局域网的方法

基于 MAC 地址

根据MAC 地址划分组,但这样就需要手动维护一个表,比较麻烦。如果用户的 MAC 地址改变了,则需要管理员重新配置 VLAN。

属于在第二层划分虚拟局域网的方法

基于协议类型

根据以太网帧的第三个字段“类型”字段确定该类型的协议属于哪一个虚拟局域网

属于在第二层划分虚拟局域网的方法

基于 IP 子网地址

根据以太网帧的第三个字段“类型”字段和 IP 分组首部中的源 IP 地址字段确定该 IP 分组属于哪一个虚拟局域网

属于在第三层划分虚拟局域网的方法

基于高层应用和服务

根据高层应用或服务、或者它们的组合划分虚拟局域网,灵活但复杂

VLAN 的帧的格式

虚拟局域网协议允许在以太网的帧格式中插入一个 4 字节的标识符,称为VLAN 标记 (tag),用来指明该帧属于哪一个虚拟局域网

相当于给物品打个标签

插入 VLAN 标记得出的帧称为802.1Q 帧或带标记的以太网帧

图 7

图 8


上一页 概述
下一页 网络层