实验六实验报告.doc

  1. 1、本文档共4页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
网络程序设计 实验报告 实验名称: 端口扫描实验 实验类型: 验证型实验 指导教师:__XXX老师(理论课:XXX) 专业班级: XXXXXXXXX 姓 名:_______ _ XXXXXXXXX____ _ 学 号:___________XXXXXXXXXXXX_______ 电子邮件:___ XXXXXXXXXXXX@____ 实验地点:________XXXXXXXXX __________ 实 验 日 期: XXXXXXXXXXXXXXX 实验成绩:__________________________ 实验目的 了解端口扫描的基本概念和工作原理 实验设计 2.1实验要求 编写一个利用全连接的端口扫描程序,能显示目标主机的端口开放情况。要求能在命令行输入要扫描的目标主机和端口范围。比如:scan *.*.*.* nnnn-mmmm。 2.2实验设计 字符串处理。实验中需要对用户输入的字符串进行处理,从中获取到要扫面的IP地址和端口号范围。可先用一个字符串保存整个命令语句,然后检测到其中的第一个空格和第二个空格,在两个空格之中的内容即是需要检测的IP地址,然后获取到第二个空格和第一个横线之间的内容,并将其转换为整型数据,此为需要扫描的端口的起始端口号,最后获取到横线之后的数据,将其转化为整型数据,即需要扫面端口的终止端口号。 设计主程序。先创建一个TCP类型的套接字,将其绑定到本地地址,然后将要发送数据的IP地址设置为从用户命令中获取到的数据,紧接着在一个循环中,将在需要扫描的端口的范围内的数据依次赋值给要发送数据的端口号,然后调用connect函数,并等待对方响应连接,若得到响应则表示该端口正常开启,否则表示该端口关闭,并在控制台中打印其开关情况。 图一 图一.扫描端口程序流程图 实验过程(包含实验结果) 针对实验要求设计代码 编写代码实现要求 图3.通信建立后,服务器端的程序界面 图3.通信建立后,服务器端的程序界面 图二 图二.扫描端口程序运行效果 讨论与分析 阐述全连接扫描的原理。 答:全连接扫描是TCP端口扫描的基础,现有的全连接扫描有TCP connect()扫描和TCP反向ident扫描等。其中TCP connect()扫描的实现原理如下所述:扫描主机通过TCP/IP协议的三次握手与目标主机的指定端口建立一次完整的连接。连接由系统调用connect开始。如果端口开放,则连接将建立成功;否则,若返回-1则表示端口关闭。建立连接成功:响应扫描主机的SYN/ACK连接请求,这一响应表明目标端口处于监听(打开)的状态。如果目标端口处于关闭状态,则目标主机会向扫描主机发送RST的响应。 你的程序是否考虑了扫描效率?如没有考虑你准备如何改进? 答:我的程序使用的全连接扫描,没有考虑扫描效率。可以尝试使用半连接扫描,若端口扫描没有完成一个完整的TCP连接,在扫描主机和目标主机的一指定端口建立连接时候只完成了前两次握手,在第三步时,扫描主机中断了本次连接,使连接没有完全建立起来,这样的端口扫描称为半连接扫描,也称为间接扫描。使用这种连接的优点在于即使日志中对扫描有所记录,但是尝试进行连接的记录也要比全扫描少得多,从而提高了扫描效率。 实验者自评 通过本次实验,对端口扫描的基本概念和常用的基本方法有了熟悉和掌握,尤其是对全连接扫描和半连接扫描有了深入的认识,其各自的实现方法和优缺点也有所了解。对基本的windsock API函数的使用方法和实现原理有了更深入的了解,对TCP客户端编程有了更深刻的理解。在实验过程中,熟悉了网络编程方法,尤其是查阅资料并熟悉了TCP建立连接的三次握手过程,重新温习了对字符串的操作,对自己的编程动手能力有了较好的锻炼和提高。通过完成实验,对TCP编程的知识有了进一步了解,重新认识了其重要性,并对课堂上学习的知识进行了巩固。在实验过程中,我认真对待,态度积极,独立了完成实验任务。 附录:关键代码(给出适当注释,可读性高) // 填写远程地址信息 sockaddr_in addr; addr.sin_family = AF_INET; //设置获取的用户输入IP地址为远程IP地址 addr.sin_addr.S_u

文档评论(0)

133****5313 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档