优秀的毕业设计论文网
计算机 JAVA 电子信息 单片机 机械机电 模具 土木工程 建筑结构 论文
热门搜索词:网络 ASP.NET 汽车 电气 数控 PLC

端口扫描与检测技术的实现(VC++)

以下是资料介绍,如需要完整的请充值下载.
1.无需注册登录,支付后按照提示操作即可获取该资料.
2.资料以网页介绍的为准,下载后不会有水印.资料仅供学习参考之用.
  
资料介绍:

端口扫描与检测技术的实现

目 录1引言11.1本课题研究的意义11.2本课题的研究方法22端口扫描概述22.1基本概念22.2端口扫描原理32.3端口扫描技术简介53检测端口扫描概述73.1端口扫描检测的分析73.2普通端口扫描检测技术概述83.3慢速端口扫描检测技术概述93.4端口扫描的分布式检测概述93.5主流的端口扫描工具114端口扫描的实现124.1扫描程序的设计原理124.2程序流程图125检测端口扫描的实现135.1检测程序的设计原理135.2程序流程图135.3设计实现重点代码146性能测试186.1端口扫描程序性能测试186.2检测端口扫描程序性能测试19结 论20参考文献21致 谢22声 明23

[资料来源:http://www.THINK58.com]

1.1端口扫描原理扫描者向目标主机的TCP/IP服务端口发送探测数据包,通过探测性数据包得到目标主机的响应并记录下来,通过分析响应来判断服务端口是打开还是关闭,进而得知端口的状态。通常通过调用套接字函数connect ()连接到目标计算机上,完成一个完整的3次握手程。如果端口处于侦听状态,那么connect()就能成功返回。否则,该端口不可用,即没有提供服务。端口扫描的第一步是向目标主机的TCP/UDP端口发送探测数据包,然后根据对方的回应判断端口是否开放。由于网络环境的差异以及操作系统对连接请求的应答并不一致,在端口扫描中支持多种扫描方式,以保证扫描的准确和快速。大多数扫描技术要发送原始套接字包来进行探测。因为只有原始套接字支持对IP 报头的设置,即构造IP 数据包。同时,原始套接字也支持发送和接收IP数据包。这样,原始套接字接口实际上成为网络层向上提供的接口。实现时可通过调用Winsock2库中的函数setsockopt()来设置选项IP_HDRINCL,以获取自定义IP报头的权限。由于Windows2000仅支持Raw ICMP和Raw IGMP,不支持RawTCP,因此,发送TCP数据包,必须通过设置选项IP_HDRINCL来构造IP报头。首先创建原始套接字,定义IP首部。IPHEADER, TCP伪首部TCPSOCHEADER和TCP首部TCPHEADER,再填充IP首部和TCP首部,其中,TCP首部中的结构体变量tcpHeader的tcpHeade.th_flag=2,表示发送的是SYN数据包,修改它可以实现不同的标志位探测,如2是SYN,0是NULL,1是FIN,16是ACK探测等等。因为是自己填充IP首部和TCP首部,所以还需定义一个计算校验和函数checksum来计算IP报头和TCP报头的校验和。在填充TCP首部时,通过TCP伪首部填充TCP数据包的IP选项。事实上TCP伪首部并不是真正存在的,只是用于填充TCP的一些选项和计算校验和。调用setsockopt()设置选项IP_HDRINCL,根据填充TCP、IP报头的内容构造IP 数据包。设置侦听原始套接字的同步和超时之后,调用sendto()发送IP 数据包。

[资料来源:THINK58.com]