端口分配方法、装置和电子设备与流程
未命名
10-10
阅读:190
评论:0
1.本发明涉及数据处理技术领域,尤其是涉及一种端口分配方法、装置和电子设备。
背景技术:
2.nat(network address translation,网络地址转换)网关的ip(internet protocol address,互联网协议地址)及port(可称为端口)分配是nat网关的核心也是最基本的功能,如何保证最高效率的分配ip和port的组合,是nat网关性能及用户体验的关键。公有云主流分配方案通常是客户购买一定数量的公网ip,每个公网ip对应有多个port,nat网关根据内网访问不同的业务分配不同的ip+port组合。
3.相关技术中,在分配ip和port时,将从第一个ip的第一端口开始,依次分配请求,第一个ip的所有端口均分配完成后,再从第二个ip的第一端口开始分配,直到最后一个ip的最后一个端口分配完成,再回到第一个ip的第一端口进行分配。在去往同一服务的并发请求较多,且请求多为tcp(transmission control protocol,传输控制协议)长连接时,端口资源很快就会被耗尽,则在分配端口时容易出现端口阻塞现象。出现端口阻塞现象后会连续向下顺延四次端口,如果依然没有空闲端口,则请求转发失败,此时,即时顺延四次后对应的端口的后续端口有空闲,也不会得到分配,从而导致分配效率较低,且用户体验较差。
技术实现要素:
4.本发明的目的在于提供一种端口分配方法、装置和电子设备,以提高端口分配效率,并提升用户体验。
5.第一方面,本发明提供了一种端口分配方法,该方法应用于指定网关,该指定网关包含有多个ip,每个ip对应有多个端口;该方法包括:接收第一访问请求,检测当前ip的第一端口是否被占用;其中,第一端口包括:当前ip对应的上一次被分配的端口的下一个端口;如果第一端口未被占用,将第一访问请求分配给第一端口;当接收到第二访问请求时,检测当前ip的下一个ip的第二端口是否被占用,以分配第二访问请求;如果第一端口被占用,检测当前ip对应的第一端口的下一个端口是否被占用;如果第一端口的下一个端口未被占用,将第一访问请求分配给第一端口的下一个端口。
6.在可选的实施方式中,上述方法还包括:如果第一端口的下一个端口被占用,依次检测第一端口的下一个端口之后的指定数量的端口是否被占用;如果有未被占用的端口,将第一访问请求分配给未被占用的端口;如果指定数量的端口均被占用,确定第一访问请求转发失败。
7.在可选的实施方式中,上述方法还包括:检测第一端口的下一个端口的下一个端口是否被占用;如果第一端口的下一个端口的下一个端口未被占用,将第一访问请求分配给第一端口的下一个端口的下一个端口;如果第一端口的下一个端口的下一个端口被占用,判断检测次数是否达到预设阈值,如果达到,确定第一访问请求转发失败;如果未达到,
将第一端口的下一个端口的下一个端口的下一个端口确定为新的第一端口的下一个端口的下一个端口,继续执行检测第一端口的下一个端口的下一个端口是否被占用的步骤。
8.在可选的实施方式中,上述当接收到第二访问请求时,检测当前ip的下一个ip的第二端口是否被占用,以分配第二访问请求的步骤,包括:当接收到第二访问请求时,将第二访问请求确定为新的第一访问请求,将当前ip的下一个ip的第二端口确定为新的当前ip的第一端口,继续执行接收第一访问请求,检测当前ip的第一端口是否被占用的步骤,以为第二访问请求分配端口;其中,第二端口包括:当前ip的下一个ip对应的上一次被分配的端口的下一个端口。
9.在可选的实施方式中,上述当接收到第二访问请求时,检测当前ip的下一个ip的第二端口是否被占用,以分配第二访问请求的步骤之后,该方法包括:如果接收到第三访问请求,检测当前ip的下一个ip的下一个ip的第三端口是否被占用,以分配第三访问请求;其中,指定网关包含的多个ip中,第一个ip作为最后一个ip的下一个ip;第三端口包括:当前ip的下一个ip的下一个ip对应的上一次被分配的端口的下一个端口。
10.在可选的实施方式中,上述指定网关包括nat网关。
11.在可选的实施方式中,上述当接收到第二访问请求时,检测当前ip的下一个ip的第二端口是否被占用,以分配第二访问请求的步骤之后,上述方法还包括:如果第二访问请求转发完成,释放第二访问请求占用的端口。
12.第二方面,本发明提供了一种端口分配装置,该装置设置于指定网关,该指定网关包含有多个ip,每个ip对应有多个端口;该装置包括:请求接收模块,用于接收第一访问请求,检测当前ip的第一端口是否被占用;其中,第一端口包括:当前ip对应的上一次被分配的端口的下一个端口;请求分配模块,用于如果第一端口未被占用,将第一访问请求分配给第一端口;当接收到第二访问请求时,检测当前ip的下一个ip的第二端口是否被占用,以分配第二访问请求;端口检测模块,用于如果第一端口被占用,检测当前ip对应的第一端口的下一个端口是否被占用;如果第一端口的下一个端口未被占用,将第一访问请求分配给第一端口的下一个端口。
13.第三方面,本发明提供了一种电子设备,该电子设备包括处理器和存储器,该存储器存储有能够被处理器执行的机器可执行指令,该处理器执行机器可执行指令以实现上述端口分配方法。
14.第四方面,本发明提供了一种机器可读存储介质,该机器可读存储介质存储有机器可执行指令,该机器可执行指令在被处理器调用和执行时,该机器可执行指令促使处理器实现上述端口分配方法。
15.本发明实施例带来了以下有益效果:
16.本发明提供的一种端口分配方法、装置和电子设备,该方法应用于指定网关,该指定网关包含有多个ip,每个ip对应有多个端口;首先接收第一访问请求,检测当前ip的第一端口是否被占用;如果第一端口未被占用,将第一访问请求分配给第一端口;当接收到第二访问请求时,检测当前ip的下一个ip的第二端口是否被占用,以分配第二访问请求;如果第一端口被占用,检测当前ip对应的第一端口的下一个端口是否被占用;如果第一端口的下一个端口未被占用,将第一访问请求分配给第一端口的下一个端口。该方式在分配端口时,查找可用端口的流程是变化的,先依次在各ip之间轮询查找可用端口,当端口被占用时,从
被占用的端口对应的ip下的端口中查找可用端口,该方式有效提高了端口分配效率,降低了端口的冲突率,也降低了请求转发失败率,从而提升了用户体验。
17.本发明的其他特征和优点将在随后的说明书中阐述,或者,部分特征和优点可以从说明书推知或毫无疑义地确定,或者通过实施本发明的上述技术即可得知。
18.为使本发明的上述目的、特征和优点能更明显易懂,下文特举较佳实施方式,并配合所附附图,作详细说明如下。
附图说明
19.为了更清楚地说明本发明具体实施方式或现有技术中的技术方案,下面将对具体实施方式或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施方式,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
20.图1为相关技术中提供的一种ip和port组合的分配示意图;
21.图2为相关技术中提供的ip和端口组合的分配示意图;
22.图3为本发明实施例提供的一种端口分配方法的流程图;
23.图4为本发明实施例提供的另一种端口分配方法的流程图;
24.图5为本发明实施例提供的一种端口分配示意图;
25.图6为本发明实施例提供的一种端口分配装置的结构示意图;
26.图7为本发明实施例提供的一种电子设备的结构示意图。
具体实施方式
27.为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。通常在此处附图中描述和示出的本发明实施例的组件可以以各种不同的配置来布置和设计。
28.因此,以下对在附图中提供的本发明的实施例的详细描述并非旨在限制要求保护的本发明的范围,而是仅仅表示本发明的选定实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
29.nat网关的ip及port分配是nat网关的核心,也是最基本的功能,如何保证最高效率的分配ip和port的组合是nat网关性能及用户体验的关键。公有云主流分配方案通常是客户购买一定数量的公网ip,每个公网ip对应有多个port,nat网关可根据内网访问不同的业务分配不同的ip+port组合(也可称为natip+natport组合),主要处理流程如下:
30.1、对每个新连接建立动态会话,保存nat转换前后的五元组信息。这里的五元组信息包括源ip地址、源端口、目的ip地址(简称dip)、目的端口(简称dprot)和传输协议。
31.2、保证snat(可以称为源地址)转换要做到1:1映射,即不同连接经nat转换后的五元组信息不能相同,否则公网应答报文回到nat时,查找会话出现1:n个映射组合。
32.假设nat网关有三个ip,且内网客户端(称为client)高并发访问同一web服务器(相当于图1中的web server),那nat网关会收到很多访问同一个目的ip、prot的请求,当内
网qps(query per second,每秒查询率)较大而大多又都是访问同一服务时(dip+dport固定),为保证nat转换前后的1:1特性,则只有保证natip+natport组合不重复对于每个query(相当于访问请求),如图1所示为相关技术中提供的一种ip和port组合的分配示意图。
33.图1中的内网query有四个请求,请求的源ip地址和源端口分配为:ip地址1.1.1.1和端口1024、ip地址1.1.1.1和端口1025、ip地址1.1.1.1和端口1026,以及ip地址1.1.1.2和端口1024。nat网关对应的有三个ip分别为10.1.2.1、10.1.2.2和10.1.2.3,每个请求对应的nat网关中的ip和prot的组合分别为:ip地址10.1.2.1和端口2048、ip地址10.1.2.2和端口2048、ip地址10.1.2.3和端口2048,以及ip地址10.1.2.1和端口2049。
34.相关技术中,假设nat网关对应的有三个ip分别为ip1(10.1.2.1)、ip2(10.1.2.2)和ip3(10.1.2.3),每个ip对应有多个端口;在分配ip和port时,第一个请求分配ip1的第一个端口1024,第二个请求分配ip1的第二个端口1025,依此类推,当一个ip1的最后一个可用端口65535也分配出去后,再跳到ip2继续分配,等ip3的最后一个端口65535分配出去后,再回到ip1的第一个端口,依次反复;如图2所示的ip和端口组合的分配示意图,会以一个纵向列跳动的规律依次取出一对natip+port的可用组合,做snat转换。
35.相关技术中,在去往同一服务的并发请求较多,且请求多为tcp长连接(长连接占用端口时间较长)时,natip+natport的组合资源很快就会被耗尽,造成“端口回卷”的现象,也可称为端口冲突。但如果老的连接的释放速率大于新连接的请求速率(短连接的数量大于长连接,短连接每得到一次释放,nat释放出一对natip+port资源组合),则理论上nat端口资源就会像一个蓄水池一样,注水的速率大于出水,从而达到一个动态平衡且有盈余的状态,不会有端口冲突的问题,但由于实际分配中如果某些连续分配的长连接一直得不到释放,而natip+natport的选择算法绕行一周再次回到此位置时,则会造成端口阻塞的现象。此时,如果还是按照相关技术中提供的分配方式,则会导致连续查找到仍然在用的natip+port组合,而程序又不能一直无限制的试错,目前nat默认设置是连续查找3次,找不到有效的natip+port组合则nat转发失败,但其实此场景下,如图2所示只要跳过灰色部分的端口,仍然能分配到可用的natip+port组合。
36.相关技术中试图增加natip的数量也无法缓解此问题,因为是每个natip纵向分配端口,用完一个再切到下一natip,那么如果某一natip的端口阻塞了,那后续natip的端口都得不到分配,导致用户体验极差。
37.基于上述问题,本发明实施例提供了一种端口分配方法、装置和电子设备,该技术可以应用于nat网关的请求转发场景中,尤其是nat网关的ip和端口分配场景中。为便于对本实施例进行理解,首先对本发明实施例所公开的一种端口分配方法进行详细介绍;该方法应用于指定网关,该指定网关包含有多个ip(也可称为natip),每个ip对应有多个端口;如图3所示,该方法包括如下具体步骤:
38.步骤s302,接收第一访问请求,检测当前ip的第一端口是否被占用;如果第一端口被占用,执行步骤s304;如果第一端口未被占用,执行步骤s306。
39.在具体实现时,上述指定网关可以是nat网关或者其他可以转发请求的网关,该指定网关包含有多个ip,该ip的数量可以根据用户需求确定,每个ip均对应有多个端口,例如,一个ip对应的多个端口的序号可以从1024到65535。上述第一访问请求可以是客户端发送的任一访问请求,该客户端可以是移动终端(手机、平板电脑等)或者电脑端等。上述当前
ip为上一个请求分配完成后对应的ip的下一个ip。上述当前ip的第一端口可以为当前ip对应的上一次被分配的端口的下一个端口,例如,当前ip中上次被分配的端口为1024,那么当前ip的第一端口为1025。
40.在实际应用中,可以将多个ip中的第二个ip作为第一个ip的下一个ip,将第三个ip作为第二个ip的下一个ip,依次类推,最后将第一个ip作为最后一个ip的下一个ip。
41.步骤s304,检测当前ip对应的第一端口的下一个端口是否被占用;如果第一端口的下一个端口未被占用,将第一访问请求分配给第一端口的下一个端口。
42.在当前ip对应的第一端口被占用时,需要检测当前ip下的第一端口的下一个端口是否被占用,如果当前ip下的第一端口的下一个端口未被占用,将第一访问请求分配给第一端口的下一个端口;如果当前ip下的第一端口的下一个端口被占用,则需要继续检测当前ip下的第一端口的下一个端口的下一个端口是否被占用,如果在指定检测次数内检测到位被占用的端口,将第一访问请求分配给这个未被占用的接口,如果到指定检测次数,还未找到未被占用的端口,则会返回请求转发失败的消息。
43.在具体实现时,如果检测到当前ip对应的第一端口被占用,会继续检测当前ip下的第一端口之后的端口是否被占用,直到在当前ip下的端口中找到未被占用的端口或者达到指定检测次数返回转发失败的消息。
44.步骤s306,将第一访问请求分配给第一端口;执行步骤s308。
45.步骤s308,当接收到第二访问请求时,检测当前ip的下一个ip的第二端口是否被占用,以分配第二访问请求。
46.在当前ip的第一端口空闲时,将第一访问请求分配给第一端口,并继续监听是否有新的访问请求发送至指定网关,如果有,将该新的请求确定为第二访问请求,并为该第二访问请求分配端口。在分配端口时,需要检测当前ip的下一个ip的第二端口是否被占用,如果未被占用,将第二访问请求分配给第二端口;如果被占用,则检测当前ip的下一个ip中第二端口的下一个端口是否被占用,以寻找到空闲端口来分配第二访问请求。其中,第二端口为当前ip的下一个ip对应的上一次被分配的端口的下一个端口。
47.在具体实现时,上述第二访问请求可以是第一访问请求被分配完成后的接收到的访问请求,在为第二访问请求分配端口时,可以将步骤s302中的第一访问请求看作是第二访问请求,将当前ip的第一端口换为当前ip的下一个ip的第二端口,继续步骤s302-s306为第二访问请求分配端口。
48.该第二访问请求被分配完成后,nat接收到的新的访问请求还可以作为新的第二访问请求,但此时新的第二访问请求在被分配端口时,可以将上一个第二访问请求看成是第一访问请求,以通过步骤s308为新的第二访问请求分配端口。
49.在实际应用中,当访问请求被分配到端口后,在此接收到访问请求后,会从上一个访问请求被分配的ip的下一个ip开始分配端口;如果在分配端口的过程中,遇到端口被占用的情况,会检测到当前ip的被占用的端口的下一个端口是否空闲,也可以理解为在端口被占用时,会从当前ip下的端口中寻找空闲端口,来完成端口分配。
50.该方式在为连续的多个长连接分配端口时,可以横向跨越多个ip,以分配到多个ip对应的端口,此时如果长连接长时间占用端口的情况下,占用的是横向分配的端口,此时,如果为新请求分配端口时,遇到端口被占用时,可以换纵向跳跃(也即是从被占用的端
口对应的ip下的端口依次查找是否存在空闲端口),从而可很快的跳跃过这个阻塞区域。但是相关技术中的方案,一直都是纵向分配端口,跳过阻塞区域需要跨越的端口较多,难以跳跃,很容易出现端口分配失败的现象。
51.本发明实施例提供的一种端口分配方法,首先接收第一访问请求,并检测当前ip的第一端口是否被占用;如果第一端口未被占用,将第一访问请求分配给第一端口;当接收到第二访问请求时,检测当前ip的下一个ip的第二端口是否被占用,以分配第二访问请求;如果第一端口被占用,检测当前ip对应的第一端口的下一个端口是否被占用;如果第一端口的下一个端口未被占用,将第一访问请求分配给第一端口的下一个端口。该方式在分配端口时,查找可用端口的流程是变化的,先依次在各ip之间轮询查找可用端口,当端口被占用时,从被占用的端口对应的ip下的端口中查找可用端口,该方式有效提高了端口分配效率,降低了端口的冲突率,也降低了请求转发失败率,从而提升了用户体验。
52.对应于上述方法实施例,本发明实施例还提供了另一种端口分配方法,该方法在上述方法实施例的基础上实现,该方法重点描述当接收到第二访问请求时,检测当前ip的下一个ip的第二端口是否被占用,以分配第二访问请求的具体过程(通过下述步骤s414-s416实现);如图4所示,该方法包括如下具体步骤:
53.步骤s402,接收第一访问请求,检测当前ip的第一端口是否被占用;如果第一端口未被占用,执行步骤s404;如果第一端口被占用,执行步骤s406。
54.步骤s404,将第一访问请求分配给第一端口;执行步骤s412。
55.步骤s406,检测当前ip对应的第一端口的下一个端口是否被占用;如果未被占用,执行步骤s408,否则,执行步骤s410。
56.步骤s408,将第一访问请求分配给第一端口的下一个端口,执行步骤s412。
57.步骤s410,依次检测第一端口的下一个端口之后的指定数量的端口是否被占用;如果有未被占用的端口,将第一访问请求分配给未被占用的端口;如果指定数量的端口均被占用,确定第一访问请求转发失败。
58.上述指定数量可以根据研发需求设定,例如,可以设置为两个或者三个等,设置检测的指定数量可以有效避免无限制的查找的资源浪费问题,也可以理解为避免网关中是真的没有可用端口,而导致端口一直被占用的情况。在具体实现时,在依次检测第一端口的下一个端口之后的指定数量的端口是否被占用的过程,当检测待有未被占用的端口时,则将第一访问请求分配给该端口。
59.在实际应用中,上述步骤s410可以通过下述步骤10-13实现:
60.步骤10,检测第一端口的下一个端口的下一个端口是否被占用;如果所述第一端口的下一个端口的下一个端口未被占用,执行步骤11;否则,执行步骤12。
61.步骤11,将第一访问请求分配给第一端口的下一个端口的下一个端口。
62.步骤12,判断检测次数是否达到预设阈值,如果达到,执行步骤13;否则,执行步骤14。
63.上述预设阈值可以根据上述指定数量确定,也即是判断检测菜蔬是否达到预设阈值的步骤,相当于判断检测的端口的数量是否达到指定数量。
64.步骤13,确定第一访问请求转发失败。
65.步骤14,将第一端口的下一个端口的下一个端口的下一个端口确定为新的第一端
口的下一个端口的下一个端口,继续执行检测第一端口的下一个端口的下一个端口是否被占用的步骤。
66.步骤s412,监听是否接收到新的访问请求;如果接收到新的访问请求,执行步骤s414,否则,继续监听(也可以理解为继续执行步骤s412)。
67.步骤s414,将接收到的新的请求确定为第二访问请求。
68.步骤s416,将第二访问请求确定为新的第一访问请求,将当前ip的下一个ip的第二端口确定为新的当前ip的第一端口,执行步骤s402。
69.上述第二端口包括:当前ip的下一个ip对应的上一次被分配的端口的下一个端口。在具体实现时,当第二访问请求被分配了端口之后,如果第二访问请求转发完成,则会释放第二访问请求占用的端口。该第二访问请求可以理解为接收到的任意请求。
70.在实际应用中,在第二访问请求分配了端口之后,如果接收到第三访问请求,检测当前ip的下一个ip的下一个ip的第三端口是否被占用,以分配第三访问请求;其中,指定网关包含的多个ip中,第一个ip作为最后一个ip的下一个ip;该第三端口包括:当前ip的下一个ip的下一个ip对应的上一次被分配的端口的下一个端口。也可以理解为,每次新来访问请求之后,均会依次在个ip之间轮询寻找可用端口。
71.为了便于对本发明实施例进行理解,如图5所示给出了一种端口分配示意图,图5中的nat网关包含有4个ip,分配为ip1(10.1.2.1)、ip2(10.1.2.2)、ip3(10.1.2.3)和ip4(10.1.2.4),每个ip下均有端口序号为1024到65535的端口。每次接收到新连接(相当于新的访问请求)后依次在各ip轮询,找一个可用端口,即可称为“横向跳跃”。例如,nat网关收到第一个访问请求后,分配给ip1(10.1.2.1)+port(1024)组合,nat网关收到第二个访问请求后,分配ip2(10.1.2.2)+popt(1024)组合,以此类推,直到分配到ip4的端口65535,然后再收到新的访问请求后,把新的请求分配给ip1的端口1024。
72.在业务动态连接及释放的过程中,每个ip下的可用空闲端口可能各不相同,如图5所示,某一时刻ip1(10.1.2.1)下的在用端口(相当于被占用的端口)是1026和1027(空闲端口即从在用端口抠除以后的其他端口),而ip2(10,1.2.2)的在用端口是1025和1026。
73.当一些连续的热点连接长时间没有释放的话(图5中的灰色部分对应的端口),将会阻塞“横向跳跃”式查找可用端口,此时,将切换为“纵向跳跃”(相当于仅在某一ip下的端口中则沿端口顺序纵向查找的方式)查找可用端口,从而可高效避免开各ip间横向跳跃分配方式遗留的热点区域,就像在导航中看到道路拥堵的红色路段,提前绕行到其他绿色运行通畅的线路。该方式可有效榨干每个可用端口的使用效率,周而往复,热点区域可能会一直动态的变化,但查找可用ip+prot组合的时间复杂度不会变,从而可提高端口分配效率。
74.上述端口分配方法,该方式当横向查找阻塞后,会继续纵向查找,如此丛横交错式筛选ip和port组合,有效提高了端口查找效率和端口利用率,有效降低了端口的冲突率,减少了网关转换失败的现象,同时也可降低丢包率,从而使得业务经过指定网关后会有更好的体验和更流畅的连接质量。另外,该方式也解决了指定网关在业务高峰期,端口冲突严重,请求转化失败率高,业务包反复重传,下载速率变慢等问题。
75.针对于上述端口分配方法的实施例,本发明实施例提供了一种端口分配装置,该装置设置于指定网关,该指定网关包含有多个ip,每个ip对应有多个端口;如图6所示,该装置包括:
76.请求接收模块70,用于接收第一访问请求,检测当前ip的第一端口是否被占用;其中,第一端口包括:当前ip对应的上一次被分配的端口的下一个端口;
77.请求分配模块71,用于如果第一端口未被占用,将第一访问请求分配给第一端口;当接收到第二访问请求时,检测当前ip的下一个ip的第二端口是否被占用,以分配第二访问请求。
78.端口检测模块72,用于如果第一端口被占用,检测当前ip对应的第一端口的下一个端口是否被占用;如果第一端口的下一个端口未被占用,将第一访问请求分配给第一端口的下一个端口。
79.上述端口分配装置,首先接收第一访问请求,并检测当前ip的第一端口是否被占用;如果第一端口未被占用,将第一访问请求分配给第一端口;当接收到第二访问请求时,检测当前ip的下一个ip的第二端口是否被占用,以分配第二访问请求;如果第一端口被占用,检测当前ip对应的第一端口的下一个端口是否被占用;如果第一端口的下一个端口未被占用,将第一访问请求分配给第一端口的下一个端口。该方式在分配端口时,查找可用端口的流程是变化的,先依次在各ip之间轮询查找可用端口,当端口被占用时,从被占用的端口对应的ip下的端口中查找可用端口,该方式有效提高了端口分配效率,降低了端口的冲突率,也降低了请求转发失败率,从而提升了用户体验。
80.进一步地,上述装置端口检测模块72还用于:如果第一端口的下一个端口被占用,依次检测第一端口的下一个端口之后的指定数量的端口是否被占用;如果有未被占用的端口,将第一访问请求分配给未被占用的端口;如果指定数量的端口均被占用,确定第一访问请求转发失败。
81.在具体实现时,上述端口检测模块72还用于:检测第一端口的下一个端口的下一个端口是否被占用;如果第一端口的下一个端口的下一个端口未被占用,将第一访问请求分配给第一端口的下一个端口的下一个端口;如果第一端口的下一个端口的下一个端口被占用,判断检测次数是否达到预设阈值,如果达到,确定第一访问请求转发失败;如果未达到,将第一端口的下一个端口的下一个端口的下一个端口确定为新的第一端口的下一个端口的下一个端口,继续执行检测第一端口的下一个端口的下一个端口是否被占用的步骤。
82.进一步地,上述请求分配模块71,还用于:当接收到第二访问请求时,将第二访问请求确定为新的第一访问请求,将当前ip的下一个ip的第二端口确定为新的当前ip的第一端口,继续执行接收第一访问请求,检测当前ip的第一端口是否被占用的步骤,以为第二访问请求分配端口;其中,第二端口包括:当前ip的下一个ip对应的上一次被分配的端口的下一个端口。
83.进一步地,上述请求分配模块71,还用于:在当接收到第二访问请求时,检测当前ip的下一个ip的第二端口是否被占用,以分配第二访问请求之后,如果接收到第三访问请求,检测当前ip的下一个ip的下一个ip的第三端口是否被占用,以分配第三访问请求;其中,指定网关包含的多个ip中,第一个ip作为最后一个ip的下一个ip;第三端口包括:当前ip的下一个ip的下一个ip对应的上一次被分配的端口的下一个端口。
84.在具体实现时,上述指定网关包括nat网关。
85.进一步地,上述装置还包括端口释放模块,用于当接收到第二访问请求时,检测当前ip的下一个ip的第二端口是否被占用,以分配第二访问请求之后,如果第二访问请求转
发完成,释放第二访问请求占用的端口。
86.本发明实施例所提供的端口分配装置,其实现原理及产生的技术效果和前述方法实施例相同,为简要描述,装置实施例部分未提及之处,可参考前述方法实施例中相应内容。
87.本发明实施例还提供了一种电子设备,如图7所示,该电子设备包括处理器101和存储器100,该存储器100存储有能够被处理器101执行的机器可执行指令,该处理器101执行机器可执行指令以实现上述端口分配方法。
88.进一步地,图7所示的电子设备还包括总线102和通信接口103,处理器101、通信接口103和存储器100通过总线102连接。
89.其中,存储器100可能包含高速随机存取存储器(ram,random access memory),也可能还包括非不稳定的存储器(non-volatile memory),例如至少一个磁盘存储器。通过至少一个通信接口103(可以是有线或者无线)实现该系统网元与至少一个其他网元之间的通信连接,可以使用互联网,广域网,本地网,城域网等。总线102可以是isa总线、pci总线或eisa总线等。所述总线可以分为地址总线、数据总线、控制总线等。为便于表示,图7中仅用一个双向箭头表示,但并不表示仅有一根总线或一种类型的总线。
90.处理器101可能是一种集成电路芯片,具有信号的处理能力。在实现过程中,上述方法的各步骤可以通过处理器101中的硬件的集成逻辑电路或者软件形式的指令完成。上述的处理器101可以是通用处理器,包括中央处理器(central processing unit,简称cpu)、网络处理器(network processor,简称np)等;还可以是数字信号处理器(digital signal processing,简称dsp)、专用集成电路(application specific integrated circuit,简称asic)、现成可编程门阵列(field-programmable gate array,简称fpga)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。可以实现或者执行本发明实施例中的公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。结合本发明实施例所公开的方法的步骤可以直接体现为硬件译码处理器执行完成,或者用译码处理器中的硬件及软件模块组合执行完成。软件模块可以位于随机存储器,闪存、只读存储器,可编程只读存储器或者电可擦写可编程存储器、寄存器等本领域成熟的存储介质中。该存储介质位于存储器100,处理器101读取存储器100中的信息,结合其硬件完成前述实施例的方法的步骤。
91.本发明实施例还提供了一种机器可读存储介质,该机器可读存储介质存储有机器可执行指令,该机器可执行指令在被处理器调用和执行时,该机器可执行指令促使处理器实现上述端口分配方法,具体实现可参见方法实施例,在此不再赘述。
92.所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(rom,read-only memory)、随机存取存储器(ram,random access memory)、磁碟或者光盘等各种可以存储程序代码的介质。
93.在本发明的描述中,需要说明的是,术语“中心”、“上”、“下”、“左”、“右”、“竖直”、“水平”、“内”、“外”等指示的方位或位置关系为基于附图所示的方位或位置关系,仅是为了便于描述本发明和简化描述,而不是指示或暗示所指的装置或元件必须具有特定的方位、以特定的方位构造和操作,因此不能理解为对本发明的限制。此外,术语“第一”、“第二”、“第三”仅用于描述目的,而不能理解为指示或暗示相对重要性。
94.最后应说明的是:以上所述实施例,仅为本发明的具体实施方式,用以说明本发明的技术方案,而非对其限制,本发明的保护范围并不局限于此,尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,其依然可以对前述实施例所记载的技术方案进行修改或可轻易想到变化,或者对其中部分技术特征进行等同替换;而这些修改、变化或者替换,并不使相应技术方案的本质脱离本发明实施例技术方案的精神和范围,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应所述以权利要求的保护范围为准。
技术特征:
1.一种端口分配方法,其特征在于,所述方法应用于指定网关,所述指定网关包含有多个ip,每个ip对应有多个端口;所述方法包括:接收第一访问请求,检测当前ip的第一端口是否被占用;其中,所述第一端口包括:所述当前ip对应的上一次被分配的端口的下一个端口;如果所述第一端口未被占用,将所述第一访问请求分配给所述第一端口;当接收到第二访问请求时,检测所述当前ip的下一个ip的第二端口是否被占用,以分配所述第二访问请求;如果所述第一端口被占用,检测所述当前ip对应的所述第一端口的下一个端口是否被占用;如果所述第一端口的下一个端口未被占用,将所述第一访问请求分配给所述第一端口的下一个端口。2.根据权利要求1所述的方法,其特征在于,所述方法还包括:如果所述第一端口的下一个端口被占用,依次检测所述第一端口的下一个端口之后的指定数量的端口是否被占用;如果有未被占用的端口,将所述第一访问请求分配给所述未被占用的端口;如果所述指定数量的端口均被占用,确定所述第一访问请求转发失败。3.根据权利要求2所述的方法,其特征在于,所述方法还包括:检测所述第一端口的下一个端口的下一个端口是否被占用;如果所述第一端口的下一个端口的下一个端口未被占用,将所述第一访问请求分配给所述第一端口的下一个端口的下一个端口;如果所述第一端口的下一个端口的下一个端口被占用,判断检测次数是否达到预设阈值,如果达到,确定所述第一访问请求转发失败;如果未达到,将所述第一端口的下一个端口的下一个端口的下一个端口确定为新的所述第一端口的下一个端口的下一个端口,继续执行检测所述第一端口的下一个端口的下一个端口是否被占用的步骤。4.根据权利要求1所述的方法,其特征在于,所述当接收到第二访问请求时,检测所述当前ip的下一个ip的第二端口是否被占用,以分配所述第二访问请求的步骤,包括:当接收到所述第二访问请求时,将所述第二访问请求确定为新的第一访问请求,将所述当前ip的下一个ip的第二端口确定为新的所述当前ip的第一端口,继续执行接收第一访问请求,检测当前ip的第一端口是否被占用的步骤,以为所述第二访问请求分配端口;其中,所述第二端口包括:所述当前ip的下一个ip对应的上一次被分配的端口的下一个端口。5.根据权利要求1或4所述的方法,其特征在于,所述当接收到第二访问请求时,检测所述当前ip的下一个ip的第二端口是否被占用,以分配所述第二访问请求的步骤之后,所述方法包括:如果接收到第三访问请求,检测所述当前ip的下一个ip的下一个ip的第三端口是否被占用,以分配所述第三访问请求;其中,所述指定网关包含的多个ip中,第一个ip作为最后一个ip的下一个ip;所述第三端口包括:所述当前ip的下一个ip的下一个ip对应的上一次被分配的端口的下一个端口。6.根据权利要求1所述的方法,其特征在于,所述指定网关包括nat网关。7.根据权利要求1所述的方法,其特征在于,所述当接收到第二访问请求时,检测所述
当前ip的下一个ip的第二端口是否被占用,以分配所述第二访问请求的步骤之后,所述方法还包括:如果所述第二访问请求转发完成,释放所述第二访问请求占用的端口。8.一种端口分配装置,其特征在于,所述装置设置于指定网关,所述指定网关包含有多个ip,每个ip对应有多个端口;所述装置包括:请求接收模块,用于接收第一访问请求,检测当前ip的第一端口是否被占用;其中,所述第一端口包括:所述当前ip对应的上一次被分配的端口的下一个端口;请求分配模块,用于如果所述第一端口未被占用,将所述第一访问请求分配给所述第一端口;当接收到第二访问请求时,检测所述当前ip的下一个ip的第二端口是否被占用,以分配所述第二访问请求;端口检测模块,用于如果所述第一端口被占用,检测所述当前ip对应的所述第一端口的下一个端口是否被占用;如果所述第一端口的下一个端口未被占用,将所述第一访问请求分配给所述第一端口的下一个端口。9.一种电子设备,其特征在于,所述电子设备包括处理器和存储器,所述存储器存储有能够被所述处理器执行的机器可执行指令,所述处理器执行所述机器可执行指令以实现权利要求1至7任一项所述的端口分配方法。10.一种机器可读存储介质,其特征在于,所述机器可读存储介质存储有机器可执行指令,所述机器可执行指令在被处理器调用和执行时,所述机器可执行指令促使处理器实现权利要求1至7任一项所述的端口分配方法。
技术总结
本发明提供了一种端口分配方法、装置和电子设备,接收第一访问请求,并检测当前IP的第一端口是否被占用;如果第一端口未被占用将第一访问请求分配给第一端口;当接收到第二访问请求时,检测当前IP的下一个IP的第二端口是否被占用,以分配第二访问请求;如果第一端口被占用检测当前IP的第一端口的下一个端口是否被占用;如果第一端口的下一个端口未被占用,将第一访问请求分配给第一端口的下一个端口。该方式分配端口时,查找可用端口的流程是变化的,先依次在各IP之间轮询查找可用端口,当端口被占用时,从被占用的端口对应的IP下的端口中查找可用端口,该方式有效提高了端口分配效率,降低了端口的冲突率,从而提升了用户体验。从而提升了用户体验。从而提升了用户体验。
技术研发人员:刘茂鑫
受保护的技术使用者:北京金山云网络技术有限公司
技术研发日:2022.03.23
技术公布日:2023/10/7
版权声明
本文仅代表作者观点,不代表航空之家立场。
本文系作者授权航家号发表,未经原创作者书面授权,任何单位或个人不得引用、复制、转载、摘编、链接或以其他任何方式复制发表。任何单位或个人在获得书面授权使用航空之家内容时,须注明作者及来源 “航空之家”。如非法使用航空之家的部分或全部内容的,航空之家将依法追究其法律责任。(航空之家官方QQ:2926969996)
飞行汽车 https://www.autovtol.com/
