CN117675829A - 资源共享方法、系统、设备及介质 - Google Patents
资源共享方法、系统、设备及介质 Download PDFInfo
- Publication number
- CN117675829A CN117675829A CN202311690095.XA CN202311690095A CN117675829A CN 117675829 A CN117675829 A CN 117675829A CN 202311690095 A CN202311690095 A CN 202311690095A CN 117675829 A CN117675829 A CN 117675829A
- Authority
- CN
- China
- Prior art keywords
- client
- resource
- target
- network address
- server
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 59
- 230000004044 response Effects 0.000 claims description 35
- 238000012795 verification Methods 0.000 claims description 28
- 230000011664 signaling Effects 0.000 claims description 22
- 238000004891 communication Methods 0.000 claims description 21
- 238000006073 displacement reaction Methods 0.000 claims description 9
- 238000012886 linear function Methods 0.000 claims description 4
- 238000012545 processing Methods 0.000 abstract description 9
- 238000012546 transfer Methods 0.000 abstract description 4
- 230000005540 biological transmission Effects 0.000 description 11
- 230000006870 function Effects 0.000 description 8
- 238000010586 diagram Methods 0.000 description 6
- 238000005516 engineering process Methods 0.000 description 4
- 239000000463 material Substances 0.000 description 4
- 230000008569 process Effects 0.000 description 4
- 230000008878 coupling Effects 0.000 description 3
- 238000010168 coupling process Methods 0.000 description 3
- 238000005859 coupling reaction Methods 0.000 description 3
- 238000013507 mapping Methods 0.000 description 3
- 238000012986 modification Methods 0.000 description 3
- 230000004048 modification Effects 0.000 description 3
- 238000006467 substitution reaction Methods 0.000 description 3
- 235000014510 cooky Nutrition 0.000 description 2
- 239000000284 extract Substances 0.000 description 2
- 238000007689 inspection Methods 0.000 description 2
- 230000002452 interceptive effect Effects 0.000 description 2
- 238000007726 management method Methods 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 230000001419 dependent effect Effects 0.000 description 1
- 238000011156 evaluation Methods 0.000 description 1
- 230000010365 information processing Effects 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 238000011330 nucleic acid test Methods 0.000 description 1
- 238000003672 processing method Methods 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 230000007723 transport mechanism Effects 0.000 description 1
- 238000010200 validation analysis Methods 0.000 description 1
Landscapes
- Computer And Data Communications (AREA)
Abstract
本申请实施例提供了资源共享方法、系统、设备及介质,属于数据处理领域,方法包括:根据第一资源获取请求得到目标资源的标识;根据目标资源的标识从预设的关系表中确定下载过目标资源的第二客户端;根据两个客户端的公网地址确定与第一客户端处于同一局域网中的第二客户端为目标客户端;第一客户端根据目标客户端的局域网地址从目标客户端下载目标资源;实现了两个客户端之间的直接的资源传递,无需经过服务器转发,提升了资源获取效率,节约了服务带宽,降低了服务器的网络压力。
Description
技术领域
本申请涉及数据处理领域,尤其涉及资源共享方法、系统、设备及介质。
背景技术
在金融管理业务中,金融业务人员时常需要从服务器下载客户信息和相关金融数据等资源,但通常这些资源体积较大,且经常有多个金融业务人员同时从同一个服务器下载资源,这导致了服务器带宽压力大,难以满足多线路同时下载,影响资源获取效率。
发明内容
本申请的目的在于至少一定程度上解决相关技术中存在的技术问题之一。
为此,本申请实施例的一个目的在于提供资源共享方法、系统、设备及介质,提升资源获取效率,并能减小服务器的宽带负担。
本申请的第一方面的实施例,提供了一种资源共享方法,其特征在于,包括:
第一客户端向服务器发送第一资源获取请求;
所述服务器接收所述第一资源获取请求,根据所述第一资源获取请求得到目标资源的标识和第一客户端的第一公网地址;
所述服务器根据所述目标资源的标识从预设的关系表中确定下载过所述目标资源的第二客户端;
所述服务器获取所述第二客户端的第二公网地址;
所述服务器根据所述第一公网地址和所述第二公网地址从所述第二客户端中选出目标客户端,所述目标客户端为与所述第一客户端处于同一局域网中的第二客户端;
所述服务器向所述第一客户端发送所述目标客户端的局域网地址;
所述第一客户端接收所述局域网地址,根据所述局域网地址从所述目标客户端获取所述目标资源。
根据本申请的第一方面的某些实施例,所述资源共享方法,还包括:
所述第二客户端向所述服务器发送第二资源获取请求;
所述服务器接收所述第二资源获取请求,根据所述第二资源获取请求构建所述关系表,所述关系表记载有资源、第二客户端的第二公网地址、第二客户端的局域网地址之间的关系。
根据本申请的第一方面的某些实施例,所述根据所述第二资源获取请求构建所述关系表,包括:
根据所述第二资源获取请求得到资源、第二客户端的第二公网地址、第二客户端的局域网地址;
根据所述第二客户端的第二公网地址和第二客户端的局域网地址向所述第二客户端发送所述资源;
接收所述第二客户端返回的表示资源下载完成的信息,构建所述关系表。
根据本申请的第一方面的某些实施例,当所述服务器向所述第一客户端发送所述第二客户端的局域网地址,所述服务器向所述第一客户端发送目标资源的标识值,所述第一客户端接收目标资源的标识值;
在所述第一客户端根据所述局域网地址从所述第二客户端获取所述目标资源之后,所述第一客户端根据所述标识值对所述目标资源进行验证,得到验证结果;当所述验证结果表示验证失败,所述第一客户端重新向所述服务器发送所述第一资源获取请求。
根据本申请的第一方面的某些实施例,所述根据所述标识值对所述目标资源进行验证,得到验证结果,包括:
解释所述目标资源得到解释值;
比较所述解释值和所述标识值,当所述解释值和所述标识值相等,得到表示验证失败的验证结果,当所述解释值和所述标识值不相等,得到表示验证成功的验证结果。
根据本申请的第一方面的某些实施例,所述解释所述目标资源得到解释值,包括:
对所述目标资源进行填充得到填充结果,使所述填充结果的位长满足预设长度的整数倍;
将所述填充结果进行分组得到多组分组,且每组分组包括至少一个子分组,每组分组的长度为所述预设长度;
获取多个预设的链接变量;
对每组分组,随机选择多个链接变量中的任意数量的链接变量作为候选变量,将其他链接变量作为非候选变量,将所述候选变量作非线性函数运算得到运算结果,将所述运算结果与所述非候选变量、所述子分组相加得到相加结果,将所述相加结果进行位移运算得到位移结果,将所述位移结果与所述链接变量相加得到第二链接变量;
将多个所述第二链接变量级联,得到解释值。
根据本申请的第一方面的某些实施例,所述第一客户端接收所述局域网地址,根据所述局域网地址从所述第二客户端获取所述目标资源,包括:
根据所述局域网地址在所述第一客户端和所述第二客户端之间构建对等连接;
将数据通道关联至所述对等连接;
所述第一客户端生成第一本地连接对象和创建提议信息;
所述第二客户端生成第二本地连接对象;
所述第一客户端端通过信令服务器将所述提议信息转发至所述第二客户端;
所述第二客户端接收所述提议信息,并根据所述提议信息设置第二远端描述信息和生成应答信息;
所述第二客户端通过信令服务器将所述应答信息返回给所述第一客户端;
所述第一客户端接收所述应答信息,并根据所述应答信息设置第一远端描述信息;
根据所述第一远端描述信息和所述第二远端描述信息确定最佳访问方式,以完成所述第一客户端与所述第二客户端之间的对等连接的建立;
所述第二客户端将所述目标资源加载至所述第二本地连接对象,通过所述数据通道传输所述目标资源,所述第一客户端通过所述第一本地连接对象接收所述目标资源。
本申请的第二方面的实施例,一种资源共享系统,包括:第一客户端、第二客户端和服务器;
所述服务器用于接收第一资源获取请求,根据所述第一资源获取请求得到目标资源的标识和第一客户端的第一公网地址,根据所述目标资源的标识从预设的关系表中确定下载过所述目标资源的第二客户端,获取所述第二客户端的第二公网地址,根据所述第一公网地址和所述第二公网地址从所述第二客户端中选出目标客户端,所述目标客户端为与所述第一客户端处于同一局域网中的第二客户端,向所述第一客户端发送所述第二客户端的局域网地址;
所述第一客户端用于向服务器发送第一资源获取请求,接收所述局域网地址,根据所述局域网地址从所述第二客户端获取所述目标资源;
所述第二客户端用于向所述第一客户端发送所述目标资源。
本申请的第三方面的实施例,一种电子设备,包括存储器、处理器、存储在所述存储器上并可在所述处理器上运行的程序以及用于实现所述处理器和所述存储器之间的连接通信的数据总线,所述程序被所述处理器执行时实现如上所述的资源共享方法。
本申请的第四方面的实施例,一种计算机可读存储介质,存储有计算机可执行指令,所述计算机可执行指令用于使计算机执行如上所述的资源共享方法。
本申请实施例所公开的资源共享方法、系统、设备及介质,通过根据第一资源获取请求得到目标资源的标识;根据目标资源的标识从预设的关系表中确定下载过目标资源的第二客户端;根据两个客户端的公网地址确定与第一客户端处于同一局域网中的第二客户端为目标客户端;第一客户端根据目标客户端的局域网地址从目标客户端下载目标资源;实现了两个客户端之间的直接的资源传递,无需经过服务器转发,提升了资源获取效率,节约了服务带宽,降低了服务器的网络压力。
附图说明
为了更清楚地说明本申请实施例或者现有技术中的技术方案,下面对本申请实施例或者现有技术中的相关技术方案附图作以下介绍,应当理解的是,下面介绍中的附图仅仅为了方便清晰表述本发明的技术方案中的部分实施例,对于本领域的技术人员来说,在无需付出创造性劳动的前提下,还可以根据这些附图获取到其他附图。
图1是本申请的实施例所提供的资源共享方法的子步骤图;
图2是步骤S200的子步骤图;
图3是根据局域网地址从第二客户端获取目标资源步骤的子步骤图;
图4是根据标识值对目标资源进行验证,得到验证结果步骤的子步骤图;
图5是步骤S920的子步骤图;
图6是本申请的实施例所提供的电子设备的子步骤图。
具体实施方式
为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本申请,并不用于限定本申请。
本申请的说明书及上述附图中的术语“第一”、“第二”、“第三”、“第四”等(如果存在)是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本申请的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
应当理解,在本申请中,“至少一个(项)”是指一个或者多个,“多个”是指两个或两个以上。“和/或”,用于描述关联对象的关联关系,表示可以存在三种关系,例如,“A和/或B”可以表示:只存在A,只存在B以及同时存在A和B三种情况,其中A,B可以是单数或者复数。字符“/”一般表示前后关联对象是一种“或”的关系。“以下至少一项(个)”或其类似表达,是指这些项中的任意组合,包括单项(个)或复数项(个)的任意组合。例如,a,b或c中的至少一项(个),可以表示:a,b,c,“a和b”,“a和c”,“b和c”,或“a和b和c”,其中a,b,c可以是单个,也可以是多个。
在本说明书的描述中,参考术语“一个实施方式”、“另一实施方式”或“某些实施方式”等的描述意指结合实施方式或示例描述的具体特征、结构、材料或者特点包含于本申请的至少一个实施方式或示例中。在本说明书中,对上述术语的示意性表述不一定指的是相同的实施方式或示例。而且,描述的具体特征、结构、材料或者特点可以在任何的一个或多个实施方式或示例中以合适的方式结合。
本申请实施例描述的实施例是为了更加清楚的说明本申请实施例的技术方案,并不构成对于本申请实施例提供的技术方案的限定,本领域技术人员可知,随着技术的演变和新应用场景的出现,本申请实施例提供的技术方案对于类似的技术问题,同样适用。
本领域技术人员可以理解的是,图中示出的技术方案并不构成对本申请实施例的限定,可以包括比图示更多或更少的步骤,或者组合某些步骤,或者不同的步骤。
除非另有定义,本文所使用的所有的技术和科学术语与属于本申请的技术领域的技术人员通常理解的含义相同。本文中所使用的术语只是为了描述本申请实施例的目的,不是旨在限制本申请。
在金融管理业务中,金融业务人员时常需要从服务器下载客户信息和相关金融数据等资源,但通常这些资源体积较大,且经常有多个金融业务人员同时从同一个服务器下载资源,这导致了服务器带宽压力大,难以满足多线路同时下载,影响资源获取效率。
为了解决以上的问题,本申请的实施例,提供了一种资源共享系统。
资源共享系统包括:多个客户端和服务器。资源共享系统采用如下的资源共享方法使同一个局域网内用户获取资源速度变得更快、提高了网站性能,同时节约了服务的带宽,降低了服务器的网络压力。
可以理解的是,多个客户端中的第一客户端为请求资源的客户端,多个客户端中的第二客户端为下载完成资源的客户端。第一客户端和第二客户端为不同的两个客户端。
参照图1,资源共享方法,包括但不限于以下步骤:
步骤S100,第二客户端向服务器发送第二资源获取请求;
步骤S200,服务器接收第二资源获取请求,向第二客户端发送资源,根据第二资源获取请求构建关系表;
步骤S300,第一客户端向服务器发送第一资源获取请求;
步骤S400,服务器接收第一资源获取请求,根据第一资源获取请求得到目标资源的标识和第一客户端的第一公网地址;
步骤S500,服务器根据目标资源的标识从预设的关系表中确定下载过目标资源的第二客户端;
步骤S600,服务器获取第二客户端的第二公网地址;
步骤S700,服务器根据第一公网地址和第二公网地址从第二客户端中选出目标客户端,目标客户端为与第一客户端处于同一局域网中的第二客户端;
步骤S800,服务器向第一客户端发送目标客户端的局域网地址;
步骤S900,第一客户端接收局域网地址,根据局域网地址从目标客户端获取目标资源。
对于步骤S100,A用户页面需要从服务器加载资源S1,A用户页面向服务器注册客户端,通过客户端向服务器发送资源获取请求。该客户端定义为第二客户端,该资源获取请求定义为第二资源获取请求。
参照图2,对于步骤S200,具体包括但不限于以下步骤:
步骤S211,服务器接收第二资源获取请求;
步骤S212,服务器根据第二资源获取请求得到资源、第二客户端的第二公网地址、第二客户端的局域网地址;
步骤S213,服务器根据第二客户端的第二公网地址和第二客户端的局域网地址向第二客户端发送资源;
步骤S214,第二客户端接收资源,在完成资源下载后,向服务器返回表示资源下载完成的信息;
步骤S215,服务器接收第二客户端返回的表示资源下载完成的信息,构建关系表。
其中,服务器记录了资源被第二客户端下载过,关联资源、第二客户端的第二公网地址、第二客户端的局域网地址,通过关系表记载有资源、第二客户端的第二公网地址、第二客户端的局域网地址之间的关系。
需要说明的是,一个关系表会记载有多个资源、多个第二客户端的第二公网地址和多个第二客户端的局域网地址;其中,每个资源可以对应至少一个第二客户端的第二公网地址,即一个资源可以被至少一个第二客户端下载过;每个第二客户端的第二公网地址可以对应至少一个资源,即一个第二客户端可以下载多个资源;第二客户端的第二公网地址和第二客户端的局域网地址是一一对应的关系。
对于步骤S300,B用户页面需要从服务器加载资源S1,B用户页面向服务器注册客户端,通过客户端向服务器发送资源获取请求。该客户端定义为第一客户端,该资源获取请求定义为第一资源获取请求。
对于步骤S400,服务器接收第一资源获取请求,读取第一资源获取请求中的字段,从第一资源获取请求的字段中得到目标资源的标识和第一客户端的第一公网地址。
目标资源的标识可以是资源的名称、资源的ID等用于标识身份的唯一标识。
对于步骤S500,服务器根据目标资源的标识从关系表中确定下载过目标资源的第二客户端。根据目标资源的标识从关系表中确定资源,由于关系表中记载有资源、第二客户端的第二公网地址、第二客户端的局域网地址之间的关系,进而可以确定下载过目标资源的第二客户端。
步骤S600,服务器获取第二客户端的第二公网地址。由于关系表中记载有资源、第二客户端的第二公网地址、第二客户端的局域网地址之间的关系,在确定资源后,根据关系表可以确定下载过目标资源的第二客户端的第二公网地址、第二客户端的局域网地址。
步骤S700,服务器根据第一公网地址和第二公网地址从第二客户端中选出目标客户端,目标客户端为与第一客户端处于同一局域网中的第二客户端。
具体地,当第二客户端的公网地址与第一客户端的公网地址相同,表示该第二客户端与第一客户端处于同一局域网中。当第二客户端与的公网地址与第一客户端的公网地址不相同,表示该第二客户端与第一客户端不处于同一局域网中。则根据第一公网地址和第二公网地址可以从与目标资源关联的多个第二客户端中选出目标客户端。
步骤S800,服务器向第一客户端发送目标客户端的局域网地址。在确定了目标客户端之后,由于关系表中记载有资源、第二客户端的第二公网地址、第二客户端的局域网地址之间的关系,根据关系表可以确定目标客户端的局域网地址。
同时,服务器向第一客户端发送目标资源的标识值。
步骤S900,第一客户端接收局域网地址,根据局域网地址从第二客户端获取目标资源。
参照图3,具体地,根据局域网地址从第二客户端获取目标资源,包括但不限于以下步骤:
步骤S910,根据局域网地址在第一客户端和第二客户端间构建对等连接;
步骤S911,将数据通道关联至对等连接;
步骤S912,第一客户端生成第一本地连接对象和创建提议信息;
步骤S913,第二客户端生成第二本地连接对象;
步骤S914,第一客户端端通过信令服务器将提议信息转发至第二客户端;
步骤S915,第二客户端接收提议信息,并根据提议信息设置第二远端描述信息和生成应答信息;
步骤S916,第二客户端通过信令服务器将应答信息返回给第一客户端;
步骤S917,第一客户端接收应答信息,并根据应答信息设置第一远端描述信息;
步骤S918,根据第一远端描述信息和第二远端描述信息确定最佳访问方式,以完成第一客户端与第二客户端之间的对等连接的建立;
步骤S919,第二客户端将目标资源加载至第二本地连接对象,通过数据通道传输目标资源,第一客户端通过第一本地连接对象接收目标资源。
即,在上述过程中,第一客户端生成本地连接对象和创建offer提议信息,通过信令服务器将offer提议信息转发至第二客户端,设置本地描述信息。
第二客户端生成本地连接对象,接收offer提议信息后,设置远端描述信息,生成answer应答信息,设置本地描述信息,通过信令服务器将answer应答信息转发给第一客户端。
第一客户端接收answer应答信息后,设置远端描述信息。
第一客户端与第二客户端之间通过网页即时通信实现目标资源的传输。网页即时通信是支持网页浏览器进行实时语音对话或视频对话的API。
网页即时通信使用安全实时传输协议(Secure Real-time Transport Protocol,SRTP)对RTP数据进行加密,消息认证和完整性以及重播攻击保护。它是一个安全框架,通过加密RTP负载和支持原始认证来提供机密性。WebRTC的安全特性是其可靠性的重要组成部分,其基础全部围绕实时传输协议(Real-time Transport Protocol)进行。
对于网页即时通信,其使用到以下技术实现数据的传输。
网页即时通信要求在两个对等端建立双向的信令通道,并通过数据通道来传输WebRTC信令。
网页即时通信提供了浏览器端的P2P通信,但依然至少需要以下两种服务器,包括:浏览器之间建立通信前交换各种元数据(信令)的服务器;穿越NAT和防火墙的服务器(stun、turn、rsip等)。
信令是通过信令服务器中转发给另一个客户端,但是对于流媒体数据,一旦会话建立,首先尝试使用点对点连接。每个客户端都有一个唯一的地址,能用来和其他客户端进行通讯和数据交换。
WebRTC使用RTCPeerConnection建立连接传送流数据,在建立RTCPeerConnection实例之后,想要建立点对点的信道,还需要:确定本机上的媒体流的特性,比如分辨率、编解码能力啥的(SDP描述符);连接两端的主机的网络地址(ICE Candidate)。
通过offer和answer交换SDP描述符的步骤如下:
第一客户端和第二客户端各自建立一个PC实例;
第一客户端通过PC所提供的createOffer()方法建立一个包含第一客户端的SDP描述符的offer信令;
第一客户端通过PC所提供的setLocalDescription()方法,将第一客户端的SDP描述符交给第一客户端的PC实例;
第一客户端将offer信令通过服务器发送给第二客户端;
第二客户端将第一客户端的offer信令中所包含的的SDP描述符提取出来,通过PC所提供的setRemoteDescription()方法交给第二客户端的PC实例;
第二客户端通过PC所提供的createAnswer()方法建立一个包含第二客户端的SDP描述符answer信令;
第二客户端通过PC所提供的setLocalDescription()方法,将第二客户端的SDP描述符交给第二客户端的PC实例;
第二客户端将answer信令通过服务器发送给第一客户端;
第一客户端接收到第二客户端的answer信令后,将其中第二客户端的SDP描述符提取出来,调用setRemoteDescripttion()方法交给第一客户端自己的PC实例。
通过ICE框架建立NAT/防火墙穿越的连接。
WebRTC使用ICE框架来获得这个外界可以直接访问的地址,RTCPeerConnection在创立的时候可以将ICE服务器的地址传递进去,如:
第一客户端、第二客户端各创建配置了ICE服务器的PC实例,并为其添加onicecandidate事件回调;
当网络候选可用时,将会调用onicecandidate函数;
在回调函数内部,第一客户端或第二客户端将网络候选的消息封装在ICECandidate信令中,通过服务器中转,传递给对方;
第一客户端或第二客户端接收到对方通过服务器中转所发送过来ICE Candidate信令时,将其解析并获得网络候选,将其通过PC实例的addIceCandidate()方法加入到PC实例中。
这样连接就创立完成了,可以向RTCPeerConnection中通过addStream()加入流来传输媒体流数据。
网页即时通信通过NAT(Network Address Translator)进行地址映射,将内网的主机经过NAT的映射生成外网的ip地址和端口。
网页即时通信设置有STUN(Session Traversal Utilities for NAT)服务器。STUN称为NAT会话遍历实用工具服务器。简单地说,就是获取内网设备的最外层NAT(公共ip地址)信息。
STUN是一个C/S架构的协议,支持两种传输类型。一种是请求/响应类型,由客户端给服务端发送请求并等待服务端响应;另一种是指示类型,由服务器或者客户端发送指示,另一方不产生响应。两种类型的传输都包含一个96位的随机数作为事务ID(transactionID),对于请求/响应类型,事务ID允许客户端将响应和产生响应的请求连接起来;对于指示类型,事务ID通常作为debugging aid使用。
STUN报文和大多数网络类型的格式一样,是以大端编码(big-endian)的,即最高有效位在左边。所有的STUN报文都以20字节(160位)的头部开始,后面跟着若干个属性。STUN头部包含了STUN消息类型,magic cookie,事务ID和消息长度。在STUN报文头部之后,通常跟着0个或者多个属性,每个属性必须是TLV编码的。
STUN的通信过程如下:
产生一个Request或者Indication报文,终端根据上文提到的规则来生成头部,class字段必须是Request或者Indication,而method字段为Binding或者其他用户拓展的方法。属性部分选择该方法所需要的对应属性。
当使用UDP协议运行STUN时,STUN的报文可能会由于网络问题而丢失。可靠的STUN请求/响应传输是通过客户端重发request请求来实现的,因此,在UDP运行时,Indication报文是不可靠的。STUN客户端通过RTO(Retransmission TimeOut)来决定是否重传Requst,并且在每次重传后将RTO翻倍。具体重传时间的选取可以参考相关文章,如RFC2988。重传直到接收到Response才停止,或者重传次数到达指定次数Rc,Rc应该是可配置的,且默认值为7。
当通过TCP或者TCP-over-TLS发送,客户端打开对服务器的连接。在某些情况下,此TCP链接只传输STUN报文,而在其他拓展中,在一个TCP链接里可能STUN报文和其他协议的报文会进行多路复用(Multiplexed)。数据传输的可靠性由TCP协议本身来保证。值得一提的是,在一次TCP连接中,STUN客户端可能发起多个传输,有可能在前一个Request的Response还没收到时就再次发送了一个新的Request,因此客户端应该在确认所有STUN事务都已完成之前保持TCP链接打开。
当STUN终端接收到一个STUN报文时,首先检查报文的规则是否合法,即前两位是否为0,magic cookie是否为0x2112A442,报文长度是否正确以及对应的方法是否支持。
如果消息类别为Success/Error Response,终端会检测其事务ID是否与当前正在处理的事务ID相同。如果使用了FINGERPRINT拓展的话还会检查FINGERPRINT属性是否正确。
完成身份认证检查之后,STUN终端会接着检查其余未知属性。
如果请求包含一个或者多个强制理解的未知属性,接收端会返回errorresponse,错误代码420(ERROR-CODE属性),而且包含一个UNKNOWN-ATTRIBUTES属性来告知发送方哪些强制理解的属性是未知的。服务端接着检查方法和其他指定要求,如果所有检查都成功,则会产生一个Success Response给客户端。
如果服务器通过某种验证方法通过了请求方的验证,那么在响应报文里最好也加上对应的验证属性。服务器端也应该加上指定方法所需要的属性信息,另外协议建议服务器返回时也加上SOFTWARE属性。
发送响应时候如果是用UDP协议则发往其源IP和端口;如果是TCP则直接用相同的TCP链接回发即可。
如果Indication报文包含未知的强制理解属性,则此报文会被接收端忽略并丢弃。如果对Indication报文的检查都没有错误,则服务端会进行相应的处理,但是不会返回Response。对于Binding方法,一般不需要额外的检查或处理。收到信息的服务端仅需要刷新对应NAT的端口绑定。
如果Success Response包含了未知的强制理解属性,则响应会被忽略并且认为此次传输失败。客户端对报文进行检查通过之后,就可以开始处理此次报文。
如果Error Response包含了未知的强制理解属性,或者没有包含ERROR-CODE属性,则响应会被忽略并且认为此次传输失败。
对错误响应的处理主要基于ERROR-CODE属性的值,并遵循如下规则:
如果error code在300到399之间,客户端被建议认为此次传输失败,除非用了ALTERNATE-SERVER拓展;
如果error code在400到499之间,客户端认为此次传输失败;
如果error code在500到599之间,客户端可能会需要重传请求,并且必须限制重传的次数。
网页即时通信设置有TURN服务器,TURN的全称为Traversal Using Relaysaround NAT。TURN服务器具有Relay功能。如果终端在NAT之后,那么在特定的情景下,有可能使得终端无法和其对等端(peer)进行直接的通信,这时就需要公网的服务器作为一个中继,对来往的数据进行转发。这个转发的协议就被定义为TURN。TURN和其他中继协议的不同之处在于,它允许客户端使用同一个中继地址(relay address)与多个不同的peer进行通信。
如果TURN使用于ICE协议中,relay地址会作为一个候选,由ICE在多个候选中进行评估,选取最合适的通讯地址。一般来说中继的优先级都是最低的。TURN协议被设计为ICE协议(Interactive Connectivity Establishment)的一部分,而且也建议用户在程序里使用ICE,但是也可以独立于ICE的运行。
中继地址是一个公共地址,用于转发接收到的包,或者将收到的数据包转发给浏览器。如果两个对等端因为NAT类型等原因不能直接建立P2P连接的话,那么可以使用中继地址。
TURN服务器连接到内网中,并且通过一个或者多个NAT到达公网,TURN服务器架设在公网中,不同的客户端以TURN服务器为中继和其他peer进行通信。
服务器上的每一个allocation都唯一对应一个客户端,并且只有一个中继地址,因此当数据包到达某个中继地址时,服务器总是知道应该将其转发到目的地。
在协议中,TURN服务器与peer之间的连接都是基于UDP的,但是服务器和客户端之间可以通过其他各种连接来传输STUN报文,比如TCP/UDP/TLS-over-TCP客户端之间通过中继传输数据时候。
要在服务器端获得一个中继分配,客户端须使用分配事务.客户端发送分配请求(Allocate request)到服务器,然后服务器返回分配成功响应,并包含了分配的地址.客户端可以在属性字段描述其想要的分配类型(比如生命周期).由于中继数据实现了安全传输,服务器会要求对客户端进行验证,主要使用STUN的long-term credentail mechanism。
对于ICE(Interactive Connectivity Establishment),ICE是一个框架,整合了STUN服务器和TURN服务器。
通过ICE实现第一客户端与第二客户端之间的通信,过程如下:
第一客户端收集所有的IP地址,并找出其中可以从STUN服务器和TURN服务器收到流量的地址;
第一客户端向STUN服务器发送一份地址列表,然后按照排序的地址列表向第二客户端发送启动信息,目的是实现节点间的通信;
第二客户端向启动信息中的每一个地址发送一条STUN请求;
第一客户端将第一条接收到的STUN请求的回复信息发送给第二客户端;
第二客户端接到STUN回复后,从中找出那些可在第一客户端和第二客户端之间实现通信的地址;
利用列表中的排序列最高的地址进一步的设备间通信。
另外,当服务器向第一客户端发送第二客户端的局域网地址,服务器向第一客户端发送目标资源的标识值,第一客户端接收目标资源的标识值;在第一客户端根据局域网地址从第二客户端获取目标资源之后,第一客户端根据标识值对目标资源进行验证,得到验证结果;当验证结果表示验证失败,第一客户端重新向服务器发送第一资源获取请求。
参照图4,其中,根据标识值对目标资源进行验证,得到验证结果,包括但不限于以下步骤:
步骤S920,解释目标资源得到解释值;
步骤S930,比较解释值和标识值,当解释值和标识值相等,得到表示验证失败的验证结果,当解释值和标识值不相等,得到表示验证成功的验证结果。
参照图5,对于步骤S920,解释目标资源得到解释值,包括但不限于以下步骤:
步骤S921,对目标资源进行填充得到填充结果,使填充结果的位长满足预设长度的整数倍;
步骤S922,将填充结果进行分组得到多组分组,且每组分组包括至少一个子分组,每组分组的长度为预设长度;
步骤S923,获取多个预设的链接变量;
步骤S924,对每组分组,随机选择多个链接变量中的任意数量的链接变量作为候选变量,将其他链接变量作为非候选变量,将候选变量作非线性函数运算得到运算结果,将运算结果与非候选变量、子分组相加得到相加结果,将相加结果进行位移运算得到位移结果,将位移结果与链接变量相加得到第二链接变量;
步骤S925,将多个第二链接变量级联,得到解释值。
具体地,首先需要对输入信息(即目标资源)进行填充,使其位长对512求余的结果等于448,并且填充必须进行,即使其位长对512求余的结果等于448。因此,信息的位长(Bits Length)将被扩展至N*512+448,N为一个非负整数,N可以是零。
填充的方法为:在信息的后面填充一个1和无数个0,直到满足上面的条件时才停止用0对信息的填充;在这个结果后面附加一个以64位二进制表示的填充前信息长度(单位为Bit),如果二进制表示的填充前信息长度超过64位,则取低64位。
经过填充后,信息的位长=N*512+448+64=(N+1)*512,即长度恰好是512的整数倍。这样做的原因是为满足后面处理中对信息长度的要求。
初始的128位值为初试链接变量,这些参数用于第一轮的运算,以大端字节序来表示,分别为:A=0x01234567,B=0x89ABCDEF,C=0xFEDCBA98,D=0x76543210。每一个变量给出的数值是高字节存于内存低地址,低字节存于内存高地址,即大端字节序。
对每个分组,第一分组需要将上面四个链接变量复制到另外四个变量中:A到a,B到b,C到c,D到d。从第二分组开始的变量为上一分组的运算结果,即A=a,B=b,C=c,D=d。主循环有四轮,每轮循环都是相似的。第一轮进行16次操作。每次操作对a、b、c和d中的其中三个作一次非线性函数运算,然后将所得结果加上第四个变量,文本的一个子分组和一个常数。再将所得结果向左环移一个不定的数,并加上a、b、c或d中之一。最后用该结果取代a、b、c或d中之一。运算由类似的64次循环构成,分成4组16次。
每次操作中用到的四个非线性函数(每轮一个)。
其中,F(X,Y,Z)=(X&Y)|((~X)&Z);
G(X,Y,Z)=(X&Z)|(Y&(~Z));
H(X,Y,Z)=X^Y^Z;
I(X,Y,Z)=Y^(X|(~Z));
对于这四个函数,如果X、Y和Z的对应位是独立和均匀的,那么结果的每一位也应是独立和均匀的。F是一个逐位运算的函数。即,如果X,那么Y,否则Z。函数H是逐位奇偶操作符。假设Mj表示消息的第j个子分组(从0到15),常数ti是4294967296*abs(sin(i))的整数部分,i的取值为从1到64,单位是弧度。
完成主循环的运算之后,将将a、b、c、d分别在原来基础上再加上A、B、C、D。即a=a+A,b=b+B,c=c+C,d=d+D;然后用下一分组数据继续运行以上算法。
最后输出a、b、c、d的级联即可得到解释值。
对于步骤S930,比较解释值和标识值,当解释值和标识值相等,得到表示验证失败的验证结果,当解释值和标识值不相等,得到表示验证成功的验证结果。
本申请的实施例,提供了一种电子设备。参照图6,电子设备包括存储器220、处理器210、存储在存储器220上并可在处理器210上运行的程序以及用于实现处理器210和存储器220之间的连接通信的数据总线230,程序被处理器210执行时实现如上所述的资源共享方法。
该电子设备可以为包括平板电脑、车载电脑等任意智能终端。
总体而言,对于电子设备的硬件结构,处理器210可以采用通用的CPU(CentralProcessingUnit,中央处理器)、微处理器、应用专用集成电路(ApplicationSpecificIntegratedCircuit,ASIC)、或者一个或多个集成电路等方式实现,用于执行相关程序,以实现本申请实施例所提供的技术方案。
存储器220可以采用只读存储器(ReadOnlyMemory,ROM)、静态存储设备、动态存储设备或者随机存取存储器(RandomAccessMemory,RAM)等形式实现。存储器220可以存储操作系统和其他应用程序,在通过软件或者固件来实现本说明书实施例所提供的技术方案时,相关的程序代码保存在存储器220中,并由处理器210来调用执行本申请实施例的接口信息处理方法。
输入/输出接口用于实现信息输入及输出。
通信接口用于实现本设备与其他设备的通信交互,可以通过有线方式(例如USB、网线等)实现通信,也可以通过无线方式(例如移动网络、WIFI、蓝牙等)实现通信。
总线230在设备的各个组件(例如处理器210、存储器220、输入/输出接口和通信接口)之间传输信息。处理器210、存储器220、输入/输出接口和通信接口通过总线230实现彼此之间在设备内部的通信连接。
本申请的实施例,提供了一种计算机可读存储介质。计算机可读存储介质存储有计算机可执行指令,所述计算机可执行指令用于使计算机执行如上所述的资源共享方法。
本领域普通技术人员可以理解,上文中所公开方法中的全部或某些步骤、系统可以被实施为软件、固件、硬件及其适当的组合。某些物理组件或所有物理组件可以被实施为由处理器,如中央处理器、数字信号处理器或微处理器执行的软件,或者被实施为硬件,或者被实施为集成电路,如专用集成电路。这样的软件可以分布在计算机可读介质上,计算机可读介质可以包括计算机存储介质(或非暂时性介质)和通信介质(或暂时性介质)。如本领域普通技术人员公知的,术语计算机存储介质包括在用于存储信息(诸如计算机可读指令、数据结构、程序模块或其他数据)的任何方法或技术中实施的易失性和非易失性、可移除和不可移除介质。计算机存储介质包括但不限于RAM、ROM、EEPROM、闪存或其他存储器技术、CD-ROM、数字多功能盘(DVD)或其他光盘存储、磁盒、磁带、磁盘存储或其他磁存储装置、或者可以用于存储期望的信息并且可以被计算机访问的任何其他的介质。此外,本领域普通技术人员公知的是,通信介质通常包含计算机可读指令、数据结构、程序模块或者诸如载波或其他传输机制之类的调制数据信号中的其他数据,并且可包括任何信息递送介质。在本说明书的上述描述中,参考术语“一个实施方式/实施例”、“另一实施方式/实施例”或“某些实施方式/实施例”等的描述意指结合实施方式或示例描述的具体特征、结构、材料或者特点包含于本申请的至少一个实施方式或示例中。在本说明书中,对上述术语的示意性表述不一定指的是相同的实施方式或示例。而且,描述的具体特征、结构、材料或者特点可以在任何的一个或多个实施方式或示例中以合适的方式结合。
本领域普通技术人员可以理解,上文中所公开方法中的全部或某些步骤、系统、设备中的功能模块/单元可以被实施为软件、固件、硬件及其适当的组合。
上述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括多指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例的方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(Read-Only Memory,简称ROM)、随机存取存储器(Random Access Memory,简称RAM)、磁碟或者光盘等各种可以存储程序的介质。
在本申请所提供的几个实施例中,应该理解到,所揭露的装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,上述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
尽管已经示出和描述了本申请的实施方式,本领域的普通技术人员可以理解:在不脱离本申请的原理和宗旨的情况下可以对这些实施方式进行多种变化、修改、替换和变型,本申请的范围由权利要求及其等同物限定。
以上是对本申请的较佳实施进行了具体说明,但本申请并不限于实施例,熟悉本领域的技术人员在不违背本申请精神的前提下可做作出种种的等同变形或替换,这些等同的变形或替换均包含在本申请权利要求所限定的范围内。
Claims (10)
1.一种资源共享方法,其特征在于,包括:
第一客户端向服务器发送第一资源获取请求;
所述服务器接收所述第一资源获取请求,根据所述第一资源获取请求得到目标资源的标识和第一客户端的第一公网地址;
所述服务器根据所述目标资源的标识从预设的关系表中确定下载过所述目标资源的第二客户端;
所述服务器获取所述第二客户端的第二公网地址;
所述服务器根据所述第一公网地址和所述第二公网地址从所述第二客户端中选出目标客户端,所述目标客户端为与所述第一客户端处于同一局域网中的第二客户端;
所述服务器向所述第一客户端发送所述目标客户端的局域网地址;
所述第一客户端接收所述局域网地址,根据所述局域网地址从所述目标客户端获取所述目标资源。
2.根据权利要求1所述的资源共享方法,其特征在于,所述资源共享方法,还包括:
所述第二客户端向所述服务器发送第二资源获取请求;
所述服务器接收所述第二资源获取请求,根据所述第二资源获取请求构建所述关系表,所述关系表记载有资源、第二客户端的第二公网地址、第二客户端的局域网地址之间的关系。
3.根据权利要求2所述的资源共享方法,其特征在于,所述根据所述第二资源获取请求构建所述关系表,包括:
根据所述第二资源获取请求得到资源、第二客户端的第二公网地址、第二客户端的局域网地址;
根据所述第二客户端的第二公网地址和第二客户端的局域网地址向所述第二客户端发送所述资源;
接收所述第二客户端返回的表示资源下载完成的信息,构建所述关系表。
4.根据权利要求1所述的资源共享方法,其特征在于,当所述服务器向所述第一客户端发送所述第二客户端的局域网地址,所述服务器向所述第一客户端发送目标资源的标识值,所述第一客户端接收目标资源的标识值;
在所述第一客户端根据所述局域网地址从所述第二客户端获取所述目标资源之后,所述第一客户端根据所述标识值对所述目标资源进行验证,得到验证结果;当所述验证结果表示验证失败,所述第一客户端重新向所述服务器发送所述第一资源获取请求。
5.根据权利要求4所述的资源共享方法,其特征在于,所述根据所述标识值对所述目标资源进行验证,得到验证结果,包括:
解释所述目标资源得到解释值;
比较所述解释值和所述标识值,当所述解释值和所述标识值相等,得到表示验证失败的验证结果,当所述解释值和所述标识值不相等,得到表示验证成功的验证结果。
6.根据权利要求5所述的资源共享方法,其特征在于,所述解释所述目标资源得到解释值,包括:
对所述目标资源进行填充得到填充结果,使所述填充结果的位长满足预设长度的整数倍;
将所述填充结果进行分组得到多组分组,且每组分组包括至少一个子分组,每组分组的长度为所述预设长度;
获取多个预设的链接变量;
对每组分组,随机选择多个链接变量中的任意数量的链接变量作为候选变量,将其他链接变量作为非候选变量,将所述候选变量作非线性函数运算得到运算结果,将所述运算结果与所述非候选变量、所述子分组相加得到相加结果,将所述相加结果进行位移运算得到位移结果,将所述位移结果与所述链接变量相加得到第二链接变量;
将多个所述第二链接变量级联,得到解释值。
7.根据权利要求1所述的资源共享方法,其特征在于,所述第一客户端接收所述局域网地址,根据所述局域网地址从所述目标客户端获取所述目标资源,包括:
根据所述局域网地址在所述第一客户端和所述目标客户端之间构建对等连接;
将数据通道关联至所述对等连接;
所述第一客户端生成第一本地连接对象和创建提议信息;
所述目标客户端生成第二本地连接对象;
所述第一客户端端通过信令服务器将所述提议信息转发至所述目标客户端;
所述目标客户端接收所述提议信息,并根据所述提议信息设置第二远端描述信息和生成应答信息;
所述目标客户端通过信令服务器将所述应答信息返回给所述第一客户端;
所述第一客户端接收所述应答信息,并根据所述应答信息设置第一远端描述信息;
根据所述第一远端描述信息和所述第二远端描述信息确定最佳访问方式,以完成所述第一客户端与所述目标客户端之间的对等连接的建立;
所述目标客户端将所述目标资源加载至所述第二本地连接对象,通过所述数据通道传输所述目标资源,所述第一客户端通过所述第一本地连接对象接收所述目标资源。
8.一种资源共享系统,其特征在于,包括:第一客户端、第二客户端和服务器;
所述服务器用于接收第一资源获取请求,根据所述第一资源获取请求得到目标资源的标识和第一客户端的第一公网地址,根据所述目标资源的标识从预设的关系表中确定下载过所述目标资源的第二客户端,获取所述第二客户端的第二公网地址,根据所述第一公网地址和所述第二公网地址从所述第二客户端中选出与所述第一客户端处于同一局域网的目标客户端,向所述第一客户端发送所述第二客户端的局域网地址;
所述第一客户端用于向服务器发送第一资源获取请求,接收所述局域网地址,根据所述局域网地址从所述第二客户端获取所述目标资源;
所述第二客户端用于向所述第一客户端发送所述目标资源。
9.一种电子设备,其特征在于,所述电子设备包括存储器、处理器、存储在所述存储器上并可在所述处理器上运行的程序以及用于实现所述处理器和所述存储器之间的连接通信的数据总线,所述程序被所述处理器执行时实现如权利要求1至7任一项所述的资源共享方法。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有计算机可执行指令,所述计算机可执行指令用于使计算机执行如权利要求1至7任一项所述的资源共享方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311690095.XA CN117675829A (zh) | 2023-12-07 | 2023-12-07 | 资源共享方法、系统、设备及介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311690095.XA CN117675829A (zh) | 2023-12-07 | 2023-12-07 | 资源共享方法、系统、设备及介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN117675829A true CN117675829A (zh) | 2024-03-08 |
Family
ID=90080512
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202311690095.XA Pending CN117675829A (zh) | 2023-12-07 | 2023-12-07 | 资源共享方法、系统、设备及介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117675829A (zh) |
-
2023
- 2023-12-07 CN CN202311690095.XA patent/CN117675829A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Fette et al. | The websocket protocol | |
Fette et al. | Rfc 6455: The websocket protocol | |
RU2580097C2 (ru) | Способ и система для надежного туннелирования протокола по нттр | |
Shelby et al. | The constrained application protocol (CoAP) | |
FI119303B (fi) | Liitettävyys tilatietoisten palomuurien välillä | |
Shelby et al. | RFC 7252: The constrained application protocol (CoAP) | |
Demmer et al. | Delay-tolerant networking tcp convergence-layer protocol | |
US7702917B2 (en) | Data transfer using hyper-text transfer protocol (HTTP) query strings | |
CN112954001B (zh) | 一种http转https双向透明代理的方法和装置 | |
CN109150874B (zh) | 访问认证方法、装置及认证设备 | |
US20070192845A1 (en) | System and method for passively detecting a proxy | |
JP2018528679A (ja) | 負荷平衡システムにおいて接続を確立するデバイス及び方法 | |
JP2012129995A (ja) | コンテンツセントリック・ネットワークにおけるネットワークアドレス変換によるカストディアンルーティング | |
Wendzel et al. | Hidden and under control: A survey and outlook on covert channel-internal control protocols | |
CN110417632B (zh) | 一种网络通信方法、系统及服务器 | |
KR20120067948A (ko) | 콘텐츠 중심 네트워크에서 sip-기반 관리자 라우팅 | |
JP6521762B2 (ja) | Httpサーバとその制御方法、画像形成装置およびプログラム | |
WO2022099683A1 (zh) | 一种数据传输方法、装置、设备、系统及存储介质 | |
Cui | Comparison of IoT application layer protocols | |
CN117675829A (zh) | 资源共享方法、系统、设备及介质 | |
EP3414877B1 (en) | Technique for transport protocol selection and setup of a connection between a client and a server | |
CN107948165B (zh) | 一种基于私有协议的安全送播系统及方法 | |
JP7395615B2 (ja) | データ漏洩防止 | |
CN110798542A (zh) | 一种获取ip地址的方法及系统 | |
CN114448652B (zh) | 进行加密通信的方法、装置、设备和存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |