linux下的网桥介绍
网桥用来连接不同的网段。使不同的网段能够相互通信,看起来很像三层的路由。它能够有多个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下的网桥介绍相关推荐
- 在linux下配置网桥透明模式防火墙
在linux下配置网桥透明模式防火墙 一.透明模式防火墙与透明代理的概念 一般而言,防火墙的两个网络接口应分属两个不同的网络,根据系统管理员定义的访问规则在两个接口之间转发数据包,或者拒绝 ...
- LINUX下的文件结构介绍
LINUX下的文件结构介绍 来源:互联网作者:佚名时间:04-15 17:37:28[大 中 小] 了解LINUX下的文件结构,方便学习linux,linux的文件比较特殊,刚开始学习确实不太习惯. ...
- linux下mknod命令介绍
2019独角兽企业重金招聘Python工程师标准>>> linux下mknod命令介绍 mknod - make block or character special files m ...
- Linux下/sys目录介绍
20160708 Linux下/sys目录介绍 1. 概述 ramdisk 文件系统基于磁盘模拟技术,实际文件系统是ex2 ex3等.sysfs是一种基于ram文件系统和proc一样.Sysfs ...
- linux 服务启动依赖,linux下的系统服务介绍——init、systemd
我们经常会听到服务service以及daemon这两个词,它们到底是什么意思呢?之间有什么区别和联系吗.linux下的服务service是常驻在内存中的程序,并且能够提供一些系统或网络方面的功能.而d ...
- linux tmux 详细教程,Linux下的神器介绍之Tmux分屏器
前言 我们为什么需要分屏器呢? 对于这个问题,我想大家肯定都有自己的看法. 主流的观点是这样的,对于生活在Linux下的人(开发人员.运维人员.普通爱好者)都不可避免的使用终端模拟器(比如,gnome ...
- Linux下core文件介绍与使用方法
背景 有时当我们在Linux下编程,程序运行时会出现以下提示: Segmentation fault (core dumped) 然后,程序崩溃,退出运行.发生这一问题的原因往往是程序中指针不规范使用 ...
- linux下搭建网桥
若 linux 下有两个以上的网口,可搭建网桥实现交换机功能 方法一 brctl addbr br0 #创建一个网桥br0实例 brctl addif br0 eth0 #把eth0 加入网桥br0中 ...
- Linux 下 nc 命令介绍
come on 伸出中指戳戳上方关注我-- 本文空调开放,欢迎阅读 nc 是 Linux 下的一个强大的命令.nc 是简称,全名是 netcat.大部分的 Linux 发行版都有自带 nc 这个命令, ...
最新文章
- PAT (Basic Level) 1050 螺旋矩阵(模拟)
- 1到30图片大全顺序_终于解决了!自媒体作者,如何给 Word 中的图片批量编号?...
- 线程---生产者消费者问题
- ERROR 2006 (HY000) MySQL server has gone away
- 解决“在上下文中找不到 owin.Environment 项”
- BootStrap modal() 如何根据返回的HTML宽度自动调整宽度?
- Day_05 显示字符串
- QNAP文件系统不干净,qFinder搜索不到nas,可以ping通
- excel计算二元线性回归_怎么看懂Excel线性回归参数
- 微信开发者工具下载及调试
- 群晖NAS套件之Hyper Backup的功能和使用方法
- 单片机软件设计架构(C语言)
- 低代码平台--基于surging开发微服务编排流程引擎构思
- rts游戏服务器源码,unity即时战略游戏源码Real-time strategy (RTS) game kit
- python速成版_【Spark机器学习速成宝典】基础篇04数据类型(Python版)
- 通过yum下载软件包的三种方式
- RFCN论文阅读笔记
- 审核员 产品质量法适用计算机游戏,2009年6月QMS国家注册审核员考题(部分)
- 再见,广州!你好,杭州!
- 汽车防盗系统(STM32)
热门文章
- Java 算法 判定字符位置
- Java 算法 区间K大数查询
- linux文件夹做链接,linux为什么不能给目录做硬链接
- pytorch得到梯度计算结果
- Intellij IDEA 安装jnetpcap开发环境与 no jnetpcap in java.library.path 的解决方案
- 昆仑通态如何连接sqlserver数据库_sqlserver数据库怎么开启远程连接,给到别人访问...
- InfluxDB-Python 操作实践
- Spring Boot 针对 Java 开发人员的安装指南
- VS2010+OpenMP的简单使用
- 员工借款及还款场景演练