网桥用来连接不同的网段。使不同的网段能够相互通信,看起来很像三层的路由。它能够有多个port,从而能够将数据帧从一个port复制到另一个port。

这里要注意一点,linux下的网桥只能用于以太网。 
来看下示意图:

其中一个是bridge,一个是route。

网桥的主要工作是从输入帧学习主机的位置,建立一个地址的表(也就是表明这个主机(mac地址)属于那个网络),然后基于这个表来复制输入帧到正确的位置。

这里虽然bridge只是起一个引导的作用,可是在下面两个情况下,网桥也有可能处理输入帧:

1 将输入帧up到上层协议栈。

比如说这个网桥刚好还是一个router。

2 将帧传递给协议处理handler.

这里主要是在STP(spanning tree protocol)中会用到

接下来来看网桥如何工作:

lan1和lan2中的任意主机发送帧,都会被这两个lan中的所有主机(包括)接收到,当网桥接收到后,将此帧拷贝到它的port上,这里也就是拷贝到另一个lan上。

这里可以看到这里有个问题,那就是假设host a发送一个帧到host b,而此时,这两个lan中的所有host都会接受到这个帧,这引起了极大地资源浪费。

可是网桥还是很聪明的,它有地址学习的功能:

当a第一次传递给b帧之后,网桥将会学习到a是在lan 1上,然后再当b传递数据给a时,网桥就不会传递多余数据给lan 2的主机了。

当网桥收到的地址是链路层广播(FF:FF:FF:FF:FF:FF)时,他就会将这个帧拷贝到其他所有的port.因此多播将不会被学习。

现在还有个问题,那就是局域网的主机是很容易变动的,举个例子,还是上面的情况,可是我把host a搬到lan 2上去了,而此时网桥还认为a在lan 1上,这个时侯数据传递就会出错了。

这里解决方法就是使用定时器来定时更新这个表,当地址第一次被学习到时,定时器开始运行,然后当这个地址(mac地址)被重新学习到时,重启这个定时器。这样,我们通过设置定时器,就可以定时更新学习表了。这里的定时器如果设的太短的话,会有个问题,那就是很容易使网桥不知道如何到达另外一个lan(原因是超时后会删掉这条记录,而此时又回到第一次发包的情况了)。网桥就会赋值帧到所有的port.

看下面的示意图:

网桥回路的产生.

先看下面的网络图:

这里有两个网桥,此时就有可能会产生回路。当主机a发送一个帧之后,网桥 1 和 2 ,我们假设同时收到这个帧(此时学习到a处于 lan 1),并同时发到lan2,此时他们还会给对方发送一个帧,而这个帧刚好是刚才帧的赋值,这个时侯就会使这两个网桥认为a 处于lan 2上。这个时侯更新查找表,然后把包又发给lan 1.这时就形成了回路。

我们用图来表示上面的网桥和lan的关系:

可以看到如果我们要打破这个回路只需要关闭掉网桥1 或网桥2 的一个端口就行了。

打破回路的算法基本所有算法书都有实现,在网络中寻找最佳无环路拓扑结构的算法是Spanning Tree Protocol,也就是如何在多个网桥和lan中实现无回路的网络。

linux下的网桥介绍相关推荐

  1. 在linux下配置网桥透明模式防火墙

    在linux下配置网桥透明模式防火墙 一.透明模式防火墙与透明代理的概念       一般而言,防火墙的两个网络接口应分属两个不同的网络,根据系统管理员定义的访问规则在两个接口之间转发数据包,或者拒绝 ...

  2. LINUX下的文件结构介绍

    LINUX下的文件结构介绍 来源:互联网作者:佚名时间:04-15 17:37:28[大 中 小] 了解LINUX下的文件结构,方便学习linux,linux的文件比较特殊,刚开始学习确实不太习惯. ...

  3. linux下mknod命令介绍

    2019独角兽企业重金招聘Python工程师标准>>> linux下mknod命令介绍 mknod - make block or character special files m ...

  4. Linux下/sys目录介绍

    20160708 Linux下/sys目录介绍    1. 概述 ramdisk 文件系统基于磁盘模拟技术,实际文件系统是ex2 ex3等.sysfs是一种基于ram文件系统和proc一样.Sysfs ...

  5. linux 服务启动依赖,linux下的系统服务介绍——init、systemd

    我们经常会听到服务service以及daemon这两个词,它们到底是什么意思呢?之间有什么区别和联系吗.linux下的服务service是常驻在内存中的程序,并且能够提供一些系统或网络方面的功能.而d ...

  6. linux tmux 详细教程,Linux下的神器介绍之Tmux分屏器

    前言 我们为什么需要分屏器呢? 对于这个问题,我想大家肯定都有自己的看法. 主流的观点是这样的,对于生活在Linux下的人(开发人员.运维人员.普通爱好者)都不可避免的使用终端模拟器(比如,gnome ...

  7. Linux下core文件介绍与使用方法

    背景 有时当我们在Linux下编程,程序运行时会出现以下提示: Segmentation fault (core dumped) 然后,程序崩溃,退出运行.发生这一问题的原因往往是程序中指针不规范使用 ...

  8. linux下搭建网桥

    若 linux 下有两个以上的网口,可搭建网桥实现交换机功能 方法一 brctl addbr br0 #创建一个网桥br0实例 brctl addif br0 eth0 #把eth0 加入网桥br0中 ...

  9. Linux 下 nc 命令介绍

    come on 伸出中指戳戳上方关注我-- 本文空调开放,欢迎阅读 nc 是 Linux 下的一个强大的命令.nc 是简称,全名是 netcat.大部分的 Linux 发行版都有自带 nc 这个命令, ...

最新文章

  1. PAT (Basic Level) 1050 螺旋矩阵(模拟)
  2. 1到30图片大全顺序_终于解决了!自媒体作者,如何给 Word 中的图片批量编号?...
  3. 线程---生产者消费者问题
  4. ERROR 2006 (HY000) MySQL server has gone away
  5. 解决“在上下文中找不到 owin.Environment 项”
  6. BootStrap modal() 如何根据返回的HTML宽度自动调整宽度?
  7. Day_05 显示字符串
  8. QNAP文件系统不干净,qFinder搜索不到nas,可以ping通
  9. excel计算二元线性回归_怎么看懂Excel线性回归参数
  10. 微信开发者工具下载及调试
  11. 群晖NAS套件之Hyper Backup的功能和使用方法
  12. 单片机软件设计架构(C语言)
  13. 低代码平台--基于surging开发微服务编排流程引擎构思
  14. rts游戏服务器源码,unity即时战略游戏源码Real-time strategy (RTS) game kit
  15. python速成版_【Spark机器学习速成宝典】基础篇04数据类型(Python版)
  16. 通过yum下载软件包的三种方式
  17. RFCN论文阅读笔记
  18. 审核员 产品质量法适用计算机游戏,2009年6月QMS国家注册审核员考题(部分)
  19. 再见,广州!你好,杭州!
  20. 汽车防盗系统(STM32)

热门文章

  1. Java 算法 判定字符位置
  2. Java 算法 区间K大数查询
  3. linux文件夹做链接,linux为什么不能给目录做硬链接
  4. pytorch得到梯度计算结果
  5. Intellij IDEA 安装jnetpcap开发环境与 no jnetpcap in java.library.path 的解决方案
  6. 昆仑通态如何连接sqlserver数据库_sqlserver数据库怎么开启远程连接,给到别人访问...
  7. InfluxDB-Python 操作实践
  8. Spring Boot 针对 Java 开发人员的安装指南
  9. VS2010+OpenMP的简单使用
  10. 员工借款及还款场景演练