jjzjj

access与trunk详细解析+区别

victor_王泽华 2023-04-22 原文

目录

一、Access

二、Trunk

三、区别:

四、额外说明:


一、Access

  1. Access只能属于一个vlan,一般用来连接计算机的端口
  2. Access接受和转发的数据包必是无VID的数据包
  3. Access端口发送出去的数据包无VID,可被PC接受或access口接受。
  4. Access : 收到一个报文,先判断是否有vlan消息,无则打上端口的PVID在SW内转交给相同PVID的端口去掉标记的无VID数据包,有则直接丢弃。

二、Trunk

  1. Trunk:可以允许多个vlan通过,可以接收和发送多个vlan的报文,一般用于交换机之间连接端口
  2. Trunk:默认PVID与vlan1相等
  3. 在默认状态下,Trunk端口允许所有的Vlan发送和接口传输信息。
  4. Trunk:收到一个报文,先判断是否有vlan消息,无则打上端口的PVID在SW内转交给其它端口;有则先判断trunk端口是否允许该vlan的数据进入,如果可以则转发,否则丢弃。
  5. Trunk:在发送时,比较要发送报文的VID与端口的PVID,不相等则直接发送;相等则剥离VID,再发送

三、区别:

  1. Access口只接收无VID的数据包。
  2. access口发送数据包时对所有数据包去除VID,而trunk口只对与自己端口的PVID相等的数据包去除VID,其它则直接转发。

所属vlan

允许通过vlan

access

只能 1个 (即划入的vlan)

只能1个即划入的vlan

trunk

只能1个(即pvid)

任意个

四、额外说明:

PVID英文为Port-base VLAN ID,是表示网络通信中基于端口的VLAN ID,一个端口可以属于多个VLAN,但是只能有一个PVID,收到一个不带tag头的数据包时,会打上PVID所表示的VLAN号,视同该VLAN的数据包处理。

一个物理端口只能拥有一个PVID,当一个物理端口拥有了一个PVID的时候,必定会拥有和PVID相等的VID,而且在这个VID上,这个物理端口必定是Untagged Port。

PVID的作用只是在交换机从外部接受到可以接受Untagged 数据帧的时候给数据帧添加TAG标记用的,在交换机内部转发数据的时候PVID不起任何作用。

关于 untagged port

关于 untagged port,此 port 转发出的封包上都没有 Tag (untagged)。 若有 Tag 的封包进入 switch,则其经过 untagged port 时,Tag 将被去除 。(用于连接一般设备、电脑)

Dynamic Auto是思科交换机的默认管理模式(Administrative Mode),而实际的操作模式(Operational Mode)则根据DTP来确定。也就是说交换机端口的默认模式就是Dynamic Auto,如果对面交换机端口是Trunk或Dynamic Desirable那么最后通过DTP协商,本交换机端口就将变为Trunk。若对面是Access或同样也是Dynamic Auto,则本交换机端口最终变成Access口。

思科动态中继协议 DTP,是 VLAN 组中思科所有协议,主要用于协商两台设备间链路上的中继过程以及中继封装 802.1Q 类型。 DTP是cisco专有的协议,它只能用于交换机之间建立trunk链路,并且每隔30s发送DTP帧。

DTP采用协商的方式来决定是否将接口配置为Trunk,在需要使用Trunk链路时,通常是手工静态配置接口模式,并且手工指定Trunk封装协议。

 

有关access与trunk详细解析+区别的更多相关文章

  1. Ruby 解析字符串 - 2

    我有一个字符串input="maybe(thisis|thatwas)some((nice|ugly)(day|night)|(strange(weather|time)))"Ruby中解析该字符串的最佳方法是什么?我的意思是脚本应该能够像这样构建句子:maybethisissomeuglynightmaybethatwassomenicenightmaybethiswassomestrangetime等等,你明白了......我应该一个字符一个字符地读取字符串并构建一个带有堆栈的状态机来存储括号值以供以后计算,还是有更好的方法?也许为此目的准备了一个开箱即用的库?

  2. ruby - 解析 RDFa、微数据等的最佳方式是什么,使用统一的模式/词汇(例如 schema.org)存储和显示信息 - 2

    我主要使用Ruby来执行此操作,但到目前为止我的攻击计划如下:使用gemsrdf、rdf-rdfa和rdf-microdata或mida来解析给定任何URI的数据。我认为最好映射到像schema.org这样的统一模式,例如使用这个yaml文件,它试图描述数据词汇表和opengraph到schema.org之间的转换:#SchemaXtoschema.orgconversion#data-vocabularyDV:name:namestreet-address:streetAddressregion:addressRegionlocality:addressLocalityphoto:i

  3. ruby - 用逗号、双引号和编码解析 csv - 2

    我正在使用ruby​​1.9解析以下带有MacRoman字符的csv文件#encoding:ISO-8859-1#csv_parse.csvName,main-dialogue"Marceu","Giveittohimóhe,hiswife."我做了以下解析。require'csv'input_string=File.read("../csv_parse.rb").force_encoding("ISO-8859-1").encode("UTF-8")#=>"Name,main-dialogue\r\n\"Marceu\",\"Giveittohim\x97he,hiswife.\"\

  4. ruby - 触发器 ruby​​ 中 3 点范围运算符和 2 点范围运算符的区别 - 2

    请帮助我理解范围运算符...和..之间的区别,作为Ruby中使用的“触发器”。这是PragmaticProgrammersguidetoRuby中的一个示例:a=(11..20).collect{|i|(i%4==0)..(i%3==0)?i:nil}返回:[nil,12,nil,nil,nil,16,17,18,nil,20]还有:a=(11..20).collect{|i|(i%4==0)...(i%3==0)?i:nil}返回:[nil,12,13,14,15,16,17,18,nil,20] 最佳答案 触发器(又名f/f)是

  5. 使用 ACL 调用 upload_file 时出现 Ruby S3 "Access Denied"错误 - 2

    我正在尝试编写一个将文件上传到AWS并公开该文件的Ruby脚本。我做了以下事情:s3=Aws::S3::Resource.new(credentials:Aws::Credentials.new(KEY,SECRET),region:'us-west-2')obj=s3.bucket('stg-db').object('key')obj.upload_file(filename)这似乎工作正常,除了该文件不是公开可用的,而且我无法获得它的公共(public)URL。但是当我登录到S3时,我可以正常查看我的文件。为了使其公开可用,我将最后一行更改为obj.upload_file(file

  6. ruby-on-rails - `a ||= b` 和 `a = b if a.nil 之间的区别? - 2

    我正在检查一个Rails项目。在ERubyHTML模板页面上,我看到了这样几行:我不明白为什么不这样写:在这种情况下,||=和ifnil?有什么区别? 最佳答案 在这种特殊情况下没有区别,但可能是出于习惯。每当我看到nil?被使用时,它几乎总是使用不当。在Ruby中,很少有东西在逻辑上是假的,只有文字false和nil是。这意味着像if(!x.nil?)这样的代码几乎总是更好地表示为if(x)除非期望x可能是文字false。我会将其切换为||=false,因为它具有相同的结果,但这在很大程度上取决于偏好。唯一的缺点是赋值会在每次运行

  7. ruby - 这两个 Ruby 类初始化定义有什么区别? - 2

    我正在阅读一本关于Ruby的书,作者在编写类初始化定义时使用的形式与他在本书前几节中使用的形式略有不同。它看起来像这样:classTicketattr_accessor:venue,:datedefinitialize(venue,date)self.venue=venueself.date=dateendend在本书的前几节中,它的定义如下:classTicketattr_accessor:venue,:datedefinitialize(venue,date)@venue=venue@date=dateendend在第一个示例中使用setter方法与在第二个示例中使用实例变量之间是

  8. ruby-on-rails - 我更新了 ruby​​ gems,现在到处都收到解析树错误和弃用警告! - 2

    简而言之错误:NOTE:Gem::SourceIndex#add_specisdeprecated,useSpecification.add_spec.Itwillberemovedonorafter2011-11-01.Gem::SourceIndex#add_speccalledfrom/opt/local/lib/ruby/site_ruby/1.8/rubygems/source_index.rb:91./opt/local/lib/ruby/gems/1.8/gems/rails-2.3.8/lib/rails/gem_dependency.rb:275:in`==':und

  9. 在VMware16虚拟机安装Ubuntu详细教程 - 2

    在VMware16.2.4安装Ubuntu一、安装VMware1.打开VMwareWorkstationPro官网,点击即可进入。2.进入后向下滑动找到Workstation16ProforWindows,点击立即下载。3.下载完成,文件大小615MB,如下图:4.鼠标右击,以管理员身份运行。5.点击下一步6.勾选条款,点击下一步7.先勾选,再点击下一步8.去掉勾选,点击下一步9.点击下一步10.点击安装11.点击许可证12.在百度上搜索VM16许可证,复制填入,然后点击输入即可,亲测有效。13.点击完成14.重启系统,点击是15.双击VMwareWorkstationPro图标,进入虚拟机主

  10. spring.profiles.active和spring.profiles.include的使用及区别说明 - 2

    转自:spring.profiles.active和spring.profiles.include的使用及区别说明下文笔者讲述spring.profiles.active和spring.profiles.include的区别简介说明,如下所示我们都知道,在日常开发中,开发|测试|生产环境都拥有不同的配置信息如:jdbc地址、ip、端口等此时为了避免每次都修改全部信息,我们则可以采用以上的属性处理此类异常spring.profiles.active属性例:配置文件,可使用以下方式定义application-${profile}.properties开发环境配置文件:application-dev

随机推荐