计算机网络基础课程设计方案.docx

上传人:b****5 文档编号:4100740 上传时间:2022-11-27 格式:DOCX 页数:17 大小:25.18KB
下载 相关 举报
计算机网络基础课程设计方案.docx_第1页
第1页 / 共17页
计算机网络基础课程设计方案.docx_第2页
第2页 / 共17页
计算机网络基础课程设计方案.docx_第3页
第3页 / 共17页
计算机网络基础课程设计方案.docx_第4页
第4页 / 共17页
计算机网络基础课程设计方案.docx_第5页
第5页 / 共17页
点击查看更多>>
下载资源
资源描述

计算机网络基础课程设计方案.docx

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

计算机网络基础课程设计方案.docx

计算机网络基础课程设计方案

信息技术学院

计算机网络基础

课程设计方案

目录

课程设计说明1

课程设计选题2

1.CRC算法模拟2

2.零比特填充模拟2

3.曼彻斯特编码模拟2

4.截断二进制指数退避算法3

5.透明网桥自学习与转发帧算法模拟3

6.IP分片模拟4

7.IP首部检验和算法模拟4

8.IPv4数据报封装模拟5

9.使用子网时IP分组转发模拟6

10.距离向量算法模拟7

11.UDP检验和算法模拟7

12.利用滑动窗口实现流量控制模拟8

13.慢开始、拥塞避免算法模拟9

课程设计示例11

1.字节填充法解决透明传输模拟11

课程设计选题

1.CRC算法模拟

【分值】20分

【页码】P68-69

【描述】

待传送的一组数据M以二进制字符存储在input_m.txt文件中,生成多项式P以二进制字符存储input_p.txt文件中。

编写CRC算法,计算冗余码R并输出到output_r文件中。

【提示】

a、模2加减可以采用按位异或运算的方法计算。

【举例】

input_m.txt

101001

input_p.txt

1101

output_r.txt

001

2.零比特填充模拟

【分值】10分

【页码】P74

【描述】

待传送的原始数据以二进制字符存储在input.txt文件中,内含若干5个连续1的子串、6个连续1的子串。

编写零比特填充算法,并将结果保存至output_f.txt文件;并且编写算法还原数据,结果保存至output_d.txt文件。

【提示】

a、原始数据只要包含5个连续1的子串、6个连续1的子串即可,内容任意。

【举例】

input.txt

010*********

output_f.txt

010*********

output_d.txt

010*********

3.曼彻斯特编码模拟

【分值】10分

【页码】P80

【描述】

待传送的原始数据以二进制字符存储在input.txt文件中。

编写曼彻斯特编码模拟算法,将编码的结果保证至output_e.txt;并且编写从电压高低到二进制数据的解码算法,结果保存至output_d.txt。

【提示】

a、用字符“HL”代表电压“前高后低”,表示码元1;用字符“LH”代表电压“前低后高”,表示码元0。

【举例】

input.txt

1000100111

output_e.txt

LHHLHLHLLHHLHLLHLHLH

output_d.txt

1000100111

4.截断二进制指数退避算法

【分值】10分

【页码】P82

【描述】

重传次数存储在input.txt文件中。

编写截断二进制指数退避算法,计算得到的重传推迟时间存入output.txt文件。

【提示】

a、以太网争用期为51.2μs,最多重传次数为16——这些可预定义为常量。

b、若重传已经超过16次,则将重传推迟时间设置为-1μs,表示应丢弃该帧。

【举例】

input.txt

1

output.txt

0(说明:

或51.2,随机选择;此括号内信息不是输出内容)

5.透明网桥自学习与转发帧算法模拟

【分值】20分

【页码】P94-96

【描述】

网络拓扑由input_top.txt文件给出,数据帧发送事件由input_event.txt文件给出。

网桥初始转发表为空。

试编写透明网桥自学习与转发帧算法,将网桥处理完每一发送事件后的网桥帧转发策略和当前转发表输出到output.txt文件。

【提示】

a、为简单起见,可以仅考虑单个两端口的网桥。

b、input_top.txt文件的每行包括“主机”、“连接的网桥端口号”等拓扑信息,主机用字母(除字母“Z”)编号,网络端口用数字编号。

c、input_event.txt文件的每行给出“源主机”、“目的主机”等信息,其中用目的主机为“Z”表示广播帧。

d、网桥帧转发策略的可能结果有“丢弃”、“向端口x转发“、”泛洪“。

e、一行中的多个字段自行决定分隔符,比如空格或制表符等。

【举例】

input_top.txt:

A1

B1

C2

D2

input_event.txt:

AD

BA

CZ

BC

output.txt:

事件1:

AtoD;网桥帧转发策略:

泛洪;转发表:

A1

事件2:

BtoA;网桥帧转发策略:

丢弃;转发表:

A1

B1

事件3:

CtoZ;网桥帧转发策略:

泛洪;转发表:

A1

B1

C2

事件4:

BtoC;网桥帧转发策略:

向端口2转发;转发表:

A1

B1

C2

6.IP分片模拟

【分值】10分

【页码】P123-124

【描述】

IP数据包原始长度、分片最大长度存储在input.txt文件中。

编写一算法计算分片结果,将每一分片的总长度、MF、DF、片偏移存入output.txt。

【提示】

a、设该IP首部无选项,IP固定首部长度为20字节。

b、一行中的多个字段自行决定分隔符,比如空格或制表符等。

【举例】

input.txt(注:

两字段分别是IP数据包原始长度、分片最大长度)

38201420

output.txt:

(注:

每行信息分别是分片总长度、MF、DF、片偏移)

1420100

142010175

102000350

7.IP首部检验和算法模拟

【分值】10分

【页码】P125

【描述】

20个字节的某IP首部以十六进制字符存储在input.txt文件中——每行8个字符(即4个字节),其中首部检验和字段为0。

编写IP首部检验和算法,检验和计算结果以4个十六进制字符形式存入output.txt。

【提示】

a、首部检验和的计算涉及每个字(16位)间的反码算术运算求和——计算规则见课本P125的脚注。

b、一行中的多个字段自行决定分隔符,比如空格或制表符等。

【举例】

input.txt:

45000086

4C374000

7F060000

C0A842D4

C0A863CB

output.txt:

874A

8.IPv4数据报封装模拟

【分值】20分

【页码】P122-125

【描述】

input.txt文件的第一行以点分十进制给出了某IP数据报的源IP地址、第二行以点分十进制给出了目的IP地址,第三行给出了待封装的TCP数据报长度。

整个TCP数据报的数据用字母“A”代替(ASCII为0x41)。

定义IP数据报固定首部数据结构,并编写封装算法,结果以每行8个的十六进制字符(即4个字节)存入output.txt文件。

【提示】

a、IP数据报首部的“区分服务字段填0、标识字段可随意设置、生存时间可随意设置(比如127),不考虑可选字段。

b、可以不考虑IP分片的问题,但应实现首部检验和的计算。

c、点分十进制地址到二进制地址的转换可以使用WinsockAPI(名词解释参见

unsignedlonginet_addr(constchar*cp)

入口参数cp:

点分十进制形式的IP地址

返回值:

网络字节顺序的IP地址,是无符号的长整数

d、一行中的多个字段自行决定分隔符,比如空格或制表符等。

【举例】

input.txt:

192.168.66.181

192.168.99.203

60

output.txt:

45000050

03704000

7F06D066

C0A842B5

C0A863CB

41414141

41414141

41414141

41414141

41414141

41414141

41414141

41414141

41414141

41414141

41414141

41414141

41414141

41414141

41414141

9.使用子网时IP分组转发模拟

【分值】20分

【页码】P133-135

【描述】

input_r.txt文件给出了某路由器的路由表,文件由若干行组成,每行给出了目的网络地址、子网掩码、下一跳地址等信息(地址均以点分十进制表示);input_d.txt文件给出了该路由器收到的一系列IP数据报点分十进制表示的目的IP地址。

编写使用子网时IP分组转发算法,将每一个IP数据报的处理结果输出到output.txt文件。

【提示】

a、点分十进制地址到二进制地址的转换可以使用WinsockAPI中的inet_addr函数。

b、一行中的多个字段自行决定分隔符,比如空格或制表符等。

【举例】

input_r.txt:

(注:

每行包括目的网络地址、子网掩码、下一跳地址等信息;最后一行给出了默认路由)

128.30.33.0255.255.255.128Interface0

128.30.33.128255.255.255.128Interface1

128.30.36.0255.255.255.0Router2

0.0.0.00.0.0.0Router3

input_d.txt:

128.30.33.13

128.30.33.130

128.30.36.2

128.50.39.3

output.txt:

(注:

每行包括目的IP地址、处理结果)

128.30.33.13Interface0

128.30.33.130Interface1

128.30.36.2Router2

128.50.39.3Router3

10.距离向量算法模拟

【分值】20分

【页码】P148-149

【描述】

input_r.txt文件给出了某路由器Rx的当前路由表信息,文件由若干行组成,第一行为路由器名,后续每行给出了目的网络(以网络名称表示)、距离、下一跳路由器等信息;input_n.txt文件给出了路由器Rx刚接收到的来自相邻路由器Ry的RIP路由更新信息,文件由若干行组成,第一行为路由器名,后续每行给出了目的网络、距离、下一跳路由器等信息。

编写距离向量更新算法,将路由器Rx更新后的路由表写入output.txt。

【提示】

a、可参照课本P149例4-5,以网络名称表示目的网络、以路由器名称或“直接交付”给出下一跳路由器信息。

b、一行中的多个字段自行决定分隔符,比如空格或制表符等。

【举例】

input_r.txt:

R6

Net23R4

Net34R5

input_n.txt:

R4

Net13R1

Net24R2

Net31直接交付

output.txt:

R6

Net14R4

Net25R4

Net32R4

11.UDP检验和算法模拟

【分值】10分

【页码】P185-187

【描述】

input.txt文件的第一、二行分别以点分十进制给出某即将传输的UDP数据报的源IP地址和目的IP地址,后续每行8个十六进制字符(即4个字节)给出整个UDP数据报的数据(其中检验和字段为0,最后一行可能少于4个字节)。

编写UDP检验和算法,检验和计算结果以4个十六进制字符形式存入output.txt。

【提示】

a、点分十进制地址到二进制地址的转换可以使用WinsockAPI中的inet_addr函数。

b、UDP的检验和计算包括伪首部、UDP首部和UDP数据部分,其中数据部分字节数为奇数时需在末尾填入一个全零字节参与计算。

c、一行中的多个字段自行决定分隔符,比如空格或制表符等。

【举例】

input.txt:

153.19.8.104

171.3.14.11

043F000D

000F0000

54455354

494E47

output.txt:

6912

12.利用滑动窗口实现流量控制模拟

【分值】20分

【页码】P203-204

【描述】

input.txt文件的第一行给出主机A发送给主机B的TCP报文段的大小(单位:

字节),第二行给出了主机A发送的起始序号seq,第三行给出了主机B设置的初始接收窗口rwnd的大小(单位:

字节),后续若干行描述了报文段传输事件——每行的第一个字段是方向(“A->B”或“B->A”),若方向为“A->B”则该行后续字段包括标志(“新发”或“重发”)、结果(“成功”或“丢失”),若方向为“A->B”则该行后续字段为新的接收窗口rwnd。

编写利用滑动窗口实现流量控制模拟算法,将处理结果写入output.txt——每行为一次传输事件的信息,包括方向、序号(若方向为“A->B”则为发送序号seq,若方向为“B->A”则为确认序号ack)、A主机实际还可发送的字节数(即减去已发字节数)、A主机实际还可发送的序号范围(若前一字段为0则不写此项)。

【提示】

a、设置两全局变量分别记录发送序号seq和确认序号ack,在处理每一事件时及时更新seq、ack的值。

b、确认序号ack是期望收到对方下一个报文段的第一个数据字节的序号。

c、设置一数组记录传输丢失的报文段序号,以便重传。

d、若一行有多个字段,自行决定分隔符,比如空格或制表符等。

【举例】

input.txt:

100

1

400

A->B新发成功

A->B新发成功

A->B新发丢失

B->A300

A->B新发成功

A->B新发成功

A->B重发成功

B->A100

A->B新发成功

B->A0

output.txt:

A->Bseq=1300101-400

A->Bseq=101200201-400

A->Bseq=201100301-400

B->Aack=201200301-500

A->Bseq=301100401-500

A->Bseq=4010

A->Bseq=2010

B->Aack=501100501-600

A->Bseq=5010

B->Aack=6010

13.慢开始、拥塞避免算法模拟

【分值】20分

【页码】P208-210

【描述】

input_s.txt文件给出了慢开始门限ssthresh状态变量的初始值;input_c.txt文件给出了若干个出现网络拥塞的传输轮次(取值在1-30之间)。

编写慢开始、拥塞避免模拟算法,计算并输出前30个传输轮次的拥塞窗口cwnd等信息,结果存入output.txt——每行包含轮次、cwnd、ssthresh、现用算法等信息。

【提示】

a、此模拟中的窗口单位不使用字节而使用报文段的个数。

b、拥塞窗口cwnd的初值为1,即第1传输轮次允许传输一个报文段,传输成功后cwnd即按照指数规律增长为2。

c、若一行有多个字段,自行决定分隔符,比如空格或制表符等。

【举例】

input_s.txt

16

input_c.txt

1223

output.txt:

1216慢开始

2416慢开始

3816慢开始

41616拥塞避免

51716拥塞避免

61816拥塞避免

71916拥塞避免

82016拥塞避免

92116拥塞避免

102216拥塞避免

112316拥塞避免

122416拥塞避免

13112慢开始

14212慢开始

15412慢开始

16812慢开始

171212拥塞避免

181312拥塞避免

191412拥塞避免

201512拥塞避免

211612拥塞避免

221712拥塞避免

231812拥塞避免

2419慢开始

2529慢开始

2649慢开始

2789慢开始

2899拥塞避免

29109拥塞避免

30119拥塞避免

课程设计示例

14.字节填充法解决透明传输模拟

【分值】10分

【页码】P67

【描述】

待传送的原始数据以十六进制字符存储在input.txt文件中,内含SOH(0x01)、EOT(0x04)、ESC(0x1B)等字符。

编写字节填充算法,并将结果保存至output_f.txt文件;并且编写算法还原数据,结果保存至output_d.txt文件。

【提示】

a、原始数据只要包含3种特殊字符即可,内容任意。

b、存储原始数据的input.txt文件中只可能出现十六进制字符,且长度为偶数。

【举例】

input.txt

AC00013C5604201B76

output_f.txt

AC001B013C561B04201B1B76

output_d.txt

AC00013C5604201B76

【程序清单】

01#include"stdio.h"

02

03typedefintstatus;

04#defineTRUE1

05#defineFALSE0

06

07#defineMAX_BUF_LEN1500

08

09#defineSOH0x01

10#defineEOT0x04

11#defineESC0x1B

12

13typedefstructStuffingString

14{

15unsignedcharbuf[MAX_BUF_LEN];

16unsignedintlen;

17}*PStuffingString;

18

19statusbyte_stuffing(PStuffingStringpsin,PStuffingStringpsf)

20{

21unsignedinti=0;

22psf->len=0;

23while(ilen)

24{

25if(psin->buf[i]==SOH||psin->buf[i]==EOT||psin->buf[i]==ESC)

26psf->buf[psf->len++]=ESC;

27psf->buf[psf->len++]=psin->buf[i++];

28}

29returnTRUE;

30}

31

32statusbyte_unstuffing(PStuffingStringpsf,PStuffingStringpsd)

33{

34unsignedinti=0;

35psd->len=0;

36while(ilen)

37{

38if(psf->buf[i]==ESC)

39{

40i++;

41if(psf->buf[i]!

=SOH&&psf->buf[i]!

=EOT&&psf->buf[i]!

=ESC)

42returnFALSE;

43}

44psd->buf[psd->len++]=psf->buf[i++];

45}

46returnTRUE;

47}

48

49statusinput(charf[],PStuffingStringpsin)

50{

51FILE*fp;

52psin->len=0;

53if((fp=fopen(f,"r"))==NULL)

54returnFALSE;

55while(fscanf(fp,"%2X",&psin->buf[psin->len++])!

=EOF);

56psin->len--;

57if(fclose(fp))

58returnFALSE;

59returnTRUE;

60}

61

62statusoutput(charf[],PStuffingStringpsout)

63{

64FILE*fp;

65unsignedinti=0;

66if((fp=fopen(f,"w"))==NULL)

67returnFALSE;

68while(ilen)

69{

70if(psout->buf[i]<0x10)

71fprintf(fp,"0");

72fprintf(fp,"%0X",psout->buf[i++]);

73}

74if(fclose(fp))

75returnFALSE;

76returnTRUE;

77}

78

79voidmain()

80{

81StuffingStringsin,sf,sd;

82if(input("c:

\input.txt",&sin)==TRUE)

83{

84if(byte_stuffing(&sin,&sf)==TRUE)

85{

86output("c:

\output_f.txt",&sf);

87if(byte_unstuffing(&sf,&sd)==TRUE)

88{

89output("c:

\output_d.txt",&sd);

90printf("byte-stuffing/unstuffingsuccessful!

\n");

91}

92}

93}

94}

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

当前位置:首页 > 小学教育 > 数学

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

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