当前位置:文档之家› java_jsp课程设计报告(网络购物车的实现) 2[1]

java_jsp课程设计报告(网络购物车的实现) 2[1]

java_jsp课程设计报告(网络购物车的实现) 2[1]
java_jsp课程设计报告(网络购物车的实现) 2[1]

南阳理工学院

课程设计

课程设计名称:课程设计

专业班级:数据库一班

学生姓名:张文瑞

学号:1315925020

指导教师:

学生姓名张文瑞专业班级数据库学号1312925020 题目网络购物车

主要内容

淘宝、京东、易购等都是知名度很大的电子商务网站,而对于电子商务网站来说一个很重要的组成部分便是网络购物车,要求利用html、jsp、servlet、数据库等知识点,结合相关设计模式、以及软件工程的相关知识,在经过需求分析、总体设计、详细设计等流程步骤以后,设计一个网络购物车。主要功能是记录和操作不同客户的网上购物信息。该系统能对购物车中商品信息进行查询、增加、修改、删除、清空、下载等操作,商品信息存储在数据库中。

任务要求

综合运用所学的JAVA程序设计基本知识,并能通过查阅相关文献材料,独立完成该课题的设计开发工作。要求根据本课题设计合理的数据结构,并实现:商品展示、操作成功提示、购物车展示等视图界面;对商品信息的查询、增加、修改、删除、清空、下载等功能模块。

系统采用tomcat、记事本等开发工具进行开发实现。

根据系统功能,结合软件开发流程,完成设计报告的撰写。

参考文献[1](美)Cay S. Horstmann、Gary Cornell. Java核心技术卷I:基础知识(第

8版)(英文影印版).人民邮电出版社, 2008.11

[2]耿祥义、张跃平. JA V A2实用教程(修订). 清华大学出版社,2001.10

[3]杨小平java项目案例导航科学出版社,2003.7

[4]傅进勇、邓少烽、李波jsp网络编程电子工业出版社2008.5

网络购物车

一:需求分析

利用html、jsp、java、servlet、数据库等知识点,结合相关设计模式、以及软件工程的相关知识,设计一个网站购物车,用于记录不同客户的购物订单,

并能对购物车中商品信息进行查询、修改、删除、清空、下载等操作,商品信息存储在数据库中。具体要实现的功能如下:1:显示商品展示界面、操作成功界面、购物车展示界面等界面。2:商品信息存储在数据库中。3:对商品信息能够进行查询、修改、删除、清空、下载等操作。4:使用MVC 设计模式(View(jsp)、Model(javaBean)、Controller(servlet))。5:在浏览器中输入访问信息进行访问。6:购物车信息分页显示。

二:概要设计

本次课程设计中使用了MVC 设计模式,jsp 作为View,javaBean 作为Model ,servlet 作为controller ,实现界面与逻辑的分离,模块之间松耦合,通过传递参数进行调用。Jsp 页面通过发送一个操作类型变量,从而使得controller 获知应当进行的操作,并通过调用javabean 进行实际的执行,这样页面与逻辑就得到了分离,互不干涉和影响。使用数据库存储购物信息,在数据库中对商品信息进行增、删、改、查等操作,此外控制器通过调用writeexcel 类,在每次查看信息之前把当前的商品信息写入到xls 文件中进行保存,并供用户下载。具体的设计模块及系统流程如下图所示:

View

controller

Model

数据库或文件

operate.java

controloperate.java

writeexcel.java

Shoppingcar 数据库

shoppingcarmessage.xls

发送请求

进行调用 执行操作

返回结果

返回响应

default.jsp shoppingcarplay.jsp alter.jsp addsuccess.jsp updatesuccess.jsp

三:运行环境、开发语言

运行环境:Windows XP 浏览器

开发语言:html、jsp、java

四:详细设计

1:程序清单

Java课程设计网络购物车文件功能对应表

序号文件名功能

1 default.jsp 显示商品信息

2 shoppingcarplay.jsp 显示购物车信息

3 alter.jsp 显示修改商品页面

4 addsuccess.jsp 显示成功添加商品

5 updatesuccess.jsp 显示成功更新商品

6 controloperate.java 控制进行各种操作

7 operate.java 对数据库进行操作

8 write.excel.jaava 生成excel信息文件

9 shoppingcarmessage.xls 记录购物车信息

2:主要代码

1:显示商品信息界面

用jsp来显示主界面

<%@page contentType="text/html;charset=gb2312"%>

登录主页面


欢迎光临百味书屋!




//用表格来排列显示信息

书名:货币战争
书号:0001


作者:王一
价格:23

书名:我的抗战
书号:0002


作者:王二
价格:33

书名:你猫叔了没
书号:0003


作者:王三
价格:43

书名:赞美你
书号:0004


作者:王四
价格:53

书名:刀尖
书号:0005


作者:王五
价格:63

书名:人脉是设计出来的
书号:0006


作者:王六
价格:73

书名:龙年运程
书号:0007


作者:王七
价格:83

align=left>书名:最好的时光在路上
书号:0008


作者:王八
价格:93

书名:七日谈
书号:0009


作者:王九
价格:103




2:显示购物车信息界面

用jsp分页显示购物车中的商品信息

<%@page import="java.sql.*" import="java.util.*" contentType="text/html;charset=gb2312"%>

购物车界面



您的购物车列表:




<%

request.setCharacterEncoding("gb2312");

ArrayList[] rs;

rs=(ArrayList[])session.getAttribute("rs");//获取从数据库的查询结果集

int onepagecount=3;int totalcount=0;int pagecount=0;

if(rs[0]!=null)

{

totalcount=rs.length;//获取分页显示需要的相关变量

if(totalcount%onepagecount==0)

{

pagecount=totalcount/onepagecount;

}

else

{

pagecount=totalcount/onepagecount+1;

}

if(request.getParameter("nowpage")!=null)//如果不是第一次登录查询界面的处理

{

request.setCharacterEncoding("gb2312");

int nowpage=Integer.parseInt(request.getParameter("nowpage"));

//rs.absolute(nowpage*onepagecount+1);

%>

<%

if((nowpage+1)*onepagecount>=totalcount)//当前页面为最后一页

{

for(int i=0;i<(totalcount-nowpage*onepagecount);i++)

{

%>

<%

}

%>

书名书号作者价格数量
<%=rs[nowpage*onepagecount+i].get(0)%><%=rs[nowpage*onepa gecount+i].get(1)%><%=rs[nowpage*onepagecount+i].get(2)%><%=rs[nowpage* onepagecount+i].get(3)%><%=rs[nowpage*onepagecount+i].get(4)%>



下载购物信息

返回主页

上一页  第<%=nowpage+1%>页  共<%=pagecount%>页

<%

}

Else//不是最后一页

{

for(int i=0;i

{

%>

<%=rs[nowpage*onepagecount+i].get(0)%><%=rs[nowpage*onepa gecount+i].get(1)%>

<%=rs[nowpage*onepagecount+i].get(2)%><%=rs[nowpage* onepagecount+i].get(3)%>

<%=rs[nowpage*onepagecount+i].get(4)%>

<%

//rs.next();

}

if((nowpage-1)==-1)//第一页

{

%>



下载购物信息

返回主页

下一页  第<%=nowpage+1%>页  共<%=pagecount%>页

<%

}

if((nowpage+1)==pagecount){ //最后一页{

%>



下载购物信息

返回主页

上一页  第<%=nowpage+1%>页  共<%=pagecount%>页

<%

}

if(((nowpage-1)!=-1)&&((nowpage+1)!=pagecount))//中间页面

{

%>



下载购物信息

返回主页

上一页  下一页  第<%=nowpage+1%>页  共<%=pagecount%>页

<%

}

}

}

Else//第一次登录查询页面

{

%>

<%

if(totalcount<=3)//总页面=1

{

for(int i=0;i

{

%>

<%

//rs.next();

}

%>

书名书号作者价格数量
<%=rs[i].get(0)%><%=rs[i].get(1)%><%=rs[i].get(2)%><%=rs[i].get(3)%><%=rs[i].get(4)%>



下载购物信息

返回主页

<%

}

Else//总页面>1

{

for(int i=0;i

{

%>

<%=rs[i].get(0)%><%=rs[i].get(1)%>

<%=rs[i].get(2)%><%=rs[i].get(3)%>

<%=rs[i].get(4)%>

<%

}

%>


下载购物信息

返回主页

下一页  第一页  共<%=pagecount%>页

<%

}

}

}

Else//结果集为空

{

%>



您的购物车是空的!





返回主页

<%

}

%>

3:显示修改商品界面

用jsp显示修改商品信息的界面

<%@page contentType="text/html;charset=gb2312"%>

修改购物车界面








<%

request.setCharacterEncoding("gb2312");

String booknum=(String)request.getParameter("booknum");

%>

//用form来提交修改的变量及书号

您要订购的数量:

<%

%>

4:显示成功添加商品

用jsp显示成功添加操作

<%@page contentType="text/html;charset=gb2312"%>

添加成功界面



已成功加入购物车!






返回主页

5:显示成功更新商品

用jsp显示成功更新操作

<%@page contentType="text/html;charset=gb2312"%>

更新成功界面



已成功更新您的购物车!






6:控制进行各种操作功能

用java servlet实现控制器控制进行各种操作以及决定返回何种界面

package shoppingcar;

import java.util.*;

import javax.servlet.*;

import javax.servlet.http.*;

import java.io.*;

import java.sql.*;

public class controloperate extends HttpServlet

{//重写dopost方法对jsp请求进行处理

public void doPost(HttpServletRequest request,HttpServletResponse response)throws ServletException,IOException

{

request.setCharacterEncoding("gb2312");//获取相关变量

String operatetype=(String)request.getParameter("operatetype");

shoppingcar.operate ope=new shoppingcar.operate();

shoppingcar.writeexcel we=new shoppingcar.writeexcel();

HttpSession session = request.getSession();

if(operatetype.equals("add"))//添加操作的处理

{

request.setCharacterEncoding("gb2312");

String booknum= (String)request.getParameter("booknum");

String ip=(String)request.getRemoteAddr();

ope.addbook(booknum,ip);

response.sendRedirect("addsuccess.jsp");

}

if(operatetype.equals("scan"))//查询操作的处理

{

ArrayList[] rs=ope.getbook();

session.setAttribute("rs",rs);

if(rs[0]!=null)

{

we.write(rs);

}

response.sendRedirect("shoppingcarplay.jsp");

}

if(operatetype.equals("alter"))//修改操作的处理

{

request.setCharacterEncoding("gb2312");

String booknum= (String)request.getParameter("booknum");

String count=(String)request.getParameter("count");

ope.updatebook(booknum,count);

response.sendRedirect("updatesuccess.jsp");

}

if(operatetype.equals("delete"))//删除操作的处理

{

request.setCharacterEncoding("gb2312");

String booknum= (String)request.getParameter("booknum");

ope.deletebook(booknum);

response.sendRedirect("updatesuccess.jsp");

}

if(operatetype.equals("deleteall"))//清空购物车操作的处理{

request.setCharacterEncoding("gb2312");

ope.deleteallbook();

response.sendRedirect("updatesuccess.jsp");

}

}

}

7:对数据库进行操作功能

用javabean通过多个函数实现对数据库的多种操作package shoppingcar;

import java.sql.*;

import java.util.*;

public class operate

{

ArrayList[] a;

public void addbook(String booknum,String ip)//对数据库进行添加记录操作

{

try

{

Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); //连接数据库

Connection conn = DriverManager.getConnection("jdbc:odbc:shoppingcar","sa","111111");

Statement stmt = conn.createStatement();

String sql1="select * from 购物车where 书号='"+booknum+"' and ip地址='"+ip+"'";

ResultSet rs=stmt.executeQuery(sql1);

String sql2="insert into 购物车(ip地址,书号,数量) values('"+ip+"','"+booknum+"',1)";

if(!rs.next())//当前不存在该条记录直接插入

{

stmt.executeUpdate(sql2);

}

Else//否则进行更新操作

{

int newcount=rs.getInt("数量");newcount+=1;

String sql3="update 购物车set 数量="+newcount+" where 书号='"+booknum+"' and ip地址='"+ip+"'";

stmt.executeUpdate(sql3);

}

stmt.close();conn.close();

}catch(Exception e){}

}

public void get()

{

try

{

Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");

Connection conn1 = DriverManager.getConnection("jdbc:odbc:shoppingcar","sa","111111");

Statement stmt1 = conn1.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,

ResultSet.CONCUR_READ_ONLY);//创建支持游标滚动的statement

String sql="select 书名, 书籍.书号, 作者, 价格, 数量from 书籍, 购物车where 书籍.书号=购物车.书号";//获取结果的sql语句

ResultSet rs=stmt1.executeQuery(sql);

if(rs.next())

{

https://www.doczj.com/doc/0b403299.html,st();

Integer rows = rs.getRow();

rs.beforeFirst();

this.a=new ArrayList[rows];

int l =0;

while (rs.next()) //将结果集转换为数组对象

{

this.a[l] = new ArrayList();

this.a[l].add(0,rs.getString(1));

this.a[l].add(1,rs.getString(2));

this.a[l].add(2,rs.getString(3));

this.a[l].add(3,rs.getString(4));

this.a[l].add(4,rs.getInt(5));

l++;

//System.out.println("success5");//判断该语句是否执行成功

}

}

else

{

this.a=new ArrayList[100];

}

stmt1.close();conn1.close();

}catch(Exception e){}

}

public ArrayList[] getbook()

{

get();

return this.a;//返回数组对象

}

public void updatebook(String booknum,String count)//对数据库执行修改操作作

{

try

{

Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");

Connection conn1 = DriverManager.getConnection("jdbc:odbc:shoppingcar","sa","111111");

Statement stmt1 = conn1.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,

ResultSet.CONCUR_READ_ONLY);//创建支持游标滚动的statement

int bookcount=Integer.parseInt(count);

if(bookcount<=0)

{

deletebook(booknum);

}

else

{

String sql="update 购物车set 数量="+bookcount+" where 书号='"+booknum+"'";

stmt1.executeUpdate(sql);

stmt1.close();conn1.close();

}

}catch(Exception e){}

}

public void deletebook(String booknum)//对数据库执行删除操作

{

try

{

Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");

Connection conn1 = DriverManager.getConnection("jdbc:odbc:shoppingcar","sa","111111");

Statement stmt1 = conn1.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,

ResultSet.CONCUR_READ_ONLY);//创建支持游标滚动的statement

String sql="delete 购物车where 书号='"+booknum+"'";

stmt1.executeUpdate(sql);

stmt1.close();conn1.close();

}catch(Exception e){}

}

public void deleteallbook()//清空购物车

{

try

{

Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");

Connection conn1 = DriverManager.getConnection("jdbc:odbc:shoppingcar","sa","111111");

Statement stmt1 = conn1.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,

ResultSet.CONCUR_READ_ONLY);//创建支持游标滚动的statement

String sql="truncate table 购物车";

stmt1.executeUpdate(sql);

stmt1.close();conn1.close();

}catch(Exception e){}

}

}

8:生成excel信息文件

用java application引入poi包后,生成exceel文件,生成表格,循环添加行数据,最终生成购物车信息。

package shoppingcar;

import java.io.*;

import java.text.NumberFormat;

import java.util.*;

import https://www.doczj.com/doc/0b403299.html,ermodel.HSSFCell; //引入poi工具包

import https://www.doczj.com/doc/0b403299.html,ermodel.HSSFRow;

import https://www.doczj.com/doc/0b403299.html,ermodel.HSSFSheet;

import https://www.doczj.com/doc/0b403299.html,ermodel.HSSFWorkbook;

public class writeexcel//Excel

{

public void write(ArrayList[] rs)

{

HSSFWorkbook wb = new HSSFWorkbook(); //相当于writeexcel整个文件

FileOutputStream fos = null;

try

{

//创建一个文件

fos = new FileOutputStream("D:/apache-tomcat-6.0.33/webapps/shoppingcar/shoppingcarmessage.xls");

} catch (FileNotFoundException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

HSSFSheet sheet = wb.createSheet("sheet1"); //生成writeexcel中的sheet

HSSFRow row = sheet.createRow(0); //创建第一行

HSSFCell cell = row.createCell((short) 0); //创建第一个单元格

cell.setEncoding(HSSFCell.ENCODING_UTF_16); //设定单元格的字符编码

cell.setCellValue("书名"); //设定单元格的名字

cell = row.createCell((short) 1); //创建第二个单元格

cell.setEncoding(HSSFCell.ENCODING_UTF_16);

cell.setCellValue("书号");

cell = row.createCell((short) 2);

cell.setEncoding(HSSFCell.ENCODING_UTF_16);

cell.setCellValue("作者");

cell = row.createCell((short) 3);

cell.setEncoding(HSSFCell.ENCODING_UTF_16);

cell.setCellValue("价格");

cell = row.createCell((short) 4);

cell.setEncoding(HSSFCell.ENCODING_UTF_16);

cell.setCellValue("数量");

int totalcount=rs.length;

for (int i = 0; i

{

String bookname=(String)rs[i].get(0);String booknum=(String)rs[i].get(1);

String bookauthor=(String)rs[i].get(2);String bookprice=(String)rs[i].get(3);

int bookcount=Integer.parseInt(rs[i].get(4).toString());

row = sheet.createRow(i +1); //创建行

cell = row.createCell((short) 0);

cell.setEncoding(HSSFCell.ENCODING_UTF_16);

cell.setCellValue(bookname); //设定序号

cell = row.createCell((short) 1);

cell.setEncoding(HSSFCell.ENCODING_UTF_16);

cell.setCellValue(booknum);

cell = row.createCell((short) 2);

cell.setEncoding(HSSFCell.ENCODING_UTF_16);

cell.setCellValue(bookauthor);

cell = row.createCell((short) 3);

cell.setEncoding(HSSFCell.ENCODING_UTF_16);

cell.setCellValue(bookprice);

cell = row.createCell((short) 4);

cell.setEncoding(HSSFCell.ENCODING_UTF_16);

cell.setCellValue(bookcount);

}

try

{

//将这个文件交给HSSFWorkbook类由它负责写入

wb.write(fos);

//关闭输出流

fos.close();

} catch (IOException e1) {

// TODO Auto-generated catch block

e1.printStackTrace();

}

}

}

五:调试与分析

本次设计中主要遇到了三点困难:(1)采用MVC设计模式,由于是第一次使用该模式,所以构思了很长时间才确定下来程序的模块结构及功能。(2)使用了java servlet,servlet也是第一次使用,中间还要用到配置XML文件,我

在网上搜了很多资料才实现了servlet的应用。(3)使用了数据库,也是由于使用的不多,sql语句以及连接数据库都不太熟悉,花费了一番功夫才得到解决。六:功能测试

登陆界面显示如图1:

1:

添加商品如图2:

2:

查看购物车如图3:

4:

5:

删除商品以及清空购物车如图6:

gijmlAAA计算机网络课程设计实验报告

计算机网络课程设计 实验报告

一、实验内容和要求 1、实验一数据包的捕获与分析 Wireshark是一种开源的网络数据包的捕获和分析软件,本实验通过Wireshark软件的安装使用,监控局域网的状态,捕获在局域网中传输的数据包,并结合在计算机网络课 程中学习到的理论知识,对常用网络协议的数据包做出分析,加深网络课程知识的理解和 掌握。具体内容及要求如下: Wireshark软件的安装; Wireshark软件的启动,并设置网卡的状态为混杂状态,使得Wireshark可以监 控局域网的状态; 启动数据包的捕获,跟踪PC之间的报文,并存入文件以备重新查; 设置过滤器过滤网络报文以检测特定数据流; 对常用协议的数据包的报文格式进行分析,利用协议分析软件的统计工具显示网 络报文的各种统计信息。 2、实验二网络层实验—Ping程序的设计与实现 实验目的 本实验目的是使学生掌握网络层协议的原理及实现方法。 实验设计内容 本实验为ICMP实验。实验内容:Ping命令实现的扩充,在给定的Ping程序的基础上做如下功能扩充: -h 显示帮助信息 -b 允许ping一个广播地址,只用于IPv4 -t 设置ttl值,只用于IPv4 -q 安静模式。不显示每个收到的包的分析结果,只在结束时,显示汇总结果 Ping命令的基本描述

二、实验环境 实验一数据包的捕获与分析 1.联网计算机 或linux 系统 3.在PC中安装协议分析软件(如:Wireshark) 4.物理基础: 标准的以太网采用的是持续 CSMA 的方式,正是由于以太网采用这种广播信道争用的方式,使得各个站点可以获得其他站点发送的数据。运用这一原理使信息捕获系统能够拦截的我们所要的信 5.工作模式: 1) 广播模式(Broad Cast Model):它的物理地址(MAC)地址是 0Xffffff 的帧为广播帧,工作在广播模式的网卡接收广播帧。 2)多播传送(MultiCast Model):多播传送地址作为目的物理地址的帧可以被组内的其它主机同时接收,而组外主机却接收不到。但是,如 果将网卡设置为多播传送模式,它可以接收所有的多播传送帧,而不 论它是不是组内成员。 3)直接模式(Direct Model):工作在直接模式下的网卡只接收目地址是自己 MAC地址的帧。 4)混杂模式(Promiscuous Model):工作在混杂模式下的网卡接收所有的流过网卡的帧,信包捕获程序就是在这种模式下运行的。 实验二网络层实验—Ping程序的设计与实现 1.联网计算机 2.Linux系统 3.系统自带编译环境

网络安全协议课程设计-IPsec隧道协议的安全分析与改进

《网络安全协议》 课程设计 题目IPsec隧道协议的安全分析与改进班级 学号 姓名 指导老师 2015年 7 月 4 日

目录 一、概述 (2) 1.1课程设计的目的 (2) 1.2课程设计的内容 (2) 1.3课程设计的要求 (3) 二、问题分析 (3) 2.1系统需求 (3) 2.2 GRE协议分析 (3) 2.3 IPsec协议分析 (4) 三、协议漏洞 (5) 3.1协议漏洞解决措施 (5) 3.2协议漏洞解决详解 (5) 四、协议完善具体实现 (6) 4.1实现分析 (6) 4.2 GRE实现流程分析 (8) 4.3简单设备设置 (10) 五、案安全性分析 (11) 六、程设计心得、总结 (11) 七、参考文献 (12)

一、概述 网络如若想实现交流传输,必须以网络协议为载体进行。而网络协议(Network Protcol)是控制计算机在网络介质上进行信息交换的规则和约定。网络协议通常会被按OSI参考模型的层次进行划分。OSI参考模型是国际标准化组织制定的网络体系结构参考模型,提供各种网络互联的标准,共分七层:物理层、数据链路层、网络层、传输层、会话层、表示层和应用层,会话层、表示层和应用层往往被合并称为高层。当前的计算机网络的体系结构是以TCP/IP协议为主的Internet结构。伴随着网络的诞生近几年频繁出现的安全事故引起了各国计算机安全界的高度重视,计算机网络安全技术也因此出现了日新月异的变化。安全核心系统、VPN安全隧道、身份认证、网络底层数据加密和网络入侵主动监测等越来越高深复杂的安全技术极大地从不同层次加强了计算机网络的整体安全性。网络安全的实现首先需要网络协议的安全,但是网络协议都是人为写的,存在先天的不足与缺陷,以至于只能慢慢实践发现并给与补充。这里先谈一下VPN中的GRE协议。GRE(Generic Routing Encapsulation,通用路由封装)协议是由Cisco和Net-smiths等公司于1994年提交给IETF(Internet Engineering Task Force,网络工程工作小组)的,标号为RFC1701和RFC1702。GRE协议规定了如何用一种网络协议去封装另一种网络协议的方法,是一种最简单的隧道封装技术,它提供了将一种协议的报文在另一种协议组成的网络中传输的能力。GRE协议就是一种应用非常广泛的第三层VPN隧道协议。GRE隧道使用GRE协议封装原始数据报文,基于公共IP网络实现数据的透明传输。GRE隧道不能配置二层信息,但可以配置IP地址。本文从GRE协议的工作原理入手,从安全性角度出发,详细分析了GRE隧道协议的不足与缺陷,最后提出了相关的安全防护方案。 1.1课程设计的目的 详细分析IPsec隧道协议不支持对多播和广播的加密的不足,并针对其漏洞设计实施完善可行的策略。 1.2课程设计的内容 将GRE与IPsec结合使用,弥补IPsec不能保护组播数据的缺陷。因为GRE可以封装组播数据并在GRE隧道中传输,所以对于诸如路由协议、语音、视频等组播

网络协议分析实验报告

实 验 报 告 课程名称 计算机网络 实验名称 网络协议分析 系别 专业班级 指导教师 学号 姓名 实验日期 实验成绩 一、实验目的 掌握常用的抓包软件,了解ARP 、ICMP 、IP 、TCP 、UDP 协议的结构。 二、实验环境 1.虚拟机(VMWare 或Microsoft Virtual PC )、Windows 2003 Server 。 2.实验室局域网,WindowsXP 三、实验学时 2学时,必做实验。 四、实验内容 注意:若是实验环境1,则配置客户机A 的IP 地址:192.168.11.X/24,X 为学生座号;另一台客户机B 的IP 地址:192.168.11.(X+100)。在客户机A 上安装EtherPeek (或者sniffer pro )协议分析软件。若是实验环境2则根据当前主机A 的地址,找一台当前在线主机B 完成。 1、从客户机A ping 客户机B ,利用EtherPeek (或者sniffer pro )协议分析软件抓包,分析ARP 协议; 2、从客户机A ping 客户机B ,利用EtherPeek (或者sniffer pro )协议分析软件抓包,分析icmp 协议和ip 协议; 3、客户机A 上访问 https://www.doczj.com/doc/0b403299.html, ,利用EtherPeek (或者sniffer pro )协议分析软件抓包,分析TCP 和UDP 协议; 五、实验步骤和截图(并填表) 1、分析arp 协议,填写下表 客户机B 客户机A

2、分析icmp协议和ip协议,分别填写下表 表一:ICMP报文分析

3、分析TCP和UDP 协议,分别填写下表

网络协议分析与仿真课程设计预习报告

编号:_______________本资料为word版本,可以直接编辑和打印,感谢您的下载 网络协议分析与仿真课程设计预习报告 甲方:___________________ 乙方:___________________ 日期:___________________

(计算机学院) 网络协议分析与仿真课程设计 预习报告 专业名称:__________ 网络工程_________________ 班级:_______________________________________ 学生姓名:____________________________________ 学号(8位): ________________________________ 指导教师:____________________________________ 设计起止时间:2013年12月2日一2013年12月13日

题目一网络流量分析 一、课程设计目的 里加深对IP、DNS、TCR UDP、HTTP等协议的理解; 里掌握流量分析工具的使用,学习基本的流量分析方法。 二、课程设计地点及时间 二号实验楼442网络实验室,12月2日至12月6日,每天8: 00-14: 00 三、课程设计实验条件 工具:Wireshark (Windows 或Linux), tcpdump (Linux) 要求:使用过滤器捕获特定分组;用脚本分析大量流量数据(建议用perl)。 内容:Web流量分析 四、课程设计原理 1、DNS域名解析:首先,客户端的应用层会封装数据到达传输层,在传输层标识源端口号 与目的端口号(源端口号为大于1023随机,目的端口号为UDP5狒口)及应用层服务(这 里因该是请求DN硒询服务吧)。传输层封装数据产生数据段传给网络层,在网络层标识源IP地址及目的IP地址(源IP地址为客户端IP ,目的IP地址为DNS服务器IP地址),网络层将数据段封装为数据包传给数据链路层,在数据链路层将会在数据包里加入源MACM址及目的MA砸址(源MACM址为客户端网卡MA弛址,目的MAC%址为DNS服务器MACM址),这里应该查询MA或存。数据链路层根据客户端与DNS服务器之间的链路,将数据包封装成 帧,传给物理层。物理层会将数据帧转化为电信号放到物理介质上。 电信号到达DNS服务器后会从物理层到达应用层(这里和客户端发送数据差不多,只不过这 个过程变成了解封装),DNS服务器做完域名解析后再将数据传给客户端,传输过程同客户端发送数据。 2、建立TCP/IP连接:客户端知道WE囹艮务器IP地址之后,在网络层产生建立TCP/IP三次握手的数据包(TCP/IP三次握手:客户端向服务器端发送SYN信息,服务器端收到SYN信 息后回复给客户端SYN+AC褊认信息,客户端收到确认信息后再向服务器发送ACK信息建立 连接),应用层标识HTTP服务将数据发送到传输层,传输层将数据+源端口号(大于1023)、目的端口号(80)+上层服务WW如装为数据段传给网路层。网络层将数据段+源ip与目的 ip (WW服务器的ip地址)封装为数据包发送到数据链路层。数据链路层参照ARP缓存表确定源MAC%址(本机MACM址)及目的MACM址(客户端与路由B相连端口的MACM址)将数据包封装成数据帧。这里还需要CR破验。。。。。。数据帧到达物理层后变成电信号发送 到介质上(这里还需要访问控制方法DSMA/CD 路由B收到电信号后传给路由器的数据链路层,这里还需要CRC,FC眼验。。。…确定数据 帧没有损坏后查看目的MACM址与路由器端口地址是否相同,如果相同将解封装,将数据包 发送到路由器B的物理层,路由器查看路由表确定数据包的转发端口,路由器B确定与路由 A之间的链路,创建帧。 路由B与路由A可以看成是点对点,即路由B将创建PPP帧。路由A收到电信号后,确定帧的完整性,如果完整即将数据帧解封装发送到网络层,路由A查询路由表将数据包转发到与WEBf连的路由端口。 路由A的数据链路层将查询ARP缓存表确定WW服务器的MACM址,路由A将创建源MAC 地址

java_jsp课程设计报告(网络购物车的实现) 2[1]

南阳理工学院 课程设计 课程设计名称:课程设计 专业班级:数据库一班 学生姓名:张文瑞 学号:1315925020 指导教师:

学生姓名张文瑞专业班级数据库学号1312925020 题目网络购物车 主要内容 淘宝、京东、易购等都是知名度很大的电子商务网站,而对于电子商务网站来说一个很重要的组成部分便是网络购物车,要求利用html、jsp、servlet、数据库等知识点,结合相关设计模式、以及软件工程的相关知识,在经过需求分析、总体设计、详细设计等流程步骤以后,设计一个网络购物车。主要功能是记录和操作不同客户的网上购物信息。该系统能对购物车中商品信息进行查询、增加、修改、删除、清空、下载等操作,商品信息存储在数据库中。 任务要求 综合运用所学的JAVA程序设计基本知识,并能通过查阅相关文献材料,独立完成该课题的设计开发工作。要求根据本课题设计合理的数据结构,并实现:商品展示、操作成功提示、购物车展示等视图界面;对商品信息的查询、增加、修改、删除、清空、下载等功能模块。 系统采用tomcat、记事本等开发工具进行开发实现。 根据系统功能,结合软件开发流程,完成设计报告的撰写。 参考文献[1](美)Cay S. Horstmann、Gary Cornell. Java核心技术卷I:基础知识(第 8版)(英文影印版).人民邮电出版社, 2008.11 [2]耿祥义、张跃平. JA V A2实用教程(修订). 清华大学出版社,2001.10 [3]杨小平java项目案例导航科学出版社,2003.7 [4]傅进勇、邓少烽、李波jsp网络编程电子工业出版社2008.5 网络购物车 一:需求分析 利用html、jsp、java、servlet、数据库等知识点,结合相关设计模式、以及软件工程的相关知识,设计一个网站购物车,用于记录不同客户的购物订单,

网络安全协议课程设计报告SSL协议

SSL协议的安全性研究 1 引言 随着计算机网络技术的飞速发展,信息时代的人们对Internet的依赖性越来越大。当今时代,电子商务和电子政务的应用越来越广泛,然而网络安全问题严重束缚了计算机网络的进一步应用。安全套接层SSL(Secure Sockets Layer)协议是由Netscape公司设计开发的安全协议,主要用于加强应用程序之间的数据的安全性。SSL协议是基于Web应用的安全协议,它采用了RSA算法、RC4—128、RC一128、三重DES算法和MD5等加密技术实现两个应用层之间的机密性、可靠性和数据完整性,并采用X.509数字证书实现鉴别,其加密的目的是建立一个安全的通讯通道,而且该通道可在服务器和客户机两端同时实现支持。 2 SSL协议简述及相关概念 SSL协议用来建立一个在客户和服务器之间安全的TCP连接,尤其可被用来认证服务器,可选地认证客户,执行密钥交换,提供消息认证,而且还可以完成在TCP协议之上的任意应用协议数据的完整性和隐蔽性服务。SSL为在Internet上安全地传送数据提供了一介加密通道,建立一个安全连接,主要实现以下工作:加密网络上客户端和服务器相互发送的信息;验证信息在传送过程是否安全完整:运用非对称密钥算法验证服务器;验证客户身份;交换应用层数据。 2.1 SSL---安全套接层协议。 是由Netscape设计的一种开放性协议,它提供了一种介于应用层和传输层之间的数据安全套接层协议机制。SSL位于TCP/IP协议与各种应用层协议之间,为TCP/IP连接提供数据加密、服务器认证、消息完整性以及可选的客户机认证。其目的是为客户端(浏览器)到服务端之间的信息传输构建一个加密通道,此协议是与操作系统和Web服务器无关的。 2.2 SSL协议可分两层: 2.2.1 SSL记录协议: 它建立在可靠的传输协议(如TCP)之上,位于SSL协议的底层,为高层协议提供数据封装、压缩、加密等基本功能的支持。在SSL中,所有数据被封装在记录中,SSL握手协议中的报文,要求必须放在一个SSL记录协议层的记录里,但应用层协议的报文,允许占用多个SSL 记录来传送 (1) SSL记录头格式 SSL记录头可以是2个或3个字节长的编码。SSL记录头包含的信息有记录头的长度、记录数据的长度,以及记录数据中是否有填充数据,其中填充数据是在使用块加密

Java课程设计

武汉科技大学城市学院 课程设计报告 课程设计名称JAVA程序设计课程设计 题目 A C M 院系信息工程学部 专业软件工程 班级 姓名 指导教师 2017 年 6 月23 日

课程设计评分表

JA V A编程课程设计指导书 学时:1周,学分:1 1.课程设计目的:JAVA编程课程设计属于软件开发类课程设计。该课程设计培养学生熟练应用当前主流的JAVA软件开发语言,检验软件的设计、编码与测试,具备较强的JAVA语言软件开发能力。 2.课程设计方式: (1)JAVA编程课程设计方式采取ACM测试的方式,利用所学的面向对象程序设计(JAVA)知识,培养学生具有分析应用问题的能力,能够独立完成应用程序的编制与调试工作。 (3)每个同学必须完成8-12道题,每题写出解题报告,解题报告内容:○1.题目标题○2.题目描述○3.解题思路○4.源码○5.小结 3.课程设计平台: eclipse或Myeclipse 4.课程设计考核方式 (1)学生独立提交软件设计作品和“课程设计报告书”,指导教师根据学生组提交的软件设计作品和“课程设计报告书”的质量,为学生组评定“优”“良”“中”“及格”或“不及格”; (2)根据各组学生所选题目的难易程度以及验收结果,为学生评定“优”“良”“中”“及格”或“不及格”。 “课程设计报告书”包括:课程设计项目名称,课程设计任务, 课程设计任务(功能)说明及功能模块图,数据库设计,各模块功能说明,使用的算法描述(如果需使用算法),各模块界面设计,各模块中关键代码段功能说明与代码行注释,测试说明,参考文献等。 5.参考文献 [1] 张思民. Java语言程序设计(第2版)[M].北京:清华大学出版社,2012.1 [2] 姜华. Java项目实战教程[M]. 北京:清华大学出版社,2012.9 [3] 陈喧. Java程序设计教程[M]. 北京:清华大学出版社,2011.5 [4] [美]Echel,B .Java编程思想(第四版)[M].北京:机械工业出版社,2007 [5] Michael Main. 数据结构:Java语言描述(第二版)(国外经典计算机科学教材)[M]. 北京:中国电力出版社,2007

应用Servlet实现购物车

应用Servlet实现购物车 具体实现过程 1、创建封装商品信息的值JavaBean---------GoodsSingle package com.yxq.valuebean; public class GoodsSingle { private String name; //保存商品名称 private float price; //保存商品价格 private int num; //保存商品购买数量public String getName() { return name; } public void setName(String name) { https://www.doczj.com/doc/0b403299.html, = name; } public int getNum() { return num; } public void setNum(int num) { this.num = num; }

public float getPrice() { return price; } public void setPrice(float price) { this.price = price; } } 2、创建工具JavaBean-------- MyTools 实现字符型数据转 换为整型及乱码处理 package com.yxq.toolbean; import java.io.UnsupportedEncodingException; public class MyTools { public static int strToint(String str){ //将String型数据转换为int型数据的方法 if(str==null||str.equals("")) str="0"; int i=0; try{ i=Integer.parseInt(str); //把str 转换成

计算机网络课程设计报告

计算机网络课程设计报告 姓名:李逍逍 班级:08计11 学号:08261012

一.课程设计的题目、目的及要求 (2) 二.课程设计的内容(分析和设计) (3) 三.绘制拓扑结构图 (3) 四.详细设计步骤 (5) 五.路由器或交换机配置的代码 (6) 六.显示最终的结果 (8) 七.课程设计总结 (9)

一.课程设计的题目、目的及要求 课程设计题目:组建小区局域网 课程设计目的: 更深了解路由器,交换机,PC机之间的配置与应用,熟练掌握一些简单的的网络应用和连接,熟练掌握路由器和交换机的基本配置;掌握DHCP、ACL、VLAN、和NET协议和相应的技术;提高对实际网络问题的分析和解决能力。该设计需要划分为四个子网层面的小区性的网络通讯。采用软件cisco,可以更好的实现各种不同网络设备互相配合与联系,以达到最佳的局域网通讯效果。 课程设计要求: 要求能根据实际问题绘制拓扑结构图,拓扑结构图可以是树形、星形、网状形、环状形及混合形结构的之一,清晰的描述接口,进行路由器或交换机的代码配置实现,并且每个方案的需有以下几部分的内容: 1、需求特点描述; 2、设计原则; 3、解决方案设计,其中必须包含: (1)设备选型; (2)综合布线设计; (3)拓扑图; (4)IP地址规划; (5)子网划分; (6)路由协议的选择; (7)路由器配置。 组建小区局域网的总体要求: 运用自己对局域网组网技术的理解,设计小区组网方案,使得一个具有200个住户节点的智能化小区能够进行网络通讯,且将整个小区可划分为四个区域:1.网络中心区:以物业管理中心及监控中心为主的核心交换设备和服务器群;2.远程网络接入区:包括外部网络接入口的路由器设备和网络安全设备;3.园区网络区:包括从网络中心到社区服务设施的骨干交换设备; 4.家庭网络区:包括从网络中心到楼宇中的骨干交换设备,并为各住户单元提供网络接入端口,是整个小区网络系统的最基本单元。

网络协议实践课程设计报告-

成都信息工程学院网络工程系 《网络协议实践》 课程设计报告 签名:

目录 第一章 TCP和ARP协议基础............................................................................... 错误!未定义书签。 1.1什么是TCP协议........................................ 错误!未定义书签。 1.2TCP报文类型与格式 .................................... 错误!未定义书签。 1.3什么是ARP协议........................................ 错误!未定义书签。 1.4ARP报文类型和结构 .................................... 错误!未定义书签。第二章抓包验证TCP协议和ARP协议.............................................................. 错误!未定义书签。 2.1实验环境.............................................. 错误!未定义书签。 2.2实验步骤与抓包结果分析................................ 错误!未定义书签。 2.3实验结论.............................................. 错误!未定义书签。第三章 OSPF路由协议验证分析.. (3) 3.1实验环境及工具介绍 (9) 3.2实验步骤及抓包结果分析 (10) 3.3实验结论--OSPF运行过程说明 (12) 3.4实验心得体会 (12)

网络协议课程设计报告

目录 1.课程设计目的 ---------------------------------------------------- 2 2.课程设计要求 ---------------------------------------------------- 2 3.课程设计题目分析 ------------------------------------------------ 2 3.1 网卡设置 -------------------------------------------------- 2 3.2 程序设计 -------------------------------------------------- 3 3.2.1 使用原始套接字------------------------------------------ 3 3.2.2 接收数据包---------------------------------------------- 4 3.2.3 定义IP头部的数据结构---------------------------------- 4 3.2.4 IP包的解析 --------------------------------------------- 5 4.解析IP数据包设计相关知识 -------------------------------------- 5 5.程序流程图------------------------------------------------------- 6 6.程序设计--------------------------------------------------------- 7 6.1 协议的定义 ------------------------------------------------ 7 6.2捕获处理--------------------------------------------------- 7 6.3 运行界面 -------------------------------------------------- 8 7.实验结果--------------------------------------------------------- 9 8.自我评析和总结 -------------------------------------------------- 9 8.1 实训心得-------------------------------------------------- 9 8.2 实训日记-------------------------------------------------- 9 9.主要参考资料 -------------------------------------------------- 10 [2]《网络协议分析》寇晓蕤罗俊勇编著机械工业出版社--------- 10 [3]《C语言程序设计》张建伟李秀琴主编科学出版社--------- 10 [4]《C++程序设计教程——面向对象分册》郑秋生主编 --------- 10电子工业出版社 -------------------------------------------------- 10 10.附录 ---------------------------------------------------------- 10

Javawebapp课程设计报告

《电子商务网站》课程设计报告 项目题目电子拍卖平台系统分析与设计 学生姓名 班级/ 学号 专业\ 指导教师 2011年10月制

1、系统概述 本系统实现的是一个网上拍卖系统,可以实现在线登录,注册;卖家上货,买家出价竞拍;拍卖商品列表、商品拍卖信息和商品搜索等功能,普通的Internet用户可以通过该系统注册成为会员后可以上传自己拍卖的产品和竞拍卖价的商品。 2、网站结构分析与设计 2.1目标设计 竞拍网站所要实现的功能如下。 会员注册:会员注册信息和会员登录验证 会员管理:会员资金管理 买家信息管理 卖家信息管理 2.2系统功能分析设计 竞拍网共分为三个模块:会员注册模块、会员个人管理模块和商品列表和搜索模块。其功能模块划分如图所示:

2.3数据库结构设计 根据系统功能的设计要求和模块划分,表结构设计如下:

2.4 数据库需求分析 数据项和数据结构如下。 会员信息表:自动编号、用户名、密码和身份证号码、资金、日期 商品信息表:自动编号、商品名、上传人、商品详情 卖家信息表:会员编号、商品编号、商品价格、截止时间 商品竞拍成功信息列表:商品名、用户名、竞拍时间、起初价格、最终价格、最成交时间 2.5、开发环境 开发工具:myeclipse 服务器软件:tomcat 数据库:MySQL 3.网站详细设计. 3.1网站流程设计

3.2数据库功能设计 三个存储过程: Onsell:展示拍卖信息,返回当时拍卖的所有信息; Buyingshow:展示某个商品详细信息 Buying:当用户竟拍是执行. 3.3 JA VA控制层设置 POJO包:与每一项功能相对应,设置对象类 DAO包:所有连接数据库的代码 Servlet:所有前台页面的操作过程. 3.4前台设计 以JSP为主,辅助以JS的主流技术,实现网页的动态效果和数据的动态接收,这里是项目最困难的地方. 4.网站的实施 前台\后台\控制分布实施: 4.1,初步软件结构实施 其中DAO包里全部是与数据库有关的连接数据库模式。 POJO包里全部是业务需要的数据结构类。 SERVLET包里全部是逻辑控制的控制模式。

JAVA 购物车实现

一下详细讲了一个JA V A购物车的实现方法!! 电子商务模型的JSP、JavaBean实现 现在,开发和管理一个电子商务系统需要高效率的开发和利用网络资源,特别是如果你想让你的顾客在网上购买你的产品或是取得你提供的服务的话,更要注意这一点。构建一个这样的商务网站来实现你商业上的目的并不是一件非常简单的工作,在开发电子商务网站的时候,我们就要充分的利用搞技术含量的技术,我们可以利用到最先进的Java 技术:Java Server Pages(JSP),Java Servlets 和JavaBeans(甚至是EJB),它们各自都有自己的不同的优点,因此了解在构建一个电子商务网站时如何合理的利用它们各自的优势,并且把它们联合起来以完成你想达到的效果是非常重要的。 当然,我们可以只使用JSP来构建电子商务系统,比如一个简单的购物车系统,但是如果你要想完成一个有效的的应用程序,并使它用于商业上,则需要综合以上我所说的三种技术相互补充的力量。让我们来看怎么把它们联合起来以完成最好的效果吧!我们都知道,JSP是Sun公司倡导的用来替代微软ASP的纯Java替代品,JSP技术发展壮大了Java Servlet 技术,事实上, JSP引擎在运行JSP时也把JSP页面翻译成Servlets;而不用我多说,大家一定都知道Servlets在网络编程世界是非常流行的,因为它在理论上和实践上都是可以完全取代CGI脚本的,Servlets能产生动态的网页,这是通过把静态的HTML与数据库查询或事务性服务提供的内容混合起来实现的。JSP则是通过在HTML页面中内嵌Java代码这条途径来实现生成动态的网页的目的的,把Java代码插入到HTML页的这种能力极大的增加了基于Java Servlet网络体系结构的灵活性。 为了产生HTML , servlet 必须用println()输出格式化的HTML字符串,如: out.println("<html>"); out.println("<br><br>购物车系统"); out.println("</html>"); 从上面的代码段中可以看出,servlet用println()输出HTML页面,也就是说,当编写一个Java Servlet时,开发者必须充当程序员和网页设计师两个身份。而JSP则是在HTML中嵌入简单的Java代码,使普通的HTML网页设计师也能写出优秀的动态网页,这样就使网站的设计沿着两条平行的轨道,即Java程序设计和HTML页面设计共同进行下去,从而加快网站开发的速度和开发的质量。JSP也支持业务逻辑组件和现有的组件之间的宽松连接,从而做到可重用性。 下面,我想通过一个简单的购物车程序来说明一下JSP,Servlet和Bean在网络体系结构中是怎样相互作用的,并且借这个例子解释编写一个实际可用的电子商务应用程序应该注意的一些问题。 简单购物车的实现方案 我们的购物车方案实际上是一种简化了的在线商店的模型:顾客选择商品,添加到他们的购物车中,然后通过一系列形式最终购买这些商品。上图中就显示了我们的应用程序体系

网络安全协议课程设计报告SSL协议

协议的安全性研究 1 引言 随着计算机网络技术的飞速发展,信息时代的人们对的依赖性越来越大。当今时代,电子商务和电子政务的应用越来越广泛,然而网络安全问题严重束缚了计算机网络的进一步应用。安全套接层( )协议是由公司设计开发的安全协议,主要用于加强应用程序之间的数据的安全性。协议是基于应用的安全协议,它采用了算法、4—128、一128、三重算法和5等加密技术实现两个应用层之间的机密性、可靠性和数据完整性,并采用X.509数字证书实现鉴别,其加密的目的是建立一个安全的通讯通道,而且该通道可在服务器和客户机两端同时实现支持。 2 协议简述及相关概念 协议用来建立一个在客户和服务器之间安全的连接,尤其可被用来认证服务器,可选地认证客户,执行密钥交换,提供消息认证,而且还可以完成在协议之上的任意应用协议数据的完整性和隐蔽性服务。为在上安全地传送数据提供了一介加密通道,建立一个安全连接,主要实现以下工作:加密网络上客户端和服务器相互发送的信息;验证信息在传送过程是否安全完整:运用非对称密钥算法验证服务器;验证客户身份;交换应用层数据。 2.1 安全套接层协议。 是由设计的一种开放性协议,它提供了一种介于应用层和传输层之间的数据安全套接层协议机制。位于协议与各种应用层协议之间,为连接提供数据加密、服务器认证、消息完整性以及可选的客户机认证。其目的是为客户端(浏览器)到服务端之间的信息传输构建一个加密通道,此协议是与操作系统和服务器无关的。 2.2 协议可分两层: 2.2.1 记录协议: 它建立在可靠的传输协议(如)之上,位于协议的底层,为高层协议提供数据封装、压缩、加密等基本功能的支持。在中,所有数据被封装在记录中,握手协议中的报文,要求必须放在一个记录协议层的记录里,但应用层协议的报文,允许占用多个记录来传送 (1) 记录头格式 记录头可以是2个或3个字节长的编码。记录头包含的信息有记录头的长度、记录数据的长度,以及记录数据中是否有填充数据,其中填充数据是在使用块加密()算法时,填充实际数据,使其长度恰好是块的整数倍。最高位为1时,不含有填充数据,记录头的长度为2个字节,记录数据的最大长度为32767个字节;最高位为0时,含有填充数据,记录头的长度为3个字节,记录数据的最大长度为16383个字节。

网络协议实验报告

实验一: unsigned short checkSum(char*pBuffer,int nLen) { unsigned short nWord; unsigned int nSum=0; int i; for(i=0;i>16) { nSum=(nSum&0xFFFF)+(nSum>>16); } nSum=~nSum; return((unsigned short)nSum); } int timeout=1000; setsockopt(sock_raw,SOL_SOCKET,SO_RCVTIMEO,(char*)&timeout,sizeof(timeout)); setsockopt(sock_raw,SOL_SOCKET,SO_SNDTIMEO,(char*)&timeout,sizeof(timeout)); ICMPheader*pIcmpHeader=(ICMPheader*)sendBuffer; pIcmpHeader->byType=8; pIcmpHeader->byCode=0; pIcmpHeader->nId=(USHORT)::GetCurrentProcessId(); pIcmpHeader->nChecksum=0; pIcmpHeader->nSequence=htons(nSeq++); memset(sendBuffer+sizeof(ICMPheader),'*',32); pIcmpHeader->nChecksum=htons(checkSum(sendBuffer, sizeof(ICMPheader)+32)); int nRet=sendto(sock_raw,sendBuffer,sizeof(ICMPheader)+32,0, (SOCKADDR*)&dest_addr,sizeof(SOCKADDR_IN)); IPheader*ipHdr=(IPheader*)recvBuffer; ICMPheader*icmpHdrRet=(ICMPheader*)(recvBuffer+sizeof(IPheader)); if(icmpHdrRet->byCode==0&& icmpHdrRet->nId==pIcmpHeader->nId&& icmpHdrRet->nSequence==pIcmpHeader->nSequence) { nPacketReceived++; unsigned long dwRecvTime=::GetTickCount(); int nRoundTime=dwRecvTime-dwSendTime; nTotalRoundTime+=nRoundTime;

网络协议分析实验报告

课程设计 课程设计题目网络协议分析实验报告学生姓名: 学号: 专业: 2014年 6 月 29日

实验1 基于ICMP的MTU测量方法 实验目的 1)掌握ICMP协议 2)掌握PING程序基本原理 3)掌握socket编程技术 4)掌握MTU测量算法 实验任务 编写一个基于ICMP协议测量网络MTU的程序,程序需要完成的功能: 1)使用目标IP地址或域名作为参数,测量本机到目标主机经过网络的MTU; 2)输出到目标主机经过网络的MTU。 实验环境 1)Linux系统; 2)gcc编译工具,gdb调试工具。 实验步骤 1.首先仔细研读ping.c例程,熟悉linux下socket原始套接字编程模式,为实验做好准备; 2.生成最大数据量的IP数据报(64K),数据部分为ICMP格式,ICMP报文为回送请求报 文,IP首部DF位置为1;由发送线程发送; 3.如果收到报文为目标不可达报文,减少数据长度,再次发送,直到收到回送应答报文。 至此,MTU测量完毕。

ICMP协议是一种面向无连接的协议,用于传输出错报告控制信息。它是一个非常重要的协议,它对于网络安全具有极其重要的意义。[1] 它是TCP/IP协议族的一个子协议,属于网络层协议,主要用于在主机与路由器之间传递控制信息,包括报告错误、交换受限控制和状态信息等。当遇到IP数据无法访问目标、IP路由器无法按当前的传输速率转发数据包等情况时,会自动发送ICMP消息。ICMP报文在IP帧结构的首部协议类型字段(Protocol 8bit)的值=1.

ICMP原理 ICMP提供一致易懂的出错报告信息。发送的出错报文返回到发送原数据的设备,因为只有发送设备才是出错报文的逻辑接受者。发送设备随后可根据ICMP报文确定发生错误的类型,并确定如何才能更好地重发失败的数据包。但是ICMP唯一的功能是报告问题而不是纠正错误,纠正错误的任务由发送方完成。 我们在网络中经常会使用到ICMP协议,比如我们经常使用的用于检查网络通不通的Ping命令(Linux和Windows中均有),这个“Ping”的过程实际上就是ICMP协议工作的过程。还有其他的网络命令如跟踪路由的Tracert命令也是基于ICMP协议的。 ICMP(Internet Control Message,网际控制报文协议)是为网关和目标主机而提供的一种差错控制机制,使它们在遇到差错时能把错误报告给报文源发方.是IP层的一个协议。但是由于差错报告在发送给报文源发方时可能也要经过若干子网,因此牵涉到路由选择等问题,所以ICMP报文需通过IP协议来发送。ICMP数据报的数据发送前需要两级封装:首先添加ICMP 报头形成ICMP报文,再添加IP报头形成IP数据报 通信术语最大传输单元(Maximum Transmission Unit,MTU)是指一种通信协议的某一层上面所能通过的最大数据包大小(以字节为单位)。最大传输单元这个参数通常与通信接口有关(网络接口卡、串口等)。 实验2 基于UDP的traceroute程序 实验目的 1)掌握UDP协议 2)掌握UDP客户机/服务器编程模式 3)掌握socket编程技术 4)掌握traceroute算法

java课程设计实验报告

Java课程设计实验报告实验题目:打字游戏小程序 专业:计算机科学与技术系 班级:1202班 成员:

Java课程设计(打字游戏小程序) 一、课程设计目的 经过一学期的java学习,能灵活运用书中和实验中所学习的各类知识和技巧,并且能在程序开发中得以很好的运用和发挥。在以后的学习和工作中,可以从中获取很好的经验,并且锻炼自己开发程序和创新的意识。 二、课程设计内容 1.课程设计简介 设计的是一个打字的小游戏,屏幕上不断地有英文字母下落,键盘输入字母,屏幕上与输入的字母形同的就会消失,并计分,如果有没有消去的字母掉到屏幕底,将扣分。 2.设计说明 因为要进行键盘操作,所以引用了event包,还要注册事件监听。字母是随机产生的,又要用。注册了线程。还要对窗口定义坐标,防止字母出现在同一位子。并且通过一位数组来给随机出现的字母做坐标定义。主要通过一位数组来控制字母的坐标,并且通过字母坐标的改变来对整个游戏的流程进行控制。 3.设计流程图 4.实现功能 随机产生字母,运用了键盘操作当按对屏幕中出现的字母时,该字母全部消失,并且在分数上相应的增加或减少。 5.详细设计(源代码) 1) packageDownCharGame; import import import /** *下落的字母实体类 *@authorshenbf * */ publicclassCharEntity{ raw(g); } etY()>=480){ etX((int)()*580)+30); chs[i].setY(0);

chs[i].setColor(newColor((int)()*256), (int)()*256),(int)()*256))); chs[i].setCh((char)(65+(int)()*26))); } chs[i].down(); } repaint();tart(); } publicvoidkeyTyped(KeyEvente){ } publicvoidkeyPressed(KeyEvente){ } publicvoidkeyReleased(KeyEvente){ etCh()||key==chs[i].getCh()+32){ etY()

相关主题
相关文档 最新文档