云南大学 软件学院 计网实验2
云南大学软件学院计算机网络原理实验八

实验八、链路层实验——基于CRC编码的检错程序的实现一、实验目的1、通过实验,掌握CRC编码和解码的原理。
2、掌握基于CRC编码的差错检测技术。
二、实验指导现在计算机网络广泛采用的差错检测技术是基于CRC(cyclic redundancy check)循环冗余检测编码,CRC也称为多项式编码(polynomial code),CRC算法非常容易用硬件实现。
CRC编码操作如下:对给定的数据D,发送者选择r个附加位,追加到D的末尾,形成d+r位的新位型,该位型正好能被G模2除尽。
其中,G称为生成器。
CRC编码算法实现:1、选择生成多项式G,其最高次方为r,即r+1位的二进制位串2、计算D·2r, 即在数据D后面补r个0,构成d+r位的位串3、按模2除法求(D·2r/G)的余数R4、从D·2r中模2加上R,得到新的数据T,即加了CRC的帧三、实验要求1、设置一个d位的数据D,r+1位的多项式G,生成CRC码,并把此CRC码作为数据帧进行传送。
2、编写两个子程序,分别实现CRC编码和CRC解码,在主函数中对子程序进行调用。
解码子程序应能根据解码情况判断出接收到的数据帧是否出错,并给出提示。
3、要求分别以正确和错误的数据来检验此检错程序。
4、将编写程序的源代码加必要注释和程序运行结果一起填入实验报告中。
提示:1、编写程序时数据直接用二进制数,可能用到位操作符^(异或)和<<(左移)。
2、在设置错误的编码时,错误位数最好不要超过r+1位。
四、程序代码#include <stdlib.h>void crc_code(int A[],int G[],int x,int n)//编码子程序,异或函数,求余数{int i,j,k;printf("\n\t\t");for(k=0;k<x;k++)printf("%d",A[k]);//输出补零以后的数for(i=0;i<=x-n+1;i++){if(A[i]==1)//当首位为1时进行异或{for(j=0;j<=n-1;j++){if(A[i+j]==G[j])A[i+j]=0;//异或运算,相同为0,不同为1elseA[i+j]=1;}printf("\n\t\t");//输出每次异或运算后的结果for(k=0;k<=x-1;k++)printf("%d",A[k]);//输出余数}}}void crc_decode(int M[],int A[],int m,int n)//检验解码子程序{int i,sign=0;//初始化,定义一个标志位signfor(i=0;i<=m-1;i++){if(M[i]!=A[i])//若输入的M[i]中的任意一位不等于对应的A[i] {printf("第%d位出现错误\n",i+1);//输出错误信息sign=1;//若不等,则置标志位为1}}if(sign!=1)printf("数据正确\n");//输出正确信息}int main(){int m,n;int A[20],M[20],G[20],i,j;printf("请输入M[x]的长度m= ");scanf("%d",&m);printf("请输入G[x]的长度n= ");scanf("%d",&n);printf("\n请输入M[x]= \n");for(i=0;i<=m-1;i++)scanf("%d",&M[i]);printf("\n请输入G[x]= \n");for(j=0;j<=n-1;j++)scanf("%d",&G[j]);for(i=0;i<=m-1;i++)A[i]=M[i];for(i=m;i<=m+n-2;i++)A[i]=0;//被除数左移r位,r=m+n-2,即补r个0 crc_code(A,G,m+n-1,n);//调用异或运算函数for(i=0;i<=m-1;i++)A[i]=A[i]+M[i];//在被除数后面加上余数printf("\n\n结果为: ");for(i=0;i<=m+n-2;i++)printf("%d",A[i]);printf("\n");printf("\n请输入要进行CRC解码的数据:\n");for(i=0;i<=m-1;i++)scanf("%d",&M[i]);crc_decode(M,A,m,n);//调用校验解码函数return 0;}五、运行结果六、实验小结①通过这个实验,对CRC编码解码的算法有了初步了解.并且学会了CRC编码解码的算法。
实验2-非对称加密实验报告

云南大学软件学院实验报告课程:信息安全学实验学期:2012-2013学年第二学期任课教师:金鑫专业:学号:姓名:成绩:实验2-非对称加密实验一、实验目的了解非对称密码的加密和解密特点,理解加密解密与数字签名的基本原理,掌握PGP加密的原理,使用PGP加密软件加密信息。
二、实验原理公钥和私钥是互补的,就是说用公匙加密的密文可以用私匙解密,反过来也一样。
假设甲要寄信给乙,他们互相知道对方的公匙。
甲就用乙的公匙加密邮件寄出,乙收到后就可以用自己的私匙解密出甲的原文。
由于没别人知道乙的私匙所以即使是甲本人也无法解密那封信,这就解决了信件保密的问题。
另一方面由于每个人都知道乙的公匙,他们都可以给乙发信,那么乙就无法确信是不是甲的来信。
认证的问题就出现了,这时候数字签名就有用了。
甲用自己的私匙加密,附加在邮件上,再用乙的公匙将整个邮件加密。
这样这份密文被乙收到以后,乙用自己的私匙将邮件解密,得到甲的原文和签名,乙的PGP也从原文计算出一个结果与甲的公匙解密签名得到的数比较,如果符合就说明这份邮件确实是甲寄来的。
三、实验步骤1、安装PGP软件,用PGP加密、解密文件密钥加密口令加密解密口令解密2、发送PGP加密和签名后的电子邮件并解密邮件将要发送的文件添加到PGP压缩包对文件进行加密输入邮件地址签名保存生成加密后的PGP文件将加密后的PGP文件发送给搭档对方收到邮件收到的PGP文件解密后得到原文件解密后的文件可以打开并还原,如果密钥不配对打开将是乱码。
四、回答问题1)简要阐述加密解密与数字签名的原理和异同数字签名和数字加密的过程虽然都使用公开密钥体系,但实现的过程正好相反,使用的密钥对也不同。
数字签名使用的是发送方的密钥对,发送方用自己的私有密钥进行加密,接收方用发送方的公开密钥进行解密,这是一个一对多的关系,任何拥有发送方公开密钥的人都可以验证数字签名的正确性。
数字加密则使用的是接收方的密钥对,这是多对一的关系,任何知道接收方公开密钥的人都可以向接收方发送加密信息,只有唯一拥有接收方私有密钥的人才能对信息解密。
云南大学软件学院数据结构实验2

实验难度: A □ B □ C □序号学号姓名成绩指导教师(签名)学期:2017秋季学期任课教师:实验题目:组员及组长:承担工作:联系电话:电子邮件:完成提交时间:年月日一、【实验构思(Conceive)】(10%)(本部分应包括:描述实验实现的基本思路,包括所用到的离散数学、工程数学、程序设计等相关知识,对问题进行概要性地分析)本次实验通过C语言实现了多项式的输入(以字符串形式输入),字符串以链表形式建立、排序、多项式的加减。
利用了插入法排序的算法作为排序的核心算法。
运用了高等数学中多项式的加减法及求导的知识。
二、【实验设计(Design)】(20%)(本部分应包括:抽象数据类型的定义和基本操作说明,程序包含的模块以及各模块间的调用关系,关键算法伪码描述及程序流程图等,如有界面则需包括界面设计,功能说明等)抽象数据类型:t ypedef struct Item{ElemType coef;ElemType expn;Item *next;Item *prior;}Item,*LinkList;基本操作:void input(ElemType *s); //输入字符串void TrsStoL(ElemType *s, LinkList x); //将字符串转换为链表void Items_print(LinkList s); //打印字符串LinkList Iems_Add(LinkList s1, LinkList s2);//多项式加法LinkList Iems_Sub(LinkList s1, LinkList s2);//多项式减法本程序只有两个模块,调用关系简单:主程序模块 -→调用--→多项式模块三、【实现(Implement)】(30%)(本部分应包括:抽象数据类型各操作的具体实现代码、关键操作的具体算法实现、函数实现,主程序实现等,并给出关键算法的时间复杂度分析。
如有界面则需包括界面的关键实现方法等。
云南大学软件学院综合技能实践-开发环境实验指导书

云南大学软件学院综合技能实践——《常用开发平台的安装和使用》实验指导书指导教师:梁宇蔡莉(注意:请先简要阅读实验指导书的要求再开始做实验)第一部分 JSP开发环境的搭建一、实验目的:1.掌握JSP开发环境搭建的具体步骤和操作方法。
2.掌握在JSP开发环境下创建一个简单JSP文件的方法。
3.掌握在JSP中创建虚拟目录的方法。
二、实验内容预习一、JSP概述JSP(Java Server Pages,Java服务器主页)技术为创建显示动态生成内容的Web页面提供了个简捷而快速的方法。
JSP技术的设计目的使得构造基于Web 的应用程序更加容易和快捷,这些应用程序能够与各种Web服务器、应用服务器、浏览器和开发工具共同工作。
JSP的明显优势如下:平台和服务器的独立性。
基于Java的JSP与平台无关,它可以使用任何web服务器(包括Apache、IIS和PWS)。
使用的脚本语言。
JSP使用Java作为它的脚本语言,其面向对象的编程思想较为优秀。
JSP跨平台的可重用性。
J3P组件(Enterprise JavaBeans,JavaBeans)都是跨平台可重用的。
EJB(Enterprise JavaBeans,企业级JavaBeans)组件可以访问传统的数据库,并能以分布式系统模式工作于UNIX 和Windows平台。
多样化和功能强大的开发工具支持。
JSP已经有了许多非常优秀的开发工具而是有许多可以免费获取,且其中行许多开发工具已经可以顺利地运行于多种平台之下。
二、建立JSP的运行环境由于JSP使用Java作为程序设计脚本语言,因此需要建立Java的运行环境。
编译和调试运行Java程序,需要安装JDK(Java Develop Kit,Java开发工具包)。
另外,JSP是基于Web的Java应用程序,因而它需要有特定的运行环境,即解释器。
由于Java语言是跨平台的,所以能解释Java语言的Web服务器与平台无关。
云南大学软件学院计算机网络原理报告4

云南大学软件学院实验报告课程:计算机网络原理实验任课教师:刘春花,刘宇姓名: ____ 学号:__________专业:数字媒体技术成绩:实验四、web服务器套接字编程实验报告1.实验目的:编写一个WEB服务器程序,可以接受来自浏览器的访问,并传输页面(包含多个对象)到浏览器。
掌握Socket编程。
2.实验环境:连入局域网络的主机一台。
3.实验指导:超文本传输协议(HTTP)是位于TCP/IP 协议的应用层,是最广为人知的协议,也是互连网中最核心的协议之一。
HTTP协议是Web浏览器和Web服务器之间的应用层协议,是通用的、无状态的、面向对象的协议。
一个完整的HTTP协议会话过程包括四个步骤:✧连接Web浏览器与Web服务器建立连接,打开一个称为Socket(套接字)的虚拟文件,此文件的建立标志着连接建立成功;✧请求Web浏览器通过Socket向Web服务器提交请求。
HTTP的请求一般是GET或POST 命令(POST用于FORM参数的传递);✧应答Web浏览器提交请求后,通过HTTP协议传送给Web服务器。
Web服务器接到后,进行事务处理,处理结果又通过HTTP传回给Web浏览器,从而在Web浏览器上显示出所请求的页面;✧关闭连接应答结束后Web浏览器与Web服务器必须断开,以保证其它Web浏览器能够与Web 服务器建立连接。
4.实验分析,回答下列问题。
运行实验提供的Webserver.java程序,分析该程序实现的功能,为实验程序主要代码加上注释。
import java.io.*;import .*;import java.util.*;class Webserver{public static void main(String arg[]) throws Exception{//变量定义String requestMessageLine;String filename;ServerSocket listenSocket=new ServerSocket(8080);//创建一个ServerSocket套接字对象,并绑定在8080端口上Socket connectionSocket=listenSocket.accept();//监听并接受客户端BufferedReaderinFromClient=newBufferedReader(newInputStreamReader(connectionSocket.getInputStream()));//根据socket输入流,创建个缓冲读取的对象DataOutputStreamoutToClient=newDataOutputStream(connectionSocket.getOutputStream());//根据socket输入流,创建个数据输出流,返回客户端的requestMessageLine=inFromClient.readLine();//读取第一行信息StringTokenizer tokenizerLine=new StringTokenizer(requestMessageLine);//将第一行信息转换成StringTokenizer对象if(tokenizerLine.nextToken().equals("GET")){ //如果遇到"GET"filename=tokenizerLine.nextToken();//将下一个值赋值给filenameif(filename.startsWith("/")==true)filename=filename.substring(1); //如果filename中有/,去掉/System.out.println("The request filename is:" + filename);//打印出The request filename is:File file=new File(filename);int numOfBytes=(int)file.length();//获得到这个文件的大小FileInputStream inFile=new FileInputStream(filename);//创建这个文件的输入流byte[] fileInBytes=new byte[numOfBytes]; //定义个文件大小的字节数组inFile.read(fileInBytes); //将文件读入到字节数组中outToClient.writeBytes("HTTP/1.0 200 Document Follows\r\n"); //将字符返回给客户端if (filename.endsWith(".jpg")) //如果文件是jpg格式的outToClient.writeBytes("Content-Type:image/jpeg\r\n"); //将文件类型jpeg发送给客户端if (filename.endsWith(".gif")) //如果文件是gif格式的outToClient.writeBytes("Content-Type:image/gif\r\n"); //将文件类型gif发送给客户端outToClient.writeBytes("Content-Length:" + numOfBytes + "\r\n"); //将文件大小发送给客户端outToClient.writeBytes("\r\n"); //换行outToClient.write(fileInBytes, 0, numOfBytes); //将文件的字节流形式发送给客户端connectionSocket.close(); //关闭socket} elseSystem.out.println("Bad Resquest Message"); //如果请求信息中没有“GET”,控制台输出此信息}}运行截图如下:5、实验总结总结你在实验过程中遇到的问题和解决的方法。
云南大学软件学院计算机网络原理实验五和六-17年金老师班

实验五、六传输层协议分析实验报告序号:姓名:学号:2016 成绩1.实验目的:理解TCP报文首部格式和字段的作用,TCP连接的建立和释放过程,TCP数据传输过程中编号与确认的过程;分析UDP协议报文格式。
2.实验环境:连网环境,可以是局域网,也可以是连入Internet的单机。
3.实验步骤:(1)启动Etherel协议分析软件,并开始抓包。
(2)启动某个基于TCP的应用程序,例如连接某个FTP站点,或通过浏览器访问某个网页。
(3)等出现浏览的网页后停止数据包的捕获。
(4)出现协议分析界面,将filter 一栏填入tcp,则只显示TCP协议信息,通过此信息,可以看到TCP连接的三次握手过程和协商的初始的序列号,数据传输过程以及拆除连接的相应信息。
4.实验分析,回答下列问题实验五 TCP协议分析打开捕获文件,通过捕获的数据包分析TCP建立连接的三次握手的过程,并将TCP建立连接过程中的三个报文填写下来。
字段名称第一条报文第二条报文第三条报文报文序号 1 2 3Sequence Number 0 0 1 Acknowedgement Numbber 0 1 1ACK 0 1 1SYN 1 1 0(1)TCP建立连接时的三个报文,其报文首部与其他TCP报文有什么不同?都使用了SYN 协议。
TCP 建立连接时的三个报文的首部都具有Options 字段,且其Sequence 和Acknowedgement Numbber为0或者1。
SYN是发送标志位,ACK是确认标志位。
(2)报文首部的OPTION字段的作用是什么?值为多少?表明本端所能接收的最大长度的报文段。
值为12bytes。
(3)分析TCP数据传输阶段的前8个报文,将报文信息填入到表中数据传送阶段第一个报文的序号字段值是否等于连接建立时第三个报文的序号?相等(4)捕获一个拆除TCP连接的数据包,附上捕获截图,主要要包含拆除连接的数据包部分,分析TCP释放连接的过程,选择TCP释放连接过程当中的四个报文,将报文信息填在下表。
云南大学软件学院综合技能实践-数据库实验指导书

云南大学软件学院综合技能实践——《常用数据库系统的安装和调试》实验指导书第一部分MySQL数据库的安装和使用一、实验目的:1.掌握MySQL数据库环境搭建的具体步骤和操作方法。
2.掌握启动和运行MySQL的方法。
3.掌握使用SQL语句创建数据库、表及向表中插入记录的方法。
二、实验内容预习一、MySQL概述MySQL是最流行的开放源码SQL数据库管理系统,它是由MySQL AB公司开发、发布并支持的。
MySQL AB是由多名MySQL开发人创办的一家商业公司。
它是一家第二代开放源码公司,结合了开放源码价值取向、方法和成功的商业模型。
数据库是数据的结构化集合。
它可以是任何东西,从简单的购物清单到画展,或企业网络中的海量信息。
要想将数据添加到数据库,或访问、处理计算机数据库中保存的数据,需要使用数据库管理系统,如MySQL服务器。
计算机是处理大量数据的理想工具,因此,数据库管理系统在计算方面扮演着关键的中心角色,或是作为独立的实用工具,或是作为其他应用程序的组成部分。
关联数据库将数据保存在不同的表中,而不是将所有数据放在一个大的仓库内。
这样就增加了速度并提高了灵活性。
MySQL的SQL指得是“结构化查询语言”。
SQL是用于访问数据库的最常用标准化语言,它是由ANSI/ISO SQL标准定义的。
SQL标准自1986年以来不断演化发展,有数种版本。
在本手册中,“SQL-92”指得是1992年发布的标准,“SQL:1999”指得是1999年发布的标准,“SQL:2003”指得是标准的当前版本。
我们采用术语“SQL标准”标示SQL标准的当前版本。
二、MySQL的安装MySQL是一个开源的用于数据库管理的软件。
可以到MySQL的主页上进行下载,地址为。
登录学院ftp://172.25.10.20/(内网)或者ftp://113.55.4.20(外网) 用户名:zhuyp_std, 密码:std,下载区常用数据库的安装和调试文件夹下载相关软件。
数据库实验2:使用向导创建并管理数据库1

云南大学软件学院实验报告
课程:数据库原理与实用技术实验学期:2012学年第一学期任课教师:薛岗专业:学号:姓名:成绩:
实验2使用向导创建并管理数据库
一、实验目的
二、实验内容
SQL Server 2000数据库平台
1.使用企业管理器创建如下数据库:(截图)
2.使用企业管理器创建Employee数据库表:(截图)
3.练习生成Employee数据库脚本“employee.sql”,并分析和记录下脚本信息。
4.使用企业管理器生成Employee数据库表的关系图,并记录。
5.在企业管理其中,直接执行删除表月薪表salary中的Fact列的操作,看是否能执行这一操作。
1、在数据库salary表中要求base不小于300,bonus不小于50如何实现。
2、在数据库雇员信息表person中要求SEX列值只能为“男”或者“女”,如何实现。
3、。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
云南大学软件学院
实验报告
课程:计算机网络原理实验任课教师:
姓名:学号:专业:成绩:
实验二、应用层协议分析实验报告
1.实验目的:
分析HTTP协议报文的首部格式,理解HTTP协议的工作过程;分析DNS的工作过程。
2.实验环境:
(1)连入Internet的主机一台
(2)主机安装Ethereal软件
3.实验步骤:
a.下载一个非常简单的HTML文件(该文件不嵌入任何对象),利用Ethereal软件分析HTTP 协议。
(1)启动Web browser。
清空浏览器的缓存。
(2)启动Ethereal,开始Ethereal分组俘获。
(3)在打开的Web browser窗口中可输入下列地址之一
浏览器中将显示一个只有一行或多行文字的非常简单的HTML文件。
(4)停止分组俘获。
在显示过滤筛选说明处输入“http”,分组列表子窗口中将只显示所俘获到的HTTP报文。
将捕获结果保存为test1。
(5)根据结果回答下列问题回答实验a的问题。
实验b.下载一个含多个嵌入对象的网页,利用Ethereal软件分析HTTP协议。
(1)启动浏览器,将浏览器的缓存清空。
(2)启动Ethereal分组俘获器。
开始Ethereal分组俘获。
(3)在浏览器的地址栏中输入某个地址,(需要满足该地址下的网页是包含多个内嵌对象即可)。
(4)停止Ethereal分组俘获,在显示过滤筛选说明处输入“http”,分组列表子窗口中将只显示所俘获到的HTTP报文。
将捕获结果保存为test2
(5)重新启动Web browser。
启动Ethereal分组俘获器,进行分组捕获。
在Web browser 当中重新输入相同的URL或单击浏览器中的“刷新”按钮。
(6)步骤同(5)。
将捕获结果保存为test3
(7)根据结果回答下列问题回答实验b的问题。
实验c. DNS 实验
(1)在ms-dos 下,键入ipconfig/flushdns,清理并重设定DNS客户解析器缓存的内容。
(2)打开浏览器,并清空浏览器的缓存.
(3)打开Ethereal协议分析软件,在filter一栏输入 ip.address==”本机IP地址”,则该协议分析软件仅捕获从本机发送或发送到本机的数据包.
(4)开始捕获数据
(5)在浏览器的地址一栏输入任意一个Internet网址
(6)停止捕获数据,并显示分析结果。
将filter一栏输入DNS,即只查看DNS协议的内容。
(7)根据结果回答下列问题回答实验d的问题。
4.实验分析,回答下列问题。
实验a
(1)填写浏览器的输入的URL地址。
URL地址:/ethereal-labs/HTTP-ethereal-file1.html。
(2)打开test1的捕获文件,分析请求报文
请求行字段:
首部字段:
(3)打开test1的捕获文件,分析响应报文
状态行字段:
首部行字段:
(4)根据捕获的报文,填写相应的内容
实验b.
根据操作回答下面的问题。
(1)填写浏览器的输入的URL地址。
URL地址: 。
(2)分析test2的捕获文件,你的浏览器一共发出了多少个HTTP GET请求,每个GET 请求的对象是什么?这些请求被发送到的目的地的IP地址是多少?
(3)分析你的浏览器向服务器发出的第一个HTTP GET请求的内容,在该请求报文中,是否有一行是:IF-MODIFIED-SINCE?分析服务器响应报文的内容,服务器是否明确返回了文件的内容?如何获知?
没有;服务器明确返回了文件的内容,报文顶部视图里出现“HTTP/1.1 200 OK (text/html)”的字段,状态码为200
(4)分析捕获文件test3分析你的浏览器向服务器发出的第二个“HTTP GET”请求,在该请求报文中是否有一行是:IF-MODIFIED-SINCE?如果有,在该首部行后面跟着的信息是什么?
有;
信息:Thu, 20 Jan 2011 07:15:35 GMT。
(5)服务器对第二个HTTP GET请求的响应中的HTTP状态代码是多少?服务器是否明确返回了文件的内容?请解释。
状态代码:304;
服务器没有明确返回文件的内容,因为该响应报文中没有“Line-based text data: text/html”字段。
实验c.
(1)填写浏览器的输入的URL地址。
URL地址: 。
(2)定位到DNS查询报文和查询响应报文,这两种报文的发送是基于UDP还是基于TCP 的?DNS查询报文的目的端口号是多少?DNS查询响应报文的源端口号是多少?
基于UDP。
目的端口号:51402。
源端口号:53
(3)DNS查询报文发送的目的地的IP地址是多少?利用ipconfig命令(ipconfig/all)决定你主机的本地DNS服务器的IP地址。
这两个地址相同吗?
202.203.208.33,一样的
(4)填写相应的DNS报文各字段的值(选择两个相对应的DNS查询和响应报文即可,没有的字段可填无)
DNS 查询报文:
检查DNS查询报文,它是哪一类型的DNS查询?该查询报文中包含“answers”吗?
A类型,含有answer
DNS响应报文
检查DNS查询响应报文,其中提供了多少个“answers”?每个answers包含哪些内容?。