毕业设计(论文)-网络端口扫描技术原理分析与实现.doc_第1页
毕业设计(论文)-网络端口扫描技术原理分析与实现.doc_第2页
毕业设计(论文)-网络端口扫描技术原理分析与实现.doc_第3页
毕业设计(论文)-网络端口扫描技术原理分析与实现.doc_第4页
毕业设计(论文)-网络端口扫描技术原理分析与实现.doc_第5页
已阅读5页,还剩43页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

网络端口扫描技术原理分析与实现 作 者: I 摘要摘要 随着计算机在现代社会的广泛应用,计算机网络在人们工作和生活的各个领域占有越来 越重要的地位。由于网络规模的迅速扩张和计算机系统的日益复杂,新的系统漏洞层出不穷。 如何保证网络的安全运行已经成为一个亟待解决的问题。网络扫描技术是当前网络安全评估 的重要组成部分,通过对网络的扫描,能够及时了解网络的运行状况及其存在的弱点,从而 帮助网络管理员充分的了解网络的实际情况,并制定合适的安全策略,最终达到改善网络状 况,增强网络安全系数的目的。同时,网络扫描技术也常为入侵者所利用,通过扫描远程主 机或网络,能够探测攻击目标的软硬件配置信息,为制订攻击策略做准备。 本文详细研究了计算机端口扫描技术的优缺点,并采用多线程技术结合 TCP 全连接扫 描实现了基于 C 语言和 Windows Socket 编程的网络端口扫描程序。程序模拟入侵者对目标 主机的多线程入侵扫描,快速、及时、准确地检测出目标主机的端口状态,为网络系统管理 员评测系统安全性提供数据支持。 关键词:多线程;TCP 全连接;同步;Winsock;TCP/IP II Abstract With the wide range of applications of the computer in modern society, the computer network plays a more and more important role in peoples working and living. Due to the rapid expansion of the network size and the increasing complexity of the computer systems, an endless stream of new vulnerabilities will be found. How to ensure the safe operation of the network has become an issue. Network scanning technology is an important component of the current network security assessment. By scanning the network to keep abreast of the operation of the network and its weaknesses, thereby helping network administrators to fully understand the actual situation of the network and to develop appropriate security policy, and ultimately achieve the purpose of improving the network conditions, and enhancing the network security coefficient. At the same time, network scanning technology is also often used by intruders. By scanning the remote host or network, intruders can detect the hardware and software configuration information of the target. Thereby formulate the strategies to prepare attack. In this paper, I give a detailed study of the advantages and disadvantages of computer port scanning technology, and use the multi-threading technology and TCP connect scanning technology to achieve a network port scanner which is based on the C programming language and Windows Socket. The procedure simulate the invaders on the target hosts invasion of multi-threaded scanning, rapidly, timely and accurately detect the computer port status of the target host in order to provide data to the network system administrator to evaluate the security coefficient of system. Key words: multi-threaded; TCP connect; synchronization; Winsock; TCP / IP 第第 1 章章 绪论绪论.1 1.1 网络安全背景.1 1.1.1 网络安全问题来源 .1 1.1.2 端口扫描技术对于网络攻击的作用 .2 1.1.3 网络端口扫描对策 .3 1.2 国内外相关领域的发展动态.3 1.3 论文的主要工作以及组织安排.5 1.3.1 论文的主要工作 .5 1.3.2 论文的结构安排 .5 第第 2 章章 论文涉及的相关技术的分析论文涉及的相关技术的分析.6 2.1 TCP/IP 协议 .6 2.1.1 TCP/IP 协议分层 .6 2.1.2 TCP 协议与 TCP 连接的建立.8 2.2 WINDOWS SOCKET简介.10 2.2.1 基本概念 .10 2.2.2 Winsock 的编程特点.11 2.2.3 Winsock 2.0 常用的函数.12 第第 3 章章 当前端口扫描技术分析当前端口扫描技术分析.13 3.1 端口扫描原理.13 3.1.1 端口简介 .13 3.1.2 端口扫描原理 .14 3.2 常见端口扫描技术.15 3.2.1 TCP connect 扫描.15 3.2.2 TCP SYN 扫描.15 3.2.3 秘密扫描 .15 3.2.4 其它扫描技术 .17 3.3 端口扫描技术小结与多线程技术的引入.18 3.3.1 常用端口扫描技术优缺点的比较 .18 3.3.2 多线程技术简介 .19 3.2.3 线程的同步 .19 第第 4 章章 多线程多线程 TCP 全连接扫描的实现全连接扫描的实现.22 4.1 程序功能简介.22 4.2 端口扫描线程的同步.24 4.3 程序设计流程分析.25 第第 5 章章 设计总结设计总结.28 参考文献参考文献.29 翻译原文资料翻译原文资料.30 译文译文.37 致谢致谢.43 1 第第 1 章章 绪论绪论 1.1 网络安全背景网络安全背景 随着信息化进程的深入和网络的迅速发展,个人乃至社会对计算机网络的依赖达到了空 前的程度。计算机网络的普及在带给人们以全新的生活、工作方式的同时,其开放性和自由 性使得存储于网络之中的私密信息有被窃取、篡改的可能。计算机网络的脆弱性也使得其成 为许多别有用心者的攻击目标。因此,网络安全已经成为影响个人隐私、财产的安全、国家 安全、社会稳定的重大问题。 在利用互联网的过程中,无论是在论坛上发贴,还是收发电子邮件都避免不了要进行注 册。现在许多校友录、同学录类型的网站都要求实名制注册,这在约束注册者的网络行为的 同时,也带来了信息泄露的潜在风险。发生于 2006 年的“铜须门”事件,使得“人肉搜索” 于公民的个人隐私权的矛盾浮出水面。 频繁的网络游戏盗号事件令游戏运营商和网络游戏玩家们苦恼不已。据有关资料显示, 黑客经济的年产值已经超过了 2.38 亿元人民币,造成的损失则超过 76 亿元。有的“盗号组 织”甚至形成了以“制造病毒传播病毒盗窃账户信息第三方平台销赃洗钱” 为环节的一条完整黑色产业链。2008 年的“熊猫烧香”事件在带给网民以惨重的经济损失 的同时也使人们认识到网络安全的重要性。 互联网的隐蔽与便利使境内外各种敌对组织和敌对分子开始利用这一工具向我国进行反 动渗透。他们利用各种论坛发布歪理谣言,煽动民族矛盾;通过电子邮件进行秘密联络;招 募有计算机特长的人员进行非法入侵,窃取情报,破坏系统。而网络设备相对于常规武器更 加廉价,更加容易获取,这使得恐怖组织越来越重视这种不对称武器的利用。 综上所述,计算机网络信息安全对于国家安全、社会稳定的重要性是不容置疑的。在未 来的国防领域,网络信息战必将扮演重要角色。提高网络信息安全水平,培养大量的信息安 全技术人才是在未来的信息战中取得不对称优势的关键所在。 1.1.1 网络安全问题来源 计算机网络的安全问题来源于多个方面,在计算机发展历史的早期,人们更加关注的是 功能的全面和便捷,而安全并不是首要考虑的问题。随着互联网络的普及,计算机早已不再 是科学家、学者们的专利,互联网的大规模应用使得大量的安全隐患逐渐暴露出来。 2 网络安全的脆弱性主要源于: (1)Internet 所用底层 TCP/IP 网络协议存在安全隐患,该协议本身的安全问题极大地影响 到上层应用的安全。 (2)应用软件的安全漏洞(如存在溢出漏洞)成为系统安全的短板。据 X-Force2008 年中 IT 安全趋势统计报告显示,在 2008 年的前六个月,大约 78%针对浏览器的攻击目标是浏览 器插件。 (3)搜索引擎的强大功能使很多网络用户可以轻易、快速地获得攻击网络的方法和手段。 据 X-Force2008 年中 IT 安全趋势统计报告显示,94%针对浏览器的攻击发生在漏洞公布的 24 小时内。人们在这段时间内无法获取官方的补丁,绝大多数用户甚至不知道自己的系统 出于危险之中。 (4)网络安全法规的缺失使犯罪者有机可乘。由于我国的网络安全法规尚不完善,缺乏 可操作性,而且许多受害者出于各种考虑并未报案,这使一部分犯罪者有侥幸心理从而助长 了犯罪。 网络的攻击与防御是永恒的猫鼠游戏,攻击与防御的技术都在不断的对抗中得以升华。 随着网络规模的快速扩张、网络应用逐渐渗透到个人生活、社会活动以及国家安全的各个领 域。出于各种目的,对网络系统进行侦查、渗透、破坏的活动将呈现出迅速增长的趋势。提 早采取措施,提高信息安全技术水平,是在下一轮网络攻击时减少损失的最佳策略。 1.1.2 端口扫描技术对于网络攻击的作用 入侵者在入侵计算机系统的过程中大致会经历以下的步骤: 1.搜集目标信息(利用各种扫描器如流光,NMAP,ISS,SATAN 等). 2.查找系统已知漏洞,构造攻击方案(通过安全邮件列表、讨论组的消息等发布)。 3 获得普通用户权限(利用口令破解,嗅探,伪装)。 4.提升权限,获得超级用户权限(缓冲区溢出,符号连接,root 的木马)。 5.清除入侵痕迹(删除系统日志中关于入侵者的信息,如:入侵者在破解密码时反复的尝 试,会在日志中留下大量的连接失败的信息)。 6.设置后门,为下一次进入系统提供方便。 7.作为跳板攻击另一目标。 收集目标站点的各种信息是一次成功的网络攻击的前奏。入侵者会通过各种途径获取系 统的相关配置信息,如目标系统的软硬件平台类型,提供的服务与应用及其安全性的强弱, 目标系统的安全策略等等。攻击者通过手工探测和扫描软件对目标进行彻底分析,尽可能收 集目标系统的相关信息,最后分析得到目标系统可能存在的可利用的漏洞。这些分析结果包 3 括:操作系统类型,操作系统的版本,运行的应用服务,应用服务的版本,网络拓扑结构以 及网络设备类型。这些信息对于入侵者制定下一步攻击策略是至关重要的。 1.1.3 网络端口扫描对策 网络端口扫描一方面可供管理员了解网络安全状况、发现安全漏洞。另一方面,也是入 侵者进行攻击的前奏。入侵者常常利用网络扫描来探测目标主机的软硬件配置信息,结合已 知的漏洞,确定攻击策略。因此,对于远程非法扫描,应该能及早发现、及时阻断。这对于 保护系统关键信息免于泄露,预防网络攻击有重大意义。 (1)在配置主机系统时,除了必须提供的服务端口外,关闭所有网络服务端口.例如,对于一 台 HTTP 服务器,只需要对外开放 80 端口.其他的像 FTP、TELNET 等网络服务均可以全部关 闭。有的主机甚至关闭了 ICMP 协议的回复报文,造成直接 ping 该主机时不通。这样,可以 在一定程度上避免主机被攻击者发现。 (2)对于一些不需要为公众所周知的网络服务,可以更改默认端口。例如,某些只为特定 的用户提供的服务,服务端口可以不用默认端口。这样普通用户就无法使用该网络服务。同 样,攻击者也无法通过一般途径来攻击这些网络服务。扫描的目的是为了获取信息,所以, 针 对端口扫描的防御方法就是加强信息隐蔽,杜绝不必要信息的外泄。 (3)在防火墙或路由器上采用更严格的过滤规则,阻止大部分扫描数据报文进人系统。 例如,WINDOWS 自带的防火墙通过设置就可以禁止了 ICMP 协议的回复报文,这样,直接 ping 该主机时不通。这可以躲过一些通过 ICMP 协议的回复报文来判断主机是否存活的主机 扫描系统的检测。 (4)利用端口检测技术对外来的数据包进行审核。在捕获一个外部数据包后,记录、 分析它的源地址、目的地址及目的端口。对访问同一主机的多个端口或多个目标主机的活动 将被判定为非法扫描。在检测到非法的网络扫描之后,可以采取一定的措施,如拒绝该地址 的访问,甚至在必要时可以对入侵者实施反向追踪。 1.2 国内外相关领域的发展动态国内外相关领域的发展动态 网络端口扫描是网络扫描的组成部分。网络扫描主要包括端口扫描和主机信息探测两部 分:端口扫描是通过向远程或本地主机发送探测数据包,获取主机的响应,并根据反馈的数 据包,进行解包和分析,从而获取主机的端口开放情况;主机信息探测主要包括基本信息探 测和操作系统探测,基本信息探测是针对主机上的服务软件的类型进行探测,操作系统探测 是通过向远程或本地主机发送封装的特定的数据包,运行不同类型以及不同版本号操作系统 4 的主机将有不同的反馈数据包返回,建立相应的决策树,可以判定目标的操作系统类型和版 本号。在实际应用中,网络扫描主要用来搜集网络信息,能够帮助我们发现目标主机的弱点 和漏洞,并能根据扫描结果,改进网络安全,防范入侵者的攻击。 进行网络扫描的工具被称为网络扫描器。一个完备的网络扫描器通常具备以下功能: (1)发现活动主机(或网络); (2)对于活动主机,能够发现其开放的端口及提供的服务; (3)对于活动主机,能够较为准确地探测到该机器上运行的操作系统类型和版本号以 及服务软件的特征; (4)通过对系统和服务的测试,能够发现系统存在的安全漏洞。 网络扫描器一直是网络安全的研究热点,国内外的一些网络安全研究人员已经在这个领 域取得了一定的研究成果。随着端口扫描技术的快速发展,不断有新的扫描技术和扫描工具 出现,扫描工具已经成为维护网络安全的重要工具。常用的扫描工具有很多,许多以自由软 件的形式存在,用户可以从 INTERNET 上自由获取。 许多优秀的扫描软件以自由软件的形式发布。国外较著名的有 Nmap, Jakal, Strobe 等扫 描软件,国内也有 X-scan,流光等。这些扫描器一般都能综合运用各种扫描方式对主机端口 开放情况、提供服务情以及操作系统类型和版本号进行探测,甚至可以对一些开放的端口进 行密码猜测并尝试登录。 Nmap(Network Mapper )是一种网络探测安全审计工具,遵循 GNU 通用公共许可证 GPL (General Public License) ,可从 /nmap 站点上免费下载。 它既可以对大型网络进行快速扫描也可以针对单台主机进行扫描。通过使用 TCP 协议栈指 纹,可以准确地判断出目标主机的操作系统类型,而且其能够在大多数操作系统上运行。通 过使用 Nmap,安全管理员可以发现自己网站的漏洞,并逐步完善自己的系统。 X-scan 是一种由国内网络安全人士创作的优秀扫描工具。它采用多线程方式对指定 IP 地址段(或单机)进行安全检测,提供了图形界面和命令两种操作方式,扫描包括远程操作系 统类型及版本,标准端口状态及主机状态、主机漏洞等在内各种信息,还提出了一些相应的 描述、利用程序和解决方案。 5 1.3 论文的主要工作以及组织安排论文的主要工作以及组织安排 1.3.1 论文的主要工作 随着计算机网络技术的迅猛发展,人们在工作生活中对网络的依赖度越来越高。网络安 全的重要性日渐凸显。端口扫描技术是网络攻防的一种重要技术,它可以及时发现网络存在 的问题。在目前的端口扫描技术中,存在着不同的方式,而各种方式的效率和侧重点各有不 同。本论文结合目前网络安全的现状,对端口扫描技术进行了系统学习和研究。最后,在现 有 TCP 全连接扫描技术的基础上,结合多线程技术实现了基于多线程的 TCP 全连接扫描, 极大地提高了端口扫描的效率。 1.3.2 论文的结构安排 第 1 章绪论 介绍了网络安全的背景,端口扫描技术在网络攻击中的作用,并对现有的 端口扫描程序进行了介绍。 第 2 章介绍了本文涉及的相关理论背景,包括 TCP/IP 协议模型和 Winsock 编程的特点。 第 3 章阐述了网络端口扫描的相关概念和理论,主要介绍了端口扫描的原理,并对现有 的端口扫描技术的优缺点进行了分析与比较。在此基础上,引入了多线程技术,并阐明了实 现多线程 TCP 扫描的意义。 第 4 章对多线程 TCP 扫描的过程进行了具体实现。并给出了程序涉及的相关理论,如: TCP 连接、扫描线程同步方法的阐述;程序的流程介绍等。 第 5 章对该程序的不足进行总结,提出新的展望和工作。最后进行全文的总结。 6 第第 2 章章 论文涉及的相关技术的分析论文涉及的相关技术的分析 2.1 TCP/IP 协议协议 TCP/IP(Transmission Control Protocol/Internet Protocol) 协议由底层的 IP 协议和 TCP 协 议组成,是当今网络的基本组成协议。在网络中,运行着各种型号的计算机,不同的计算机 上,可能运行着不同的操作系统;同时,各种不同的局域网中也存在不同的网络结构和传输 规则。要使处于不同的网络结构和传输规则的网络中并且有着不同的操作系统的主机之间互 相通信,就必须有一个相关的协议,形成一个统一的标准。TCP/IP 协议就是这样的协议。 TCP/IP 协议模型有别于 OSI 的七层参考模型。传统的开放式系统互连参考模型(OSI/RS), 是一种通信协议的 7 层抽象的参考模型。 这 7 层是:物理层、数据链路层、网路层、传输层、 会话层、表示层和应用层。其中每一层执行某一特定任务。而 TCP/IP 通讯协议采用了 4 层 结构,每一层都利用它的下一层所提供的接口来完成自己的需求。 2.1.1 TCP/IP 协议分层 网络协议通常分不同层次进行开发,每一层分别负责不同的通信功能。计算机网络协议 采用层次结构有以下好处: 1. 各层之间是互相独立的。 2. 灵活性好。 3. 由于结构上分割开,各层可以采用各自最合适的技术来实现。 4. 易于实现和维护。 5. 能促使标准化工作。 图 2-1 和图 2-2 为 TCP/IP 协议族的四个层次,以及各层上的协议类型。 7 应用层(Telnet, FTP 和 SMTP) 传输层(TCP 和 UDP) 网络层(IP,ICMP 和 IGMP) 链路层(设备驱动程序及接口) 图 2-1 TCP/IP 协议族的四个层次 ApplicationApplicationApplication TCPUDP ICMPIGMPIP ARP 硬件接口 RARP 物理媒介 应用层 传输层 网路层 链路层 图 2-2 TCP/IP 协议族中不同层次的协议 8 ( 1 )链路层:有时也称作数据链路层或网络接口层,通常包括操作系统中的设备驱动程序 和计算机中对应的网络接口卡。它们一起处理与电缆(或其他任何传输媒介)的物理接口细节。 ( 2 )网络层:有时也称作互联网层,处理分组在网络中的活动,例如分组的选路。在 TCP/IP 协议族中,网络层协议包括 IF 协议(网际协议),ICMP 协议(Internet 控制报文协议), 以及 IGMP 协议(Internet 组管理协议)。 ( 3 )传输层:主要为两台主机上的应用程序提供端到端的通信。在 TCP/IP 协议族中,有 两个互不相同的传输协议:TCP(传输控制协议)和 UDP(用户数据报协议)。TCP 为两台主机提 供高可靠性的数据通信。它所做的工作包括把应用程序交给它的数据分成合适的小块交给下 面的网络层,确认接收到的分组,设置发送最后确认分组的超时时钟等。由于运输层提供了 高可靠性的端到端的通信,因此应用层可以忽略所有这些细节。而另一方面,UDP 则为应 用层提供一种非常简单的服务。它只是把称作数据报的分组从一台主机发送到另一台主机, 但并不保证该数据报能到达另一端。任何必需的可靠性必须由应用层来提供。这两种运输层 协议分别在不同的应用程序中有不同的用途。 ( 4 )应用层负责处理特定的应用程序细节。几乎各种不同的 TCP/IP 实现都会提供下面 这些通用的应用程序: Telnet 远程登录。 FTP 文件传输协议。 SMTP 简单邮件传送协议。 SNMP 简单网络管理协议。 2.1.2 TCP 协议与 TCP 连接的建立 计算机需要安装 TCP 协议来提供可靠的、面向连接的通信服务。TCP 协议被称作一种 端对端协议。每一条 TCP 连接有两个端点。TCP 连接的端点不是主机,不是主机的 IP 地 址,不是应用进程,也不是运输层的协议端口。TCP 连接的端点叫做套接字(socket)。端口 号拼接到(concatenated with) IP 地址即构成了套接字。当一台计算机需要与另一台远程计算 机连接时,TCP 协议会让它们建立一个连接、发送和接收数据以及终止连接。TCP 协议利 用超时重传技术和拥塞控制机制,向应用程序提供可靠的通信连接。TCP 数据包包括一个 TCP 首部和数据部分,TCP 数据报首部格式如图 2-3 所示。 9 图 2-3 TCP 数据报首部格式 一个 TCP 头包含 6 个标志位,它们的意义分别为: SYN:让连接双方同步序列号。 FIN:FIN=1 时,表示发送端己经没有数据要求传输了,希望释放连接。 RST:用来复位一个连接。 URG:为紧急数据标志。 ACK:为确认标志位。 PSH:如果置位,接收方应尽快把数据传送给应用进程。 TCP 是一个面向连接的可靠传输协议,面向连接表示两个应用端在利用 TCP 传送数据 前必须先建立 TCP 连接。连接建立的过程(通常称作三次握手)可用图 2-4 来表示。 主机 1 主机 2 SYN SYN/ACK ACK 图 2-4 TCP 连接过程 源端口目的端口 序号 确认号 4 位数据 偏移 6 位保留URG ACK PSH RST SYN FIN 窗口 校验和紧急指针 选项(长度可变)填充 10 2.2 windows socket 简介简介 2.2.1 基本概念 TCP/IP 网络通信协议是 Internet 的基础协议。Internet 是在 UNIX 上发展起来的,在 UNIX 上有很多成熟的编程接口,其中最通用的就是 Socket 接口。在 20 世纪 80 年代初,美 国政府的高级研究工程机构为加州大学 Berkeley 分校提供资金,委托其在 UNIX 操作系统下 实现通信协议 TCP/IP 的开发接口。他们的工作成果就是 Socket,一般将其称为“套接字” 。 为了适应 Windows 下的 TCP/IP 通信组件的开发,人们开发了一套类似于 UNIX 下 Socket 的 编程接口,称为 Windows Socket 或称 Winsock。 目前,Winsock 己经正式被集成到了 Windows 系统中,同时包括了 16 位和 32 位接口。 而 Winsock 的开发工具也可以在 Borland C+, Visual C+这些 C 编译器中找到,主要由 Winsock.h 头文件和动态链接库 winsock.dll 组成,目前最新的版本是 Winsock 2.2. 利用 Socket 进行通信,有两种主要方式: 第一种是面向连接的流方式。顾名思义,在这种方式下,两个通信的应用程序之间先建 立一种连接链路。一台计算机要想和另一台计算机进行数据传输,必须首先获得一条链路, 数据才能被正确接收和发送。这种方式大多采用 TCP 协议。 第二种叫做无连接的数据报文方式,这时两台计算机好像把数据放在信封里,通过网络 寄给对方,信在传送的过程中有可能会残缺不全,而且后发出的信也可能先收到,它对应的 是 UDP 协议。流方式的特点是通信可靠,对数据有校验和重发机制,通常用来做数据文件 传输如 FTP, Telnet 等;数据报文方式由于取消了重发校验机制,能够达到较高的通信速率, 可以用于对数据可靠性要求不高的通信,如实时语音、语音传送和广播消息等。 Windows Socket 规范提供给应用程序开发者一套简单的 API.让各家网络软件供应商共 同遵守。此外,在一个特定版本 Windows 的基础上,Windows Socket 也定义了一个二进制 接口(ABI),以此来保证应用 Windows Socket API 的应用程序能够在任何网络软件供应商的 符合 Windows Socket 协议的实现上工作。因此这份规范定义了应用程序开发者能够使用, 并且网络软件供应商能够实现的一套库函数调用和相关语义。遵守这套 Windows Socket 规 范的网络软件,我们称之为 Windows Socket 兼容的。一个网络软件供应商必须百分之百地 实现 Windows Socket 规范才能做到与 Windows Socket 兼容。任何能够与 Windows Socket 兼 容实现协同工作的应用程序就被认为是具有 Windows Socket 接口。我们称这种应用程序为 Windows Socket 应用程序。 Windows Socket 规范定义并记录了如何使用 API 与 Internet 协议族(IPS,通常我们指的 11 是 TCP/IP)连接,尤其要指出的是所有的 Windows Socket 实现都支持流套接字和数据报套接 字。应用程序调用 Windows Socket 的 API 实现相互之间的通讯。Windows Socket 又利用下 层的网络通讯协议功能和操作系统调用实现实际的通讯工作。它们之间的关系如图 2-5 所示。 应用程序 1应用程序 2 网络编程界面,如 Windows Socket 网络通讯协议服务界面,如 TCP/IP 协议 操作系统,如 windows 物理通讯介质 图 2-5 应用程序与 windows socket 的关系 2.2.2 Winsock 的编程特点 在网络通信中,由于网络拥挤或一次发送的数据量过大等原因,经常会发生交换的数据 在短时间内不能传送完,收发数据的函数因此不能及时返回的现象,这种现象叫阻塞。 Winsock 对有可能阻塞的函数提供了两种处理方式阻塞和非阻塞方式。 在阻塞方式下,收发数据的函数在被调用后一直要到传送完毕或者出错才能返回;当网 络操作传送完成后,由 Winsock 给应用程序发送一个信息,通知操作完成,此时可以根据发 送的消息传出的参数判断操作是否正常。比如你调用 send 函数发送一定的数据,在系统内部 send 做的工作其实只是把数据传输到 TCP/IP 协议栈的输出缓冲区。它执行成功并不代表数 据已经成功的发送出去了,如果 TCP/IP 协议栈没有足够的可用缓冲区来保存你传过来的数据 的话,对于阻塞模式的 socket send 函数将不返回,直到系统缓冲区有足够的空间把你要发送 的数据 Copy 过去以后才返回。 12 在非阻塞方式下,如果不能立刻得到结果,该函数不会阻塞当前线程,而会立刻返回。 例如,在上面提到的例子里,send 会立即返回错误代码:WSAEWOULDDBLOCK。 我们应尽量使用非阻塞方式,因为在阻塞方式下,用户可能会因为长时间的等待而失去 耐心而关闭应用程序的主窗口,这样进行网络操作的函数从 Winsock 的动态链接库中返回时, 主程序己经中内存中删除,可能会造成内存的异常。 2.2.3 Winsock 2.0 常用的函数 Winsock 在常见的 Windows 平台上有两个主要的版本,即 Winsock1 和 Winsock2。从 Windows 95、WinNT4 开始,系统就内置了 Winsock1.1,后来到了 Windows98 之后,它内置的 Winsock DLL 更新为 Winsock2.2。Winsock2.2 对 Socket 进行了很多扩充与改进,包括名字解 析、异步处理等。本文在最后调用 Winsock 2.2 实现了一个多线程 TCP 全连接扫描程序。W insock2 向下兼容以前的版本 Winsock1,这使得以前的程序在 Winsock2 情况下能够继续使 用,提高了程序的重复使用效率。 Windows Socket 以 DLL 形式提供,为了完成一系列初始化操作,每一个使用 Windows Socket 的应用程序都必须利用 WSAStartup( )函数载入 Winsock DLL,如果载入失败,WSA Startup( )将返回 SOCKET_ERROR,这个错误就是 WSANOTINITIALISED。每一个使用 Wi ndows Socket 的应用程序都必须进行 WSAStartup( )函数调用,并只有在成功地完成调用之 后才能使用 Socket。另外,还有一个函数叫 WSACleanup( ),在程序结束时,调用了多少次 WSAStartup( ),就应相应的调用多少次的 WSACleanup( ),以保证 Winsock DLL 从内存中 被卸载。创建一个 Socket 的函数原型为 SOCKET socket( int af, int type, int protocol ),而 bind( )则创建 Socket 指定的通信对象。在通信结束时,通过 closesocket( )关闭 socket。 13 第第 3 章章 当前端口扫描技术分析当前端口扫描技术分析 3.1 端口扫描原理端口扫描原理 3.1.1 端口简介 在由 TCP/IP 协议实现的互联网络中,两台主机间通信可以通过 IP 地址来相互识别。但 是,现在的计算机系统是多任务(进程)的,而真正在通信的实际上是存在于两台主机上的 两个进程。这就需要一个标识来区分收发数据的进程。端口机制的引入就解决了不同主机的 进程间的相互识别。 端口按端口号可分为 3 大类: 1.熟知端口(well-know port):从 0 到 1023,由 IANA(Internet Assigned Numbers Authority,因特网赋号管理局)分配。它们紧密绑定( binding)于一些服务。例如: 80 端 口

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论