一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种快速主机开放TCP端口识别的方法与流程

2022-07-16 11:22:39 来源:中国专利 TAG:

一种快速主机开放tcp端口识别的方法
技术领域
1.本发明涉及端口识别领域,具体涉及一种快速主机开放tcp端口识别的方法。


背景技术:

2.tcp端口就是为tcp协议通信提供服务的端口。tcp(transmission control protocol),tcp是一种面向连接(连接导向)的、可靠的、基于字节流的运输层(transport layer)通信协议,由ietf的rfc 793说明(specified)。在计算机网络osi模型中,它完成第四层传输层所指定的功能。我们的电脑与网络连接的许多应用都是通过tcp端口所实现的;
3.在进行tcp端口识别的过程中,即需要使用到tcp端口识别的方法。
4.现有的tcp端口识别方法,通过socket的connect方式,等待三次握手完全完成,才能够判断端口是否开放,等待时间长,效率低下,给tcp端口识别方法的使用带来了一定的影响,因此,提出一种快速主机开放tcp端口识别的方法。


技术实现要素:

5.本发明所要解决的技术问题在于:如何解决现有的tcp端口识别方法,通过socket的connect方式,等待三次握手完全完成,才能够判断端口是否开放,等待时间长,效率低下,给tcp端口识别方法的使用带来了一定的影响问题,提供了一种快速主机开放tcp端口识别的方法。
6.本发明是通过以下技术方案解决上述技术问题的,本发明一种快速主机开放tcp端口识别的方法,其特征在于,包括以下步骤:
7.步骤一:进行数据预处理,处理输入参数,动态申请内存存储数据结构,并且预置随机源端口数据,然后创建接收线程通道,开始接收数据;
8.步骤二:获取有效端口服务列表对有效端口服务列表进行处理得到报文,
9.步骤三:通过发送线程将步骤二中获取到的报文发送出;
10.步骤四:通过接收线程进行报文数据的接收和解析,接解析后的数据发送给网卡,然后通过网络到达目标主机,然后获取到应答结果确定开放端口。
11.进一步在于,所述发送线程进行报文发送的具体过程如下:先封装出ip报文头部,其中源ip地址和目的ip地址需手动填充,然后封装tcp报文头部,填充事先预置好的源端口随机数据,并且设置目的端口数据,然后将syn数据位置,表示其为tcp-syn握手请求报文,其他数据部分按照常规填充,最后生成完整为tcp-syn握手数据报文,并通过套接字发送至本机网卡。
12.进一步在于,所述ip报文头部中的ip地址与发送的请求报文ip头部相反,即表示由被测主机发送回,所述步源目的端口与发送的tcp头部数据相反,即表示返回的应答。
13.进一步在于,所述接收线程的接收模式采用select模式,数据经过内核之后,触发socket的select响应,再进行解析判断,并且通过超时时间配置,灵活掌握等待时间。
14.进一步在于,所述步骤二中的报文获取方式如下:发送线程通过将有效的端口服
务列表中的端口号,依次封装出对应的tcp-syn,即得到报文。
15.进一步在于,所述发送线程发送报文的过程如下:将获取到的报文通过套接字的方法,依次直接发送给网卡,然后通过网络到达目标主机
16.进一步在于,所述接收线程进行数据的接收和解析的具体过程如下:一旦被测主机某个端口做出响应,接收线程会接收到应答报文,其中的ip头部中的ip地址与发送的请求报文ip头部相反,然后源目的端口也与发送的tcp头部数据相反,再根据三次握手规则,其中的ack与syn标志位均为1,即过滤出了准确的应答,确定了开放的端口。
17.本发明相比现有技术具有以下优点:该快速主机开放tcp端口识别的方法,通过快速构建tcp握手请求探测报文,双通道收发分离的方式,进行报文的快速发送与处理分析,从而能够在极短的时间内,探测出主机的tcp端口开放情况,并记录下来,从而保证端口识别准确率和端口识别速度,让该方法更加值得推广使用。
附图说明
18.图1是本发明的流程图;
19.图2是本发明的发送线程流程图。
具体实施方式
20.下面对本发明的实施例作详细说明,本实施例在以本发明技术方案为前提下进行实施,给出了详细的实施方式和具体的操作过程,但本发明的保护范围不限于下述的实施例。
21.如图1和2所示,本实施例提供一种技术方案:一种快速主机开放tcp端口识别的方法,包括以下步骤:
22.步骤一:进行数据预处理,处理输入参数,动态申请内存存储数据结构,并且预置随机源端口数据,然后创建接收线程通道,开始接收数据;
23.通过缓存可以加快后续数据读取速度,并且先开启接收线程,不会造成数据丢失;
24.步骤二:通过发送线程进行报文发送,通过接收线程进行数据的接收和解析;
25.步骤三:发送线程通过将有效的端口服务列表中的端口号,依次封装出对应的tcp-syn,手动构造出数据包,通过套接字的方法,再依次直接发送给网卡,然后通过网络到达目标主机;
26.所述发送线程进行报文发送的具体过程如下:首先需要封装出ip报文头部,其中源ip地址和目的ip地址,我们需要手动填充;然后封装tcp报文头部,tcp报文头部如下,这里需要填充事先预置好的源端口随机数据,并且设置目的端口数据(范围为0~65535),然后将syn数据位置,表示其为tcp-syn握手请求报文,其他数据部分按照常规填充;最后计算各部分校验和,生成完整的握手数据报文,并通过套接字发送至本机网卡;最终通过循环操作,实现向被探测ip地址的全部端口,以最大速度发送tcp-syn握手探测报文;
27.发送线程采用套接字配合封装tcp-syn包技术,发送速度快,通过将有效的端口服务列表中的端口号,依次封装出对应的tcp-syn,手动构造出数据包,通过套接字的方法,再依次直接发送给网卡,然后通过网络到达目标主机,能够在0.04秒内发送6400余个探测报文,向被探测ip地址的全部端口,以最大速度发送tcp-syn握手探测报文;
28.发送线程向被探测ip地址的全部端口,以最大速度发送tcp-syn握手探测报文;
29.步骤四:接收线程进行数据的接收和解析的具体过程如下:一旦被测主机某个端口做出响应,接收线程会接收到应答报文,应答报文中的ip头部中的ip地址与发送的请求报文ip头部相反,表示由被测主机发送回来的,然后源目的端口也与发送的tcp头部数据相反,表示返回的应答,再根据三次握手规则,其中的ack与syn标志位均为1,即过滤出了准确的应答,确定了开放的端口。
30.所述接收线程的接收模式采用select模式,数据经过内核之后,触发socket的select响应,再进行解析判断,并且通过超时时间配置,灵活掌握等待时间;
31.统一分析响应来源,判断主机是否在线,接收socket只绑定检测来源ip及是否是tcp协议,然后分析判断是否为syn-ack响应,最后进行处理;接收线程过滤tcp握手应答,明确响应主机端口;
32.通过快速构建tcp握手请求探测报文,双通道收发分离的方式,进行报文的快速发送与处理分析,从而能够在极短的时间内,探测出主机的tcp端口开放情况,并记录下来。
33.本发明的整体工作过程:
34.工作过程:1.预处理过程处理输入参数,动态申请内存存储数据结构,并且预置随机源端口数据。然后创建接收线程通道,开始接收数据。
35.作用:通过缓存可以加快后续数据读取速度,并且先开启接收线程,不会造成数据丢失。
36.2.数据发送的ip报文结构如下:
[0037][0038]
首先需要封装出ip报文头部,其中源ip地址和目的ip地址,我们需要手动填充,然后封装tcp报文头部,tcp报文头部如下:
[0039][0040]
这里需要填充事先预置好的源端口随机数据,并且设置目的端口数据(范围为0~65535),然后将syn数据位置,表示其为tcp-syn握手请求报文。
[0041]
其他数据部分按照常规填充,最后生成完整的握手数据报文,并通过套接字发送至本机网卡。
[0042]
作用:向被探测ip地址的全部端口,以最大速度发送tcp-syn握手探测报文。
[0043]
3.数据接收处理,一旦被测主机某个端口做出响应,接收线程会接收到应答报文。
[0044]
其中的ip头部中的ip地址与我们发送的请求报文ip头部正好相反,表示由被测主机发送回来的;然后源目的端口也与我们发送的tcp头部数据相反,表示返回的应答;再根据三次握手规则,其中的ack与syn标志位均为1;这样我们就过滤出了准确的应答,确定了开放的端口。
[0045]
作用:过滤tcp握手应答,明确响应主机端口。
[0046]
整体效果,通过缓存可以加快读取速度,并且预置数据可以避免了发送时候再进行运算,极大得提高了发送效率,经过测算,能够在0.04秒内发送6400余个端口探测报文;并且由于双通道的存在,接收处理同步进行,能在极短时间内列出主机的开放端口。
[0047]
此外,术语“第一”、“第二”仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括至少一个该特征。在本发明的描述中,“多个”的含义是至少两个,例如两个,三个等,除非另有明确具体的限定。
[0048]
在本说明书的描述中,参考术语“一个实施例”、“一些实施例”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本发明的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不必须针对的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任一个或多个实施例或示例中以合适的方式结合。此外,在不相互矛盾的情况下,本领域的技术人员可以将本说明书中描述的不同实施例或示例以及不同实施例或示例的特征进行结合和组合。
[0049]
尽管上面已经示出和描述了本发明的实施例,可以理解的是,上述实施例是示例性的,不能理解为对本发明的限制,本领域的普通技术人员在本发明的范围内可以对上述实施例进行变化、修改、替换和变型。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献