搜档网
当前位置:搜档网 › 计网实验报告

计网实验报告

计网实验报告
计网实验报告

CENTRAL SOUTH UNIVERSITY

计算机网络实验报告

题目计算机网络实验

学生姓名梁云华

班级学号0909082311

行政班级计算机0806

指导教师刘丽敏

设计时间2010年12月

实验一:距离向量路由算法的实现

1.1实验目的

本实验是计算机网络课程的实践性锻炼环节。通过实验,模拟距离向量路由算法的路由表交换过程,演示每轮交换后路由表的变化。帮助学生更好地掌握网络通信协议的实现技术,锻炼学生应用高级编程语言完成通信编程的能力,使学生加深对网络协议本质的理解,巩固课堂所学的理论知识。

1.2实验内容

模拟距离向量路由算法的路由表交换过程,演示每轮交换后路由表的变化。

1.3实验原理

距离向量路由算法(Bellman-Ford Routing Algorithm),也叫做最大流量演算法(Ford-Fulkerson Algorithm),

其被距离向量协议作为一个算法,如RIP, BGP, ISO IDRP, NOVELL IPX。使用这个算法的路由器必须掌握这个距离表(它是一个一维排列-“一个向量”),它告诉在网络中每个节点的最远和最近距离。在距离表中的这个信息是根据临近接点信息的改变而时时更新的。表中数据的量和在网络中的所有的接点(除了它自己本身)是等同的。这个表中的列代表直接和它相连的邻居,行代表在网络中的所有目的地。每个数据包括传送数据包到每个在网上的目的地的路径和距离/或时间在那个路径上来传输(我们叫这个为“成本”)。这个在那个算法中的度量公式是跳跃的次数,等待时间,流出数据包的数量,等等。

在距离向量路由算法中,相邻路由器之间周期性地相互交换各自的路由表备份。当网络拓扑结构发生变化时,路由器之间也将及时地相互通知有关变更信息。

距离向量路由算法,使用这个算法的路由器必须掌握这个距离表(它是一个一维排列,即一个向量),它告诉在网络中每个节点的最远和最近距离。在距离表中的这个信息是根据临近接点信息的改变而时时更新的。表中数据的量和在网络中的所有的接点(除了它自己本身)是等同的。这个表中的列代表直接和它相连的邻居,行代表在网络中的所有目的地。每个数据包括传送数据包到每个在网上的目的地的路径和距离/时间在那个路径上来传输(我们叫这个为“成本”)。这个在那个算法中的度量公式是跳跃的次数,等待时间,流出数据包的数量等等。

在距离向量路由算法中,相邻路由器之间周期性地相互交换各自的路由表备份。当网络拓扑结构发生变化时,路由器之间也将及时地相互通知有关变更信息。

1.4实验步骤

1.4.1设计思路

程序先定义了一个路由表——RoutNode data[ROUTNUM][ROUTNUM],路由表

的初始信息存储在文件中,程序运行是先调用函数InitData(FILE* pfile)从文件中

读取路由表的初始信息,然后输出初始路由表的信息,Communication(int recv, int

send)函数主要是向邻近节点发送自己的路由表信息,Exchange()函数则根据新路由表信息更新自己的路由表。当所有的路由表节点都更新一遍后,整个路由表更新完毕。

1.4.2编写程序

程序的源代码如下:

#include "stdio.h"

#include "stdlib.h"

#include "alloc.h"

#define ROUTNUM 7

typedef struct

{

int dis;

int from;

}RoutNode;

RoutNode data[ROUTNUM][ROUTNUM]; /*路由表*/

void InitData(FILE* pfile); /*从数据文件读取数据,初始化路由表*/ void OutputRoutData(); /*输出所有的路由表*/

void Communication(int recv, int send);/*send点向recv点发送自己的路由表*/ void Exchange(); /*所有节点进行一次数据交换, 更新路由表*/

void main()

{

int start, end, i, j;

FILE *pfile;

pfile = fopen("1.txt", "r");

if (pfile == NULL)

{

printf("文件打开错误,按任意键退出.\n");

getch();

return;

}

else

InitData(pfile);

fclose(pfile);

printf("\n路由表初始:\n");

for (i = 0; i

{

printf("%c||", i + 65);

for (j = 0; j < ROUTNUM; j++)

if (data[i][j].dis > 0)

printf("<%c %d> ", j + 65, data[i][j].dis);

printf("\n");

}

for (i = 0; i < ROUTNUM; i++)

{

Exchange();

}

printf("\n路由表交换:\n");

OutputRoutData();

printf("输入起始路由节点(%d-%d) : ", 0, ROUTNUM - 1);

scanf("%d", &start);

printf("输入终点路由节点(%d-%d) : ", 0, ROUTNUM - 1);

scanf("%d", &end);

if (start == end || start < 0 || start > 6 || end < 0 || end > 6) {

printf("\n输入错误,请按任意键退出\n");

getch();

return;

}

else

{

int cur = start;

int total = 0;

if (data[start][end].dis < 0)

{

printf("没有路由路径发现!\n");

getch();

return;

} /*end of if*/

printf("%c->", cur + 65);

while (data[cur][end].from >= 0)

{

total += data[cur][data[cur][end].from].dis;

printf("%c->", data[cur][end].from + 65);

cur = data[cur][end].from;

} /*end of while*/

total += data[cur][end].dis;

printf("%c\n总的路由距离 = %d", end + 65, total);

getch();

return;

} /*end of else*/

}

void InitData(FILE* pfile)

{

char num[10];

int i = 0;

char c;

int m, n;

fseek(pfile, 0, 0);

for (m = 0; !feof(pfile) && m < 7; m++)

{

for (n = 0; !feof(pfile) && n < 7; n++)

{

while (!feof(pfile))

{

c = fgetc(pfile);

if (c == ', ') /*读完一个数字*/

{

num[i] = '\0';

data[m][n].dis = atoi(num);

data[m][n].from = -1;

i = 0;

break;

} /*end of if*/

else if ((c >= '0' && c <= '9') || c == '-') /*如果读到数字或符号*/

{

num[i++] = c;

} /*end of else if*/

} /*end of while*/

} /*end of for (n = 0*/

} /*end of for (m = 0*/

}

void OutputRoutData()

{

int i, j;

printf(" ");

for (i = 0; i < ROUTNUM; i++)

{

printf(" %c ", i + 65);

}

printf("\n");

for (i = 0; i < ROUTNUM; i++)

{

printf("%c ", i + 65);

for (j = 0; j < ROUTNUM; j++)

{

if (data[i][j].dis < 0) /*如果无路径*/

printf(" -");

else

if(data[i][j].dis > = 10)

printf(" %d", data[i][j].dis);

else

printf(" %d", data[i][j].dis);

if (data[i][j].from < 0) /*如果未经过其它节点*/

printf(" - ");

else

printf(" %c ", data[i][j].from + 65);

} /*end of for (j = 0*/

printf("\n");

} /*end of for (i = 0*/

}

void Communication(int recv, int send)

{

int i;

for (i = 0; i < ROUTNUM; i++)

{

if (data[send][i].dis > 0) /*如果send节点到i号节点有路线*/

{

if (data[recv][i].dis < 0) /*如果recv到i号节点无路径*/

{

data[recv][i].dis = data[send][i].dis +

data[recv][send].dis;

data[recv][i].from = send;

}

else if (data[recv][i].dis > data[send][i].dis +

data[recv][send].dis)

/*如果现有路径比新路径远*/

{

data[recv][i].dis = data[send][i].dis +

data[recv][send].dis;

data[recv][i].from = send;

}

} /*end of if*/

} /*end of for*/

}

void Exchange()

{

int i, j;

for (i = 0; i < ROUTNUM; i++)

{

for (j = 0; j < ROUTNUM; j++)

{

if (data[i][j].dis > 0) /*如果两个节点之间有路径*/

{

Communication(j, i); /*将i号节点的路由表发送给j号节点*/ } /*end of if*/

} /*end of for (j = 0*/

} /*end of for (i = 0*/

}

1.5实验结果分析

1.5.1结果截图

1.5.2结果分析

路由表初始信息从文件读取,根据距离向量路由算法系统自动完成路由表的更新操作,最后任意输入两个路由表接点,则可得出两接点之间的最短路径。

1.6心得体会

通过模拟距离向量路由算法的路由表交换过程,演示每轮交换后路由表的变化,我深入了解到了路由算法的工作原理和思想,从一开始的理论掌握到试验后的模拟编写与应用,在整个过程中,体会到了发现问题与解决问题的重要性,加深了对知识的理解。

在今后的学习中,我一定要注意自己能力的提高和培养,再学好理论的基础上多实践,加紧对知识学习的规范化和系统化,对学过的知识的经常性的进行归纳和总结,只有这样我们才能更好的掌握知识,不至于将过去的知识遗忘。

实验二链路状态路由算法

2.1实验目的

通过模拟链路状态路由算法的路由表交换过程,演示每轮交换后路由表的变化,加深对链路状态路由算法的理解。

2.2实验内容

实现链路状态路由算法中的最短路径算法。

2.3实验原理

链路状态路由协议是目前使用最广的一类域内路由协议。它采用一种“拼图”的设计策略,即每个路由器将它到其周围邻居的链路状态向全网的其他路由器进行广播。这样,一个路由器收到从网络中其他路由器发送过来的路由信息后,它对这些链路状态进行拼装,最终生成一个全网的拓扑视图,近而可以通过最短路径算法来计算它到别的路由器的最短路径。

链路状态算法(也称最短路径算法)发送路由信息到互联网上所有的结点,然而对于每个路由器,仅发送它的路由表中描述了其自身链路状态的那一部分。距离向量算法(也称为Bellman-Ford算法)则要求每个路由器发送其路由表全部或部分信息,但仅发送到邻近结点上。从本质上来说,链路状态算法将少量更新信息发送至网络各处,而距离向量算法发送大量更新信息至邻接路由器。——由于链路状态算法收敛更快,因此它在一定程度上比距离向量算法更不易产生路由循环。但另一方面,链路状态算法要求比距离向量算法有更强的CPU能力和更多的内存空间,因此链路状态算法将会在实现时显得更昂贵一些。除了这些区别,两种算法在大多数环境下都能很好地运行。

2.4实验步骤

2.4.1设计思路

首先建立图,当图建立完成后,就相当于在链路状态算法中,已经完成测量到邻居节点的开销,并把它告知其它节点。之后根据Dijkstra 算法,计算所选中节点到其它各节点最短路径的开销。

2.4.2 编写程序

程序源代码如下:

#include "stdafx.h"

#include "iostream.h"

const int N = 6, Infinite = 1000; //N节点数

class edge

{

public:

int numver;

int weight;

edge* nextedge;

edge(int num, int w, edge *next)

{

numver = num;

weight = w;

nextedge = next;

}

};

class vertex

{

public:

int distance[N];

char by[N];

edge* firstedge;

vertex(edge *next)

{

firstedge = next;

}

};

int main(int argc, char* argv[])

{

vertex *v[N];

int m, w;

edge *e, *e1;

char c;

void BuildGraph(vertex *v[]);

void ShortestPaths(vertex *v[], int v0);

void print(vertex *v[]);

BuildGraph(v);

for (int i = 0; i < N; i++)

ShortestPaths(v, i);

print(v);

do

{

cout<<"Input a node: "; //输入节点若已启动,则将其停止,否则,反之

cin>>c;

m = c - 65; //将输入的节点字符转换为编号

e = v[m]->firstedge; //检查输入节点的邻边

if (e->weight < Infinite) //若邻边的权小于无穷大,则将此节点断开do

{

e->weight += Infinite; //将此节点到邻居节点的权设为无穷大

w = e->numver;

e1 = v[w]->firstedge;

while (e1->numver != m)

e1 = e1->nextedge;

e1->weight += Infinite; //将其它节点到输入节点的权设为无穷大

e = e->nextedge;

} while (e != NULL); //检查输入节点的所有邻边

else //否则,将此节点连通

do

{

e->weight -= Infinite; //恢复为原来的权值

w = e->numver;

e1 = v[w]->firstedge;

while( e1->numver != m )

e1 = e1->nextedge;

e1->weight -= Infinite;

e = e->nextedge;

} while (e != NULL);

for (int i = 0; i < N; i++)

ShortestPaths(v, i);

print(v);

} while(c != '0');

return 0;

}

int Mindist(int dist[], int s[])

{

int min = Infinite * 2;

int node;

for (int i = 0; i < N; i++)

if (s[i] == 0 && dist[i] < min)

{

min = dist[i];

node = i;

}

return node;

}

void ShortestPaths(vertex *v[], int v0) //求出从v0出发到其它各个节点的最短距离

{

edge *e;

int s[N], u, dist, father[N], num; //father[i]记录最短路径上节点i的父节点

for (int i = 0; i < N; i++)

{

s[i] = 0;

father[i] = v0;

v[v0]->distance[i] = Infinite;

v[v0]->by[i] = i + 65;

}

e = v[v0]->firstedge;

while (e != NULL)

{

v[v0]->distance[e->numver] = e->weight;

e = e->nextedge;

}

s[v0] = 1;

v[v0]->distance[v0] = 0;

for (i = 1; i < N; i++)

{

u = Mindist(v[v0]->distance, s); //选出最短路径经过的节点(此节点还未被计入S

s[u] = 1; //将此节点计入S

for (int j = 0; j < N; j++)

{

if (s[j] == 0)

{

dist = Infinite;

e = v[u]->firstedge;

while (e != NULL)

{

if (e->numver == j)

{

dist = v[v0]->distance[u] + e->weight;

break;

}

e = e->nextedge;

}

if (dist < v[v0]->distance[j])//更新所有节点到v0的最短距离

{

father[j] = u;

v[v0]->distance[j] = dist;

}

}

}

}

for (i = 0; i < N; i++) //计算从v0出发到各个节点最短距离经过的邻近节点{

num = i;

while (father[num]! = v0)

num = father[num];

v[v0]->by[i] = num + 65;

}

}

void BuildGraph(vertex *v[])

{

edge *e, *e1, *e2;

e1 = new edge(4, 5, NULL);

e = new edge(1, 4, e1);

v[0] = new vertex(e);

e2 = new edge(5, 6, NULL);

e1 = new edge(2, 2, e2);

e = new edge(0, 4, e1);

v[1] = new vertex(e);

e2 = new edge(4, 1, NULL);

e1 = new edge(3, 3, e2);

e = new edge(1, 2, e1);

v[2] = new vertex(e);

e1 = new edge(5, 7, NULL);

e = new edge(2, 3, e1);

v[3] = new vertex(e);

e2 = new edge(5, 8, NULL);

e1 = new edge(2, 1, e2);

e = new edge(0, 5, e1);

v[4] = new vertex(e);

e2 = new edge(4, 8, NULL);

e1 = new edge(3, 7, e2);

e = new edge(1, 6, e1);

v[5] = new vertex(e);

}

void print(vertex *v[])

{

char c = 'A';

cout<<" A B C D E F"<

for (int i = 0; i < N; i++ )

{

cout<

for (int j = 0; j < N; j++ )

{

if (v[i]->distance[j] >= Infinite || v[i]->distance[j] == 0) cout<<"-"<<"\t";

else

cout<distance[j]<<" "<by[j]<<"\t";

}

cout<

}

}

2.5实验结果分析

2.5.1 结果截图

2.5.2结果分析

该程序是简化了链路状态路由算法,在建立图的过程中已经完成了链路状态路由算法的前四步,最后只对选中的节点运行Dijkstra算法,即链路状态路由算法的最后一步。因此,该程序与实际使用的链路状态路由算法相差较大。

2.6心得体会

通过实现链路状态路由算法中的最短路径算法。我进一步了解到了链路状态路由算法中的最短路径算法的工作原理和思想,从一开始的理论掌握到试验后的模拟编写与应用,在整个过程中,体会到了发现问题与解决问题的重要性,加深了对知识的理解,并初步学会运用所学知识。

在今后的学习中,我一定要注意自己能力的提高和培养,再学好理论的基础上多实践,加紧对知识学习的规范化和系统化,对学过的知识的经常性的进行归纳和总结,只有这样我们才能更好的掌握知识,不至于将过去的知识遗忘。

计组实验报告

计算机组成原理实验报告 实验1:VERILOG 设计基础 专业班级:14级计算机二班 学号:14048001 姓名:杨娜 学号:14048003 姓名:周蓉 实验地点:理工楼901 实验时间:2016年5月14日

实验十VGA显示控制器的设计 一、实验目的 1、学习VERILOG的基本语法和编程规则 2、掌握通用寄存器等常用基本数字模块的VERILOG描述和基本设计方法 3、理解带使能控制和异步清零的8位寄存器的设计原理 4、掌握使用VERILOG设计和验证带使能控制和异步清零的8位寄存器的方法 5、掌握移位寄存器的设计方法 二、实验任务 1、设计一个带使能控制和异步清零的8位寄存器REG8X,实现8位输入的锁存,在时钟的上升沿处得到一个8位的输出和一个8位的反向输出,将结果显示在发光二极管。 模块的端口描述如下: 模块的参考物理结构如下: R7 R6 R i R 0 7 6 i 0 带使能控制和异步清零的8位寄存器 模块的使用注意事项

1.数据源D(7..0)一直加在寄存器的数据输入端; 2.周期性的时钟信号Clock一直加在寄存器的时钟输入端 3.使能信号Enable控制寄存器是否接受数据。当Enable = '0'时,寄存器不 接受数据,保持原来的状态不变;当Enable = '1'时,在时钟信号Clock正 跳变时,寄存器接受并保存当时D(7..0)的数据; 4.本寄存器其它方面的功能与上述的寄存器相同。 完成的参考电路图如下:dout=q 2、设计一个有左、右移位功能的8位寄存器REGSHIFT8,并仿真验证。

三、实验内容 1、通过输入数据先进行计算,并通过实验进行验证REG8X。 (1)、将清零信号Resetn(sw17)设为0,将输入信号D(sw7~sw0)设为10101010,观察输出信号Q(ledr7~ledr0)和Qb(ledg7~ledg0),观察并记录输出。 (2)、将清零信号Resetn(sw17)设为1,在时钟信号处输入一个上升沿(按下key0),观察并记录输出。 (3)、将输入信号D(sw7~sw0)设为01010101,观察并记录输出。 (4)、在时钟信号处输入一个上升沿(按下key0),观察并记录输出。 (5)、自行完善设计表格,观察并记录测试输出。 实验数据表 2、通过输入数据先进行计算,并通过实验进行验证REGSHIFT8。 (1)、测试清零信号Resetn (2)、测试移位功能 (3)、测试寄存功能 (4)、自行设计表格观察并记录测试输出。 实验数据表

杭电计组实验报告10

计组实验十 老师:包健 一、源代码测试模块代码: module Top( inputinclk, inputmem_clk, inputrst, outputreg[7:0] LED, input [3:0] SW ); wireclk; MyButtonmb( .clk_100MHz(mem_clk), .BTN(inclk), .BTN_Out(clk) ); wire [31:0] ALU_F; wire [31:0] M_R_Data; wire ZF; wire OF; wire [31:0]PC; My_I_CPUmy_i_cpu( .clk(clk), .mem_clk(mem_clk), .rst(rst), .ALU_F(ALU_F), .M_R_Data(M_R_Data), .ZFF(ZF), .OF(OF), .PC_out(PC) ); always@(*) begin case(SW) 4'd0:LED=ALU_F[7:0]; 4'd1:LED=ALU_F[15:8]; 4'd2:LED=ALU_F[23:16]; 4'd3:LED=ALU_F[31:24]; 4'd4:LED=M_R_Data[7:0];

4'd5:LED=M_R_Data[15:8]; 4'd6:LED=M_R_Data[23:16]; 4'd7:LED=M_R_Data[31:24]; 4'd8:LED={ZF,6'd0,OF}; 4'd12:LED=PC[7:0]; 4'd13:LED=PC[15:8]; 4'd14:LED=PC[23:16]; 4'd15:LED=PC[31:24]; default:LED=8'b0000_0000; endcase end endmodule 顶层模块代码: moduleMy_I_CPU( inputclk, inputmem_clk, inputrst, output [31:0] ALU_F, output [31:0] M_R_Data, output ZFF, output OF, output [31:0]PC_out ); //wire clk_n = ~clk; wire[31:0] codes; wire [31:0]PC_new; reg [31:0]PC; Inst_Fetch1 inst_fetch( .PC(PC), .rst(rst), .clk(clk), .Inst_codes(codes), .PC_new(PC_new) ); wire[5:0] OP; wire[5:0] func;

Web网页设计实验报告

WEB系统开发 综合实验报告 题目红尘客栈网上订房页面 专业计算机科学与技术(信息技术及应用) 班级计信2班 学生蒋波涛 重庆交通大学 2013年

目录 一、设计目的 (3) 二、设计题目 (3) 三、结构设计 (3) 四、技术分析 (4) 五、设计过程 (7) 六、实验心得 (10) 七、实验总结 (11)

一、设计目的 在Internet飞速发展的今天,互联网成为人们快速获取、发布和传递信息的重要渠道,它在人们政治、经济、生活等各个方面发挥着重要的作用。因此网站建设在Internet 应用上的地位显而易见,它已成为政府、企事业单位信息化建设中的重要组成部分,从而倍受人们的重视。我们当代大学生更是离不开网络给我们带来的好处与便利.但是,我们成天浏览的网站网页到底是如何制作的呢?我想这一点很多同学都没有去深究过.所以,这学期我选择了”web网页设计”这门课, 本课程的设计目的是通过实践使同学们经历网页制作的全过程. 通过设计达到掌握网页设计、制作的技巧。 了解和熟悉网页设计的基础知识和实现技巧。根据题目的要求,给出网页设计方案,可以按要求,利用合适图文素材设计制作符合要求的网页设计作品。 熟练掌握Photoshop cs3、Dreamweaver cs等软件的的操作和应用。增强动手实践能力,进一步加强自身综合素质。学会和团队配合,逐渐培养做一个完整项目的能力。 二、设计题目 《红尘客栈》 三、结构设计 选定主题,确定题目之后,在做整个网站之前对网站进行需求分析。首先,做好需求调研。调研方式主要是上网查阅资料,在图书馆里翻阅相关书籍。 然后,调研结束之后对整个网站进行功能描述,并对网站进行总体规划,接着逐步细化。 我们选做的主题是个人主页,并且选定题目为“红尘客栈”,其目的是做一个简单的网站,介绍酒店概况,提供一定的资讯信息。 四、技术分析 (一)建立布局 在这次的网页设计中用到大量的布局,所以怎么样建立布局是关键。Dreamweaver cs3是大多数人设计网页的称手兵器,也是众多入门者的捷径。特别是其在布局方面的出色表现,更受青睐。大家都知道,没有表格的帮助,很难组织出一个协调合理的页面。 1.点击“ALT+F6”键,进入布局模式,插入布局表格。建立一个大概的布局。 2.使用背景图片:选中该项,按浏览可以插入一幅准备好的图片作为表格的背景,因为图片是以平铺的形式作为表格背景,所以表格大小和图片尺寸都要控制好。 (二)网页中的图像

计组-加法器实验报告

半加器、全加器、串行进位加法器以及超前进位加法器 一、实验原理 1.一位半加器 A和B异或产生和Sum,与产生进位C 2.一位全加器 将一位半加器集成封装为halfadder元件,使用两个半加器构成一位的全加器 3.4位串行进位加法器 将一位全加器集成封装为Fulladder元件,使用四个构成串行进位加法器

4.超前进位加法器(4位) ⑴AddBlock 产生并行进位链中的ti(即Cthis)和di(即Cpass),以及本位结果Sum ⑵进位链(Cmaker) 四位一组并行进位链,假设与或非门的级延迟时间为1.5ty,与非门的延迟时间为1ty,在di和ti产生之后,只需2.5ty就可产生所有全部进位

⑶超前进位加法器 将以上二者结合起来即可完成,A和B各位作为各个AddBlock的输入,低一位的进位Ci-1作为本位AddBlock的C-1的输入。各个AddBlock输出的C_this和C_pass作为对应的Cmaker的thisi和passi的输入。

二、实验器材 QuartusII仿真软件,实验箱 三、实验结果 1.串行进位加法器结果 2.超前进位加法器结果

四、实验结果分析 1.实验仿真结果显示串行加法器比超前进位加法器快,部分原因应该是电路结构优化 不到位。另外由于计算的位数比较少,超前进位加法链结构较复杂,所以优势没体现出来,反倒运作的更慢一点。当位数增加的时候,超前进位加法器会比串行的更快。 2.波形稳定之前出现上下波动,应该与“竞争冒险”出现的情况类似,门的延迟和路径 的不同导致了信号变化时到达的时间有先有后,因此在最终结果形成前出现了脉冲尖峰和低谷;另外也可能部分原因由于电路结构优化的不到位所致

计网实验报告(三) (4500字)

计算机网络实验报告(三) ——编程实现可靠数据传输原理 go-back-n (一)实验目的: 运用各种编程语言实现基于go-back-n 的可靠数据传输软件。通过本实验,使学生能够对可靠数据传输原理有进一步的理解和掌握。 (二)实验内容: (1).选择合适的编程语言编程实现基于go-back-n 的可靠数据传输软件。 (2).在实际网络环境或模拟不可靠网络环境中测试和验证自己的可靠数据传输软件。 (三)实验原理: 1.gbn协议含义:go-back-n arq 中文翻译为后退n式arq、回退n式arq。该协议对传统的自动重传请求 (arq,automatic repeat reques)进行了改进,从而实现了在接收到ack之前能够连续发送多个数据包。 在go-back-n arq中,发送端不需要在接收到上一个数据包的ack后才发送下一个数据包,而是可以连续发送数据包。在发送端发送数据包的过程中,如果接收到对应已发送的某个数据包的nack,则发送端将nack对应的某个数据包进行重发,然后再将该数据包之后的数据包依次进行重发。 后退n帧arq的图例: 后退n帧arq就是从出错处重发已发出过的n个帧。 2.go-back-n 的有限状态机模型表示如图所示: (a) (b) 图3.1 go-back-n 的有限状态机模型(a)发送端 (b)接受端 (四)实验步骤: 在eclipse平台编写并调试gbn模拟java程序,观察三组以上实验结果,验证程序可以正确模拟gbn的发送规则。 (五)实验结果: 以下为随机数模拟的某次发送情况: 接收方开始接收分组数据! 发送方开始发送分组数据! 发送方现在开始第一次发送序号为0的数据分组 当前窗口内的分组情况为: 第0号窗口里面存放的是序号为1的马上待发送的数据分组! 第1号窗口里面存放的是序号为2的马上待发送的数据分组! 第2号窗口里面存放的是序号为3的马上待发送的数据分组! 接收方收到了序号为0的分组! 该数据分组正是接收方所期待的,接收方接受了它并准备回送对应的ack!发送方收到了ack,序号为0并且开始加以确认! 发送方现在开始第一次发送序号为1的数据分组 当前窗口内的分组情况为: 第0号窗口里面存放的是序号为2的马上待发送的数据分组! 第1号窗口里面存放的是序号为3的马上待发送的数据分组!

流量计性能测定实验报告doc

流量计性能测定实验报告 篇一:孔板流量计性能测定实验数据记录及处理篇二:实验3 流量计性能测定实验 实验3 流量计性能测定实验 一、实验目的 ⒈了解几种常用流量计的构造、工作原理和主要特点。 ⒉掌握流量计的标定方法(例如标准流量计法)。 ⒊了解节流式流量计流量系数C随雷诺数Re的变化规律,流量系数C的确定方法。 ⒋学习合理选择坐标系的方法。 二、实验内容 ⒈通过实验室实物和图像,了解孔板、1/4园喷嘴、文丘里及涡轮流量计的构造及工作原理。 ⒉测定节流式流量计(孔板或1/4园喷嘴或文丘里)的流量标定曲线。 ⒊测定节流式流量计的雷诺数Re和流量系数C的关系。 三、实验原理 流体通过节流式流量计时在流量计上、下游两取压口之间产生压强差,它与流量的关系为: 式中: 被测流体(水)的体积流量,m3/s; 流量系数,无因次;

流量计节流孔截面积,m2; 流量计上、下游两取压口之间的压强差,Pa ; 被测流体(水)的密度,kg/m3 。 用涡轮流量计和转子流量计作为标准流量计来测量流量VS。每一 个流量在压差计上都有一对应的读数,将压差计读数△P和流量Vs绘制成一条曲线,即流量标定曲线。同时用上式整理数据可进一步得到C—Re关系曲线。 四、实验装置 该实验与流体阻力测定实验、离心泵性能测定实验共用图1所示的实验装置流程图。 ⒈本实验共有六套装置,流程为:A→B(C→D)→E→F→G→I 。 ⒉以精度0.5级的涡轮流量计作为标准流量计,测取被测流量计流量(小于2m3/h流量时,用转子流量计测取)。 ⒊压差测量:用第一路差压变送器直接读取。 图1 流动过程综合实验流程图 ⑴—离心泵;⑵—大流量调节阀;⑶—小流量调节阀; ⑷—被标定流量计;⑸—转子流量计;⑹—倒U管;⑺⑻⑽—数显仪表;⑼—涡轮流量计;⑾—真空表;⑿—流量计平衡阀;⒁—光滑管平衡阀;⒃—粗糙管平衡阀;⒀—回流阀;⒂—压力表;⒄—水箱;⒅—排水阀;⒆—闸阀;⒇—

计组-4位乘法器实验报告

实验4位乘法器实验报告 姓名:X XX 学号:X XX 专业:计算机科学与技术课程名称:计算机组成同组学生姓名:无 实验时间:实验地点:指导老师:XXX 一、实验目的和要求 1.熟练掌握乘法器的工作原理和逻辑功能 二、实验内容和原理 实验内容: 根据课本上例3-7的原理,来实现4位移位乘法器的设计。 具体要求:1. 乘数和被乘数都是4位 2. 生成的乘积是8位的 3. 计算中涉及的所有数都是无符号数 4.需要设计重置功能 5.需要分步计算出结果(4位乘数的运算,需要四步算出结果) 实验原理: 1.乘法器原理图

2.本实验的要求: 1.需要设计按钮和相应开关,来增加乘数和被乘数 2.每按一下M13,给一个时钟,数码管的左边两位显示每一步的乘 积 3.4步计算出最终结果后,LED灯亮,按RESET重新开始计算 三、主要仪器设备 1.Spartan-III开发板1套 2.装有ISE的PC机1台 四、操作方法与实验步骤 实验步骤: 1.创建新的工程和新的源文件 2.编写verilog代码(top模块、display模块、乘法运算模块、去抖动模块以及 UCF引脚) 3.进行编译 4.进行Debug 工作,通过编译。

5.. 生成FPGA代码,下载到实验板上并调试,看是否与实现了预期功能 操作方法: TOP: module alu_top(clk, switch, o_seg, o_sel); input wire clk; input wire[4:0] switch; output wire [7:0] o_seg; // 只需七段显示数字,不用小数点 output wire [3:0] o_sel; // 4个数码管的位选 wire[15:0] disp_num; reg [15:0] i_r, i_s; wire [15:0] disp_code; wire o_zf; //zero detector initial begin i_r <= 16'h1122; //0x1122 i_s <= 16'h3344; //0x3344 end alu M1(i_r, i_s, switch[4:2], o_zf, disp_code); display M3(clk, disp_num, o_seg, o_sel); assign disp_num = switch[0]?disp_code:(switch[1] ? i_s : i_r); endmodule

15_计网期末实验报告

1. 实验报告如有雷同,雷同各方当次实验成绩均以0分计。 2. 当次小组成员成绩只计学号、姓名登录在下表中的。 3. 在规定时间内未上交实验报告的,不得以其他方式补交,当次成绩按0分计。 4. 实验报告文件以PDF 格式提交。 综合实验 下图是模拟A 公司的网络拓扑简图,在A 公司各接入级的二层交换机(S1)按部门划分了VLAN ,各接入级交换机连接到汇聚层交换机S2上,然后连接到公司出口路由器R1,R1通过DDN 连接到互联网服务提供商ISP 的路由器R2,最后连接到ISP 的一台PC (用配有公网IP 地址的PC4模拟),实现连接Internet 。请对该公司的交换机和路由器进行相应的配置实现以下功能。 图1 实验拓扑图 (1) 该公司内网IP 地址规划:每台设备的IP 地址请你自行指定,不同小组的IP 地址不一样,具 警示

体见实验步骤2。 (2)为了提高网络的可靠性,通过两级交换机之间的双链路实现冗余备份,要求使用RSTP协议,避免环路,且确保S2作为Root Switch。 (3)VLAN 10,VLAN 20职能分别如下:VLAN 10(公司员工name: Employee)和VLAN 30(公司服务name: Service)。接入层的1-10口在VLAN 10内,11-20口在VLAN 20内。 (4)配置汇聚层交换机S2,使不同部门之间的PC能够相互访问。 (5)在公司内部,即S2和R1之间配置动态路由协议RIPv2,在公司外部即R1和R2之间配置动态路由协议OSPF,在公司出口路由器R1上配置到ISP的默认路由,使公司内部网络可以访问ISP(提示:内网要访问外网需要NA T策略) 注意:不同协议之间进行路由交换,需要实现路由协议重发布,具体如下 在路由器R1上加上如下命令,把默认路由重发布到RIPv2协议中,使公司内部的所有路由器都可以经过RIP协议学习到默认路由 R2(config)# router rip R2(config-router)#default-information originate 假设VLAN 20里面的一台PC,比如PC3是公司内部的一台服务器,要求在外网可以访问。 实验步骤 1.小组分工 刘雪梅和许杨鹏负责两交换机的配置,实现不同VLAN间的通信(步骤4-7);杨曼琪和杜艺菲负责两路由器的配置(步骤8-10),实现公司外部网络的连通,即PC4 ping通路由器R1的S2/0接口,路由器R1 ping通PC4。为了节省时间,两部分同时进行,然后再配置S2和R1之间的RIPv2,NAT策略,将两部分连接起来。 2.确定设备IP地址,我们的小组号为15,IP分配如拓扑图所示 设备接口IP地址掩码网关交换机S2 虚拟接口vlan 10 192.168.15.1 255.255.255.0 无PC1 网卡192.168.15.2 255.255.255.0 192.168.X.1 PC2 网卡192.168.15.3 255.255.255.0 192.168.X.1 交换机S2 虚拟接口vlan 20 192.168.15+1.1 255.255.255.0 无PC3 网卡192.168.15+1.2 255.255.255.0 192.168.X+1.1 交换机S2 虚拟接口vlan 30 192.168.15+2.1 255.255.255.0 无 路由器R1 F0/0 192.168.15+2.2 255.255.255.0 无 路由器R1 S2/0 202.101.1.1 255.255.255.0 无 路由器R2 S2/0 202.101.1.2 255.255.255.0 无 路由器R2 F0/0 221.98.1.1 255.255.255.0 无PC4 网卡221.98.1.2 255.255.255.0 221.98.1.1 表1 各个设备的接口和IP的设计 3.按照题目中的拓扑图连接实验拓扑。

计组实验二实验报告-80868088指令系统

HUNAN UNIVERSITY 课程实习报告 题目: 8086/8088指令系统 学生姓名 学生学号 专业班级计算机科学与技术2班 指导老师 完成日期2013年4月21日

一、实验目的 利用debug工具的e和u功能找出8086/8088指令系统的指令格式中各种操作吗编码对应的指令功能,得到8086/8088操作吗从00~FF所对应的的汇编指令的名字。并加以分析总结,形成你的关于8086/8088指令系统操作码编码方法的实验报告。 二、实验过程 1、编写C++程序,生成debug的输入文件(shuru.txt) 2、将shuru.txt复制到debug的根目录下,在debug界面输入如下指令“debug out.txt”,在debug的根目录下,生成了输出文本文件out.txt。 打开out.txt,对256条记录进行整理,如下所示。 3、固定前两位为00,将第二字节从00变为ff,观察汇编指令变化。编写C++程序如下: 4、将shuru2.txt复制到debug的根目录下,在debug界面输入如下指令“debug out2.txt”,在debug的根目录下,生成了输出文本文件out2.txt。

打开out2.txt,对256条记录进行分析。 三、256条记录 指令码汇编指令 ------------------------------------------------------------- 0B76:0100 0000 ADD [BX+SI],AL 0B76:0100 0100 ADD [BX+SI],AX 0B76:0100 0200 ADD AL,[BX+SI] 0B76:0100 0300 ADD AX,[BX+SI] 0B76:0100 0400 ADD AL,00 0B76:0100 050000 ADD AX,0000 0B76:0100 06 PUSH ES 0B76:0100 07 POP ES 0B76:0100 0800 OR [BX+SI],AL 0B76:0100 0900 OR [BX+SI],AX 0B76:0100 0A00 OR AL,[BX+SI] 0B76:0100 0B00 OR AX,[BX+SI] 0B76:0100 0C00 OR AL,00 0B76:0100 0D0000 OR AX,0000 0B76:0100 0E PUSH CS 0B76:0100 0F DB 0F 0B76:0100 1000 ADC [BX+SI],AL 0B76:0100 1100 ADC [BX+SI],AX 0B76:0100 1200 ADC AL,[BX+SI] 0B76:0100 1300 ADC AX,[BX+SI] 0B76:0100 1400 ADC AL,00 0B76:0100 150000 ADC AX,0000 0B76:0100 16 PUSH SS 0B76:0100 17 POP SS 0B76:0100 1800 SBB [BX+SI],AL 0B76:0100 1900 SBB [BX+SI],AX 0B76:0100 1A00 SBB AL,[BX+SI] 0B76:0100 1B00 SBB AX,[BX+SI] 0B76:0100 1C00 SBB AL,00 0B76:0100 1D0000 SBB AX,0000 0B76:0100 1E PUSH DS 0B76:0100 1F POP DS 0B76:0100 2000 AND [BX+SI],AL 0B76:0100 2100 AND [BX+SI],AX 0B76:0100 2200 AND AL,[BX+SI] 0B76:0100 2300 AND AX,[BX+SI] 0B76:0100 2400 AND AL,00 0B76:0100 250000 AND AX,0000

网络计划实验报告

PERT 实验 商业中心建设活动持续时间表 活动紧前活动需要时间(周) A 设计-20 B 批准-10 C 招标A, B8 D 建设C24 E 外装修D8 F 谈判A,B14 G 签约F10 H 区域分割D, G6 I 内装修H12 J 进驻I, E6 正常正常加急加急最大成本/时间 时间成本时间成本减少比率 A*203012808 6.25 B101010100- C*8106162 3.0 D*24 230020 2340410.0 E8110 4 1204 2.5 F141210204 2.0 G1*******- H* 6202254 1.25 I* 12160101702 5.0 J*6106100- 根据以上表格给出的信息,用PERT软件画出项目网络计划图,并进行网络计算与优化设计。

网络计划方法: 大型项目的开发涉及很复杂的项目协调和管理问题,为使项目管理人员对项目进度有全面的了解,进行有效的控制,必须使用科学的管理方法;网络计划法是使用最广泛的方法之一,关键路径法(critical path method 缩写为CPM)和项目评审技术(program evaluation and review technique 缩写为PERT)是两种使用最广泛的网络计划技术。网络计划方法的优点使它适用于生产技术复杂,工作项目繁多,且紧密联系的一些跨部门的工作计划,如:新产品研制开发;大型工程项目建设;生产技术准备;复杂设备的大修计划。 网络计划方法的基本原理: 将工程项目分解为相对独立的活动,根据各活动先后顺序、相互关系以及完成所需时间做出反映项目全貌的网络图;从项目完成全过程着眼,找出影响项目进度的关键活动和关键路线,通过对资源的优化调度,实现对项目实施的有效控制和管理。 网络计划方法的主要功能: 1用网络图描述一个实际项目的管理问题 (画网络图); 2计算项目的最早、最晚完成和开工时间 (网络计算); 3寻找关键活动和关键路径(网络分析); 4根据以上分析对网络进行优化 PERT网络分析法 PERT网络分析法(计划评估和审查审技术,Program Evaluation and Review Technique) PERT(Program Evaluation and Review Technique)即计划评审技术,最早是由美国海军在计划和控制北极星导弹的研制时发展起来的。PERT技术使原先估计的研制北极星潜艇的时间缩短了两年。简单地说,PERT是利用网络分析制定计划以及对计划予以评价的技术,它能协调整个计划的各道工序,合理安排人力、物力、时间、资金,加速计划的完成。在现代计划的编制和分析手段上,PERT被广泛的使用,是现代化管理的重要手段和方法。 一.画网络图 画网络图应注意以下规则: 1、按工作本身的逻辑顺序连接箭线 2、网络图中不允许出现循环线路 3、在网络图中不允许出现代号相同的箭线 4、在一个网络图中只允许有一个起点节点,一般只允许出现一个终点节点(多目标网络图除外) 5、在网络图中不允许出现有双向箭头或无箭头的线段 6、网

计算机网络模拟器实验报告记录(1)

计算机网络模拟器实验报告记录(1)

————————————————————————————————作者:————————————————————————————————日期:

计算机网络模拟器实验报告 学院:学号:姓名: 实验名称:计算机网络模拟器试验 实验说明:共5个实验,其中前3个必做,后2个选做。 一、实验目的 1、掌握模拟器软件的使用方法; 2、掌握配置PC、交换机、路由器的方法; 3、掌握为交换机设置VLAN,为端口设置TRUNK的 方法。 二、实验环境(请注意关闭杀毒软件) WinXP/WIN7、HW-RouteSim 2.2(软件请到BB 课程资源下载,下载后直接解压缩运行;下载前请 关闭杀毒软件) 三、实验步骤及结果 实验一:计算机和交换机基本设置 添加一个交换机,两个计算机,连接A电脑到交换机3号端口,B电脑到6号端口,双击交换机,进入终端配置:

system password: [Quidway]sysname S3026 ;交换机重命名为S3026 [S3026]super password 111 ;设置特权密码为111 [S3026]quit sys password:111 [S3026]display currect-config ;查看当前所有配置[S3026]display vlan all ;查看当前VLAN设置观察此时所有交换机端口都在同一个vlan1内。 双击小电脑A: login:root password:linux [root@PCAroot]# ? ;输入?号查看命令提示[root@PCAroot]#ifconfig eth0 10.65.1.1 netmask 255.255.0.0 双击小电脑B: login:root password:linux [root@PCAroot]#ifconfig eth0 10.65.1.2 netmask 255.255.0.0 点击A电脑做测试: [root@PCA root]#ping 10.65.1.2

计组实验报告.

武汉大学计算机学院计算机科学与技术专业 CPU设计实验报告 实验名称:开放式实验CPU设计课题名称: 计算机组成原理 班级: 指导教师:徐爱萍 组长: 组员: 二零一五年三月

目录 目录 (1) 1 实验环境 (2) 1.1 Quartus Ⅱ介绍 (2) 1.2 硬件描述语言(VHDL) (3) 1.3实验的主要成果 (3) 2 实验要求 (5) 2. 1 指令格式要求 (5) 2. 2 指令流程及微信号序列分析 (6) 2.2.1 ADD指令分析 (6) 2.2.2 ADC指令分析 (7) 2.2.3 SUB指令分析 (7) 2.2.4 SBC指令分析 (7) 2.2.5 INC指令分析 (7) 2.2.6 DEC指令分析 (8) 2.2.7 SHL指令分析 (8) 2.2.8 SHR指令分析 (8) 2.2.9 MOVR指令分析 (8) 2.2.10 MOVD指令分析 (9) 2.2.11 LDRR指令分析 (9) 2.2.12 STRR指令分析 (10) 2.2.13 JMP指令分析 (10) 2.2.14 JRC指令分析 (11) 2.2.15 JRZ指令分析 (11) 2.2.16 JRS指令分析 (11) 2.2.17 CLC指令分析 (11) 2.2.18 STC指令分析 (11) 3.部件仿真实验 (11) 3.1 八个通用寄存器设计与仿真 (11) 3.1.1 设计代码 (11) 3.1.2 RTL连接图 (17) 3.1.3 仿真过程 (17) 3.2算术逻辑单元设计与仿真 (18) 3.2.1 设计代码 (18) 3.2.2 RTL连接图 (21) 3.2.3 仿真过程 (22) 4. CPU设计 (23) 4.1取指设计 (23) 4.2指令译码的设计 (25) 4.3执行部分设计 (28) 4.4存储器部分设计 (31) 4.5通用寄存器组设计 (32)

计网实验报告

电气工程学院 计算机网络实验报告 姓名:彭思琦 学号:15291191 指导教师:张洪和 实验日期:2017-12-09 18:00-22:00

一、计算机信息 计算机的 IP 地址:192.168.0.5 子网掩码:255.225.255.0 默认网关:无 二、 报告内容 1 ) 画出实验室的网络拓扑图, 将每个网络用 CIDR 记法进行表示, 并注明你用的电脑处在哪一个网络。 实验室的网络拓扑图: 1. 由机房电脑组成的网络中,用 CIDR 记法要写成: 192.168.0.0/24 WAN LAN:10.10.10.1 LAN:192.168.1.1

2. TCPIP_1 CIDR 记法为:10.10.10.1/24 TCPIP_2 CIDR 记法为: 192.168.1.1/24 1 . 实验一任务一 2)在你的电脑上打开cmd 窗口,ping 一下192.1 68.0.0 网络的任何一台在线的主机,将实际运行结果进行图片保存,粘贴到实验报告上。 PING 本机 PING 百度(此部分在寝室完成)

3)在ping 的过程中,利用wireshark 捕捉包含对应ICMP 报文的MAC 帧,将此MAC 帧的各个控制字段,以及此MAC 帧中包含的IP 数据报的各个控制字段,进行标注或者用文字列出。本机IP:172.27.69.177 目的地址:74:1f:4a:9b:a1:67 源地址:30:10:b3:b8:bd:a3 类型:协议类型ipv4(8000) 版本:4 首部长度:5 首部长度5*4=20 字节 区分服务:00

计算机组成原理实验报告二

实验二存储器实验 一、实验目的 熟悉和了解存储器组织与总线组成的数据通路。 二、实验原理 存储器是计算机的存储部件,用于存放程序和数据。存储器是计算机信息存储的核心,是计算机必不可少的部件之一,计算机就是按存放在存储器中的程序自动有序不间断地进行工作。本系统从提高存储器存储信息效率的角度设计数据通路,按现代计算机中最为典型的分段存储理念把存储器组织划分为程序段、数据段等,由此派生了数据总线(DBUS)、指令总线(IBUS)、微总线( BUS)等与现代计算机设计规范相吻合的实验环境。该存储器组织由二片6116构成具有奇偶概念的十六位信息存储体系,该存储体系AddBus由PC指针和AR 指针分时提供,E/M控位为“0”时选通PC,反之选通AR。该存储体系可随机定义总线宽度,动态变更总线结构,把我们的教学实验提高到能与现代计算机设计规范相匹配与接轨的层面。 连线信号孔接入孔作用有效电平 1 DRCK CLOCK 单元手动实验状态的时钟来源下降沿打入 2 W K6(M6) 总线字长:1=16位字操作,0=8位字节操作 3 XP K7(M7) 源部件奇偶标志:1=偶寻址,0=奇寻址 4 X2 K10(M10) 源部件定义译码端X2 三八译码 八中选一5 X1 K9(M9) 源部件定义译码端X1

四、实验过程 1. 存储器数据段读写操作 (1) 数据段写操作(字) 在进行数据存储器字操作时,地址线A0必须为0(偶地址)。向数据段的0000~0005h 存储单元写入11 22 33 44 55 66一串数据,以0000h 地址单元写入数据1122h 为例表述操作流程。 置地址I/O=0000h AR 地址写入(0000h)置数据I/O=1122h 存储器写入(1122h)关存储器写X2 X1 X0=011XP W=11 LDAR(K17)=0 MWR(K21)=1按[单拍] E/M(K23)=1LDAR(K17)=1按[单拍] MWR(K21)=0 (2) 数据段读操作(字) 依次读出数据段0~0005h 单元的内容,这里以0000h 地址单元读出为例阐述操作流程。 置地址I/O=0000h AR 地址写入(0000h)关AR 写使能存储器读出(1122h)数据总线显示存储器值 X2 X1 X0=011XP W=11 LDAR(K17)=0 E/M(K23)=1LDAR(K17)=1按 [单拍] X2 X1 X0=100W=1 2. 存储器程序段读写操作 (1) 程序段字节写操作 计算机规范的取指操作均以字节为单位。所以本实验以字节操作方式展开。程序段写入必须从定义地址入手,然后再进入程序存储器的写入。 PC 指针是带预置加法计数器,因此在输入起始地址后一旦后续地址为PC+1的话就不需重装PC ,用PC+1指令完成下续地址的读写操作。 PC 地址装载写入与PC+1写入流程 置地址I/O=0000h PC 地址写入(0000h)I/O=1234h 12h →[PC]地址增量PC+1关存储器写X2 X1 X0=011XP W=11 E/M(K23)=0LDPC(K22)=0MWR(K21)=1W=0,按[单拍] LDPC(K22)=1MWR(K21)=0 E/M(K23)=1LDPC(K22)=1按[单拍] LDPC(K22)=0MWR(K21)=1XP=0,按[单拍] (2) 程序段字节读操作 PC 地址装载读出及PC+1读出流程 X2 X1 X0=011XP W=11 E/M(K23)=0LDPC(K22)=0X2 X1 X0=100XP=1, W=0 LDPC(K22)=1按[单拍] E/M(K23)=1LDPC(K22)=1按[单拍] 按[单拍] 五、结果分析

计网实验报告(一)

计算机网络实验报告(一) ——Windows环境下用java实现web服务器 (一)实验目的: 通过本实验进一步理解HTTP协议的技术细节以及WEB服务器的实现原理并了解java提供的支持TCP协议的借口和类的使用。 (二)实验内容: (1)处理一个http请求 (2)接收并解析http请求 (3)从服务器文件系统中获得被请求的文件 (4)创建一个包括被请求的文件的http响应信息 (5)直接发送该信息到客户端 (三)实验原理: HTTP协议的作用原理: WWW是以Internet作为传输媒介的一个应用系统,WWW网上最基本的传输单位是Web网页。WWW的工作基于客户机/服务器计算模型,由Web 浏览器(客户机)和Web服务器(服务器)构成,两者之间采用超文本传送协议(HTTP)进行通信。HTTP协议是基于TCP/IP 协议之上的协议,是Web浏览器和Web服务器之间的应用层协议,是通用的、无状态的、面向对象的协议。HTTP协议的作用原理包括四个步骤: (1) 连接:Web浏览器与Web服务器建立连接,打开一个称为socket(套接字)的虚拟文件,此文件的建立标志着连接建立成功。 (2) 请求:Web浏览器通过socket向Web服务器提交请求。HTTP的请求一般是GET或POST命令(POST用于FORM参数的传递)。GET命令的格式为: GET 路径/文件名HTTP/1.0 文件名指出所访问的文件,HTTP/1.0指出Web浏览器使用的HTTP版本。

(3) 应答:Web浏览器提交请求后,通过HTTP协议传送给Web服务器。Web服务器接到后,进行事务处理,处理结果又通过HTTP传回给Web浏览器,从而在Web浏览器上显示出所请求的页面。 原理示意图如下: (四)实验步骤: 考虑利用java提供给TCP的端口和系统定义类进行传输实现,大致分为以下几步: (1) 创建ServerSocket类对象,监听端口7977。这是为了区别于HTTP的标准TCP/IP 端口80而取的; (2) 等待、接受客户机连接到端口7977,得到与客户机连接的socket; (3) 创建与socket字相关联的输入流instream和输出流outstream; (4) 从与socket关联的输入流instream中读取一行客户机提交的请求信息,请求信息的格式为:GET 路径/文件名HTTP/1.0 (5) 从请求信息中获取请求类型。如果请求类型是GET,则从请求信息中获取所访问的HTML文件名index.html。 (6) 如果HTML文件存在,则打开HTML文件,把HTTP头信息和HTML文件内容通过socket传回给Web浏览器,然后关闭文件。否则发送错误信息给Web浏览器; (7) 关闭与相应Web浏览器连接的socket字。

计组实验报告--部分

2、设计报告 2、1实验方法 本实验要完成的工作主要包括: 1、指令系统的设计 2、利用VHDL语言完成实验CPU的设计,包括通用寄存器的设计、取值部分设计、指令译 码设计、执行设计、存储器设计、程序包设计和顶层设计设计 3、在Quatus II 平台上进行仿真,并下载到TEC-CA教学实验箱上进行调试。 这三大部分为并行关系,只有在完成上一部分的基础上才能继续进行下一步,而第二大部分可以同时并行进行。 实验的主要流程图为图2.1所示。 图2.1

在指令系统和CPU逻辑设计时,主要的方法是先根据老师给的指令要求,确定CPU所要实现的功能,根据寄存器等的情况划分指令格式,然后根据功能写出指令,根据不同指令的特点将它们分组并确定操作码;接下来设想每条指令的执行过程,需要哪些硬件支持,最后确定整个CPU的逻辑结构图。 2、2总体说明 2.2.1 CPU组成部件 实验CPU由5部分组成:取指部分instru_fetch、指令译码部分decoder_unit、执行部分exe_unit、存储器部分memory_unit和通用寄存器组fegile.另外,还有一个程序包exe_cpu_components,将各底层设计实体作为元件存储,供各设计实体使用。顶层设计实体exe_cpu完成5个组成部分的链接。 GR(8位,4个寄存器),ALU(8位),时序节拍发生器timer,AR(8位),IR(8位),PC(8位)、PC(8位),RAM(8位),组合期间T1,T2,T3。逻辑控制器件controller,地址总线(8位),数据总线(8位)。 2、2、2整机原理实验图

图2.2.1 图2.2.2

计网实验

《计算机网络》课程设计报告 设计题目:虚拟机的安装与使用 学院 专业 班级 学号 姓名 指导教师 附录:课程设计报告的内容及其文本格式

1.课程设计报告要求用16k纸排版,单面打印,并装订成册,装订顺序: ①封面 ②目录 ③正文 ④参考文献 2.目录格式要求: ①标题“目录”(三号、黑体、居中) ②章标题(四号字、黑体、居左) ③节标题(小四号字、宋体) ④页码(小四号字、宋体、居中) ⑤序号全部采用阿拉伯数字,居左对齐 3.正文格式要求: ①页边距:上2.5cm,下2.5cm,左2.5cm,右2cm,页眉1.5cm,页脚 1.75cm,左侧装订; ②正文文字,小四号字、宋体; ③行距:固定值 20磅; ④页码:正文页码从1开始标注,底部居中,五号; ⑤每段首行空两格。 4.参考文献及格式要求: 参考文献不少于5个(期刊、书籍、网址) ①标题:“参考文献”,小四,黑体,居中。 ②示例:(五号宋体) 例:[1] 杨绪红,汪文忠,肖俊宜等.企业信息系统的管理模式研究[J].中国软科学,2003,9.

1.虚拟机 1.1概念 虚拟机(Virtual Machine)指通过软件模拟的具有完整硬件系统功能的、运行在一个完全隔离环境中的完整计算机系统。在计算机科学中的体系结构裏,他是指一种特殊的软件,可以在计算机平台和终端用户之间创建一种环境,而终端用户则是基于这个软件所创建的环境来操作软件。在计算机科学中,虚拟机是指可以像真实机器一样运行程序的计算机的软件实现 1.2虚拟机技术 虚拟机技术是虚拟化技术的一种,所谓虚拟化技术就是将事物从一种形式转变成另一种形式,最常用的虚拟化技术有操作系统中内存的虚拟化,实际运行时用户需要的内存空间可能远远大于物理机器的内存大小,利用内存的虚拟化技术,用户可以将一部分硬盘虚拟化为内存,而这对用户是透明的。又如,可以利用虚拟专用网技术(VPN)在公共网络中虚拟化一条安全,稳定的“隧道”,用户感觉像是使用私有网络一样。 虚拟机技术最早由IBM 于上世纪六七十年代提出,被定义为硬件设备的软件模拟实现,通常的使用模式是分时共享昂贵的大型机。虚拟机监视器(Virtual Machine Monitor,VMM)是虚拟机技术的核心,它是一层位于操作系统和计算机硬件之间的代码,用来将硬件平台分割成多个虚拟机。VMM 运行在特权模式,主要作用是隔离并且管理上层运行的多个虚拟机,仲裁它们对底层硬件的访问,并为每个客户操作系统虚拟一套独立于实际硬件的虚拟硬件环境(包括处理器,内存,I/O 设备)。VMM 采用某种调度算法在各个虚拟机之间共享CPU,如采用时间片轮转调度算法。

相关主题