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

合集下载

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

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

计算机网络课程设计实验报告一、实验项目:网络聊天程序二、实验要求:利用Winsock控件,采用TCP或UDP方式实现一个网络聊天程序。

具体要求如下:(1)能够实现一个聊天服务器(采用TCP方式时可同时允许15个用户连接),并在用户之间相互进行信息发送。

(2)具有聊天记录功能。

(3)制作一个客户端程序。

在课程设计报告中要求给出程序设计的思想、关键程序说明以及服务器和客户程序运行界面的屏幕截图。

三、实验程序功能:采用TCP方式实现的网络聊天程序:(1)以某一用户名注册进入聊天室,自动判断是否与现有聊天室人员重名,给出相关信息。

进入后启动线程,获得现有聊天室人员的列表信息;(2)点击[送出]按钮,向所有人发送信息。

双击列表中某人的名字,在弹出的窗口中可以写悄悄话,悄悄话内容只显示在这个人的屏幕上;(3)点击[刷新谈话区],可以清空聊天信息屏幕。

点击[刷新聊天者列表]可以重新从服务器读取聊天室人员列表信息;(4)点击[退出聊天室],向所有人发送离开信息,同时刷新聊天室人员列表;(5)服务器端程序先行运行,服务器读取来自客户端的信息流请求,并把相应处理结果返回客户端,完成与客户端的通信。

(6)点击[聊天记录],可以查看聊天室的聊天记录。

四、设计与分析:客户端聊天室客户/服务器通信图(《》表示信息流方向):五、设计思想:传输层协议有两种:TCP和UDP,TCP是可靠传输,它把信息包捆绑,在必要的时候,排序和重传这些信息包以获得可靠的数据传输。

UDP支持快速的、无连接的、不可靠的信息包传输。

在JAVA中,使用TCP传输,其套接字的封装函数分TCP/IP客户套接字和TCP/IP服务器套接字。

本程序使用TCP做,采用了JA V A中的流式Socket 的通信机制,流式Socket 通信过程如下图:客户套接字函数:Socket(String hostname,itn port)或Socket(InetAddress ipAddress,int port)服务端套接字函数:ServerSocket(int port)ServerSocket(int port,int maxQueue)ServerSocket(int port,int maxQueue,InetAddress localAddress)六、文件说明:文件清单:(1)客户端线程主类:chatappletthreepublic class chatserverthree implements Runnable{/*聊天室服务器端处理主类*///服务器构造初始化线程public chatserverthree(){}//服务器main()初始化public static void main(String args[]){}//服务器线程connect操作run方法public void run(){}//向聊天室所有人员发送普通话语信息public void broadcast(String msg){}//处理悄悄话,向特定人员发送悄悄话public void broadcast1(String msg){}//客户端线程类firstthreadclass firstthread extends Thread{}//firstthread 初始化线程public firstthread(chatserverthree server,Socket client){}//监听运行线程public void run(){while(true){line=in.readUTF();//line 读取来自客户端线路的信息//线路信息前端为PEOPLE表明有新人进入了聊天室if(line.startsWith("PEOPLE")){}//线路信息前端为QUIT表明有人离开了聊天室else if(line.startsWith("QUIT")){}//线路前端为MSG表明接收到的是普通聊天话语信息e lse if(line.startsWith("MSG")) {}//线路前端为“悄悄的对”表明接收到的是悄悄话else if(line.startsWith("悄悄地对")){}//线路前端为newlist表明得到客户端刷新列表的请求else if(line.startsWith("newlist")){}}}(2) 聊天室界面AWT面板类:Apanel:/*聊天室界面北部面板Apanel类*/class Apanel extends Panel //用于构造面板{}Bpanel:/*聊天室界面中部面板Bpanel类*/class Bpanel extends Panel{}Cpanel:/*聊天室界面南部面板Cpanel类*/class Cpanel extends Panel{}(3) 发送悄悄话弹出式窗口类:Mywindow:class Mywindow extends Frame implements ActionListener{//构造方法初始化画出弹出式窗口界面Mywindow(){}//处理按钮事件的方法public void actionPerformed(ActionEvent e){}}(4)服务器端线程类:Chatserverthree:/*聊天室主类chatappletthree类*/public class chatappletthree extends Applet implements Runnable,ActionListener,ItemListener {//Applet 启动初始化画出聊天室界面,建立与服务器连接public void init() {}//启动线程public void start(){}//终止线程public void stop() {}//关闭监听端口,断开连接public void destroy() {}//客户端启动线程public void run() {}}(4)服务器为每一个客户端启动的线程类Firstthread//客户端线程类firstthreadclass firstthread extends Thread{protected Socket client;//listen读取来自客户端的消息:name 格式为:PEOPLE+名字+[性别]String line,name;protected DataOutputStream firstout,out; //定义网络数据输出流protected chatserverthree server;protected DataInputStream in; //定义网络数据输入流//firstthread 初始化线程public firstthread(chatserverthree server,Socket client){this.server=server;this.client=client;。

计算机网络课程设计实验报告完整版(移动公司网络设计)

计算机网络课程设计实验报告完整版(移动公司网络设计)

计算机网络训练课程设计题目移动公司网络结构设计专业班级学生姓名学号指导教师2011年 3月 1 日目录第一章课题确定…………………………………………………………… 1.1.1 概述与课题选择 (1)1.2 网络结构设计的目标和作用 (1)第二章需求分析 (1)2.1 公司大楼结构分布 (1)2.2 行政结构 (1)2.3 各部门功能需求分析 (2)2.4 信息点的设置 (2)2.5 接入INTERNET方式 (2)第三章系统总体规划和实现功能 (3)3.1 网络系统设计原则、系统建设目标 (3)第四章网络系统硬件环境设计4.1 网络拓朴结构设计 (3)4.1.1 公司中心局域网拓朴结构设计(即核心层) (4)4.1.2 各部门网络拓朴结构的设计(即汇聚层) (5)4.2 传输方式的设计 (5)4.2.1 网络拓朴结构的设计 (5)4.3 网络互联设备的选购 (6)4.3.1 交换机 (6)4.3.2 交换机的选择 (6)4.3.3 路由器 (8)第五章网络系统软件环境设计 (8)5.1 操作系统及应用软件 (8)5.1.1 网络操作系统的选购 (9)5.1.2 应用软件的选购 (9)5.1.3 网络防火墙的选购 (9)5.2 网络安全 (9)5.2.1 网络系统安全风险分析 (10)5.2.2 安全需求与安全目标 (11)5.2.3 网络安全策略 (12)5.2.4 系统安全目标 (12)5.3 网络安全方案总体设计 (12)5.3.1 安全方案设计原则 (13)结束语 (13)第一章课题确定1.1 概述与课题选择随着现代科技的发展及计算机技术与通讯技术的结合,人们已经不再满足原有的办公方式,办公自动化、网络化的需求逐日增加。

计算机网络技术营造了一个现代化的高效、快捷、安全的办公环境,也使计算机的功能得到了充分的发挥。

作为社会基础设施之一的中国移动通信公司,充分利用网络技术,为人们的生活和工作提供了许多便利,在信息化高度发展的今天,起着至关重要的作用。

计算机网络课程实验报告

计算机网络课程实验报告

计算机网络课程实验报告计算机网络课程实验报告引言:计算机网络课程实验是培养学生对计算机网络原理和技术的理解和应用能力的重要环节。

通过实验,我们可以巩固课堂所学的理论知识,掌握网络设备的配置和管理技巧,提高网络故障排查和解决问题的能力。

本文将结合实际实验过程,总结并分析我们在计算机网络课程实验中的收获和体会。

实验一:网络拓扑搭建与配置在实验一中,我们需要搭建一个简单的局域网,通过交换机连接多台计算机,并进行网络设备的基本配置。

通过实验,我们学会了如何正确连接和配置交换机、路由器和计算机,了解了网络拓扑的概念和组网原理。

同时,在实验过程中,我们也遇到了一些问题,如网络设备的IP地址冲突、网络延迟等,通过分析和解决这些问题,我们加深了对网络故障排查和解决问题的理解。

实验二:网络通信与数据传输实验二主要是通过Wireshark等工具来抓包分析网络数据传输过程。

我们学会了如何使用Wireshark捕获网络数据包,并分析数据包的结构和内容。

通过实验,我们了解了网络通信的基本原理,如TCP/IP协议栈、数据包的封装和解封装过程等。

同时,我们也发现了一些网络通信中的问题,如丢包、重传等,通过对数据包的分析和解读,我们可以更好地理解和解决这些问题。

实验三:网络安全与防护实验三主要是学习和实践网络安全相关的知识和技术。

我们了解了网络攻击的常见手段和防御方法,如防火墙、入侵检测系统等。

通过实验,我们学会了如何配置和管理防火墙,设置访问控制列表,提高网络的安全性。

同时,我们也体验了一些网络攻击的模拟实验,如DDoS攻击、ARP欺骗等,通过对攻击过程的模拟和分析,我们更深入地了解了网络安全的重要性和挑战。

实验四:网络性能测试与优化实验四主要是通过网络性能测试工具来评估和优化网络的性能。

我们学会了如何使用Ping、Traceroute等工具来测试网络的连通性和延迟,通过分析测试结果,我们可以找出网络中的瓶颈和问题,并采取相应的优化措施。

计算机网络实验报告(6篇)

计算机网络实验报告(6篇)

计算机网络实验报告(6篇)计算机网络实验报告(通用6篇)计算机网络实验报告篇1一、实验目的1、熟悉微机的各个部件;2、掌握将各个部件组装成一台主机的方法和步骤;3、掌握每个部件的安装方法;4、了解微型计算机系统的基本配置;5、熟悉并掌握DOS操作系统的使用;6、掌握文件、目录、路径等概念;7、掌握常用虚拟机软件的安装和使用;8、熟悉并掌握虚拟机上WINDOWS操作系统的安装方法及使用;9、掌握使用启动U盘的制作和U盘安装windows操作系统的方法;10、了解WINDOWS操作系统的基本配置和优化方法。

二、实验内容1.将微机的各个部件组装成一台主机;2.调试机器,使其正常工作;3.了解计算机系统的基本配置。

4.安装及使用虚拟机软件;5.安装WINDOWS7操作系统;6.常用DOS命令的使用;7.学会制作启动U盘和使用方法;8.WINDOWS7的基本操作;9.操作系统的基本设置和优化。

三、实验步骤(参照实验指导书上的内容,结合实验过程中做的具体内容,完成此项内容的撰写)四、思考与总结(写实验的心得体会等)计算机网络实验报告篇2windows平台逻辑层数据恢复一、实验目的:通过运用软件R-Studio_5.0和winhe_对误格式化的硬盘或者其他设备进行数据恢复,通过实验了解windows平台逻辑层误格式化数据恢复原理,能够深入理解并掌握数据恢复软件的使用方法,并能熟练运用这些软件对存储设备设备进行数据恢复。

二、实验要求:运用软件R-Studio_5.0和winhe_对电脑磁盘或者自己的U盘中的删除的数据文件进行恢复,对各种文件进行多次尝试,音频文件、系统文件、文档文件等,对简单删除和格式化的磁盘文件分别恢复,并检查和验证恢复结果,分析两个软件的数据恢复功能差异与优势,进一步熟悉存储介质数据修复和恢复方法及过程,提高自身的对存储介质逻辑层恢复技能。

三、实验环境和设备:(1)Windows _P 或Windows 20__ Professional操作系统。

《计算机网络实验》实验报告

《计算机网络实验》实验报告

《计算机网络实验》实验报告一、实验目的计算机网络实验是计算机相关专业学习中的重要实践环节,通过实验操作,旨在深入理解计算机网络的基本原理、协议和技术,提高我们的动手能力和解决实际问题的能力。

具体目的包括:1、熟悉计算机网络的体系结构和各层协议的工作原理。

2、掌握网络设备的配置和管理方法,如交换机、路由器等。

3、学会使用网络工具进行网络性能测试和故障诊断。

4、培养团队合作精神和沟通能力,提高解决复杂问题的综合素养。

二、实验环境本次实验在学校的计算机网络实验室进行,实验室配备了以下设备和软件:1、计算机若干台,安装了 Windows 操作系统和相关网络工具软件。

2、交换机、路由器等网络设备。

3、网络线缆、跳线等连接设备。

三、实验内容及步骤实验一:以太网帧的捕获与分析1、打开网络协议分析软件 Wireshark。

2、将计算机连接到以太网中,启动捕获功能。

3、在网络中进行一些数据传输操作,如访问网站、发送文件等。

4、停止捕获,对捕获到的以太网帧进行分析,包括帧的格式、源地址、目的地址、类型字段等。

实验二:交换机的基本配置1、连接交换机和计算机,通过控制台端口进行配置。

2、设置交换机的主机名、管理密码。

3、划分 VLAN,并将端口分配到不同的 VLAN 中。

4、测试不同 VLAN 之间的通信情况。

实验三:路由器的基本配置1、连接路由器和计算机,通过控制台端口或Telnet 方式进行配置。

2、设置路由器的接口 IP 地址、子网掩码。

3、配置静态路由和动态路由协议(如 RIP 或 OSPF)。

4、测试网络的连通性。

实验四:网络性能测试1、使用 Ping 命令测试网络的延迟和丢包率。

2、利用 Tracert 命令跟踪数据包的传输路径。

3、使用网络带宽测试工具测试网络的带宽。

四、实验结果与分析实验一结果与分析通过对捕获到的以太网帧的分析,我们清楚地看到了帧的结构,包括前导码、目的地址、源地址、类型字段、数据字段和帧校验序列等。

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

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

计算机网络课程设计实验报告1. 引言计算机网络是现代信息技术的基石,它的设计与实现对于计算机科学与技术专业的学生来说尤为重要。

本次实验旨在通过一个计算机网络课程设计项目,帮助学生进一步深入理解计算机网络的原理与实践,提升实际操作能力。

2. 实验目标本实验的目标是设计一个简单的局域网内部共享文件的系统。

具体要求如下:1.实现一个服务器程序,能够提供文件的上传与下载功能;2.实现一个客户端程序,能够通过命令行界面与服务器进行交互;3.实现文件的断点续传功能,确保文件可以在网络断开后继续传输;4.实现基本的权限管理功能,确保只有授权用户才能够上传和下载文件。

3. 实验环境本次实验的开发环境与工具如下:•操作系统:Windows 10•开发语言:Python 3.8•开发环境:PyCharm 2020.1•版本控制:Git4. 实验过程与方法4.1 系统架构设计本实验的系统架构包括服务器程序和客户端程序两个部分。

服务器程序采用C/S模型,在指定端口上监听客户端的请求,根据客户端发送的指令进行相应的操作,如上传文件、下载文件、断点续传等。

服务器程序使用了Python的socket模块实现网络通信。

客户端程序通过命令行界面与服务器进行交互,用户可以输入不同的指令来实现上传、下载、断点续传等功能。

客户端程序使用了Python的argparse模块处理命令行参数,使用socket模块与服务器进行通信。

4.2 文件传输实现文件的传输采用TCP协议进行,对于较大的文件,可以采用分片传输的方式,确保文件能够在网络断开后继续传输。

客户端程序在向服务器请求下载文件时,会先发送文件的元信息(如文件名、大小等),服务器会根据元信息判断文件是否存在、是否需要断点续传等。

对于需要断点续传的文件,服务器会记录已传输的字节数,并将剩余部分发送给客户端。

4.3 权限管理实现服务器程序实现了基本的权限管理功能,通过在服务器端维护一个用户列表,每次上传或下载文件时,都会要求用户进行身份验证。

计算机网络实验实验报告1

计算机网络实验实验报告1

计算机网络实验实验报告1一、实验目的本次计算机网络实验的主要目的是深入理解计算机网络的基本原理和技术,通过实际操作和观察,掌握网络配置、数据传输、协议分析等方面的知识和技能,提高对计算机网络的综合应用能力。

二、实验环境1、硬件环境:计算机若干台,具备以太网卡。

网络交换机、路由器等网络设备。

网线若干。

2、软件环境:Windows 操作系统。

Wireshark 网络协议分析工具。

网络配置工具(如 ipconfig 命令)。

三、实验内容与步骤1、网络拓扑结构搭建利用网线将计算机与交换机连接,构建简单的星型网络拓扑结构。

检查物理连接是否正常,确保网络设备的指示灯显示正常。

2、 IP 地址配置打开计算机的网络设置,手动配置 IP 地址、子网掩码、网关等参数。

使用 ipconfig 命令查看配置是否成功,验证网络连接的有效性。

3、网络连通性测试使用 ping 命令测试不同计算机之间的连通性。

记录测试结果,分析可能存在的连接问题并进行排查。

4、数据捕获与协议分析在一台计算机上安装并运行 Wireshark 工具。

启动捕获网络数据包,进行网络通信操作,如访问网站、发送文件等。

停止捕获后,对捕获的数据包进行分析,查看数据包的源地址、目的地址、协议类型等信息。

5、网络服务配置与测试配置一台计算机作为 Web 服务器,安装 Web 服务软件(如 IIS 或Apache)。

在其他计算机上通过浏览器访问该 Web 服务器,验证 Web 服务的可用性。

四、实验结果与分析1、网络拓扑结构搭建与 IP 地址配置成功搭建了星型网络拓扑结构,计算机与交换机之间的物理连接正常。

手动配置的 IP 地址能够正确生效,通过 ipconfig 命令显示的网络参数与设定值一致。

2、网络连通性测试在进行 ping 测试时,大部分计算机之间能够正常通信,少数出现丢包现象。

经过检查,发现是网线接触不良导致,更换网线后问题解决。

3、数据捕获与协议分析通过 Wireshark 捕获到了丰富的网络数据包,包括 TCP、UDP、HTTP 等常见协议。

计算机网络实验报告(通用7篇)

计算机网络实验报告(通用7篇)

计算机网络实验报告计算机网络实验报告(通用7篇)在经济飞速发展的今天,报告使用的次数愈发增长,其在写作上有一定的技巧。

我敢肯定,大部分人都对写报告很是头疼的,以下是小编收集整理的计算机网络实验报告,希望对大家有所帮助。

计算机网络实验报告1一、需求分析建设一个以办公自动化、计算机辅助教学、现代计算机校园文化为核心,以现代网络技术为依托,技术先进、扩展性强、能覆盖全校主要楼宇的校园主干网络,将学校的各种pc机、工作站、终端设备和局域网连接起来,并与有关广域网相连,在网上宣传自己和获取Internet网上的教育资源。

形成结构合理,内外沟通的校园计算机系统,在此基础上建立满足教学、研究和管理工作需要的软硬件环境,开发各类信息库和应用系统,为学校各类人员提供充分的网络信息服务。

系统总体设计将本着总体规划、分步实施的原则,充分体现系统的技术先进性、高度的安全可靠性,同时具有良好的开放性、可扩展性、冗余性。

本着为学校着想,合理使用建设资金,使系统经济可行。

具体包括下以几个方面:1、内网络能够高速访问FTP服务器现在或上传文件实现资源共享功能,实现对不同类型的用户划分不同的权限,限制不同类型的用户只能访问特定的服务资源。

可以下载和上传资料文件,访问速度可以对指定的用户进行级别的划分。

2、建设Web服务器对外实现信息发布,对内实现教学教务管理。

网站发布学校新闻、通知、学校的活动等相关内容。

实现学生能够在网上进行成绩查询、网上报名、网上评教等功能;以及教师的信息查询、教学数据上传等。

3、建设邮件服务器以满足校园内部之间和内、外网这间的大量邮件传输的需求。

4、实现内网划分多个VLAN,实现校园内不同校区,不同楼宇,不同楼层的多客户接入。

5、内部实现PC间实现高速互访,同时可以访问互联网。

网络内同一IP段内的PC机可以通过网上邻居实现高速互访,传送资料文件等,解决不同楼宇,不同楼层之间通过移动存储设备传送数据费时、费力的问题。

计算机网络实验报告

计算机网络实验报告

计算机网络实验报告引言:计算机网络是现代社会的重要基础设施之一,它的发展与应用对于促进信息流动、提升交流效率以及推动科技创新具有重要意义。

通过参与计算机网络实验,我们可以更好地理解网络的工作原理、掌握网络技术的应用以及解决网络故障的能力。

本篇报告将围绕计算机网络实验展开,介绍实验的目的、实验的步骤以及对实验结果的分析与总结。

实验目的:本次实验的目的是通过搭建一个简单的局域网,并利用网络性能分析工具对网络传输的瓶颈进行分析。

通过实践操作,我们可以更好地理解网络拓扑的概念、了解局域网的工作原理以及学习如何使用网络性能分析工具来识别网络中的瓶颈。

实验步骤:1. 设计网络拓扑在开始实验之前,首先需要设计一个简单的网络拓扑结构。

我们选择了一个包含路由器、交换机和多台计算机的局域网拓扑结构。

路由器连接了两个交换机,而每个交换机又连接了多台计算机。

这样设计的网络拓扑可以模拟一个较为常见的办公室局域网环境。

2. 搭建实验环境根据设计好的拓扑结构,我们开始搭建实验环境。

首先,将路由器、交换机和计算机按照正确的连接方式进行连接。

然后,进行相应的网络设置,包括为每个设备分配IP地址、设置子网掩码以及配置默认网关等。

3. 配置网络性能分析工具在实验中,我们选择了Wireshark作为网络性能分析工具。

通过捕获网络数据包,我们可以对网络中的数据传输进行详细的分析。

在配置Wireshark之前,我们需要在需要分析的计算机上安装并打开该软件。

4. 运行实验一切准备就绪后,我们开始运行实验。

通过在不同计算机之间进行文件传输、网络浏览等操作,我们可以产生一定数量的网络流量。

同时,Wireshark将会对这些流量进行捕获并显示相应的分析结果。

实验结果与分析:在实验过程中,我们通过Wireshark对网络流量进行了分析,并得到了如下的实验结果:1. 发现瓶颈经过对捕获的数据包进行分析,我们发现了网络传输的瓶颈所在。

通过查看数据包的延迟、丢包率以及网络吞吐量等指标,我们可以确定哪一部分网络存在性能问题。

国家开放大学《计算机网络》课程实验报告(实验六 计算机网络综合性实

国家开放大学《计算机网络》课程实验报告(实验六 计算机网络综合性实

国家开放大学计算机网络》课程实验报告(实验六计算机网络综合性实国家开放大学计算机网络》课程实验报告实验六计算机网络综合性实一、实验目的本实验旨在通过综合性实验,对学生在计算机网络课程中所学到的知识进行综合运用和巩固,提高学生的实际操作能力和问题解决能力。

通过实验,学生能够加深对计算机网络原理、协议和技术的理解,以及掌握相关实验工具和方法。

二、实验内容本次实验的主要内容是完成一个简单的计算机网络配置与通信实验。

具体实验步骤如下:1. 在计算机上安装并配置虚拟机软件,创建两个虚拟机实例。

2. 对虚拟机进行网络配置,使它们能够相互通信。

3. 使用ping命令测试两个虚拟机之间的连通性。

4. 使用telnet命令进行远程登录测试。

5. 进行文件传输测试,验证网络通信的可靠性。

第1页/共4页三、实验步骤1. 安装虚拟机软件首先,在计算机上安装并配置虚拟机软件。

可以选择较为常用的 VMware Workstation 或者 VirtualBox。

安装完成后,双击软件图标,打开虚拟机控制面板。

2. 创建虚拟机实例在虚拟机控制面板中,点击“新建虚拟机”,进入虚拟机配置向导。

根据需要指定虚拟机的名称、存储路径和虚拟机的操作系统类型。

完成虚拟机创建后,重复该步骤创建第二个虚拟机实例。

3. 网络配置进入虚拟机控制面板,选择虚拟机实例,在菜单栏选择“编辑虚拟机设置”,进入虚拟机设置页面。

选择“网络适配器”,在右侧选择“桥接模式”,点击“确定”保存设置。

在两个虚拟机实例上都进行相同的网络配置,并确保虚拟机能够连通网络并能够获取到 IP 地址。

4. 测试连通性打开命令行界面,使用ping命令测试两个虚拟机之间的连通性。

在命令行中输入“ping [虚拟机 IP 地址]”,若出现类似于“64 字节的数据包, 来自192.168.1.100: 字节=64 时间<1ms TTL=128”的信息,说明虚拟机之间可以正常通信。

5. 远程登录测试在命令行界面中使用telnet命令进行远程登录测试。

计算机网络课程设计_报告

计算机网络课程设计_报告

实验报告实验名称:计算机网络课程设计学生姓名: xxxxxxxxxxxxxxx专业: xxxxxxxxxxxxxxx班级: xxxxxxxxxxxxxxx学号: xxxxxxxxxxxxxxx指导教师: xxxxxxxxxxxxxxx实验成绩:实验地点:实验时间: 2016 年 5 月 6 日一、实验目的与实验要求1、实验目的将书本上抽象的概念与具体实现技术结合,通过网络软件编程的实践,深入理解理论课上学习到的ARP、IP、TCP等重要网络协议的原理,通过自己动手编程封装与发送这些数据包,加深对网络协议的理解,掌握协议帧的结构和工作原理及其对协议栈的贡献。

2、实验要求网络课程设计包含两个部分的内容:题目一是数据包的封装发送和解析(ARP/IP/TCP),要求使用Winpcap技术和Socket技术,根据ARP/IP/TCP帧的结构,封装数据包发送到局域网中。

另外要捕获网络中的TCP/IP/ARP数据包,解析数据包的内容,并将结果显示,并同时写入日志文件。

题目二是从可选题目中选择一个,可选题目均是网络应用小程序,要求小组使用网络编程技术设计并实现一个网络应用程序,加深对网络协议协的理解,并锻炼网络编程能力。

二、实验设备(环境)及要求1、实验硬件设备:计算机型号:联想ThinkPad T430u处理器型号:Intel i5 主频:1.8Hz网卡型号:(1)Realtek PCIe GBE (2)Broadcom 802.11n2、实验软件要求:操作系统:Windows10应用软件:Visual Studio 2015 Pro3、小组成员及分工:三、实验内容与步骤1、实验1:数据包的封装发送和解析(ARP/IP/TCP)(1)实验内容1)程序目标:根据IP帧的结构,封装IP数据包发送到局域网中。

并捕获网络中的IP数据包,解析数据包的内容,并将结果显示,并同时写入日志文件。

2)程序功能:以命令行形式运行在标准输出中显示捕获的IP报文的首部字段的内容。

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

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

计算机网络课程设计实验报告计算机网络课程设计实验报告引言:计算机网络是现代信息技术的核心基础,它的发展与应用对于现代社会的各个领域有着重要的影响。

作为计算机网络课程的一部分,课程设计实验是培养学生实践能力和解决实际问题的重要环节。

本实验报告将介绍我们小组在计算机网络课程设计实验中所完成的工作和所获得的成果。

实验目标:本次实验的目标是设计一个简单的局域网(LAN)拓扑结构,并实现基本的网络通信功能。

通过这个实验,我们旨在加深对计算机网络原理的理解,掌握网络设备的配置和管理,以及熟悉网络通信的基本原理和技术。

实验环境:我们使用了一台主机作为服务器,两台主机作为客户端,通过交换机连接在一个局域网中。

服务器和客户端之间通过TCP/IP协议进行通信。

实验步骤:1. 设计局域网拓扑结构:我们选择了一个星型拓扑结构,将服务器作为中心节点,两台客户端作为外围节点。

这样的拓扑结构简单明了,便于实验的进行和管理。

2. 配置网络设备:我们首先配置了服务器的IP地址、子网掩码和默认网关,然后配置了客户端的IP地址和子网掩码。

通过这样的配置,我们使得服务器和客户端能够在同一个局域网中进行通信。

3. 实现网络通信功能:我们使用了Socket编程技术,通过建立TCP连接实现了服务器和客户端之间的通信。

服务器端监听指定端口,客户端向服务器发送请求,服务器接收请求并返回响应。

通过这样的通信过程,我们实现了简单的网络通信功能。

实验结果:我们成功地实现了基本的网络通信功能。

服务器和客户端之间能够正常地进行通信,实现了数据的传输和交换。

通过实验,我们进一步理解了网络通信的原理和技术,并掌握了网络设备的配置和管理方法。

实验总结:通过这次计算机网络课程设计实验,我们深入了解了计算机网络的原理和技术,掌握了网络设备的配置和管理方法。

实验过程中,我们遇到了一些问题和困难,但通过不断的学习和尝试,我们成功地解决了这些问题,并最终完成了实验目标。

计算机网络实践教学报告(3篇)

计算机网络实践教学报告(3篇)

第1篇一、引言随着信息技术的飞速发展,计算机网络已成为现代社会不可或缺的一部分。

为了提高学生的计算机网络实践能力,本课程通过实践教学环节,使学生掌握计算机网络的基本原理、技术以及应用。

以下是本人在计算机网络实践教学过程中的心得体会。

二、实践内容1. 实验环境本次实践教学在校园内计算机网络实验室进行,实验设备包括交换机、路由器、服务器、客户端等。

实验操作系统为Windows Server 2008和Windows 7。

2. 实践内容(1)网络拓扑设计首先,根据实验需求设计网络拓扑结构。

本实验采用星型拓扑结构,包括一台核心交换机、一台服务器和若干台客户端。

实验过程中,通过绘制网络拓扑图,明确设备间连接关系。

(2)IP地址规划根据网络拓扑结构,规划IP地址。

本实验采用私有IP地址,网络地址为192.168.1.0/24,子网掩码为255.255.255.0。

服务器IP地址为192.168.1.1,客户端IP地址分别为192.168.1.2至192.168.1.10。

(3)交换机配置配置交换机,实现设备间通信。

主要配置包括VLAN划分、端口绑定、端口安全等。

通过配置交换机,实现不同VLAN之间的隔离,确保网络安全。

(4)路由器配置配置路由器,实现不同子网之间的通信。

主要配置包括静态路由、动态路由等。

通过配置路由器,实现不同子网间的数据传输。

(5)服务器配置配置服务器,实现网络资源共享。

主要配置包括DNS、DHCP、文件共享等。

通过配置服务器,实现客户端访问网络资源。

(6)客户端配置配置客户端,实现网络访问。

主要配置包括IP地址、子网掩码、默认网关等。

通过配置客户端,实现与服务器和其他客户端的通信。

三、实践过程1. 熟悉实验环境在实验开始前,首先熟悉实验设备、操作系统和实验软件。

了解交换机、路由器等设备的配置方法,以及Windows Server 2008和Windows 7操作系统的基本操作。

2. 设计网络拓扑结构根据实验需求,绘制网络拓扑图,明确设备间连接关系。

计算机网络课程实验报告

计算机网络课程实验报告

计算机网络课程实验报告
《计算机网络课程实验报告》
在计算机网络课程中,实验是非常重要的一部分。

通过实验,我们可以巩固课
堂上学到的知识,加深对网络原理和技术的理解,提高实际操作的能力。

在本
次实验中,我们学习了许多关于计算机网络的知识,并进行了相应的实验操作。

首先,我们学习了网络的基本概念和组成结构,了解了网络的分类和连接方式。

通过实验,我们搭建了局域网和广域网的实验环境,学会了如何配置网络设备
和连接网络设备。

这些实验让我们对网络的组成和连接有了更深入的了解,为
我们后续的学习和实践打下了基础。

其次,我们学习了网络通信协议和数据传输技术。

通过实验,我们了解了
TCP/IP协议的工作原理和应用,学会了如何配置网络参数和进行网络通信。


们还学习了网络数据的传输过程和网络安全技术,通过实验操作,我们能够更
好地理解网络通信的原理和技术,提高了我们的网络配置和管理能力。

最后,我们还进行了一些网络性能测试和故障排除的实验。

通过实验,我们学
会了如何使用网络测试工具和故障排除工具,对网络进行性能测试和故障排除。

这些实验让我们在实际工作中能够更加熟练地进行网络维护和故障处理,提高
了我们的实际操作能力。

通过本次实验,我们不仅加深了对计算机网络知识的理解,还提高了实际操作
的能力。

我们相信,在今后的学习和工作中,这些知识和能力一定会对我们产
生积极的影响。

希望通过不断的实验学习和实践操作,我们能够更好地掌握计
算机网络的知识和技术,为将来的发展打下坚实的基础。

计算机网络实验报告

计算机网络实验报告

计算机网络实验报告第一篇:计算机网络实验报告计算机网络实验报告年级:专业:班级:姓名:学号:实验地点:实验时间:指导教师签字:成绩:实验名称:1.实验目的和要求:2.实验原理:3.实验用的软硬件环境4.操作方法与实验步骤5.实验内容及实验数据记录6.分析、建议、问题讨论第二篇:计算机网络实验报告计算机网络实验报告课程_ _ 实验名称 _姓名_________ ________ 实验日期:学号________ _________ 实验报告日期:同组人姓名_________________ 报告退发:(订正、重做)同组人学号_ _______________________ 教师审批签字:一.实验名称二.环境(详细说明运行的操作系统,网络平台,机器的IP地址)三.实验目的""四.实验内容及步骤(包括主要流程和说明,分工说明)五.实验结果六.实验中的问题及心得第三篇:计算机网络实验报告(模版)福建农林大学计算机与信息学院课程名称:姓名:系:专业:年级:学号:指导教师:职称:信息工程类实验报告计算机网络计算机科学与技术系计算机科学与技术2011级周术成老师2014年月日福建农林大学计算机与信息学院实验报告系:计算机与信息系专业:计算机科学与技术年级:2011姓名:学号:实验课程:_计算机网络实验室号____田C-305__计算机号:实验时间:指导教师签字:成绩:实验一以太网组网实验1.实验目的和要求1.熟悉局域网所使用的基本设备 2.掌握以太网组建方法 3.掌握网络连通性测试方法2.实验原理以太网事实上是一簇局域网技术,不同的以太网在链路层帧头的格式、电缆的类型和传输速度上有很大的差异以太网可以利用同轴电缆、双绞线、光缆等不同的传输介质进行组网,也可以运行10Mb/s、100Mb/s、1000Mb/s 的网络速度。

不管采用何种传输介质,以及网络速度各不相同,只要是以太网,采用的都是CSMA/CD介质访问控制方法。

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

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

原创计算机网络课程设计实验报告摘要:本实验报告介绍了计算机网络课程设计实验的设计与实现过程。

通过该实验,我们加深了对计算机网络的理解,并学会了使用网络编程的基本技术。

实验主要包括设计一个简单的客户端-服务器应用和实现数据包分析和过滤功能。

通过实验,我们成功实现了这两个功能,并验证了它们的正确性和有效性。

实验结果表明,设计的客户端-服务器应用具有良好的性能和稳定性,并且数据包分析和过滤功能能够准确地过滤和分析网络数据包。

1. 引言计算机网络是现代信息技术的基础,它通过互联网将各种终端设备连接在一起,实现了信息的快速传输和共享。

为了更好地理解计算机网络的工作原理,加深对网络协议和网络应用的理解,本门课程设计了一个计算机网络实验。

本实验旨在通过设计和实现一个简单的客户端-服务器应用,以及一个数据包分析和过滤功能,来加深学生对计算机网络的理解,并提高他们的网络编程能力。

2. 实验设计与实现2.1 客户端-服务器应用设计与实现在客户端-服务器应用的设计过程中,我们选择使用Python编程语言来实现。

客户端和服务器之间的通信采用Socket编程技术,通过建立TCP连接来实现可靠的数据传输。

2.1.1 客户端设计与实现客户端程序主要包括以下几个模块:•用户界面模块:负责与用户进行交互,接收用户输入的命令和数据,将其发送给服务器,并展示服务器返回的结果。

•网络模块:负责与服务器建立Socket连接,并发送和接收数据。

•数据处理模块:负责解析和处理从服务器返回的数据,并展示给用户。

在实现过程中,我们使用了Python的socket库来实现Socket连接,使用了tkinter库来实现用户界面,通过对数据进行简单的解析和处理,使得用户能够更方便地使用客户端应用。

2.1.2 服务器设计与实现服务器程序主要包括以下几个模块:•网络模块:负责接收客户端的连接请求,建立Socket连接,并接收和发送数据。

•数据处理模块:负责解析和处理客户端发送的命令和数据,并根据命令执行相应的操作,并返回结果给客户端。

计算机网络实验报告(通用19篇)

计算机网络实验报告(通用19篇)

计算机网络实验报告计算机网络实验报告(通用19篇)在生活中,报告的使用频率呈上升趋势,报告包含标题、正文、结尾等。

我们应当如何写报告呢?以下是小编帮大家整理的计算机网络实验报告,欢迎大家借鉴与参考,希望对大家有所帮助。

计算机网络实验报告篇1一、实验目的1、掌握文件的复制、移动、删除;2、掌握文件的重命名、属性的设置;3、掌握文件的查找;4、掌握文件夹选项操作。

5、通过控制面板查看和修改主要输入输出设备的设置;6、查看和修改系统基本配置信息。

7、通过用户管理设置,使计算机为多人合用,同时管理员可以根据需要控制其它用户的操作权限;8、通过对计算机的环境设置,优化计算机的性能,加强用户的计算机安全意识,提高计算机病毒应对能力。

二、实验任务1、查找文件“notepad、exe”,在D盘上以自己的学号为名建立一个新的文件夹,在此文件夹内建一名为“记事本”的文件夹,将文件“notepad、exe”复制到“记事本”文件夹下面,属性修改为“只读”,然后在桌面上创建“notepad、exe”文件的快捷方式。

2、显示“我的文档”文件夹下所有文件的扩展名。

3、修改鼠标、显示器、输入法的设置。

4、显示系统硬件配置信息。

5、添加删除程序。

6、添加、删除用户,修改用户信息。

7、修改虚拟内存设置,优化计算机性能三、实验检查内容1、是否在E区建立以自己学号为名的文件夹2、是否在学号文件夹中创建名为“记事本”的文件夹3、是否将“notepad、exe”文件复制到“记事本”文件夹中4、“notepad、exe”文件的属性是否修改为“只读”5、是否在桌面上创建“notepad、exe”文件的快捷方式6、是否显示文件的扩展名7、修改鼠标处于“正常选择”状态的显示图形8、修改显示器的分辨率9、设置CTRL+SHIFT+1为某种中文输入法的热键10、设置Windows系统在“关闭程序”事件时的声音11、查找本机CPU的频率12、写出本机网络适配器的名称13、添加一个以自己学号为名的用户14、将虚拟内存设置到D区,最大值为1GB。

计算机网络课程设计实验报告 华北电力大学科技学院

计算机网络课程设计实验报告 华北电力大学科技学院

课程设计报告(2013--2014年度第2学期)名称:《计算机网络》课程设计题目:互联网模拟院系:信息工程系班级:计算机11K1学号:学生姓名:指导教师:赵惠兰张长明设计周数:1周成绩:日期:2014年6月13日《计算机网络》课程设计任务书一、目的与要求1.目的将网络基本原理及基本概念用于实际,将书本上抽象的概念与具体的实现技术结合起来,使学习深化,培养学生对基本原理的应用能力以及实际动手能力。

2.要求独立完成课程设计题目以及课程设计报告。

报告应包括设计思路、网络拓扑图、开发中遇到的问题以及解决方法。

二、主要内容1.网络设备认知及基本配置操作(1)了解路由器、交换机等网络设备结构。

(2)完成以下实验,掌握路由器、交换机等的配置方法,理解相关网络协议。

1交换机的基本配置;2路由器的基本操作;3OSPF基本配置;4RIP v2配置;5静态路由配置;6跨交换机实现VLAN;7利用单臂路由实现VLAN间路由;8广域网协议的封装。

2.互联网的模拟(1)结合实验环境,提出模拟网络互联需求,设计并完成组网,要求尽最大可能利用实验资源。

1网络物理拓扑结构设计及IP地址分配;2网络逻辑拓扑结构设计;(2)网络设备配置实现按步骤(1)所设计的网络拓扑进行设备连接并配置。

配置内容包括路由选择协议OSPF配置,VLAN划分等,并进行测试。

3.基于模拟互联网的网络协议分析。

在上面设计并实现的网络环境下,完成如下协议分析:1以太网数据链路层帧格式分析;2TCP传输控制协议分析;3FTP协议分析。

三、进度计划序号设计内容完成时间备注1网络设备认知及配置操作第一天2模拟环境设计及网络设备配置第二、三天3基于模拟互联网的网络协议分析第四天4验收、撰写课程设计报告第五天四、设计成果要求1.网络配置拓扑图准确,配置结果测试成功;2.网络协议分析准确;2.课程设计报告格式规范,内容详实。

五、考核方式考勤、验收和课程设计报告。

学生姓名:指导教师:2014年6月9日实验一网络设备认知及基本配置操作一、交换机的基本配置1、实验目的:掌握交换机命令行各种操作模式的区别,能够使用各种帮助信息,以及用命令进行基本的配置。

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

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

《计算机网络》课程设计任务书一、目的与要求1.目的将网络基本原理及基本概念用于实际,将书本上抽象的概念与具体的实现技术结合起来,使学习深化,培养学生对基本原理的应用能力以及实际动手能力。

2.要求独立完成课程设计题目以及课程设计报告。

要求程序所实现的功能要完善,报告应包括程序开发的设计思路、程序流程图、开发中遇到的问题以及解决方法。

二、主要内容1.广域网协议配置及互联网的模拟设计网络的拓扑结构,根据拓扑结构连接网络设备。

掌握路由器模拟广域网交换机的配置方法,并且在路由器上配置rip协议,最后通过测试连通性来判断配置是否正确。

2.简单邮件客户端的实现设计并一个邮件客户端,要求:为发送方提供一个图形界面,其中有发送方的邮件地址字段、接收方的电子邮件字段、消息主题和消息本身。

在客户端和接收方邮件服务器之间直接建立一个TCP 连接,发送并接收SMTP命令和数据,来将邮件传送到接收方的邮件服务器上。

3.Windows环境下实现多用户mini FTP Client/Server文件传输协议FTP(File Transfer Protocol,FTP)采用两个TCP连接来传输一个文件,用户协议解释器通过处理用户输入产生标准FTP命令,并通过控制连接传送到服务器进程。

服务器协议接口向用户协议解释器返回标准FTP应答。

要求:自主设计并实现一个简单的文件传输协议,可以支持list(浏览服务器当前目录信息)、pwd(查看服务器当前所在目录)、cd(切换服务器目录)、put(上传文件)、get (下载文件)和quit(退出客户端)命令。

要求支持多客户端同时访问。

分别编写文件传输系统的服务器端和客户端程序,使用TCP实现数据的文件流传输,服务器端设定好监听端口,在收到连接请求后发出确认,将共享的文件列表传到客户端。

当收到客户端提交的要下载的文件名后,将文件进行数据流格式化,以数据流的形式发送到客户端。

客户端设置好服务器的IP和端口后发出连接请求,收到服务器端返回的确认后建立连接,从服务器端收到的共享文件列表中选择要下载的文件名发给服务器,将服务器传送来的数据流写入文件。

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

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

计算机网络课程设计实验报告计算机网络课程设计实验报告一、实验内容和要求1、实验一数据包的捕获与分析Wireshark是一种开源的网络数据包的捕获和分析软件,本实验经过Wireshark软件的安装使用,监控局域网的状态,捕获在局域网中传输的数据包,并结合在计算机网络课程中学习到的理论知识,对常见网络协议的数据包做出分析,加深网络课程知识的理解和掌握。

具体内容及要求如下:Wireshark软件的安装;Wireshark软件的启动,并设置网卡的状态为混杂状态,使得Wireshark能够监控局域网的状态;启动数据包的捕获,跟踪PC之间的报文,并存入文件以备重新查;设置过滤器过滤网络报文以检测特定数据流;对常见协议的数据包的报文格式进行分析,利用协议分析软件的统计工具显示网络报文的各种统计信息。

2、实验二网络层实验—Ping程序的设计与实现实验目的本实验目的是使学生掌握网络层协议的原理及实现方法。

实验设计内容本实验为ICMP实验。

实验内容:Ping命令实现的扩充,在给定的Ping程序的基础上做如下功能扩充:-h 显示帮助信息-b 允许ping一个广播地址,只用于IPv4-t 设置ttl值,只用于IPv4-q 安静模式。

不显示每个收到的包的分析结果,只在结束时,显示汇总结果Ping命令的基本描述Ping的操作是向某些IP地址发送一个ICMP Echo消息,接着该节点返回一个ICMP Echo replay消息。

ICMP消息使用IP头作为基本控制。

七、实验数据、结果分析实验一见附录实验二八、总结经过程序设计,对ping的工作原理进一步认识。

特别是ICMP 报文的结构模式,以及ping的一些扩展功能的实现。

对基于linux的c语言编程的方法进一步掌握。

程序设计中,对各种函数之间的协同工作运用理解更加深刻。

更掌握了如何使用信号量进行通信。

虽然程序设计及调试中也遇到不少困难,也都在同学帮助下,及经过资料查询逐一解决。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

计算机网络课程设计实验报告一、实验内容和要求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.系统自带编译环境三、程序的需求分析与逻辑框图需求分析1、实验一数据包的捕获与分析1>.在PC中安装协议分析软件。

2>.启动Wireshark协议分析软件,选择抓包菜单项启动实时监视器,开始实时跟踪显示网络数据报文。

可根据系统提示修改显示方式。

3>.调出跟踪存储的历史报文,选择有代表性的ETHERNET,,IP,ICMP,TCP,UDP报文,对照有关协议逐个分析报文各字段的含义及内容。

4>.设置过滤器属性,如目的地址,源地址,协议类型等。

如过滤不需要的网络报文,过滤器允许设置第二层,第三层或第四层的协议字段。

2、实验二网络层实验—Ping程序的设计与实现PING程序是我们使用的比较多的用于测试网络连通性的程序。

PING程序给予ICMP使用ICMP的回送请求和回送应答来工作。

ICMP是基于IP的一个协议,ICMP包通过IP的封装之后传递。

实现检测网络通畅及速度的ping,并扩展以下功能:-h 显示帮助信息-b 允许ping一个广播地址,只用于IPv4-t 设置ttl值,只用于IPv4-q 安静模式,不显示每个收到的包的分析结果,只在结束时,显示汇总结果三、程序的需求分析与逻辑框图逻辑框图1、总体设计程序分为两大部分:一部分读取收到的所有消息,并输出ICMP Echo replay消息,另一部分每个一秒钟发送一个Echo 消息。

另一部分由SIGALARM 信号每秒驱动一次。

2、详细设计main readloop recvfromprocsig_alarmsend为SIGALARM 建立信号处理程序无限接收循环每秒发送一个Echo 消息1)main 函数设置随同Echo 请求一起发送的可选数据长度处理命令行参数调用readloop 处理分组为SIGALARM 信号建立一个处理程序处理主机名参数三、程序的需求分析与逻辑框图逻辑框图2)readloop函数创建套接口设置套接口缓冲区大小发送第一个分组读取返回给ICMP原始套接口的每个分组记录收到分组的时间调用proc来处理这些分组 3)proc函数 4)send函数获取ICMP头部指针检查ICMP Echo replay 输出收到的所有ICMP消息构造ICMP消息计算校验和发送数据报三、程序的需求分析与逻辑框图逻辑框图Checksum 开始定义初始化cksum(size > 1)确定cksum 及size 大小是if (size)计算校验cksum ,获得结果cksum+=*(UCHAR*)b否结束1、实验一利用协议分析软件跟踪局域网报文,实验内容如下:将安装协议分析软件的PC接入以太网中,跟踪PC之间的报文,并存入文件以备重新查。

设置过滤器过滤网络报文以检测特定数据流。

利用协议分析软件的统计工具显示网络报文的各种统计信息。

2、实验二Ping命令的基本描述Ping的操作是向某些IP地址发送一个ICMP Echo消息,接着该节点返回一个ICMP Echo replay消息。

ICMP消息使用IP头作为基本控制。

IP头的格式如下0 1 2 30 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+|Version| IHL |Type of Service| Total Length |+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+| Identification |Flags| Fragment Offset|+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+| Time to Live | Protocol | Header Checksum|+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+| Source Address |+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+| Destination Address |+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+Version=4IHL Internet头长Type of Service = 0Total Length IP包的总长度2、实验二Ping实际上是使用ICMP中的ECHO报文来实现的。

Echo 或 Echo Reply 消息格式如下: 0 1 2 30 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+| Type | Code | Checksum |+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+| Identifier | Sequence Number |+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+| Data ...+-+-+-+-+-Typeecho消息的类型为8echo reply 的消息类型为0。

Code=0Checksum为从TYPE开始到IP包结束的校验和Identifier如果 code = 0, identifier用来匹配echo和echo reply消息Sequence Number如果 code = 0, identifier用来匹配echo和echo reply消息功能描述:收到echo 消息必须回应 echo reply 消息。

identifier 和 sequence number 可能被发送echo的主机用来匹配返回的echo reply消息。

例如: identifier 可能用于类似于TCP或UDP的 port 用来标示一个会话, 而sequence number 会在每次发送echo请求后递增。

四、程序核心功能的实现机制2、实验二1、数据结构的描述1) IP包格式struct ip {BYTE Ver_ihl;.);void err_sys(const char *fmt, ...);struct proto {void (*fproc)(char *, ssize_t, struct timeval *);void (*fsend)(void);struct sockaddr *sasend; /* sockaddr{} for send, from getaddrinfo */ struct sockaddr *sarecv; /* sockaddr{} for receiving */socklen_t salen; /* length of sockaddr{}s */int icmpproto; /* IPPROTO_xxx value for ICMP */ } *pr;#endif /* PING_H_ */#include ""struct proto proto_v4 = { proc_v4, send_v4, NULL, NULL, 0, IPPROTO_ICMP };#ifdef IPV6struct proto proto_v6 = { proc_v6, send_v6, NULL, NULL, 0, IPPROTO_ICMPV6 }; #endifint datalen = 56; /* data that goes with ICMP echo request */double rtt_min = INFINITY, rtt_max = -INFINITY, rtt_total = 0, rtt_sqr_total =0;long long send_count = 0, recv_count = 0;int ttl_flag = 0, broadcast_flag = 0;int ttl = 0;struct timeval tval_start;const char *usage ="usage: ping [-v] [-h] [-b] [-t ttl] [-q] <hostname>\n""\t-v\tNormal mode\n""\t-b\tBroadcast\n""\t-t ttl\tSet TTL(0-255)\n""\t-q\tQuiet mode";int main(int argc, char **argv){int c;struct addrinfo *ai;opterr = 0; /* don't want getopt() writing to stderr */while ( (c = getopt(argc, argv, "vhbt:q")) != -1) {switch (c) {case 'v':verbose++;if (optind != argc-1)err_quit(usage);host = argv[optind];pid = getpid();signal(SIGALRM, sig_alrm);signal(SIGINT, sig_int);ai = host_serv(host, NULL, 0, 0);printf("ping %s (%s): %d data bytes\n", ai->ai_canonname, Sock_ntop_host(ai->ai_addr, ai->ai_addrlen), datalen);/* 4initialize according to protocol */if (ai->ai_family == AF_INET) {pr = &proto_v4;#ifdef IPV6} else if (ai->ai_family == AF_INET6) {pr = &proto_v6;if (IN6_IS_ADDR_V4MAPPED(&(((struct sockaddr_in6 *)ai->ai_addr)->sin6_addr))) err_quit("cannot ping IPv4-mapped IPv6 address"); #endif} elseerr_quit("unknown address family %d", ai->ai_family);pr->sasend = ai->ai_addr;pr->sarecv = calloc(1, ai->ai_addrlen);pr->salen = ai->ai_addrlen;gettimeofday(&tval_start, NULL);void proc_v4(char *ptr, ssize_t len, struct timeval *tvrecv){int hlen1, icmplen;double rtt;struct ip *ip;struct icmp *icmp;struct timeval *tvsend;ip = (struct ip *) ptr; /* start of IP header */hlen1 = ip->ip_hl << 2; /* length of IP header */icmp = (struct icmp *) (ptr + hlen1); /* start of ICMP header */ if ( (icmplen = len - hlen1) < 8)err_quit("icmplen (%d) < 8", icmplen);if (icmp->icmp_type == ICMP_ECHOREPLY) {if (icmp->icmp_id != pid)return; /* not a response to our ECHO_REQUEST */ if (icmplen < 16)err_quit("icmplen (%d) < 16", icmplen);tvsend = (struct timeval *) icmp->icmp_data;tv_sub(tvrecv, tvsend);rtt = tvrecv->tv_sec * + tvrecv->tv_usec / ;if (rtt < rtt_min) rtt_min = rtt;if (rtt > rtt_max) rtt_max = rtt;rtt_total += rtt;rtt_sqr_total += rtt * rtt;recv_count++;if (verbose > 0)void proc_v6(char *ptr, ssize_t len, struct timeval* tvrecv){#ifdef IPV6int hlen1, icmp6len;double rtt;struct ip6_hdr *ip6;struct icmp6_hdr *icmp6;struct timeval *tvsend;ip6 = (struct ip6_hdr *) ptr; /* start of IPv6 header */hlen1 = sizeof(struct ip6_hdr);if (ip6->ip6_nxt != IPPROTO_ICMPV6)err_quit("next header not IPPROTO_ICMPV6");icmp6 = (struct icmp6_hdr *) (ptr + hlen1);if ( (icmp6len = len - hlen1) < 8)err_quit("icmp6len (%d) < 8", icmp6len);if (icmp6->icmp6_type == ICMP6_ECHO_REPLY) {if (icmp6->icmp6_id != pid)return; /* not a response to our ECHO_REQUEST */ if (icmp6len < 16)err_quit("icmp6len (%d) < 16", icmp6len);tvsend = (struct timeval *) (icmp6 + 1);tv_sub(tvrecv, tvsend);rtt = tvrecv->tv_sec * + tvrecv->tv_usec / ;if (rtt < rtt_min) rtt_min = rtt;if (rtt > rtt_max) rtt_max = rtt;rtt_total += rtt;rtt_sqr_total += rtt * rtt;unsigned short in_cksum(unsigned short *addr, int len){int nleft = len;int sum = 0;unsigned short *w = addr;unsigned short answer = 0;while (nleft > 1) {sum += *w++;nleft -= 2;}/* 4mop up an odd byte, if necessary */if (nleft == 1) {*(unsigned char *)(&answer) = *(unsigned char *)w ;sum += answer;}/* 4add back carry outs from top 16 bits to low 16 bits */ sum = (sum >> 16) + (sum & 0xffff); /* add hi 16 to low 16 */ sum += (sum >> 16); /* add carry */answer = ~sum; /* truncate to 16 bits */return(answer);}void send_v4(void){int len;struct icmp *icmp;icmp = (struct icmp *) sendbuf;icmp->icmp_type = ICMP_ECHO;icmp->icmp_code = 0;void send_v6(){#ifdef IPV6int len;struct icmp6_hdr *icmp6;icmp6 = (struct icmp6_hdr *) sendbuf;icmp6->icmp6_type = ICMP6_ECHO_REQUEST;icmp6->icmp6_code = 0;icmp6->icmp6_id = pid;icmp6->icmp6_seq = nsent++;gettimeofday((struct timeval *) (icmp6 + 1), NULL);len = 8 + datalen; /* 8-byte ICMPv6 header */sendto(sockfd, sendbuf, len, 0, pr->sasend, pr->salen);#endif /* IPV6 */}void readloop(void){ int size;char recvbuf[BUFSIZE];socklen_t len;ssize_t n;struct timeval tval;sockfd = socket(pr->sasend->sa_family, SOCK_RAW, pr->icmpproto);setuid(getuid()); /* don't need special permissions any more */size = 60 * 1024; /* OK if setsockopt fails */setsockopt(sockfd, SOL_SOCKET, SO_RCVBUF, &size, sizeof(size));if (ttl_flag)setsockopt(sockfd, IPPROTO_IP, IP_TTL, &ttl, sizeof(ttl)) ;if (broadcast_flag)setsockopt(sockfd, SOL_SOCKET, SO_BROADCAST, &broadcast_flag, sizeof(broadcast_flag)) ;sig_alrm(SIGALRM); /* send first packet */void sig_alrm(int signo){(*pr->fsend)();send_count++;alarm(1);return; /* probably interrupts recvfrom() */}void sig_int(int signo){struct timeval tval_end;double tval_total;gettimeofday(&tval_end, NULL);tv_sub(&tval_end, &tval_start);tval_total = * + / ;puts("--- ping statistics ---");printf("%lld packets transmitted, %lld received, %.0lf%% packet loss, time %.2lfms\n",send_count, recv_count, (send_count - recv_count) * / send_count, tval_total);double rtt_avg = rtt_total / recv_count;printf("rtt min/avg/max/mdev = %.3lf/%.3lf/%.3lf/%.3lf ms\n", rtt_min,rtt_avg, rtt_max, rtt_sqr_total / recv_count - rtt_avg * rtt_avg);close(sockfd);exit(0);}void tv_sub(struct timeval *out, struct timeval *in){if ( (out->tv_usec -= in->tv_usec) < 0) { /* out -= in */char * sock_ntop_host(const struct sockaddr *sa, socklen_t salen){static char str[128]; /* Unix domain is largest */switch (sa->sa_family) {case AF_INET: {struct sockaddr_in *sin = (struct sockaddr_in *) sa;if (inet_ntop(AF_INET, &sin->sin_addr, str, sizeof(str)) == NULL)return(NULL);return(str);}#ifdef IPV6case AF_INET6: {struct sockaddr_in6 *sin6 = (struct sockaddr_in6 *) sa;if (inet_ntop(AF_INET6, &sin6->sin6_addr, str, sizeof(str)) ==NULL)return(NULL);return(str);}#endif#ifdef HAVE_SOCKADDR_DL_STRUCTcase AF_LINK: {struct sockaddr_dl *sdl = (struct sockaddr_dl *) sa;if (sdl->sdl_nlen > 0)snprintf(str, sizeof(str), "%*s",sdl->sdl_nlen, &sdl->sdl_data[0]);char * Sock_ntop_host(const struct sockaddr *sa, socklen_t salen){char *ptr;if ( (ptr = sock_ntop_host(sa, salen)) == NULL)err_sys("sock_ntop_host error"); /* inet_ntop() setserrno */return(ptr);}struct addrinfo *host_serv(const char *host, const char *serv, int family, int socktype){ int n;struct addrinfo hints, *res;bzero(&hints, sizeof(struct addrinfo));= AI_CANONNAME; /* always return canonical name */= family; /* AF_UNSPEC, AF_INET, AF_INET6, etc. */= socktype; /* 0, SOCK_STREAM, SOCK_DGRAM, etc. */if ( (n = getaddrinfo(host, serv, &hints, &res)) != 0)return(NULL);return(res); /* return pointer to first on linked list */}/* end host_serv */static void err_doit(int errnoflag, int level, const char *fmt, va_list ap){ int errno_save, n;char buf[MAXLINE];errno_save = errno; /* value caller might want printed */#ifdef HAVE_VSNPRINTFvsnprintf(buf, sizeof(buf), fmt, ap); /* this is safe */#elsevsprintf(buf, fmt, ap); /* this is not/* Fatal error unrelated to a system call. * Print a message and terminate. */ void err_quit(const char *fmt, ...){va_list ap;va_start(ap, fmt);err_doit(0, LOG_ERR, fmt, ap);va_end(ap);exit(1);}/* Fatal error related to a system call. * Print a message and terminate. */ void err_sys(const char *fmt, ...){va_list ap;va_start(ap, fmt);err_doit(1, LOG_ERR, fmt, ap);va_end(ap);exit(1);}六、程序扩展功能的需求分析与实现2、实验二扩展功能-h 显示帮助信息-b 允许ping一个广播地址,只用于IPv4-t 设置ttl值,只用于IPv4-q 安静模式。

相关文档
最新文档