网基课程设计.docx

上传人:b****6 文档编号:2944656 上传时间:2022-11-16 格式:DOCX 页数:15 大小:429.08KB
下载 相关 举报
网基课程设计.docx_第1页
第1页 / 共15页
网基课程设计.docx_第2页
第2页 / 共15页
网基课程设计.docx_第3页
第3页 / 共15页
网基课程设计.docx_第4页
第4页 / 共15页
网基课程设计.docx_第5页
第5页 / 共15页
点击查看更多>>
下载资源
资源描述

网基课程设计.docx

《网基课程设计.docx》由会员分享,可在线阅读,更多相关《网基课程设计.docx(15页珍藏版)》请在冰豆网上搜索。

网基课程设计.docx

网基课程设计

信息技术学院

计算机网络基础

课程设计报告

学号:

姓名:

班级:

题号:

01、06、07

题目:

曼切斯特编码模拟、透明网桥自学习域转发帧算法模拟、IP分片模拟

分值:

10+20+10

目录

一、理论基础与原理分析1

二、数据结构与算法分析2

三、测试数据与结果分析6

四、课程设计心得与体会8

五、课程设计程序源代码10

一、理论基础与原理分析

(归纳整理相关知识,用文字、图表等表述算法原理,可以举例说明。

切忌照抄课本)

01、

曼彻斯特编码,常用于局域网传输。

曼彻斯特编码将时钟和数据包含在数据流中,在传输代码信息的同时,也将时钟同步信号一起传输到对方,每位编码中有一跳变,不存在直流分量,因此具有自同步能力和良好的抗干扰性能。

但每一个码元都被调成两个电平,所以数据传输速率只有调制速率的1/2。

就是说主要用在数据同步传输的一种编码方式。

在曼彻斯特编码中,用电压跳变的相位不同来区分1和0,即用正的电压跳变表示1,用负的电压跳变表示0。

因此,这种编码也称为相位编码。

由于跳变都发生在每一个码元的中间,接收端可以方便地利用它作为位同步时钟,因此,这种编码也称为自同步编码。

在曼彻斯特编码中,每一位的中间有一跳变,位中间的跳变既作时钟信号,又作数据信号;从低到高跳变表示“0”,从高到低跳变表示“1”。

还有一种是差分曼彻斯特编码,每位中间的跳变仅提供时钟定时,而用每位开始时有无跳变表示“0”或“1”,有跳变为“0”,无跳变为“1”。

06、

1、每个网桥保存一个动态路由表(目的站点地址,端口号)。

2、初始时,该路由表为空,以后通过逆向自学习方法获取路由信息。

逆向自学习方法:

当一个MAC帧到达网桥时,网桥根据其源MAC地址以及到达的端口号,向路由表增加或刷新一条记录。

3、路由表的每一项都设置一个超时计时器,若超时,则删除该项,以适应拓扑结构的变化。

4、当某一帧到达网桥时,查询路由表。

若找到目的地址,则向对应的端口转发。

若找不到目的地址,则向所有的端口广播(除了它所到达的端口外)。

5、当网络拓扑结构出现环路时,应阻塞某些网桥的某些端口,消除环路,使网络呈现出生成树结构(Spaningtree)。

当一帧到达时,网桥必须决定将其丢弃还是转发。

如果要转发,则必须决定发往哪个LAN。

在插入网桥之初,由于网桥不知道任何目的地的位置,因而采用扩散算法(floodingalgorithm),把每个到来的、目的地不明的帧输出到连在此网桥的所有LAN中(除了发送该帧的LAN)。

随着时间的推移,网桥将了解每个目的地的位置。

一旦知道了目的地位置,发往该处的帧就只放到适当的LAN上,而不再散。

07、

分片和重新组装的过程对传输层是透明的,其原因是当IP数据报进行分片之后,只有当它到达目的站时,才可进行重新组装,且它是由目的端的IP层来完成的。

分片之后的数据报根据需要也可以再次进行分片。

IP分片和完整IP报文差不多拥有相同的IP头,ID域对于每个分片都是一致的,这样才能在重新组装的时候识别出来自同一个IP报文的分片。

在IP头里面,16位识别号唯一记录了一个IP包的ID,具有同一个ID的IP分片将会重新组装;而13位片偏移则记录了某IP片相对整个包的位置;而这两个表中间的3位标志则标志着该分片后面是否还有新的分片。

这三个标志就组成了IP分片的所有信息(将在后面介绍),接受方就可以利用这些信息对IP数据进行重新组织

分片重组是IP层一个最重要的工作,其处理的主要思想:

当数据包从一个网络A进入另一个网络B时,若原网络的数据包大于另一个网络或者接口的MTU长度,则需要进行分片(若设置DF为1,则丢弃,并回送ICMP不可达差错报文)。

因而在IP数据包的报头有若干标识域注明分片包的共同标识号、分片的偏移量、是否最后一片及是否允许分片。

传输途中的网关利用这些标识域进可能的再行分片,目有主机把收到的分片进行重组以恢重数据。

因此,分片包在经过网络监测设备、安全设备、系统管理设备时,为了获取信息、处理数据,都必须完成数据包的分片或重组。

二、数据结构与算法分析

(结合程序流程图、模块结构图等图表分析程序结构、关键数据结构、关键算法。

切忌粘贴源代码)

01、

在曼彻斯特编码中,用电压跳变的相位不同来区分1和0,即用正的电压跳变表示1,用负的电压跳变表示0。

06、

透明网桥采用的算法是逆向学习法(backwardlearning)。

网桥按混杂的方式工作,故它能看见所连接的任一LAN上传送的帧。

查看源地址即可知道在哪个LAN上可访问哪台机器,于是在散列表中添上一项。

当计算机和网桥加电、断电或迁移时,网络的拓扑结构会随之改变。

为了处理动态拓扑问题,每当增加散列表项时,均在该项中注明帧的到达时间。

每当目的地已在表中的帧到达时,将以当前时间更新该项。

这样,从表中每项的时间即可知道该机器最后帧到来的时间。

网桥中有一个进程定期地扫描散列表,清除时间早于当前时间若干分钟的全部表项。

于是,如果从LAN上取下一台计算机,并在别处重新连到LAN上的话,那么在几分钟内,它即可重新开始正常工作而无须人工干预。

这个算法同时也意味着,如果机器在几分钟内无动作,那么发给它的帧将不得不散发,一直到它自己发送出一帧为止。

到达帧的路由选择过程取决于发送的LAN(源LAN)和目的地所在的LAN(目的LAN),

1、如果源LAN和目的LAN相同,则丢弃该帧。

2、如果源LAN和目的LAN不同,则转发该帧。

3、如果目的LAN未知,则进行泛洪。

07、

分片重组是IP层一个最重要的工作,其处理的主要思想:

当数据包从一个网络A进入另一个网络B时,若原网络的数据包大于另一个网络或者接口的MTU长度,则需要进行分片(若设置DF为1,则丢弃,并回送ICMP不可达差错报文)。

因而在IP数据包的报头有若干标识域注明分片包的共同标识号、分片的偏移量、是否最后一片及是否允许分片。

传输途中的网关利用这些标识域进可能的再行分片,目有主机把收到的分片进行重组以恢重数据。

三、测试数据与结果分析

(结合输入的测试用例和算法原理,分析运行结果。

切忌仅仅粘贴数据)

01、

06、

07、

四、课程设计心得与体会

(课程设计中的收获、经验、教训等等)

刚开始的时候看到这个题目觉得很简单。

应该很容易就能做出来。

后来发现还有很多的小问题,首先用java编写有关本题的代码。

在01题目中我们先要从一个原本就写好的input.txt文件中读取里面的内容。

而且要一个数字一个数字的读。

因此,我不能直接用Scanner包中的next()来直接读取。

而是要用其他方法来解决读取问题。

再经过判断读取的数据是0还是1来决定在output_e.txt中的输入的内容。

然后从output_e.txt中读取数据,此时要两个两个的读。

经过判断还原为0和1,输出到output_d.txt中。

除此之外,还要进行一些简单的异常处理,比如找不到文件。

经过此次实验,我深刻的了解了曼切斯特编码。

而且,熟悉了部分的java代码。

更熟悉的了解了有关文件的读入和输出。

在06里,比如:

路由表的建立、每次事件对发送和接受端口是否已经存在在路由表中,要进行对比、路由表的更新、还有对最后的发送方式的选择等。

我用knum2即接受端口是否存在在路由表中和k[1][num1]和k[1][num2](发送端口和接受端口)对比,来判断进行怎样的发送方式。

经过此次实验,我深刻的了解了透明网桥的工作原理。

而且,熟悉了部分的java代码。

更熟悉的了解了有关文件的读入和输出。

07中通过此次实验,因为有了上次实验的经历。

此次实验更为迅速的完成了。

通过此次实验,我了解了IP分片的方法和计算方法。

在读取文件input.txt文件中的两个数据后,通过数据之间的计算,就可以得出要分片的数量和偏移量这些数据。

while(a[0]!

=0){

if(a[0]>a[1]){

intk=a[1]+20;

w.write(k+""+"1"+""+"0"+""+j*i+"\r\n");

a[0]=a[0]-a[1];

}

else{

intk=a[0]+20;

w.write(k+""+"0"+""+"0"+""+j*i+"\r\n");

a[0]=0;

}

j++;

}

这部分代码就是计算的部分。

通过while就可以一次又一次的输出每次的分片的内容。

通过if来区分最后一次和前面的分片的区别。

五、课程设计程序源代码

(粘贴所有程序源代码)

01、

importjava.io.*;

publicclassManchester{

publicstaticvoidmain(String[]args)throwsException{

//TODOAuto-generatedmethodstub

try{

Stringmid="";

Filef2=newFile("output_e.txt");

f2.createNewFile();

FileWriterw=newFileWriter("output_e.txt");

FileReaderfr=newFileReader("input.txt");

charstr[]=newchar[1];

while(fr.read(str)!

=-1){

mid=String.valueOf(str);

if(mid.equals("1")){

w.append("LH");

}

elseif(mid.equals("0")){

w.append("HL");

}

}

w.close();

fr.close();

}

catch(FileNotFoundExceptione){

System.out.println("找不到文件!

请去创建文件");

}

try{

Stringm="";

Filef3=newFile("output_d.txt");

f3.createNewFile();

FileWriterw=newFileWriter("output_d.txt");

FileReaderfr=newFileReader("output_e.txt");

charstr[]=newchar[2];

while(fr.read(str)!

=-1){

m=String.valueOf(str);//将char的str转化为String

if(m.equals("LH")){

w.append("1");

}

elseif(m.equals("HL")){

w.append("0");

}

}

w.close();

fr.close();

}

catch(FileNotFoundExceptione){

System.out.println("找不到文件!

请去创建文件");

}

}

}

06、

importjava.io.*;

importjava.util.Scanner;

publicclassTransparentBr

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 表格模板 > 调查报告

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1