SlideShare une entreprise Scribd logo
1  sur  7
山东大学威海分校机电与信息工程学院


  实验一(透明网桥自学习算法)

                 实验报告

                            编号:
姓名 周涅林    院系 机电与信息工程学院 学号           200900800284
任课教师       程杰       指导教师            程杰
实验地点     电子楼 201    实验时间          2011.10.18
实验名称             透明网桥的自学习算法
同 组 人              夏铨君、卢磊
预习报告(对实验主要内容的认识)          得分
一.实验原理:

  透明网桥的“透明”是指以太网上的站点并不知道所发送的帧将经过哪
几个网桥,以太网上的站点都看不见以太网上的网桥。透明网桥工作在数据链
路层,是一种即插即用设备,网桥刚刚连到以太网时,其转发表是空的,若
接受到一个帧,网桥就按照自学习算法处理收到的帧,逐步建立转发表。自学
习算法的原理:若从某个站 A 发出的帧从接口 X 进入了某网桥,那么从这个
接口出发沿相反方向,一定可以把一个帧传送到 A。


二.实验内容:

  1.初始化

  2.建立网络结构

  3.实现网桥 B1 和 B2 的自学习算法

  4.按特定时序输入测试数据,验证过滤功能的有效性

  5.算法结束输出网桥 B1 和 B2 的转发表




三.实验网桥结构示意图:
实验内容(问题,思路,程序,结果)   得分
我们小组使用 java 来实现自学习算法,在实现算法前,我们首先构造了
几个实现算法所需要的类:


    Computer 类 :定义主机的变量方法


        String address;


        Bus bus;//com 所连接的 bus


        Data data;//接收到的数据


        public Computer(String add){

            this.address = add;

        }


        public void sendData(Data data)//通过总线广播


            //调用 Bus 的 send()方法


        public void receiveData(Data d)//接收 data


            //检测 data 是否发送到该处,如果是,则接收(复制),否则丢弃


    }


    Bridge 类 :定义与网桥相关的变量方法


    public class Bridge {

        public Bus leftBus, rightBus;

        public List<Map<String, String>> table = new
ArrayList<Map<String,String>>();

        public Map<String, String> map_f, map_t;

        public int f = 0, t = 0;
public void sendToRightBridge(Data data)
  public void send(Data data)
Data 类 :定义传输的数据实体类
  public class Data {
     public String from,to,content;
     public Bus bus;
     public Data(String content,String to)
      public Data(Data d) //拷贝构造方法
  }


 ImagePanel 类 :装载图片
  public class ImagePanel extends JPanel {
  /**
   * 此方法是重写了 paintComponent 方法,来设置 JPanel 的背景
   */
    private static final long serialVersionUID = 1L;
  public void paintComponent(Graphics g)
  }


 MainFrame 类 :程序主面板 ,构建各组件
  public class MainFrame extends JFrame implements ActionListener{
  }


 NetWork 类 :依照给定结构图 ,构建网桥

  public NetWork() //构造方法,将预先定义的各主机,网桥,总线按照位置连接

  public JTable getBridgeOneTable()//得到网桥 1 的转发表

        public JTable getBridgeTwoTable()//得到网桥 2 的转发表


      public void sendMessage(String from,String to,String content){ //from: 源地

址;to:目的地址

  public void getMessage(String target){//获得指定主机的数据
核心算法
public void receiveData(Data data){
       //System.out.println("ssss" + this);
       f = 0;t = 0;
       for (Map<String,String> row:table){
           if (row.get("address").equals(data.from)){
               f = 1;
               map_f = row;
               break;
           }
       }
       if (f == 0){
           Map<String,String> map = new HashMap<String,String>();
           map.put("address", data.from);
           if(data.bus == leftBus)
               map.put("location","left" );
           else{
               map.put("location","right" );
           }
           table.add(map);
           map_f = map;
       }
       for (Map<String, String>row:table){
           if (row.get("address").equals(data.to)){
               t = 1;
               map_t = row;
               break;
           }
       }
       if(t == 0){
           if(data.bus == leftBus)
               rightBus.rightSend(new Data(data));
           else
               leftBus.leftSend(new Data(data));
       } else {
           if(map_f.get("location").equals(map_t.get("location")))
               ;
           else{
               if(data.bus == leftBus)
                   rightBus.rightSend(new Data(data));
               else
                   leftBus.leftSend(new Data(data));
}
    }
首先判断源地址是否登记过,若无则登记,有则跳过登记。然后判断目地址地
址是否登记过,无则转发,若有,判断其接口与目的接口是否相同,相同则
丢弃,不同则转发。然后调用转发网桥的自学习方法。
实验结果截图:




 实验结论                            得分
   由程序运行结果得出,主机 A 向 C 发送帧,1 号 2 号网桥均登记转发,将
A 主机记入进转发表。 主机 C 向 E 发送帧,1 号 2 号网桥均登记转发,将 C 主机
记入进转发表,E 向 C 发送帧,1 号 2 号网桥均登记主机 E,因为转发表中有 C
主机的记录,因此,1 号网桥转发,2 号网桥直接丢弃。从而实现网桥的自学
习功能。另外,当主机已存在转发表中,网桥则不再登记




教师评价          总分             实际得分
01200900800284周涅林

Contenu connexe

Tendances (20)

Ch5 範例
Ch5 範例Ch5 範例
Ch5 範例
 
Ppt 51-77
Ppt 51-77Ppt 51-77
Ppt 51-77
 
数据结构回顾
数据结构回顾数据结构回顾
数据结构回顾
 
Ch5 教學
Ch5 教學Ch5 教學
Ch5 教學
 
Ch4 教學
Ch4 教學Ch4 教學
Ch4 教學
 
Ch9 教學
Ch9 教學Ch9 教學
Ch9 教學
 
Ppt 78-100
Ppt 78-100Ppt 78-100
Ppt 78-100
 
Ppt 127-135
Ppt 127-135Ppt 127-135
Ppt 127-135
 
Ch9 範例
Ch9 範例Ch9 範例
Ch9 範例
 
Python - Matplotlib basic - v01
Python - Matplotlib basic - v01Python - Matplotlib basic - v01
Python - Matplotlib basic - v01
 
Appendix A 教學
Appendix A 教學Appendix A 教學
Appendix A 教學
 
Ppt 1-50
Ppt 1-50Ppt 1-50
Ppt 1-50
 
Ppt 101-119
Ppt 101-119Ppt 101-119
Ppt 101-119
 
Ch1 教學
Ch1 教學Ch1 教學
Ch1 教學
 
Ppt 51-77
Ppt 51-77Ppt 51-77
Ppt 51-77
 
Ppt 120-126
Ppt 120-126Ppt 120-126
Ppt 120-126
 
Ch10 習題
Ch10 習題Ch10 習題
Ch10 習題
 
關於Import
關於Import關於Import
關於Import
 
Appendix B 教學
Appendix B 教學Appendix B 教學
Appendix B 教學
 
Ch6 教學
Ch6 教學Ch6 教學
Ch6 教學
 

En vedette (20)

No.116
No.116No.116
No.116
 
No.129 Yiza Yesu Usithamsanqele
No.129 Yiza Yesu UsithamsanqeleNo.129 Yiza Yesu Usithamsanqele
No.129 Yiza Yesu Usithamsanqele
 
Should men pay into womans KiwiSaver accounts Sun 24th July 2016
Should men pay into womans KiwiSaver accounts Sun 24th July 2016Should men pay into womans KiwiSaver accounts Sun 24th July 2016
Should men pay into womans KiwiSaver accounts Sun 24th July 2016
 
Artigo_posicionamento da Pepsi em comercial
Artigo_posicionamento da Pepsi em comercialArtigo_posicionamento da Pepsi em comercial
Artigo_posicionamento da Pepsi em comercial
 
No.114
No.114No.114
No.114
 
Lp preparatórios
Lp preparatóriosLp preparatórios
Lp preparatórios
 
No.46
No.46No.46
No.46
 
Sustancias clasificadas como cancerigenas
Sustancias clasificadas como  cancerigenasSustancias clasificadas como  cancerigenas
Sustancias clasificadas como cancerigenas
 
No.7
No.7No.7
No.7
 
Apartamento 3 quartos (2 suítes) ou 4 quartos (3 suítes) Pecado Macaé
Apartamento 3 quartos (2 suítes) ou 4 quartos (3 suítes) Pecado MacaéApartamento 3 quartos (2 suítes) ou 4 quartos (3 suítes) Pecado Macaé
Apartamento 3 quartos (2 suítes) ou 4 quartos (3 suítes) Pecado Macaé
 
Analise de imagem
Analise de imagemAnalise de imagem
Analise de imagem
 
Portafolio de trabajo Objetos Gráficos
Portafolio de trabajo Objetos GráficosPortafolio de trabajo Objetos Gráficos
Portafolio de trabajo Objetos Gráficos
 
Lowell Tucker
Lowell TuckerLowell Tucker
Lowell Tucker
 
Economia da experiência entetenimento adulto
Economia da experiência entetenimento adultoEconomia da experiência entetenimento adulto
Economia da experiência entetenimento adulto
 
Páscoa Real
Páscoa RealPáscoa Real
Páscoa Real
 
Redes sociales
Redes socialesRedes sociales
Redes sociales
 
Izborni program
Izborni programIzborni program
Izborni program
 
Master_Certificate English_Andreas Hotmanri Simatupang
Master_Certificate English_Andreas Hotmanri SimatupangMaster_Certificate English_Andreas Hotmanri Simatupang
Master_Certificate English_Andreas Hotmanri Simatupang
 
Apresentação2
Apresentação2Apresentação2
Apresentação2
 
No.11
No.11No.11
No.11
 

01200900800284周涅林

  • 1. 山东大学威海分校机电与信息工程学院 实验一(透明网桥自学习算法) 实验报告 编号: 姓名 周涅林 院系 机电与信息工程学院 学号 200900800284 任课教师 程杰 指导教师 程杰 实验地点 电子楼 201 实验时间 2011.10.18 实验名称 透明网桥的自学习算法 同 组 人 夏铨君、卢磊 预习报告(对实验主要内容的认识) 得分 一.实验原理: 透明网桥的“透明”是指以太网上的站点并不知道所发送的帧将经过哪 几个网桥,以太网上的站点都看不见以太网上的网桥。透明网桥工作在数据链 路层,是一种即插即用设备,网桥刚刚连到以太网时,其转发表是空的,若 接受到一个帧,网桥就按照自学习算法处理收到的帧,逐步建立转发表。自学 习算法的原理:若从某个站 A 发出的帧从接口 X 进入了某网桥,那么从这个 接口出发沿相反方向,一定可以把一个帧传送到 A。 二.实验内容: 1.初始化 2.建立网络结构 3.实现网桥 B1 和 B2 的自学习算法 4.按特定时序输入测试数据,验证过滤功能的有效性 5.算法结束输出网桥 B1 和 B2 的转发表 三.实验网桥结构示意图:
  • 3. 我们小组使用 java 来实现自学习算法,在实现算法前,我们首先构造了 几个实现算法所需要的类: Computer 类 :定义主机的变量方法 String address; Bus bus;//com 所连接的 bus Data data;//接收到的数据 public Computer(String add){ this.address = add; } public void sendData(Data data)//通过总线广播 //调用 Bus 的 send()方法 public void receiveData(Data d)//接收 data //检测 data 是否发送到该处,如果是,则接收(复制),否则丢弃 } Bridge 类 :定义与网桥相关的变量方法 public class Bridge { public Bus leftBus, rightBus; public List<Map<String, String>> table = new ArrayList<Map<String,String>>(); public Map<String, String> map_f, map_t; public int f = 0, t = 0;
  • 4. public void sendToRightBridge(Data data) public void send(Data data) Data 类 :定义传输的数据实体类 public class Data { public String from,to,content; public Bus bus; public Data(String content,String to) public Data(Data d) //拷贝构造方法 } ImagePanel 类 :装载图片 public class ImagePanel extends JPanel { /** * 此方法是重写了 paintComponent 方法,来设置 JPanel 的背景 */ private static final long serialVersionUID = 1L; public void paintComponent(Graphics g) } MainFrame 类 :程序主面板 ,构建各组件 public class MainFrame extends JFrame implements ActionListener{ } NetWork 类 :依照给定结构图 ,构建网桥 public NetWork() //构造方法,将预先定义的各主机,网桥,总线按照位置连接 public JTable getBridgeOneTable()//得到网桥 1 的转发表 public JTable getBridgeTwoTable()//得到网桥 2 的转发表 public void sendMessage(String from,String to,String content){ //from: 源地 址;to:目的地址 public void getMessage(String target){//获得指定主机的数据
  • 5. 核心算法 public void receiveData(Data data){ //System.out.println("ssss" + this); f = 0;t = 0; for (Map<String,String> row:table){ if (row.get("address").equals(data.from)){ f = 1; map_f = row; break; } } if (f == 0){ Map<String,String> map = new HashMap<String,String>(); map.put("address", data.from); if(data.bus == leftBus) map.put("location","left" ); else{ map.put("location","right" ); } table.add(map); map_f = map; } for (Map<String, String>row:table){ if (row.get("address").equals(data.to)){ t = 1; map_t = row; break; } } if(t == 0){ if(data.bus == leftBus) rightBus.rightSend(new Data(data)); else leftBus.leftSend(new Data(data)); } else { if(map_f.get("location").equals(map_t.get("location"))) ; else{ if(data.bus == leftBus) rightBus.rightSend(new Data(data)); else leftBus.leftSend(new Data(data));
  • 6. } } 首先判断源地址是否登记过,若无则登记,有则跳过登记。然后判断目地址地 址是否登记过,无则转发,若有,判断其接口与目的接口是否相同,相同则 丢弃,不同则转发。然后调用转发网桥的自学习方法。 实验结果截图: 实验结论 得分 由程序运行结果得出,主机 A 向 C 发送帧,1 号 2 号网桥均登记转发,将 A 主机记入进转发表。 主机 C 向 E 发送帧,1 号 2 号网桥均登记转发,将 C 主机 记入进转发表,E 向 C 发送帧,1 号 2 号网桥均登记主机 E,因为转发表中有 C 主机的记录,因此,1 号网桥转发,2 号网桥直接丢弃。从而实现网桥的自学 习功能。另外,当主机已存在转发表中,网桥则不再登记 教师评价 总分 实际得分