java 网桥.doc_第1页
java 网桥.doc_第2页
java 网桥.doc_第3页
java 网桥.doc_第4页
免费预览已结束,剩余1页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

二、实验设备java三、实验内容1、 写一个程序来模拟网桥功能。模拟实现网桥的转发功能,以从文件中读取帧模拟网桥从网络中收到一帧,即从两个文件中读入一系列帧,从第一个文件中读入一帧然后从第二个文件中再读入一帧,如此下去。对每一帧,显示网桥是否会转发。要求:Windows或Linux环境下运行,程序应在单机上运行。分析:用程序模拟网桥功能,可以假定用两个文件分别代表两个网段上的网络帧数据。而两个文件中的数据应具有帧的特征,即有目的地址,源地址和帧内数据。程序交替读入帧的数据,就相当于网桥从网段中得到帧数据,当然如果模拟的数据量比较少,也可以用两个数组代替两个文件存放帧数据,同样达到代表两个网段上的帧数据的效果。对于网桥来说,能否转发帧在于把接收到的帧与网桥中的转发表相比较。判断目的地址后才决定是否转发。由此可见转发的关键在于构造转发表。这里转发表可通过动态生成,也可预先给出。 2、 编写一个计算机程序用来计算一个文件的16位效验和。最快速的方法是用一个32位的整数来存放这个和。记住要处理进位(例如,超过16位的那些位),把它们加到效验和中。要求:1)以命令行形式运行:check_sum infile 其中check_sum为程序名,infile为输入数据文件名。2)输出:数据文件的效验和附:效验和(checksum) 原理:把要发送的数据看成二进制整数序列,并计算他们的和。若数据字节长度为奇数,则在数据尾部补一个字节的0以凑成偶数。 例子:16位效验和计算,下图表明一个小的字符串的16位效验和的计算。为了计算效验和,发送计算机把每对字符当成16位整数处理并计算效验和。如果效验和大于16位,那么把进位一起加到最后的效验和中。 4 实验过程原始记录网桥:(流程与分析)(1)网桥收到一帧后先进行自学习。查找转发表中与收到帧的源地址有没有相匹配的项目。如没有,就在转发表中增加一个项目(源地址,进入的接口)。如有,则把原有的项目进行更新。(2)转发帧。查找转发表中与收到帧的目的地址有无相匹配的项目。如没有,则通过所有其它的接口(但进入网桥的接口除外)进行转发。如有,则按转发表中给出的接口进行转发。但应注意,若转发表中给出的接口就是该项帧进入网桥的接口,则应丢弃这个帧,因为不需要桥网转发。package y;import java.util.*;public class dgpublic static void main(String args)String str1=AB,CA,DB,DA,AH,CB,DN,DC,BC,AC,EF,FE;/*接口1中存在ABCDEF*/String str2=GF,HA,NB,OH,KG,GN,HF,GC,HA,GE,OC, ;/*接口2中存在GHIMNO*/String s1=new String100;/*将字符串str1与str2交替存放在字符串s1中*/int q=0,p=0;for(int a=0;a100;a+)if(a%2=0&qstr1.length)/*在字符串中双数的存放str1*/s1a=str1q;q+;if(a%2!=0&qstr2.length)/*在字符串中单数的存放str2*/s1a=str2p;p+; String wangqiao=new String100;/*建立网桥,数组可以存储100个地址*/ wangqiao0=new String(as);/*首先建立第一任意的地址形式,以便以后调用复制*/ int m=0;System.out.println(s1.length);/*输出字符串数组s1的长度*/int flag2=0;for(int i=0;s1i!=null;i+)/*循环调用字符串数组s1的地址*/char k=s1i.toCharArray();/*将字符串s1i转换为字符,以便调用源地址和目的地址*/ for(int j=0;wangqiaoj!=null;j+) char wangqiao2=wangqiaoj.toCharArray();/*循环调用网桥数组中的地址,判断源地址是否在网桥转放表中*/if(k0=wangqiao20)/*检查第一个发送地址是否在网桥的转换表上*/flag2=0; for(int b=0;wangqiaob!=null;b+) char wangqiao3=wangqiaob.toCharArray();/*循环调用网桥数组中的地址,判断目的地址是否在网桥转放表中*/ if(k1!=wangqiao30)/*b比较目的地址是否在转换表wangqiao中*/ flag2=1;/*目的地址不存在转换表标志*/ if(k1=wangqiao30) if(wangqiao21=wangqiao31)/*判断源地址是否与目的地址相同,相同不转发*/ System.out.println(s1i+ 不转发); flag2=0;/*目的地址存在转换表标志*/ break;/*跳出第一个for循环*/ else if(wangqiao21=1) System.out.println(s1i+ 由接口 2 转发);/*源地址与目的地址不相同,转发*/ flag2=0; break; else System.out.println(s1i+ 由接口 1 转发);/*源地址与目的地址不相同,转发*/ flag2=0; break; if(flag2=1)if(wangqiao21=1) System.out.println(s1i+ 由接口 2 转发);/*源地址与目的地址不相同,转发*/ flag2=0; break; else System.out.println(s1i+ 由接口 1 转发);/*源地址与目的地址不相同,转发*/ flag2=0; break; /*StringBuffer().toString() 转换为String. new StringBuffer(String),转换为StringBuffer*/ StringBuffer str=new StringBuffer(s1i); String no; if(i%2=0)/*i为双数存储为接口在1上*/ no=1;elseno=2;/*i为单数存储为接口在2上*/str.replace(1,2,no);String ss=str.toString();int flag=0;/*判断使地址添加到网桥到标志*/int flag3=0;/*判断目的地址存在地址中标志,在即使flag3=1*/for(int j=0;wangqiaoj!=null;j+)if(ss.equals(wangqiaoj) /*判断是否使地址添加到网桥到*/ flag=1; /*判断使地址添加到网桥到标志*/if(flag!=1)wangqiaom=ss;/*地址转换表中不存在,加进发地址和接口号*/char new_ss=ss.toCharArray();if(m0) s=s+s1; / 判断字节长度为偶数?是,就补一个字节的0以凑成偶数 byte b = s.getBytes();/把字符串变成字节,用数组存放。 / String t = new String(b); int i=0,j=1,f=0; int carry=0; while(i65536) f=f-65536;/ 超过16位就减去(由于

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论