计算机网络课程设计.docx
- 文档编号:27466344
- 上传时间:2023-07-01
- 格式:DOCX
- 页数:18
- 大小:26.81KB
计算机网络课程设计.docx
《计算机网络课程设计.docx》由会员分享,可在线阅读,更多相关《计算机网络课程设计.docx(18页珍藏版)》请在冰豆网上搜索。
计算机网络课程设计
每两人一个分组,按学号先后顺序分。
选题1.编程实现简单的TCP协议分析器
一、问题描述
编程实现简单的TCP协议分析器,TCP协议分析器是一种用于监督和跟踪网络活动的诊断工具,它从局域网中抓取IP数据包,并对它进行分析得到相应的头部信息,过滤TCP包进行分析,得到TCP包的相应信息。
二、基本要求
1.利用原始套接字实现简单的TCP协议分析器。
2.系统功能包括:
2.1原始套接字与网卡绑定,并接收流经网卡的所有数据包;
2.2对数据包进行分析以获得源IP地址和目的IP地址;
2.3对TCPSegment进行分析以获得其首部详细信息;
2.4显示分析结果。
3建议使用VC++或Java实现。
选题2:
广播通信设计
设计目的:
1.掌握广播通信技术;
2.了解基于WinsockAPI的消息机制和编程应用方法;
3.了解WindowsSDK编程架构。
设计要求:
1.WinSockAPI编程,实现局域网消息广播的实用程序;
2.通过查阅资料,简述单播、广播、多播的区别和联系,以及各自的优缺点和适应范围。
选题3:
监控IP包流量
编制程序,监控网络,捕获一段时间内网络上的IP数据包,按IP数据包的源地址统计出该源地址在该时间段内发出的IP包的个数,将其写入日志文件中或用图形表示出来(建议用图形表示出统计结果)。
程序的具体要求如下:
用命令行运行:
IPStatistictimelogfile
其中,IPStatistic是程序名;time是设定的统计时间间隔(单位为分钟,比如,2表示2分钟);logfile表示统计结果写入的日志文件名(若用图形表示统计结果则可以不选这个参数)。
相关知识:
IP是ICP/IP协议体系中的网络层协议,TCP、UDP、ICMP和IGMP等其他协议都是以IP协议为基础的。
IP的特点如下:
(1)IP协议是一种不可靠、无连接的数据报传送协议。
(2)IP协议是点对点的网络层通信协议。
(3)IP协议向通信层隐藏了物理网络的差异。
选题4:
解析EthernetV2.0帧格式
程序为命令行程序,命令行格式如下:
FrameParser.exeinputfile
其中,inputfile为Ethernet帧封包文件。
前导码
帧前定界符
目的地址
源地址
类型
数据
帧校验
(7B)
(1B)
(6B)
(6B)
(2B)
(46~1500B)
(4B)
帧解析的结果显示在控制台上,格式为:
序号:
1(表示第n帧)
前导码:
xxxxxxxxxxxxxx
帧前定界符:
xx
目的地址:
xx-xx-xx-xx-xx-xx
源地址:
xx-xx-xx-xx-xx-xx
类型字段:
xxxx
数据字段:
……
CRC校验(正确):
xx或CRC校验(错误):
xx应为:
xx
状态:
Accept或Discard
选题5模拟Ethernet结点的数据发送
设计要求:
(1)用两个线程a,b来模拟Ethernet上的两台主机。
(2)用一个双字类型变量Bus来模拟总线(将其初始化为“/0”,并且总线等于“/0”时表示总线空闲)。
(3)两个子线程向总线发送自己的数据。
数据用该线程的线程信号进行模拟,发送数据用线程号和Bus的“或”操作进行模拟(即Bus=Bus|ID,ID为该线程的线程号)。
(4)每台主机须向总线成功发送10次数据,如果其中某次数据发送失败,则该线程结束。
(5)发送流程须遵循CSMA/CD。
随机延迟算法中的冲突窗口取0.005。
在数据发送成功(即Bus==ID)后,报告“IDsendsuccess”,产生冲突(即Bus!
=ID)后,报告“IDsendcollision”,发送失败(即冲突计数器值为0)后报告“IDsendfailure”。
随着主机发送成功次数的增加,报告其已发送成功的次数,如“主机A发送成功次数=3”。
选题6局域网实时通讯
1.熟悉WinSockAPI主要函数的使用;
2.掌握相应开发工具对WindowsSocketAPI的封装;
3.制作基于局域网的一对一网络即时通讯工具,实现基本数据的网络传输。
设计内容包括:
1.服务器端设计;2.客户端设计
6.1基于TCP协议实时通讯()
实现一简单的聊天程序实现网上聊天,包括服务器和客户端。
要求:
(1)基于TCP协议的网络连接、报文收发。
(2)支持多人聊天。
(3)客户端具有图形化用户界面。
客户端应具备以下功能:
1、能登录聊天室;2、能向登录的所有用户发消息;3、能接受所有用户的消息;4、能请求服务端返回当前在线用户数;5、能退出聊天室。
服务端应具备功能:
1、接受用户登录并登记;2、显示所有在线用户;3、向所有用户发送系统消息;4、接受任一用户信息,并转发到所有客户端;5、处理用户退出聊天室;6、处理来自客户端显示所有在线用户。
6.2.基于UDP协议实时通讯()
实现一简单的聊天程序实现网上聊天,包括服务器和客户端。
要求:
(1)基于UDP协议的网络连接、报文收发。
(2)支持多人聊天。
(3)客户端具有图形化用户界面。
客户端应具备以下功能:
1、能登录聊天室;2、能向登录的所有用户发消息;3、能接受所有用户的消息;4、能请求服务端返回当前在线用户数;5、能退出聊天室。
服务端应具备功能:
1、接受用户登录并登记;2、显示所有在线用户;3、向所有用户发送系统消息;4、接受任一用户信息,并转发到所有客户端;5、处理用户退出聊天室;6、处理来自客户端显示所有在线用户。
选题7.Ping程序的实现()
要求模拟实现Windows下的Ping命令,可以Ping指定主机、一批主机,并以图形显示输出结果。
分析PING应用程序设计原理和程序流程,选择合适的开发环境,参考已有的PING程序功能,设计实现ping功能的应用程序:
(1)熟悉IP以及ICMP协议的工作机制
(2)熟悉RAW模式的SOCKET编程
(3)分析socket编程技术;
(4)分析ping程序的功能及其相关网络协议;
(5)给出ping程序流程图和设计方案;
(6)选择开发环境,编译源程序;
(7)给出软件测试文档;
PING程序是面向用户的应用程序,该程序使用ICMP的封装机制,通过IP协议来工作。
为了实现直接对IP和ICMP包进行操作,实验中使用RAW模式的SOCKET编程。
熟悉SOCKET的编程,包括基本的系统调用如SOCKET、BIND等。
选题8、简单文件传输协议的设计与实现()
1.实现单线程文件传输功能;
2.在以上基础上,掌握多线程技术,在文件网络传输时,可选择单线程或多线程;
3.加入异常控制依据,增强程序的鲁棒性(Robust);
4.了解如何提高套接字传输的速率,以及如何加强传输的稳定性。
【设计内容】
1.服务器端(负责发送数据)设计
2.客户端(负责接收数据)设计
实验室各计算机具备Windows环境中套接字socket的编程接口功能,可为用户提供全网范围的进程通信功能。
本实验要求学生利用这些功能,设计和实现一个简单的文件传送协议。
用socket编程接口编写两个程序,分别为客户程序(client.c)和服务器程序(server.c),该程序应能实现下述命令功能:
get:
取远方的一个文件
put:
传给远方一个文件
pwd:
显示远主当前目录
dir:
列出远方当前目录
cd:
改变远方当前目录
?
:
显示你提供的命令
quit:
退出返回
这此命令的具体工作方式(指给出结果的形式)可以参照FTP的相应命令,有余力的同学可以多实现几个命令。
选题9、基于WinPcap的网络数据包捕获程序设计()
确定截包方法:
包括RAW模式SOCKET、PACKET32以及直接作为驱动程序挂在NDIS上;要求截获以下包的类型并分析:
以太网帧格式、IP包、ICMP包、TCP报文段、UDP报文等相关字段进行描述。
包括:
(1)熟悉RAW模式的SOCKET编程
(2)熟悉PACKET32的工作机制
(3)熟悉WINDOWS2000环境下NDIS驱动程序的编写方法
(4)编写基于上述某一机制的局域网截包的实现程序;
(5)在模拟实现环境下调试并运行自己编写的协议实现程序;
(6)如出现异常情况,在实验报告中记录并分析可能的原因
程序执行步骤:
1)打开网卡,并设为混杂模式。
2)回调函数NetworkTap在得到监听命令后,从网络设备驱动程序处收集数据包把监听到的数据包负责传送给过滤程序。
3)当Packetfilter监听到有数据包到达时,NDIS中间驱动程序首先调用分组驱动程序,该程序将数据传递给每一个参与进程的分组过滤程序。
4)然后由Packetfilter过滤程序决定哪些数据包应该丢弃,哪些数据包应该接收,是否需要将接收到的数据拷贝到相应的应用程序。
5)通过分组过滤器后,将数据未过滤掉的数据包提交给核心缓冲区。
然后等待系统缓冲区满后,再将数据包拷贝到用户缓冲区。
监听程序可以直接从用户缓冲区中读取捕获的数据包。
6)关闭网卡。
选题10、基于Winpcap的IP流量监控()
利用IP分组进行局域网的流量监控。
编制程序,监控网络,捕获一段时间内网络上的IP数据包,按IP数据包的源地址统计出该源地址在该时间段内发出的IP包的个数,将其写入日志文件或者用图形表示出来。
程序设计中会用到Winpcap的知识,Winpcap的主要功能在于独立于主机协议(如TCP/IP)发送和接收原始数据报。
也就是说,Winpcap不能阻塞、过滤或控制其他应用程序数据报的收发,它只是监听共享网络上传送的数据报。
列出网卡列表,让用户选择可用的网卡(本部分也可以不做)
注意过滤器的使用,只需捕获IP分组,别的分组都过滤掉
参考方法
(1)取得当前网络设备列表(在屏幕上显示,让用户选择)
(2)将用户选择的Ethernet网卡以混杂模式打开,以接受到所有的数据包以混杂模式打开网卡的函数pcap_open_live()
(3)设置过滤器,此处过滤器为“IP”,过滤函数:
pcap_compile()、pcap_setfilter()
(4)获取IP包并按照包的源地址进行统计(可以使用链表结构实现)
选题11、发现网络中的活动主机()
在网络管理中,经常要确定当前网络中处于活动状态的主机,这时可以通过使用ICMP协议的回送请求(Ping请求)和回送响应(Ping应答)消息来完成本工作。
本课程设计的目的是编制程序,利用ICMP数据包,发现制定网段中的活动主机。
设计要求:
本程序的功能是发送ICMP数据包,以获取指定网段中的活动主机,并将结果显示到屏幕上。
程序的要求
1)不允许在程序中直接调用Ping,而是用程序实现Ping的功能。
2)以命令形式运行:
程序名Start_ipEnd_ip,其中,Start_IP为起始IP地址;End_IP为结束IP地址。
3)输出格式为:
活动主机1的IP地址
活动主机2的IP地址
……
设计分析:
本程序使用原始套接字(SOCK_RAW)生成ICMP报文来进行活动主机的探查,这个程序使用的是回送请求与应答信息。
程序的大致思想:
把ICMP的数据包类型设置为回送请求(Ping请求,类型号为8),将它发送给网络上的一个IP地址,如果这个IP地址已经被占用,那么使用该IP地址的主机的,从而返回一个ICMP回送响应(类型号为0)的信息。
信息封装在一个IP包中,需要解析该IP包,找到ICMP数据信息(类型为0,表示为对方的应答,证明对方IP地址是活动的),如果这个IP地址没有人使用,则发送的ICMP回送请求(Ping请求)在设定的延时时间内不可能得到响应。
初始化原始套接字后(SOCK_RAW)后,本程序就开始在一个IP网段内寻找活动主机,由于要寻找的主机较多,可以采用多线程技术(多线程的函数为:
CreateThread())。
选题12.基于UDP协议多播文件传输程序设计()
程序分文件发送端、文件接收端两部分。
功能是文件发送端能同时向n个接收端传输文件。
要求采用UDP协议并以多播(组播)方式实现通信。
程序分服务器端、客户端两部分。
功能是服务器端能同时响应n个客户端,提供指定文件下载。
服务器端要求采用多线程编程技术。
初步掌握UDP/IP网络的传输层上的编程接口(WindowsSocketsAPI),学会利用这些接口来编写简单的网络通信软件。
在支持UDP/IP协议的Win32环境下,开发一个端到端的以UDP/IP为传输协议的文件传输软件。
选题13.基于TCP多线程的文件传输程序设计()
程序分服务器端、客户端两部分。
功能是服务器端能同时响应n个客户端的TCP连接请求,提供指定文件下载。
服务器端要求采用多线程编程技术。
初步掌握TCP/IP网络的传输层上的编程接口(WindowsSocketsAPI),学会利用这些接口来编写简单的网络通信软件。
在支持TCP/IP协议的Win32环境下,开发一个端到端的以TCP/IP为传输协议的文件传输软件。
1、直接在TCP协议上编程,程序同时具备发送和接收文件的功能。
2、程序一旦启动,将处于侦听状态(等待接收状态),一旦对等的另一个程序发出发送文件
请求,本程序即进行应答(ACK),并进入接收文件状态;程序在接收来自对方的文件时,它也应该可以同时向对方发送文件(可利用多线程或消息机制来实现,因为windows系统是多任务的)。
3、程序具有明晰的自定义协议。
文件传输双方的通信需要程序员自定义通信协议,自定义协议的设计,可做以下考虑:
(1)控制协议
通信双方之间的握手或同步消息都可以认为是控制协议,可以依据不同的系统要求来定义控制协议。
对于本实验,可以采取以下的控制协议:
A.请求发送文件:
SEND+本机IP地址+文件名+文件大小
B.响应接收文件:
RECV+本机IP地址+文件名
C.中断发送/接收文件:
INTR+本机IP地址+文件名
D.结束发送:
ENDS+本机IP地址+文件名
(2)数据协议
数据分组用来发送文件的数据:
A.发送数据分组:
DATA+数据分组长度+分组序号+数据+校验字节。
B.要求发送端重新发送数据的分组:
NACK+分组序号
4、定义程序的通信规程。
设计好自定义协议后,程序在实际的实现和通信时,还需要有自定义的通信规程,比如,发送方发送SEND控制分组请求开始文件传输,接收端以RECV分组进行响应,并作好接收准备,发送方收到RECV分组后开始以DATA数据分组发送数据...
5.差错控制。
本实验要求对数据进行差错控制,差错控制采用纵横奇偶校验和重新发送相结合的机制。
6.具有好的程序使用界面。
如选取文件,指定接收文件的保存路径和文件名,最好有接收和发送进度指示功能,有状态指示窗口(应答消息等),可以设置对方的IP地址和端口号。
7.允许使用TCP/IP控件、WinsockAPI和类库来实现程序。
建议使用Java或VC++。
选题14、网络嗅探器程序设计()
【设计要求】
1.不限平台,可以使用Libpcap、WinPcap或Linux的原始套接字;
2.实现一个功能比较简单的、具有图形界面的Sniffer,主线程响应用户界面操作,工作线程完成抓包等工作;
3.能够解析出IP层和传输层的协议头,能够过滤TCP、UDP等数据包;
4.能够输出文本方式传送的数据包的内容;
5.能够进行简单的流量统计。
本课程设计的目标是捕获网络中IP数据包,解析数据包的内容,将结果显示在标准输出上,并同时写入日志文件。
网络嗅探程序的实现主要工作包括:
给出了一个网络嗅探程序的系统框架、数据包捕获程序的设计、数据包的解析、数据的显示等。
开发一个基于Winpcap的网络嗅探器,可以列出监视主机的所有的网卡,选择一个网卡进行监听,捕获并显示流经网卡的数据包,并做相应的分析和统计,还可以设置捕获过滤规则,就某种协议(ip、tcp、udp等)进行重点分析。
选题15、基于套接字的网络监听程序设计()
对网卡设置混杂模式是通过原始套接字(rowsocket)实现的,这有别于通常是使用的数据流和数据报套接字。
在创建了原始套接字后,需要通过setsockopt()函数来设置IP头操作选项,然后再通过bind()函数将原始套接字绑定到本地网卡。
为了让原始套接字能接受所有的数据,还需要通过ioctlsocket()来进行设置,而且还可以指定是否亲自处理IP头。
至此,实际就可以开始对网络数据包进行监听了,对数据包的获取仍象流式套接字或数据报套接字那样通过recv()函数来完成。
但是与其他两种套接字不同的是,原始套接字此时捕获到的数据包并不仅仅是单纯的数据信息,而是包含有IP头、TCP头等信息头的最原始的数据信息,这些信息保留了它在网络传输时的原貌。
通过对这些在低层传输的原始信息的分析可以得到有关网络的一些信息。
由于这些数据经过了网络层和传输层的打包,因此需要根据其附加的帧头对数据包进行分析。
选题16、基于ICMP发现网络中活动主机的程序设计()
1、设计目标:
现在一个机房的主机已经达到了一定数量,进行网络管理时,常常需要确定当前网络中处理活动状态的主机。
本设计的目标就是编制程序,利用ICMP的回送请求和回送响应,来发现指定网段中的活动主机。
2、设计功能:
用命令行形式运行:
scanhostStart_IPEnd_IP,来发现活动主机并显示。
(注:
scanhost为程序名,Start_IP为被搜索望断的起始IP,End_IP为其终止IP。
)
显示格式形式如下粗体部分:
活动主机:
192.168.0.2
活动主机:
192.168.0.5
活动主机:
192.168.0.12
活动主机:
192.168.0.23
环境要求:
Windows95/98/2000/XP/dos下能运行,使用VC++或编写程序
3、实现功能
使用原始套接字生成ICMP报文来进行活动主机的探测。
设计的大体思想是把包类型设置为回送请求,将它发送给网络上的一个IP地址,如果这个IP地址已被占用,那么使用这个IP地址的主机上的TCP/IP软件就能够接收到这个ICMP回送请求,并返回一个ICMP回送响应信息。
由于接收到的回送响应ICMP包是封装在IP包内,就需要解析该IP包,从中找到ICMP数据信息。
相反,如果这个IP地址没有人使用,那么发送的ICMP回送请求在设定的时延内就不可能得到响应。
在初始化原始套接字后,程序就要开始在一个IP网段内寻找活动主机。
由于在某网段内需要发现的主机很多,为提高效率,采用了多线程编程。
利用ICMP数据包,通过使用ICMP的回送和回送响应消息来确定当前网络中处于活动状态的主机,即ping消息的请求和应答,将发送的ICMP的数据包类型设置为回送请求(类型号为8),并显示在标准输出上。
用命令行形式运行:
scanhostStart_IPEnd_IP,其中scanhost为程序名;Start_IP为被搜索网段的开始IP;End_IP为被搜索网段的结束IP地址。
选题17、解析IP数据包()
目的就是设计一个解析IP数据包的程序,并根据这个程序,说明IP数据包的结构及IP协议的相关问题,从而对IP层的工作原理有更好的理解和认识。
设计目标是捕获网络中的IP数据包,解析数据包的内容,将结果显示在标准输出上,并同时写入日志文件。
程序的具体要求如下:
(1)捕获网络中的IP数据包,解析数据包的内容,显示结果,并将结果写入日志文件。
(2)显示的内容包括:
捕获的IP包的版本、头长度、服务类型、数据包总长度、数据包标识、分段标志、分段偏移值、生存时间、上层协议类型、头校验和、源IP地址和目的IP地址等内容。
(3)设置停止标志,当程序接收到停止命令时即停止。
选题18、解析ARP数据包()
通过编制程序,获取网络中的ARP数据包,解析数据包的内容,将结果显示在标准输出上,并同时写入日志文件。
程序的具体要求如下所示:
1、以命令行或图形界面的形式运行。
2、程序输出内容如下所示:
源IP地址 源MAC地址 目的IP地址 操作 时间
各部分的说明如下所示:
源IP地址:
输出ARP消息格式中的源IP地址字段;
源MAC地址:
输出ARP消息格式中的源物理地址字段;
目的IP地址:
输出ARP消息格式中的目的IP地址字段;
目的MAC地址:
输出ARP消息格式中的目的物理地址字段;
操作:
输出ARP消息格式中的操作字段,若为ARP请求,则为1,若为ARP应答,则为2;
时间:
该ARP包产生的时间。
3、当程序接收到键盘输入Ctrl+C时,结束解析。
4、程序中会用到Winpcap,Winpcap是Win32环境下数据包捕获的开放代码函数库。
基于Winpcap的应用程序一般按照下面几个步骤进行设计:
输出网卡设备列表。
选择网卡并打开。
捕获数据包时,可能需要设置过滤器。
捕获数据包或者发送数据包。
选题19、综合扫描器程序的实现
设计要求
1.实现一个功能比较简单的、具有图形界面的端口扫描工具,主线程响应用户界面操作,工作线程完成端口扫描等工作;
2.能够扫描指定IP地址的主机/服务器开放了哪些端口;
3.能够扫描指定IP地址范围内的哪些主机/服务器开放了特定端口,如常见的TCP端口FTP(21)、SMTP(25),UDP端口DNS(53)、SNMP(161);
4.扫描动作要具有一定的隐蔽性和效率。
选题19.1.基于ARP的活动主机扫描()
先获得本机IP和子网掩码,从而算法子网内的所有主机,对这些主机发送ARP请求包,有返回的ARP包,则是子网内存活的主机。
计算子网和开启发送线程函数是ARPScan(),发送和接收线程函数是GetMACFromIP(objectA_strIP)。
选题19.2.基于ICMP的存活主机扫描()
首先开个IP包拦截处理线程,处理本机接收到的一切ICMP包。
对用户填入的IP段中的所有IP发送type为8、subcode为0的ICMP包。
拦截处理线程收到返回的type为0、subcode为0的ICMP包则说明该主机存活,在用户界面中显示其IP。
拦截处理线程函数是receivICMP(),发送线程函数是ping(objecthost1)
选题19.3、基于TCP全连接的开放端口扫描()
对用户输入的填入的每个IP的每个端口用TcpClient对象的Connect函数进行连接,若连接成功,则说明该端口开放。
对指定的IP和端口连接线程函数是TCPConnectScan(objectipPort)
选题19.4、UDP开放端口扫描()
1)开启一个IP包拦截处理线程,处理本机接收到的一切IP包。
2)用rawsocket自己构建IP包对用户输入的填入的每个IP的每个端口发送两次UDP包,并把发送的IP和Port存到hashtable中,当发送完最后一个扫描端口后,开启UDPTimeOut线程,对没回应的IPPort对进行处理。
3)拦截线程处理每个拦截到的包。
若是UDP包,且该UDP包的IP和Port在hashtable中,则说明该IP的Port开放,在用户界面上显示,并删除hashtable中该项。
若是返回ICMP端口不可到达错误(类型3,代码3),且该包的IP和Port在ha
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 计算机网络 课程设计