路由交换(二):交换基础

一、交换原理

1. 二层交换

二层交换设备工作在OSI模型的数据链路层,通过解析和学习数据帧的源MAC地址形成MAC地址表,根据目的MAC地址在MAC地址表的表项来转发数据帧。基本过程如下:
(1) 二层交换设备收到数据帧,将数据帧中的源MAC地址和接收数据帧的接口的对应关系写入MAC地址表。如果MAC地址表中已有相同表项,则刷新该表项的老化时间。
(2)若目的MAC地址是广播地址,则从所有其它接口转发该数据帧;如果目的MAC地址不是广播地址,则查找MAC地址表,若查到匹配表项,则从相应接口转发数据帧,若没有匹配表项,则从所有其它接口转发数据帧。

2. 三层交换

三层交换设备通过VLAN来划分二层网络并实现二层交换,实现不同VLAN间的三层IP互访。
(1)若源IP和目的IP处于同一网段,则源主机发送ARP请求,收到目的主机的ARP应答后获得目的主机的MAC地址,根据目的主机的MAC地址进行数据报文转发。
(2)若源IP和目的IP处于不同网段,通过网关来转发报文。发送ARP请求来获取网关IP对应MAC地址,收到网关发送的ARP应答后,用网关的MAC地址作为目的MAC发送报文。

二、VLAN

1. VLAN简介

VLAN是将一个物理的LAN在逻辑上划分成多个广播域的通信技术。VLAN工作在OSI参考模型的数据链路层。一个VLAN中所有设备都是同一广播域内,不同的VLAN为不同的广播域。VLAN之间互相隔离,广播报文不能跨越VLAN传播。不同VLAN间需要通过三层设备实现相互通信。使用VLAN的优点:

  • 限制广播域
  • 增强局域网的安全性
  • 提高网络的健壮性

2. 链路类型和接口类型

链路类型

VLAN链路类型分为:接入链路和干道链路

  • 接入链路
    接入链路只可以承载1个VLAN的数据帧,用于连接交换机和用户终端
  • 干道链路
    干道链路可以承载多个不同VLAN的数据帧,用于交换机间互连霍连接交换机与路由器

接口类型

接口类型分为Access接口、Trunk 接口和Hybrid接口

  • Access口

    Access接口一般用于连接用户终端。Access接口报文处理如下:
    入方向:
    若Access接口收到Untagged数据帧,接收数据帧并打上缺省的VLAN ID(PVID);若Access接口收到带有Tag标签的数据帧,且数据帧中的VLAN ID和PVID相同时,Access接口接收数据帧,反之丢弃数据帧
    出方向:
    剥离PVID标签再发送报文

  • Trunk接口

    Trunk接口一般用于连接交换机、路由器和AP。Trunk接口报文处理如下:
    入方向:
    若Trunk接口收到Untagged数据帧,给数据帧打上PVID 标签,若VLAN ID允许通过,则接收数据帧,反之丢弃数据帧;若Trunk接口收到Tag 数据帧,若VLAN ID 允许涌过,则接收数据帧,反之丢弃数据帧
    出方向:
    当VLAN ID与缺省VLAN ID 相同,且是该接口允许通过的VLAN ID时,去掉Tag,发送该报文;当VLAN ID与缺省VLAN ID不同,且是该接口允许通过的VLAN ID时,保持原有Tag,发送该报文。

  • Hybrid接口

    Hybrid接口既可以用来呢连接用户终端,叶可以用来连接交换机等网络设备。Hybrid接口报文处理如下:
    入方向:
    若Hybrid接口收到Untagged数据帧,给数据帧打上PVID 标签,若VLAN ID允许通过,则接收数据帧,反之丢弃数据帧;若Hybrid接口收到Tag数据帧,若VLAN ID 允许涌过,则接收数据帧,反之丢弃数据帧。
    出方向:
    若发送数据帧携带标签,保持原有的标签,反之剥离标签发送。

3. VLAN封装

标准封装协议IEEE 802.1Q的封装格式如下

TPID:标签协议标识符,表示数据帧类型,802.1Q封装的报文TPID取值为0x8100
PRI:优先级,表示数据帧的802.1p优先级,取值范围0-7,值越大越优先。当网络阻塞时,交换机优先发送优先级高的数据帧
CFI:标准格式指示位,表示MAC地址在传输介质中是否以标准化格式封装,用于兼容以太网和令牌环网
VID:即VLAN ID,表示数据帧所属VLAN

4. VLAN间通信

单臂路由

不同VLAN之间通信是通过路由器或三层交换机来实现。
思科设备配置

验证PC1主机ping PC2主机

华为设备配置

验证PC1主机ping PC2主机

三层虚接口

在三层交换机三分别创建不同VLAN的虚接口,分别配置IP地址。

interface Vlanif10
 ip address 10.1.10.254 255.255.255.0
interface Vlanif20
 ip address 10.1.20.254 255.255.255.0

原文地址:https://blog.51cto.com/12631595/2437850

时间: 2024-11-09 13:39:28

路由交换(二):交换基础的相关文章

白话经典算法系列之四 直接选择排序及交换二个数据的正确实现

分类: 白话经典算法系列 2011-08-09 11:15 16682人阅读 评论(29) 收藏 举报 算法面试c 直接选择排序和直接插入排序类似,都将数据分为有序区和无序区,所不同的是直接播放排序是将无序区的第一个元素直接插入到有序区以形成一个更大的有序区,而直接选择排序是从无序区选一个最小的元素直接放到有序区的最后. 设数组为a[0…n-1]. 1.      初始时,数组全为无序区为a[0..n-1].令i=0 2.      在无序区a[i…n-1]中选取一个最小的元素,将其与a[i]交

指针复习-交换二个数

# include<stdio.h> //重点理解:1.指针:变量的地址.指针变量:存放地址的变量. void exchange_1(int a,int b)//只能在此函数实现变量交换,交换后的值不能返回到main函数中 { int t; t = a; a = b; b = t; } void exchange_2(int* a,int* b)//此函数只是交换了存放a,b地址的变量中的值. { int * t;//a,b表示a,b变量的地址 t = a; a = b; b = t; } v

直接选择排序及交换二个数据的正确实现

文章参考地址:http://blog.csdn.net/morewindows/article/details/6671824 直接选择排序和直接插入排序类似,都将数据分为有序区和无序区,所不同的是直接插入排序是将无序区的第一个元素直接插入到有序区以形成一个更大的有序区,而直接选择排序是从无序区选一个最小的元素直接放到有序区的最后. 设数组为a[0-n-1]. 1.      初始时,数组全为无序区为a[0..n-1].令i=0 2.      在无序区a[i-n-1]中选取一个最小的元素,将其

Tensorflow深度学习之十二:基础图像处理之二

Tensorflow深度学习之十二:基础图像处理之二 from:https://blog.csdn.net/davincil/article/details/76598474 首先放出原始图像: 1.图像的翻转 import tensorflow as tf import cv2 # 这里定义一个tensorflow读取的图片格式转换为opencv读取的图片格式的函数 # 请注意: # 在tensorflow中,一个像素点的颜色顺序是R,G,B. # 在opencv中,一个像素点的颜色顺序是B,

ansible(二)基础篇

这篇总结一下Inventory,变量,目标匹配,及/usr/bin/ansible 命令行常用的模块 上一篇也说过Inventory的默认路径是在/etc/ansible/hosts,当然这个东西可以说是静态的,为啥是静态呢,你要手工的把你的要管理的主机写进去. 当然还有一种动态的Inventory,这个其实也简单,就是如果你已经有了一个资源管理系统,里面有你们的所有主机信息.然后咱们写个脚本程序,把你们资源管理系统里面的这些信息给拉过来,以json格式呈现就OK了. 其实ansible还有一种

加壳学习笔记(二)-汇编基础

7.简单的汇编语法:   堆栈平衡  PUSH,POP功能: 把操作数压入或取出堆栈语法: PUSH 操作数 POP 操作数格式: PUSH r PUSH M PUSH data POP r POP mPUSHF,POPF,PUSHA,POPA功能: 堆栈指令群格式: PUSHF POPF PUSHA POPAADD,ADC功能: 加法指令语法: ADD OP1,OP2 ADC OP1,OP2格式: ADD r1,r2 ADD r,m ADD m,r ADD r,data影响标志: C,P,A,

手游开发攻防——二、基础篇

<手游开发攻防--二.基础篇>已经更新完.主要是通过一个官方的DEMO,来分析Unity3D开发中的一些知识点和应用.注意的事项.大家可以去看看.有什么的可以提出来交流. http://blog.csdn.net/kakashi8841/article/details/39451739

R语言基础(二) 可视化基础

> which.max(apply(x[c("x1","x2","x3")], 1, sum))49 > x$num[which.max(apply(x[c("x1","x2","x3")], 1, sum))][1] 2005138149 > hist(x$x1) > plot(x$x1,x$x2) > table(x$x1) 80 81 82 83 84

Swift语言指南(二)--语言基础之注释和分号

注释 通过注释向自己的代码中注入不可执行的文本,作为你自己的笔记或提示.Swift编译器运行时会忽略注释. Swift的注释与C语言极其相似,单行注释以两个反斜线开头: //这是一行注释 多行注释以/*开始,以*/结束: ? 1 2 3 <span style="color: rgb(0, 128, 0);">/* 这也是一条注释, 但跨越多行 */ </span> 与 C 语言的多行注释有所不同的是,Swift 的多行注释可以嵌套在其他多行注释内部.写法是在一

仿制新浪微博iOS客户端之二-项目基础搭建及相关设置

上一次的文章主要提到了仿制新浪微博所用到的一些技术和知识点,那本文就开始进入正式的项目实施阶段了.首先要做的自然是项目的创建和相关的设置,以及基础框架的搭建了. 一.项目创建及相关设置 1.项目创建 现在越来越多的的公司开始使用Swift开发iOS和AppleWatch的项目,因此此次我们的开发也使用Swift语言来进行,新建项目,设置如下: 既然是仿制,自然可以当成是一个练习,项目名称:“WeiboTest”,编程语言选择“Swift”.然后“下一步”直到创建完成. 2.应用图标设置 将应用图