ImageVerifierCode 换一换
格式:DOCX , 页数:14 ,大小:243.59KB ,
资源ID:8707173      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/8707173.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(计算机网络课程设计报告.docx)为本站会员(b****7)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

计算机网络课程设计报告.docx

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

2、对协议栈的贡献。2、实验要求 网络课程设计包含两个部分的内容: 题目一是数据包的封装发送和解析(ARP/IP/TCP),要求使用Winpcap技术和Socket技术,根据ARP/IP/TCP帧的结构,封装数据包发送到局域网中。另外要捕获网络中的TCP/IP/ARP数据包,解析数据包的内容,并将结果显示,并同时写入日志文件。 题目二是从可选题目中选择一个,可选题目均是网络应用小程序,要求小组使用网络编程技术设计并实现一个网络应用程序,加深对网络协议协的理解,并锻炼网络编程能力。二、实验设备(环境)及要求1、实验硬件设备:计算机型号:联想ThinkPad T430u处理器型号:Intel i5 主

3、频:网卡型号:(1)Realtek PCIe GBE (2)Broadcom 2、实验软件要求:操作系统:Windows10应用软件:Visual Studio 2015 Pro3、小组成员及分工:三、实验内容与步骤1、实验1:数据包的封装发送和解析(ARP/IP/TCP)(1)实验内容1)程序目标:根据IP帧的结构,封装IP数据包发送到局域网中。并捕获网络中的IP数据包,解析数据包的内容,并将结果显示,并同时写入日志文件。2)程序功能:以命令行形式运行在标准输出中显示捕获的IP报文的首部字段的内容。使用winpcap访问网卡,手动封装定义IP首部的数据结构填充数据包,发送数据包,捕获数据包使

4、用winpcap,捕获IP数据包(2)主要步骤1)总体设计:a.获取设备列表并打印,打开所选择的适配器;b.准备工作:定义ip相关的结构体、打开要存放结果的文件,设置过滤器,手写ip数据报(内容有无效的MAC源和目的地址,和均为本机地址的ip源地址和目的地址,即发给自己一个ip报文),设置抓到数据报的解析和输出到文件的操作函数(解析ip报,打印并写入文件:报文的版本、协议、源和目的地址等)。c.发包、抓包。d.分析获取的数据。2)具体实现:#define HAVE_REMOTE#include #include #include #include /*4字节的IP地址*/typedef str

5、uct ip_address u_char byte1; u_char byte2; u_char byte3; u_char byte4;ip_address;/*IPv4首部*/typedef struct ip_header u_char ver_ihl; %s, +i, d-name); if (d-description) printf( (%s)n, d-description); else printf( (No description available)n); if(i=0) printf(nNo interfaces found! Make sure WinPcap is

6、installed.n); return -1; printf(Enter the interface number (1-%d):,i); scanf(%d, &inum); if(inum i) printf(nInterface number out of range.n); /* 释放设备列表 */ pcap_freealldevs(alldevs); return -1; /* 跳转到选中的适配器 */ for(d=alldevs, i=0; inext, i+); /* 打开设备 */ if ( (adhandle= pcap_open(d-name, %s is not supp

7、orted by WinPcapn, d-name); /* 释放设备列表 */ pcap_freealldevs(alldevs); return -1; /* 打开堆文件*/ dumpfile = pcap_dump_open(adhandle, D:); if(dumpfile=NULL) fprintf(stderr,nError opening output filen); return -1; /* 检查数据链路层,只考虑以太网 */ if(pcap_datalink(adhandle)!=DLT_EN10MB) fprintf(stderr, nThis program work

8、s only on Ethernet ); /* 释放设备列表 */ pcap_freealldevs(alldevs); return -1; if(d-addresses != NULL) Check the ); .n, d-description); d len:%dn, timestr, header-, header-len); u.%u.%u, ih-,ih-,ih-,ih-; printf(源地址:%u.%u.%u.%un, ih-,ih-,ih-,ih-; FILE *fp; fp=fopen(D:, a+); fprintf(fp,解析结果:); fprintf(fp,版本

9、+首部长度:%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.%un, ih-,ih-,ih-,ih-; fclose(fp);2、实验2:子网内文件传送(1)实验内容(明确的实验内容)设计并实现一个局域网内部的文件传送工具,使用TCP协议进行可靠文件传输。以图形界面运行,不同结点上文件自动同步(2)主要步骤(详细的实验步骤(系统/方法/算法等),图文结合)1)

10、问题定义:实现一个局域网内的文件传送与聊天的软件2)需求分析:局域网内的文件传送应当具备以下功能: 在线用户的及时发现和更新 选择一对一或者一对多对话模式 与选择用户进行聊天和文件传输 用户下线通知与更新用户列表3)系统设计:参考飞鸽传书的实现原理,总结设计方案如下: 架构设计:本系统采用本地应用程序设计,仅适用于在同一局域网的主机通信; 互相发现:本系统运行时启动局域网广播线程,发出包含主机名称、主机IP以及新加入标识符的广播表明自己新加入; 用户列表:监听到其他用户的广播信息后更新列表,显示当前在线的用户名和用户IP; 更新列表:在系统退出时会广播本机信息,标识表明自己离开,其余在线用户接

11、收到信息后更新提示该用户下线; 选择用户:可以单独选择或者多项选择用户列表中的用户; 发送消息:选择用户后,在输入框中输入聊天信息,点击“发送”按钮系统会发送UDP数据包给对应用户的ip地址,端口是8011; 接受消息:系统实时监听8011端口以接受不同用户发来的消息并展示在聊天窗口中; 发送文件:选择指定用户,点击“发送文件”按钮,选择本机相应文件后,与目标用户建立TCP连接,发送字节流。端口为8011; 接受文件:监听到有TCP连接请求时建立实时连接,系统提示用户是否接收文件,选择接收后选择相应路径与文件名后进行接收,接收成功后再聊天窗口显示提示信息。4)详细设计:1局域网用户列表的建立:

12、软件启动后定时的使用UDP协议向这个广播地址发送广播包,端口设置为8001。广播包内容包含主机名、IP、标识符等信息,已启动软件的用户通过8001端口收到此广播包后,就会在自己的用户列表中添加这个用户的用户名、IP地址等信息,从而局域网内的本系统用户都能建立起用户列表;2传送与接收信息:传送聊天信息时同样使用UDP协议,用户填写消息后点击按钮调用发送消息的函数,然后通过8011端口发送UDP包。系统在启动时通过开辟新线程来监听8011端口,时刻监听发送到本机的信息。3发送文件:用户发送文件时建立一个带参数的线程来发送文件,调用相应的TCP发送函数来发送文件,使用的是8001端口,由于协议不同因

13、此与之前的广播并不冲突;4接收文件:软件启动时开启一个线程用来接收文件,此线程在正常工作条件下处于阻塞监听状态,直到收到建立TCP连接的请求,之后提示用户收到文件选择是否接受,之后选择保存路径,进行接收。5用户离开:用户离线时发送一个离线广播包到的8001端口,包中含有LEAVE的标识符,收到此广播包的用户,根据包中的IP地址删除用户列表中相应的用户信息,并在聊天窗口显示“XXX用户已经离开”;6聊天记录保存:考虑到用户有保存聊天记录的需求,在聊天记录右侧点击“保存”按钮,可以将当前聊天记录保存为txt文件到用户指定目录中。或点击“清空”,清空当前用户聊天记录。5)具体实现:(C#)using

14、 System;using ;using ;using ;using ;using ;using ;using ;using ;using IPMessage public partial class frmMain : Form ddressFamily = localIP = i; break; = (); return u; tart(); public void SendMessage() if = (请输入你的消息!); else if = -1) (请选择用户!); else foreach (object obj in string getdata = (); string ar

15、ray = (|); User u = new User(); = array0; = array1; Socket socket = new Socket, , ; IPEndPoint iep = new IPEndPoint, 8011); User lo = getInfo(); string send = + | + + | + byte sendM = null; sendM = xt)|*.txt|All files (*.*)|*.*; = 1; , ; (文件已成功保存); private void btnClear_Click(object sender, EventArg

16、s e) = null; private void tbSend_Enter(object sender, EventArgs e) private void tbSend_KeyDown(object sender, KeyEventArgs e) if = (); 四:实验结果与分析实验一结果运行程序后,命令窗口首先列出本地网卡列表,在本机测试时,检测出5个网卡,其中序号为3的网卡为以太网卡,序号为4的网卡为无线网卡。图1-1 设备列表信息(1、2、5为本机虚拟机网卡)当前连接状态为无线连接,因此选择4,窗口提示:”listening on Network adapter Microsof

17、t on local host” 开始监听,提示”Send successed”提示手写数据包发送成功,紧接着可以看到抓取到的数据包中包含之前发送的手写数据包,抓取IP包成功。图1-2 实时抓包画面程序在后台将抓包结果写入文本文档中便于仔细查看:图1-3 抓包解析结果分析实验结果展示了设计功能已实现,并且在解析文本中显示成功抓取到手动封装的IP数据包,使用WireShake与解析数据一一进行比对,结果相同,整体来说较好的完成了预期目标。实验二结果双击系统图标,系统运行,检测到本机上线,在列表中显示本机信息,聊天窗口中提示本机上线。 图2-1 新用户上线在列表中选择要联系的主机,在发送窗口点击鼠

18、标,输入要发送的信息敲击“回车”或点击“发送”,即在聊天窗口提示聊天记录。图2-2 聊天选择用户,点击发送文件(本系统必须首先选择用户,否则无法发送),在打开文件的弹窗中选择要发送的文件,点击确定,文件即开始传送。图2-3 发送文件和接收接受用户收到连接请求后收到提示,选择接收文件后并选择保存目录后,文件开始传输,传输完毕在聊天窗口提示文件接受成功。同时显示文件保存目录。图2-4 接收文件成功需要对聊天记录保存时,点击保存,即可将聊天记录保存为txt文本文件。图2-5 保存聊天记录分析本系统基本实现了预期的各项功能,在同样使用UDP连接的列表建立和聊天中,为了避免发生接收误判,将其分为两个不同

19、的端口进行处理。此外在使用TCP连接传输文件的实现中,发现无法将文件的信息如文件名、文件类型、文件大小等与文件本身一并发送,需要发送两次数据方可实现。在多用户的发送测试中,聊天发送与单用户类似,但在文件发送即使用TCP传输时需要选择好建立连接的时机和相应线程的建立,否则将出现意想不到的后果。五:结论(讨论)1、实验结论通过网络软件编程的实践,巩固了计算机网络课上学习到的IP、UDP、TCP等重要网络协议的工作机制和实现过程,通过自己动手编程封装与发送这些数据包,加深了对网络协议的理解。通过局域网内文件传输和数据传输的实现,进一步体会到UDP协议在面向无连接状态下传播快速的优点,以及TCP建立的

20、可靠连接在保证文件传输稳定过程中的重要作用。在实际的网络编程中应当灵活运用不同协议的特点进行连接和传输。2、讨论在题目二使用广播来建立用户列表时遇到了问题,按照设计预期,系统应该在刚启动时发送一次广播就可以了,但实际上会出现有些软件收不到这些广播,导致不能发现这个刚上线的用户,解决方法是启动好不断发送广播。同样的问题出现在用户下线时,因为这里只发送一次广播,会导致其他用户的列表上的这个用户一段时间后才会被移除,有的收不到的话就不移除。这与我们的预期存在一定的差距,未解决这一问题我们还需要进一步的学习。在多线程编程中发现如果将监听和广播作为摸个线程不间断运行,将可能导致对现有网络资源的抢占,添加线程睡眠 ()后,此问题得到解决

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1