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

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

v1.0可编辑可修改1实验报告实验名称:计算机网络课程设计学生姓名:xxxxxxxxxxxxxxx专业:xxxxxxxxxxxxxxx班级:xxxxxxxxxxxxxxx学号:xxxxxxxxxxxxxxx指导教师:xxxxxxxxxxxxxxx实验成绩:实验地点:实验时间:2016年5月6日v1.0可编辑可修改2一、实验目的与实验要求1、实验目的将书本上抽象的概念与具体实现技术结合,通过网络软件编程的实践,深入理解理论课上学习到的ARP、IP、TCP等重要网络协议的原理,通过自己动手编程封装与发送这些数据包,加深对网络协议的理解,掌握协议帧的结构和工作原理及其对协议栈的贡献。2、实验要求网络课程设计包含两个部分的内容:题目一是数据包的封装发送和解析(ARP/IP/TCP),要求使用Winpcap技术和Socket技术,根据ARP/IP/TCP帧的结构,封装数据包发送到局域网中。另外要捕获网络中的TCP/IP/ARP数据包,解析数据包的内容,并将结果显示,并同时写入日志文件。题目二是从可选题目中选择一个,可选题目均是网络应用小程序,要求小组使用网络编程技术设计并实现一个网络应用程序,加深对网络协议协的理解,并锻炼网络编程能力。二、实验设备(环境)及要求1、实验硬件设备:计算机型号:联想ThinkPadT430u处理器型号:Inteli5主频:网卡型号:(1)RealtekPCIeGBE(2)Broadcomv1.0可编辑可修改32、实验软件要求:操作系统:Windows10应用软件:VisualStudio2015Pro3、小组成员及分工:三、实验内容与步骤1、实验1:数据包的封装发送和解析(ARP/IP/TCP)(1)实验内容1)程序目标:根据IP帧的结构,封装IP数据包发送到局域网中。并捕获网络中的IP数据包,解析数据包的内容,并将结果显示,并同时写入日志文件。2)程序功能:以命令行形式运行在标准输出中显示捕获的IP报文的首部字段的内容。使用winpcap访问网卡,手动封装定义IP首部的数据结构填充数据包,发送数据包,捕获数据包使用winpcap,捕获IP数据包(2)主要步骤1)总体设计:a.获取设备列表并打印,打开所选择的适配器;v1.0可编辑可修改4b.准备工作:定义ip相关的结构体、打开要存放结果的文件,设置过滤器,手写ip数据报(内容有无效的MAC源和目的地址,和均为本机地址的ip源地址和目的地址,即发给自己一个ip报文),设置抓到数据报的解析和输出到文件的操作函数(解析ip报,打印并写入文件:报文的版本、协议、源和目的地址等)。c.发包、抓包。d.分析获取的数据。2)具体实现:#defineHAVE_REMOTE#include#include#include#include/*4字节的IP地址*/typedefstructip_address{u_charbyte1;v1.0可编辑可修改5u_charbyte2;u_charbyte3;u_charbyte4;}ip_address;/*IPv4首部*/typedefstructip_header{u_charver_ihl;%s,++i,d-name);if(d-description)printf((%s)\n,d-description);elseprintf((Nodescriptionavailable)\n);}if(i==0){printf(\nNointerfacesfound!MakesureWinPcapisinstalled.\n);return-1;}printf(Entertheinterfacenumber(1-%d):,i);scanf(%d,&inum);if(inum1||inumi){printf(\nInterfacenumberoutofrange.\n);/*释放设备列表*/pcap_freealldevs(alldevs);v1.0可编辑可修改6return-1;}/*跳转到选中的适配器*/for(d=alldevs,i=0;iinum-1;d=d-next,i++);/*打开设备*/if((adhandle=pcap_open(d-name,%sisnotsupportedbyWinPcap\n,d-name);/*释放设备列表*/pcap_freealldevs(alldevs);return-1;}/*打开堆文件*/dumpfile=pcap_dump_open(adhandle,D:\\);if(dumpfile==NULL){fprintf(stderr,\nErroropeningoutputfile\n);return-1;}/*检查数据链路层,只考虑以太网*/if(pcap_datalink(adhandle)!=DLT_EN10MB){fprintf(stderr,nThisprogramworksonlyonEthernet);/*释放设备列表*/v1.0可编辑可修改7pcap_freealldevs(alldevs);return-1;}if(d-addresses!=NULL)Checkthe);.\n,d-description);dlen:%d\n,timestr,header-,header-len);u.%u.%u],ih-,ih-,ih-,ih-;printf(源地址:[%u.%u.%u.%u]\n,ih-,ih-,ih-,ih-;FILE*fp;fp=fopen(D:\\,a+);fprintf(fp,解析结果:);fprintf(fp,版本+首部长度:[%u],ih-ver_ihl);fprintf(fp,协议:[%u],ih-proto);fprintf(fp,首部校验和:[%u],ih-crc);fprintf(fp,目的地址:[%u.%u.%u.%u],ih-,ih-,ih-,ih-;fprintf(fp,源地址:[%u.%u.%u.%u]\n,ih-,ih-,ih-,ih-;fclose(fp);}v1.0可编辑可修改82、实验2:子网内文件传送(1)实验内容(明确的实验内容)设计并实现一个局域网内部的文件传送工具,使用TCP协议进行可靠文件传输。以图形界面运行,不同结点上文件自动同步(2)主要步骤(详细的实验步骤(系统/方法/算法等),图文结合)1)问题定义:实现一个局域网内的文件传送与聊天的软件2)需求分析:局域网内的文件传送应当具备以下功能:在线用户的及时发现和更新选择一对一或者一对多对话模式与选择用户进行聊天和文件传输用户下线通知与更新用户列表3)系统设计:参考飞鸽传书的实现原理,总结设计方案如下:架构设计:本系统采用本地应用程序设计,仅适用于在同一局域网的主机通信;互相发现:本系统运行时启动局域网广播线程,发出包含主机名称、主机IP以及新加入标识符的广播表明自己新加入;用户列表:监听到其他用户的广播信息后更新列表,显示当前在线的用户名和用户IP;更新列表:在系统退出时会广播本机信息,标识表明自己离开,其余在v1.0可编辑可修改9线用户接收到信息后更新提示该用户下线;选择用户:可以单独选择或者多项选择用户列表中的用户;发送消息:选择用户后,在输入框中输入聊天信息,点击“发送”按钮系统会发送UDP数据包给对应用户的ip地址,端口是8011;接受消息:系统实时监听8011端口以接受不同用户发来的消息并展示在聊天窗口中;发送文件:选择指定用户,点击“发送文件”按钮,选择本机相应文件后,与目标用户建立TCP连接,发送字节流。端口为8011;接受文件:监听到有TCP连接请求时建立实时连接,系统提示用户是否接收文件,选择接收后选择相应路径与文件名后进行接收,接收成功后再聊天窗口显示提示信息。4)详细设计:①局域网用户列表的建立:软件启动后定时的使用UDP协议向这个广播地址发送广播包,端口设置为8001。广播包内容包含主机名、IP、标识符等信息,已启动软件的用户通过8001端口收到此广播包后,就会在自己的用户列表中添加这个用户的用户名、IP地址等信息,从而局域网内的本系统用户都能建立起用户列表;②传送与接收信息:传送聊天信息时同样使用UDP协议,用户填写消息后点击按钮调用发送消息的函数,然后通过8011端口发送UDP包。系统在启动时通过开辟新线程来监听8011端口,时刻监听发送到本机的信息。③发送文件:用户发送文件时建立一个带参数的线程来发送文件,调用相应的TCP发送函数来发送文件,使用的是8001端口,由于协议不同因此与之前的广播并不冲突;④接收文件:软件启动时开启一个线程用来接收文件,此线程在正常工作条件下处于阻塞监听状态,直到收到建立TCP连接的请求,之后提示用户收到文件选择是否接受,之后选择保存路径,进行接收。⑤用户离开:用户离线时发送一个离线广播包到的8001端口,包中含有v1.0可编辑可修改10LEAVE的标识符,收到此广播包的用户,根据包中的IP地址删除用户列表中相应的用户信息,并在聊天窗口显示“XXX用户已经离开”;⑥聊天记录保存:考虑到用户有保存聊天记录的需求,在聊天记录右侧点击“保存”按钮,可以将当前聊天记录保存为txt文件到用户指定目录中。或点击“清空”,清空当前用户聊天记录。5)具体实现:(C#)usingSystem;using;using;using;using;using;using;using;using;usingIPMessage{publicpartialclassfrmMain:Form{ddressFamily=={localIP=[i];break;}}=();v1.0可编辑可修改11returnu;}tart();}}}publicvoidSendMessage(){if=={(请输入你的消息!);}elseif==-1){(请选择用户!);}else{foreach(objectobjin{stringgetdata=();string[]array=('|');Useru=newUser();=array[0];=array[1];v1.0可编辑可修改12Socketsocket=newSocket,,;IPEndPointiep=newIPEndPoint,8011);Userlo=getInfo();stringsend=+|++|+byte[]sendM=null;sendM=xt)|*.txt|Allfiles(*.*)|*.*;=1;,;(文件已成功保存);}}}privatevoidbtnClear_Click(objectsender,EventArgse){=null;}privatevoidtbSend_Enter(objectsender,EventArgse){}privatevoidtbSend_KeyDown(objectsender,KeyEventArgse)v1.0可编辑可修改13{if=={();}}}}四:实验结果与分析实验一结果运行程序后,命令窗口首先列出本地网卡列表,在本机测试时,检测出5个网卡,其中序号为3的网卡为以太网卡,序号为4的网卡为无线网卡。图1-1设备列表信息(1、2、5为本机虚拟机网卡)当前连接状态为无线连接,因此选择4,窗口提示:”listeningonNetworkadapter‘Microsoft’onlocalhost…”开始监听,提示”Sendsuccessed”提示手写数据包发送成功,紧接着可以看到抓取到的数据包中包含之前发送的手写数据包,抓取IP包成功。v1.0可编辑可修改14图1-2实时抓包画面程序在后台将抓包结果写入文本文档中便于仔细查看:图1-3抓包解析结果分析实验结果展示了设计功能已实现,并且在解析文本中显示成功抓取到手动封装的IP数据包,使用WireShake与解析数据一一进行比对,结果相同,整体来说较好的完成了预期目标。v1.0可编辑可修改15实验二结果双击系统图标,系统

1 / 19
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功