当前位置:文档之家› 数据通信与网络课程设计09教学文稿

数据通信与网络课程设计09教学文稿

数据通信与网络课程设计201009计算机网络课程设计设计提纲 (1)一、利用Socket实现双机通信 (1)二、基于WinSock的即时通信软件功能原理模拟 (1)三、了解最基本的RS232接口的网络编程方法 (1)四、帧封装 (1)五、以太网帧的发送过程 (3)六、发送以太网 ARP包 (4)七、解析IP数据包 (5)八、监控IP包流量 (6)九、IP地址的合法性验证 (7)十、发送TCP数据包 (8)十一、OSPF实现 (9)十三、简单FTP服务器实现 (12)十四、基于中间件技术的Web服务系统 (13)十五、网络管理命令软件包设计 (13)十六、编写一个类似 QQ的聊天程序 (13)十七、VLAN构建 (14)十八、Frame Relay 构建 (14)十九、基于UDP协议的数据包收发程序 (15)二十、滑动窗口协议仿真 (15)二十一、RIP协议仿真 (15)二十二、软件防火墙设计 (15)二十三、软件VPN设计 (16)二十四、网络监视器设计 (16)二十五、FTP站点搜索引擎 (17)一、要求每位学生选择一个项目使用Java、C、VC或C#进行设计,每个小组最多3人,并要有明确的分工。

通过课程设计帮助学生深入理解网络的基本工作原理和协议的设计思想,掌握处理网络问题的基本方法。

二、实习起止时间:2010.9.6 至 2010.9.10三、考核时间和标准本周五(9月10日)早上8:00开始,按学号演示设计成果。

9月17日(下周五)下午5:00之前必须提交各小组的课程实验报告(电子版和打印稿)根据题目的难易度、实现技术、完成情况和报告撰写质量给予A,B,C,D,E五级评分。

设计提纲一、利用Socket实现双机通信目的与要求:利用WinSock来实现双机通信,理解TCP状态机图。

要求使用WinSock编程,采用其中的TCP面向连接方式,实现文本数据的交换。

二、基于WinSock的即时通信软件功能原理模拟目的与要求:利用WinSock进行点对点通信,工作机制模仿即时通信软件的基本功能,登陆,上线,传递信息等等。

分为客户部分和服务器部分两块,客户部分类似一般通信软件例如QQ,服务器部分主要提供客户端用户基本数据配置。

三、了解最基本的RS232接口的网络编程方法目的与要求:编写一个简单应用程序完成双机通信,采用停止-等待协议。

四、帧封装目的:构造帧对于理解网络协议的概念、协议执行过程,以及网络问题处理的一般方法具有重要的意义。

根据数据链路层的基本原理,针对普遍应用的Ethernet帧,通过构造一个具体的帧,引导同学深入理解网络协议的基本概念与网络问题处理的一般方法。

要求:编写程序,根据给出的原始数据(即需要提供MAC帧结构中的“目的MAC地址”、“源MAC地址”、“类型字段”、“数据字段”,具体的值可以自己任意给定;更好的做法,是用Wireshark等抓包工具捕捉数据包(比如,捕捉一个UDP数据包)按照捕捉到的数据包的内容来提供MAC帧格式中各个字段部分,因为“数据字段”部分就是承载IP、ARP等上层协议数据的。

注意,“校验字段”必须由程序生成),组装一个Ethernet V2.0格式的帧(目前,局域网以以太网应用最广泛,应熟悉Ethernet帧格式)。

实现方式不限,可以用命令行程序,也可以用界面程序;但是,结果即生成的MAC帧必须写到文件中,并且要以二进制的形式来写入文件。

例如,如果用命令行程序来实现。

题目附带的文件为二进制原始数据(文件名inputfile),比如可执行文件名为framer.exe,则命令行形式如下:framer inputfile outputfileinputfile为原始数据文件,outputfile为输出结果。

操作系统、使用语言和编译环境不限。

资料:Ethernet V2.0 帧结构:前导码帧定界符目的MAC地址源MAC地址类型字段数据字段校验字段前导码和帧定界符:前导码56位(7字节)的1010101…1010比特序列组成,帧定界符为1字节,结构为10101011。

目的地址和源地址均采用6字节,目标地址为00-00-E4-86-3A-DC,源地址为00-00-80-1A-E6-65。

数据字段为46字节到1500字节,要注意不足46字节需在“数据字段”后面填充。

帧校验字段采用8位CRC校验即可。

例如,下面给出一个直观的结果:五、以太网帧的发送过程目的:编写程序模拟Ethernet结点数据发送的流程,通过编写程序加深CSMA/CD工作原理的理解。

流程:父进程开辟一块大小为sizeof(pid_t)字节的共享内存来模拟介质总线(共享内存初始全部为'\0'),fork两个子进程,当两个子进程都退出后父进程退出。

两个子进程做相同动作,它们向"介质总线"上发送自己的进程号,完成10次成功的发送后退出。

子进程检查共享内存是否全部为'\0',如果是则认为总线闲,否则总线忙继续载波侦听。

当总线闲时立即启动发送,冲突计数器设置为16,将自己的进程号与共享内存中的数据作"或"运算(模拟发包),然后比较共享内存的内容与写入内容,相同则没有发生冲突,否则发生冲突。

当没有发生冲突时,将共享内存清零,报告:xxxxx send success,xxxxx为进程号,作随机延时,开始下一个发送过程或者结束。

当发生冲突时,将共享内存清零,报告:xxxxx send collision,冲突计数器减1。

如果冲突计数器>0,使用截止二进制后退延迟算法计算等待时间,等待后进入下一次尝试;如果冲突计数器<=0,报告:xxxxx send failure,结束本次发送,进入下一个发送过程或者结束。

提示:为了模拟冲突的过程,在这个程序中不要使用任何进程同步机制。

如果用了同步,反倒失去了“冲突”特性。

六、发送以太网 ARP包要求:1.在熟悉ARP协议并了解Winpcap编程,或者下载JAVA类:jpcap包(Jpcap 下载/kfujii/jpcap/doc/download.html。

你只需要把lib中的dll文件拷贝到jre的bin目录,同时lib中的jar文件拷贝到jre中的lib/ext目录下就安装完整,当然你可以使用exe安装包进行安装,这样会更加的简单。

),或者用Windows自带的API(如,SendARP函数)实现。

2.对于用Winpacap实现的,构造ARP包,选择并打开网卡,将ARP包发送。

命令格式:arpsend src_ip src_mac dst_ip dst_mac flagflag: 0 表示ARP请求;1 表示ARP应答。

3.程序的正确性检验。

可以安装一个截包软件如Wirshark,来查看能否捕获到程序发出的ARP包,并检查捕获的ARP数据包中各字段的内容是否准确。

例如,用Wireshark捕获到的发送ARP数据包如下:资料:Jpcap ver.0.5.1 Installer for Windows jpcap-0.5.1.zipSimple/limited implementation of tcpdump.ARPSample source code for implementing ARP.TracerouteSimple implementation of Traceroute.SendTCP, SendUDP, SendICMPSamples of how to send TCP/UDP/ICMP packet.七、解析IP数据包网络数据包通常可以通过WinPcap或LibPcap获取网络数据包。

WinPcap(详细内容参见 /)是一个开源的、运行于Win32平台的体系结构。

包括内核级别的、低层次的包过滤动态连接库packet.dll和高级别系统无关函数库wpcap.dll。

也可以用Jpcap获取网络数据包。

WinPcap的安装和使用安装WinPcap驱动程序和DLL程序(可以从网站下载)开发人员使用的开发工具包(developer’s pack),库文件、包含文件、简单的示例程序代码和帮助文件。

用WinPcap库来捕捉数据包,都有基本的几个固定步骤,可以参考“WinPcap 中文技术文档”中示例程序;对用WinPcap捕获到的二进制数据流,再用协议格式来一步步读取即可。

设计目标:捕获网络中的IP数据包,解析数据包的内容,将结果显示在标准输出上,并同时写入日志文件。

要求:1.以命令行形式运行:ipparse logfile其中ipparse是程序名,logfile是纪录结果的日志文件名2.在标准输出和日志文件中列出捕获的IP包的版本、头长度、服务类型、数据包总长度、数据包标识、分段标志、分段偏移值、生存时间、上层协议类型、头校验和、源IP地址和目的IP地址等内容。

3.以键盘输入Ctrl+C退出。

参考二:Socket也可以捕捉IP及基于IP的上层协议的数据包。

所以,对IP 数据包的捕捉也可以用socket来实现;对捕捉到的IP数据包进行解析过程与用WinPcap来实现的方法相同。

八、监控IP包流量要求:编程监控网络,捕获一段时间内网络上的IP数据包,按IP数据包的源地址统计出此地址在该刻时间内发出的IP包个数,可以用命令行程序,也可以做成界面。

该题目“课题四”的延续,只不过对捕捉到的数据包不是分析各个字段,而是统计IP数据包个数。

统计信息包括源IP地址、目的IP地址、协议类型(TCP、UDP、等上层协议都是基于IP协议的)、及数据包个数。

例如,如果用命令行运行:IPStatistic time其中,time 为监控时间,单位为秒。

例如,运行结果可以如下:九、IP地址的合法性验证目的:掌握IP地址的分类,准确理解子网、掩码的概念,确切地明了IP地址的合法格式。

要求:1.在判断一个IP地址合法性时要自行编写代码,不要使用任何inet函数。

2.程序要求为命令行程序,格式为:ip_test subnet/mask ip_addr其中,程序名称为ip_test,参数为IP地址/子网掩码,如:要测试的IP地址为202.113.16.10,子网号为202.113.16.0,子网掩码为255.255.255.0,则命令行为:ip_test 202.113.16.0/24 202.113.16.10。

(因为255.255.255.0是连续的24个1,所以这样表示)。

3.子网号和子网掩码的合法性也要检查。

4.运行结果提示需要提示:IP地址是否合法、子网掩码是否合法和IP地址是否为子网成员。

提示:在判断不合法IP时要考虑全面,比如以下情况均属于不合法123..2.1123.23$.2.1123.2345.2.1123.23.45.2.1十、发送TCP数据包目的:编程设计一个发送TCP数据包的程序。

相关主题