当前位置: 首页 > news >正文

虚拟网络设备和端口概念:Bridge(桥)和Tap

Bridge(桥)和Tap是网络通信中,特别是在Linux环境下,常见的虚拟网络设备或端口概念。下面将分别介绍这两个概念及其在网络中的作用。

Bridge(桥)

定义与功能

  • Bridge是一种虚拟网络设备,其功能类似于物理交换机,可以在TCP/IP二层协议上实现数据包的交换。它能够将多个网络接口连接在一起,实现不同网络之间的通信。
  • 在Linux系统中,Bridge设备可以配置IP地址和MAC地址,类似于普通的网络设备。然而,与物理网卡不同,Bridge具有多个端口,可以接收来自任何端口的数据包,并根据目标MAC地址进行转发或丢弃。
  • Bridge设备主要用于实现虚拟机之间的通信,或者将虚拟机连接到物理网络。通过Bridge,虚拟机可以像物理机一样,在网络中发送和接收数据包。

工作原理

  • 当一个从设备(如Tap设备或物理网卡)被attach到Bridge上时,Bridge会学习该设备的MAC地址,并将其存储在内部的MAC地址-端口映射表(CAM表)中。
  • 当Bridge接收到数据包时,它会检查数据包的目标MAC地址,并在CAM表中查找对应的端口。如果找到匹配的端口,Bridge会将数据包转发到该端口;如果没有找到匹配的端口,Bridge可能会将数据包广播到所有端口,或者根据网络配置进行其他处理。

比如真实的系统里ifconfig命令后显示这样:

bridge1: flags=1008843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST,LOWER_UP> metric 0 mtu 1500
    description: vmx0
    options=0
    ether 58:9c:fc:10:ff:84
    id 00:00:00:00:00:00 priority 32768 hellotime 2 fwddelay 15
    maxage 20 holdcnt 6 proto rstp maxaddr 2000 timeout 1200
    root id 00:00:00:00:00:00 priority 32768 ifcost 0 port 0
    member: tap2 flags=143<LEARNING,DISCOVER,AUTOEDGE,AUTOPTP>
            ifmaxaddr 0 port 7 priority 128 path cost 2000000
    member: tap1 flags=143<LEARNING,DISCOVER,AUTOEDGE,AUTOPTP>
            ifmaxaddr 0 port 5 priority 128 path cost 2000000
    member: vmx0 flags=143<LEARNING,DISCOVER,AUTOEDGE,AUTOPTP>
            ifmaxaddr 0 port 1 priority 128 path cost 2000
    groups: bridge
    nd6 options=9<PERFORMNUD,IFDISABLED>
bridge2: flags=8802<BROADCAST,SIMPLEX,MULTICAST> metric 0 mtu 1500
    description: vmx0
    options=0
    ether 58:9c:fc:10:67:6a
    id 00:00:00:00:00:00 priority 32768 hellotime 2 fwddelay 15
    maxage 20 holdcnt 6 proto rstp maxaddr 2000 timeout 1200
    root id 00:00:00:00:00:00 priority 0 ifcost 0 port 0
    groups: bridge
    nd6 options=9<PERFORMNUD,IFDISABLED>
 

Tap(TAP设备)

定义与功能

  • Tap是一种虚拟网络设备,用于模拟物理网络接口。它通常与虚拟机的网络接口相连,实现虚拟机与主机或其他虚拟机之间的网络通信。
  • 通过Tap设备,虚拟机可以发送和接收网络数据包,就像它们拥有独立的物理网络接口一样。这使得虚拟机能够在网络上表现得像真实的物理机一样。

工作原理

  • 当虚拟机发送数据包时,数据包会通过Tap设备传递给主机网络堆栈。然后,主机网络堆栈会根据网络配置(如路由表、防火墙规则等)将数据包发送到目标地址。
  • 当主机接收到发往虚拟机的数据包时,数据包会被传递给Tap设备。Tap设备再将数据包转发给虚拟机网络接口,从而实现虚拟机与网络的通信。

比如使用ifconfig命令显示:

tap1: flags=8903<UP,BROADCAST,PROMISC,SIMPLEX,MULTICAST> metric 0 mtu 1500
    description: CBSDSYSTEM0
    options=80000<LINKSTATE>
    ether 58:9c:fc:10:ff:89
    groups: tap
    media: Ethernet 1000baseT <full-duplex>
    status: no carrier
    nd6 options=29<PERFORMNUD,IFDISABLED,AUTO_LINKLOCAL>
tap2: flags=1008943<UP,BROADCAST,RUNNING,PROMISC,SIMPLEX,MULTICAST,LOWER_UP> metric 0 mtu 1500
    description: ub12-nic0
    options=80000<LINKSTATE>
    ether 58:9c:fc:10:ff:d9
    groups: tap vm-port
    media: Ethernet 1000baseT <full-duplex>
    status: active
    nd6 options=29<PERFORMNUD,IFDISABLED,AUTO_LINKLOCAL>
    Opened by PID 90163
 

总结

Bridge和Tap是Linux网络虚拟化中两个重要的概念。Bridge设备作为虚拟交换机,连接多个网络接口并实现数据包的交换和转发;Tap设备作为虚拟网络接口,模拟物理网络接口并与虚拟机网络通信。这两个概念的结合使用,为虚拟机提供了高效、灵活的网络通信能力。

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • Windows系统命令
  • 【Rust光年纪】超越并发:Rust数据流处理库全面解读
  • Unity动画模块 之 3D模型导入基础设置Animation页签
  • Java填充PDF并返回填充后PDF文件及对应base64码
  • Leetcode JAVA刷刷站(38)外观数列
  • 大白话解释TCP的三次握手和四次挥手
  • 视频号AI美女跳舞,轻松月入30000+,蓝海赛道,流量池巨大,起号猛
  • 【编程知识】如何有趣的理解变量的数据类型和数值
  • 东南大学:Wi-Fi 6搭档全光以太,打造“数智东南”信息高速路
  • 【ARM 芯片 安全与攻击 5.2.1 -- 侧信道与隐蔽信道的区别】
  • 代码随想录算法训练营第二十天(二叉树 七)
  • C语言之“ 数组 ”
  • MySQL存储过程深入指南
  • 三千元左右的卧室投影仪怎么选?当贝D6X Pro代替电视的最佳选择
  • 构建实时数据仓库:流式处理与实时计算技术解析
  • __proto__ 和 prototype的关系
  • 【刷算法】求1+2+3+...+n
  • - C#编程大幅提高OUTLOOK的邮件搜索能力!
  • C学习-枚举(九)
  • flask接收请求并推入栈
  • java正则表式的使用
  • maven工程打包jar以及java jar命令的classpath使用
  • rabbitmq延迟消息示例
  • SegmentFault 技术周刊 Vol.27 - Git 学习宝典:程序员走江湖必备
  • Stream流与Lambda表达式(三) 静态工厂类Collectors
  • Sublime text 3 3103 注册码
  • TypeScript迭代器
  • Vue.js 移动端适配之 vw 解决方案
  • 测试如何在敏捷团队中工作?
  • 聊一聊前端的监控
  • 每天一个设计模式之命令模式
  • 如何借助 NoSQL 提高 JPA 应用性能
  • 用jQuery怎么做到前后端分离
  • SAP CRM里Lead通过工作流自动创建Opportunity的原理讲解 ...
  • ​ 轻量应用服务器:亚马逊云科技打造全球领先的云计算解决方案
  • # Java NIO(一)FileChannel
  • $L^p$ 调和函数恒为零
  • (1)(1.13) SiK无线电高级配置(六)
  • (Java入门)抽象类,接口,内部类
  • (JSP)EL——优化登录界面,获取对象,获取数据
  • (读书笔记)Javascript高级程序设计---ECMAScript基础
  • (三)elasticsearch 源码之启动流程分析
  • (生成器)yield与(迭代器)generator
  • (十八)三元表达式和列表解析
  • (已解决)报错:Could not load the Qt platform plugin “xcb“
  • (源码分析)springsecurity认证授权
  • (转)VC++中ondraw在什么时候调用的
  • (转)visual stdio 书签功能介绍
  • ../depcomp: line 571: exec: g++: not found
  • .NET MVC之AOP
  • .NET 服务 ServiceController
  • .NET 解决重复提交问题
  • .NET 中 GetProcess 相关方法的性能
  • .net反编译的九款神器
  • .net通过类组装数据转换为json并且传递给对方接口