数据通信与网络课程设计.doc
文本预览下载声明
《数据通信与网络课程设计》
一、实习内容
选题:
帧封装
模拟Ethernet帧的发送过程
发送Ethernet ARP包
解析IP数据包
监控IP包流量
IP地址的合法性及子网判断
发送TCP数据包
UDP服务器设计
OSPF实现
Web/FTP/Mail等服务器实现
二、要求
每位学生选择一个项目使用Java、C、VC或C#进行设计。通过课程设计帮助学生深入理解网络的基本工作原理和协议的设计思想,掌握处理网络问题的基本方法。
考核标准 根据题目的难易度、实现技术、完成情况和报告撰写质量给予A,B,C,D,E五级评分。
实习起止时间:2006.9.4-2006.9.8
课题一:帧封装
目的: 构造帧对于理解网络协议的概念、协议执行过程,以及网络问题处理的一般方法具有重要的意义。根据数据链路层的基本原理,针对普遍应用的Ethernet帧,通过构造一个具体的帧,引导同学深入理解网络协议的基本概念与网络问题处理的一般方法。
要求: 编写程序,根据给出的原始数据,组装一个IEEE802.3格式的帧。题目附带的文件为二进制原始数据(文件名分别为input1和input2),要求程序为命令行程序,比如可执行文件名为framer.exe,则命令行形式如下:framer inputfile outputfile
inputfile为原始数据文件,outputfile为输出结果。操作系统、使用语言和编译环境不限。
资料: 帧结构:
前导码 目的地址 长度字段 帧定界符 源地址 数据字段 校验字段
前导码和帧定界符:前导码56位(7字节)的1010101…1010比特序列组成,帧定界符为1字节,结构目的地址和源地址均采用6字节,目标地址为00-00-E4-86-3A-DC,源地址为00-00-80-1A-E6-65。
长度字段根据给出的数据字段长度生成。
数据字段为46字节到1500字节,要注意不足46字节需填充。
帧校验字段采用8位CRC校验。
input1 input2 帧的发送过程目的: 编写程序模拟Ethernet结点数据发送的流程,通过编写程序加深CSMA/CD工作原理的理解。
流程:父进程开辟一块大小为sizeof(pid_t)字节的共享内存来模拟介质总线(共享内存初始全部为\0),fork两个子进程,当两个子进程都退出后父进程退出。
两个子进程做相同动作,它们向介质总线上发送自己的进程号,完成10次成功的发送后退出。
子进程检查共享内存是否全部为\0,如果是则认为总线闲,否则总线忙继续载波侦听。
当总线闲时立即启动发送,冲突计数器设置为16,将自己的进程号与共享内存中的数据作或运算(模拟发包),然后比较共享内存的内容与写入内容,相同则没有发生冲突,否则发生冲突。
当没有发生冲突时,将共享内存清零,报告:xxxxx send success,xxxxx为进程号,作随机延时,开始下一个发送过程或者结束。
当发生冲突时,将共享内存清零,报告:xxxxx send collision,冲突计数器减1。如果冲突计数器0,使用截止二进制后退延迟算法计算等待时间,等待后进入下一次尝试;如果冲突计数器=0,报告:xxxxx send failure,结束本次发送,进入下一个发送过程或者结束。
提示:为了模拟冲突的过程,在这个程序中不要使用任何进程同步机制。如果用了同步,反倒失去了“冲突”特性。
要求:下载jpcap包。(Jpcap下载/kfujii/jpcap/doc/download.html。你只需要把lib中的dll文件拷贝到jre的bin目录,同时lib中的jar文件拷贝到jre中的lib/ext目录下就安装完整,当然你可以使用exe安装包进行安装,这样会更加的简单。/kfujii/jpcap/doc/index.html
Jpcap is a Java class package that allows Java applications to capture and/or send packets to the network.
Jpcap is based on libpcap/winpcap and Raw Socket API. Therefore, Jpcap is supposed to work on any OS on which?libpcap/winpcap has been implemented.?Currently, Jpcap has been tested on FreeBSD 3.x, Linux RedHat 6.1, Fedora Core 4, Solaris, and Microsoft Windows 2000/XP.
Jpcap supports
显示全部