发明内容
针对相关技术中由于主网络设备与从网络设备之间的地址差异导致用户无法有效进行重新连接的问题,本发明提出了一种代理网络设备的管理方法和系统,能够避免相关技术中用户无法有效进行重新连接网络设备的问题,并且能够避免大量公网地址的占用。
本发明的技术方案是这样实现的:
本发明实施例提供一种代理网络设备的管理方法,应用于包含第一网络设备和从属于第一设备的至少一个第二网络设备的网络,其中,所述第一网络设备用于实现客户端对所述第二网络设备的访问,该管理方法包括:
在所述客户端与所述第一网络设备之间建立第一连接、且所述第一网络设备与所述客户端访问的第二网络设备建立第二连接的情况下,所述第一网络设备将连接信息发送给所述客户端,其中,所述第一连接为基于所述第一网络设备的公网地址的连接,所述第二连接为基于所述第二网络设备的私网地址的连接,所述连接信息中包含所述客户端访问的所述第二网络设备的标识;
所述第一网络设备接收所述第一连接断开后由所述客户端请求重新访问所述第二网络设备时发送的所述连接信息,重新建立所述第一连接,并根据所述连接信息确定所述客户端访问的第二网络设备。
进一步地,上述方法还包括:
在所述客户端侧的端口断开所述第一连接的情况下,释放所述第一连接和所述第二连接。
进一步地,上述方法还包括:
在所述第二连接断开的情况下,释放所述第二连接。
进一步地,上述方法还包括:
在所述第一网络设备接收到来自所述客户端的登录请求报文的情况下,所述第一网络设备将所述客户端对应的连接信息删除。
优选地,在所述客户端与所述第一网络设备之间建立第一连接之前,还包括:
进一步地,在所述客户端与所述第一网络设备之间建立第一连接之前,还包括:所述第一网络设备利用产生的密钥材料计算出第一密钥和第二密钥;所述第一网络设备将所述密钥材料发送给所述客户端,所述客户端利用所述密钥材料计算出所述第一密钥和所述第二密钥,其中,所述第一网络设备利用所述第一密钥对发送给所述客户端的第一数据进行加密,所述客户端利用所述第一密钥对接收到的所述第一数据进行解密;所述客户端利用所述第二密钥对发送给所述第一网络设备的第二数据进行加密,所述第一网络设备利用所述第二密钥发对接收到的所述第二数据进行解密。
其中,所述第一网络设备为BMU设备,所述第二网络设备为BS1C-M设备。
其中,所述连接信息为所述客户端的Cookie信息。
本发明实施例提供一种代理网络设备的管理系统,应用于包含第一网络设备和从属于第一设备的至少一个第二网络设备的网络,其中,所述第一网络设备用于实现客户端对所述第二网络设备的访问,该管理系统包括:
发送模块,用于在所述客户端与所述第一网络设备之间建立第一连接、且所述第一网络设备与所述客户端访问的第二网络设备建立第二连接的情况下,将连接信息发送给所述客户端,其中,所述第一连接为基于所述第一网络设备的公网地址的连接,所述第二连接为基于所述客户端访问的所述第二网络设备的私网地址的连接,所述连接信息中包含所述客户端访问的所述第二网络设备的标识;
确定模块,用于接收所述第一连接断开后由所述客户端请求重新访问所述第二网络设备时发送的所述连接信息,重新建立所述第一连接,并根据所述连接信息确定所述客户端访问的第二网络设备。
进一步地,上述系统还包括:
释放模块,用于在所述客户端侧的端口断开所述第一连接的情况下,释放所述第一连接和所述第二连接,或者,用于在所述第二连接的断开的情况下,释放所述第二连接。
进一步地,上述系统还包括:
处理模块,用于在所述第一网络设备接收到来自所述客户端的登录请求报文的情况下,将所述第一网络设备中所述客户端对应的连接信息删除。
借助于本发明的上述技术方案,通过采用连接信息记录第二网络设备的标识,使得客户端能够在重新连接时确定需要访问的第二网络设备,从而有效解决相关技术中连接断开后客户端无法继续进行访问第二网络设备的问题,避免连接混乱的现象出现,有效提高了代理服务器网络的性能和服务质量;通过上述处理,能够在嵌入式设备中有效实现WEB的代理服务器功能,使得用户能够通过一个公网地址可以访问多个下挂的网元,进而节省公网IP地址资源。
具体实施方式
下面结合附图对本发明进行详细说明。
图1是根据本发明实施例的代理网络设备的管理方法的流程图,该方法应用于包含第一网络设备和从属于第一设备的至少一个第二网络设备的网络,其中,第一网络设备用于实现客户端对第二网络设备的访问,如图1所示,该方法包括以下步骤:
步骤S101,在客户端与第一网络设备之间建立第一连接、且第一网络设备与客户端访问的第二网络设备建立第二连接的情况下,第一网络设备将连接信息发送给客户端,其中,第一连接为基于第一网络设备的公网地址(例如,可以是公网IP地址)的连接,第二连接为基于客户端访问的第二网络设备的私网地址(例如,可以是私网IP地址)的连接,连接信息中包含客户端访问的第二网络设备的标识,该连接信息可以为客户端的Cookie信息,也可以是其他自定义的信息;
步骤S103,第一网络设备接收第一连接断开后由客户端请求重新访问第二网络设备时发送的连接信息,重新建立第一连接,并根据连接信息确定客户端访问的第二网络设备。
借助于上述处理,通过采用连接信息记录第二网络设备的标识,使得客户端能够在重新连接时确定需要访问的第二网络设备,从而有效解决相关技术中连接断开后客户端无法继续进行访问第二网络设备的问题,避免连接混乱的现象出现,有效提高了代理服务器网络的性能和服务质量;并且,通过上述处理,能够在嵌入式设备中有效实现WEB的代理服务器功能,使得用户能够通过一个公网地址可以访问多个下挂的网元,进而大量节省公网IP地址资源。
并且,在客户端侧的端口断开第一连接的情况下,需要释放第一连接和第二连接,但在第二连接的断开的情况下,仅释放第二连接。
如果第一网络设备接收到来自客户端的登录请求报文,第一网络设备会将客户端对应的连接信息删除,以避免多次登录之间彼此出现冲突。
另外,为了保证客户端与第一网络设备之间信息传输的安全性,在客户端与第一网络设备建立连接之前,客户端与第一网络设备可以协商好二者之间的信息传输密钥,具体地,第一网络设备利用产生的密钥材料计算出第一密钥和第二密钥;第一网络设备将密钥材料发送给客户端,客户端利用密钥材料计算出第一密钥和第二密钥,其中,第一网络设备利用第一密钥对发送给客户端的第一数据进行加密,客户端利用第一密钥对接收到的第一数据进行解密;客户端利用第二密钥对发送给第一网络设备的第二数据进行加密,第一网络设备利用第二密钥发对接收到的第二数据进行解密。
例如,由于cookie中的信息存在被第三方监听的隐患,导致系统号、子系统号以及用户名等信息容易泄漏,因此可以将客户端与第一网络设备之间传输的所有数据都加密,具体地,第一网络设备随机产生密钥材料,并根据此密钥材料计算出第一密钥和第二密钥;第一网络设备利用RSA公钥对密钥材料进行加密后发送给客户端,客户端解出该密钥材料,并利用该密钥材料也计算出第一密钥和第二密钥。即,客户端和第一网络设备双方分别计算出两个相同的密钥(即,上述的第一密钥和第二密钥),并利用计算出的密钥进行报文的加密和解密。第一网络设备利用第一密钥对发送给客户端的数据(例如数据1)进行加密,客户端利用第一密钥对加密后的数据进行解密,获取该数据(例如,可以客户端接收到加密后的数据1,利用第一密钥对加密后的数据1进行解密,得到数据1),同样地,客户端利用第二密钥对发送给第一网络设备的数据进行加密(例如数据2),第一网络设备利用第二密钥对加密后的数据进行解密,获取数据(例如,可以第一网络设备接收到加密后的数据2,利用第二密钥对加密后的数据2进行解密,得到数据2)。这样,cookie中的内容以及其他传输的数据将无法被第三方所监听,从而有效保证的数据传输的安全性。
下面对第一密钥和第二密钥的计算方法进行举例说明:
下表1是RSA公钥,该RSA公钥为1024位(128字节);下表2是第一网络设备产生的密钥材料,该密钥材料为48字节;第一网络设备利用RSA公钥对密钥材料进行加密,获得下表3所示的密文,得到的密文同样是48字节的数据,第一网络设备将密文发送给客户端,客户端对密文解密,得到图2b所示的密钥材料;第一网络设备和客户端分别对这48字节的密钥材料进行同样的计算,计算公式如下:
master_secret=MD5(Key_block+SHA(′A′+Key_block+ClientHello.random+ServerHello.random))
其中,Key_block为密钥材料;‘A’为ASCII码的字符A;ClientHello.random为客户端发送的随机字符串,共4字节,本实例中ClientHello.random为584C9821;ServerHello.random为第一网络设备发送的随机字符串,共4字节,本例中ServerHello.random为37 29 B3 10;MD5为采用的随机散列算法,输出16字节的内容;SHA为采用的安全散列算法,输出20字节的内容。
第一网络设备和客户端经过计算均得到的16字节的密钥内容(第一密钥和第二密钥),其中,
第一密钥为C3 F2 F4 97 46 58 3F 6C;
第二密钥为33 29 3F 4C 3F 60 4E 2A。
表1
00000000h |
D7 |
λC |
50 |
AA |
8D |
D6 |
C5 |
AD |
4A |
93 |
59 |
3F |
43 |
3F |
17 |
1A |
00000010h |
36 |
9E |
C4 |
F9 |
C1 |
8A |
CE |
73 |
34 |
3F |
3F |
DC |
6O |
6B |
E1 |
9F |
00000020h |
74 |
2F |
F7 |
EB |
C8 |
B9 |
4D |
A3 |
6O |
5C |
C5 |
F2 |
A8 |
83 |
60 |
3F |
00000030h |
BF |
B8 |
45 |
8C |
8F |
D4 |
BB |
D6 |
DE |
A5 |
42 |
41 |
7A |
7C |
6F |
62 |
00000040h |
18 |
13 |
22 |
65 |
1F |
27 |
43 |
C4 |
CB |
E4 |
AC |
45 |
4A |
5C |
OC |
O3 |
00000050h |
F1 |
4D |
63 |
69 |
E0 |
47 |
EF |
F1 |
O1 |
27 |
33 |
42 |
46 |
10 |
70 |
OE |
00000060h |
B4 |
B1 |
C3 |
63 |
3F |
B1 |
EF |
87 |
8C |
1E |
D6 |
87 |
D1 |
E1 |
3F |
C5 |
00000070h |
E5 |
0D |
OA |
99 |
44 |
BD |
E8 |
D8 |
82 |
3F |
O3 |
O1 |
22 |
45 |
78 |
32 |
表2
00000000h |
3F |
17 |
1A |
36 |
9E |
C4 |
F9 |
C1 |
8A |
CE |
73 |
34 |
3F |
3F |
D0 |
60 |
00000010h |
6B |
E1 |
9F |
74 |
2F |
F7 |
EB |
C8 |
B9 |
4D |
A3 |
60 |
5C |
C5 |
F2 |
A3 |
00000020h |
83 |
60 |
3F |
BF |
38 |
45 |
8C |
8F |
D4 |
BB |
D6 |
DE |
56 |
40 |
39 |
8A |
表3
00000000h |
01 |
FF |
30 |
19 |
06 |
09 |
3A |
86 |
48 |
86 |
F6 |
7D |
07 |
41 |
00 |
04 |
00000010h |
0C |
3O |
OA |
1B |
04 |
56 |
35 |
2E |
30 |
03 |
02 |
04 |
90 |
30 |
0D |
06 |
00000020h |
09 |
2A |
86 |
48 |
86 |
F7 |
OD |
01 |
01 |
05 |
05 |
00 |
03 |
81 |
81 |
00 |
下面结合图2对本发明实施例的处理过程进行详细说明,在以下的描述中,将以IE浏览器作为客户端、以BMU设备作为第一网络设备、以BS1C-M设备作为第二网络设备为例对本发明的方案进行解释。图2是代理服务器网络(例如,可以是WEB代理服务器)与终端连接的示意图。如图2所示,包括IE浏览器、BMU设备、以及该BMU设备下挂的多个BS1C-M设备(例如,N个BS1C-M设备)。
首先对WEB代理的过程进行描述:对BS1C-M设备进行访问时,由于向外所示出的只是BMU设备的公网地址(即,对于客户端侧,所能见到的地址为BMU设备的公网地址),所以通过公网进行WEB访问时,用户通过浏览器首先会登陆到BMU设备上,此时会建立IE浏览器与BMU设备之间的TCP连接(即,对应于上文所述的第一连接)。
在BMU设备网页上,存在有该BMU设备下挂的所有BS1C-M设备的信息,例如,在BMU设备网页上,可以显示为一个导航树,导航树内显示该BMU设备下挂的所有BS1C-M设备,用户可以选择登陆的BS1C-M设备,从而访问某一个家庭的设备。当用户选择(点击)登陆某个BS1C-M设备(例如,BS1C-M 7)时,就会建立BMU设备和BS1C-M7之间的TCP连接(即,对应于上文所述的第二连接),建立该TCP连接的IP地址不是公网的IP,而是局域网的私网IP地址。当有多个用户(例如M个用户)同时访问BMU设备,并通过该BMU设备访问下挂网元时,会建立一种“多对多”的连接关系,即IE设备与BMU设备之间建立N个以公网地址为IP的连接,同时BMU设备和下挂的BS1C-M设备建立N个以私网地址为IP的连接。BMU设备对这种连接存在映射关系,也就是说,一个客户端和BMU设备的TCP连接必然对应着一条从BMU设备到BS1C-M设备的连接,客户端与BS1C-M设备通过这种连接进行数据的传输,即,从这个连接中读取的数据,就被发送到对应的连接上去,而从BS1C-M设备返回的数据,也被转发给相应的客户端。
IE浏览器与BMU设备之间建立TCP连接,用户点击BMU下挂的某个BS1C-M设备发送登陆请求时,BMU设备会将该BS1C-M设备的标识(例如,BS1C-M设备的系统号)返回给IE浏览器,并将该标识保存在cookie中,服务器可以在cookie中设置任何的数据,相同的浏览器在一定的时间内,都将携带cookie数据访问服务器。以BS1C-M设备的系统号作为标识为例,BMU设备可以通过系统号获取到BS1C-M设备的私网IP地址,并且通过该私网IP地址来与BS1C-M设备进行TCP连接,当用户第一次通过导航树登陆BS1C-M设备时,BMU设备就将该BS1C-M设备的系统号写入到cookie中,并且发送给IE浏览器,如果IE浏览器与BMU设备之间的TCP连接自动断开,并重新建立TCP连接,IE浏览器就会在cookie中将该BS1C-M设备的系统号发送给BMU设备,BMU设备会确定该系统号对应的BS1C-M设备,这样,BMU设备每次通过对cookie中的数据进行判断,就可以知道当前的连接的BS1C-M设备。
图3示出了根据本发明实施例的代理网络设备的管理方法的详细处理流程。如图3所示,具体包括以下处理过程:
步骤S301,当BMU设备的代理进程接受到新来的报文后,分析是否是登陆的请求报文(也可以判断是否是登陆页面),如果是登陆的请求报文,则执行步骤S302,否则执行步骤S306;
步骤S302,将原来的cookie删除,从而避免原来的cookie数据影响当前的登陆,并执行步骤S303;
步骤S303,判断本地连接是否建立,如果已经建立,则执行步骤S305,否则执行步骤S304;
步骤S304,建立本地连接,并执行步骤S305;
步骤S305,将数据传递到本地连接,处理结束;
步骤S306,判断本次操作是否是新的登陆操作,如果不是新的登陆的操作,则说明这个数据是已经建立的连接进行转接的数据了,也就是说,在本步骤中,可以对接收的数据进行解析,解析后会出现如下的两种情况:情况一,如果确定本次是首次登陆,则在URL中有系统号,执行步骤S307;情况二,如果确定本次不是首次登陆,即,之前已经登陆成功,则在cookie中有系统号,并执行步骤S308;
步骤S307,读取ULR内的系统号,并执行步骤S309;其中,如果传输的数据的URL中有SystemId(系统号)=××:则说明此数据是新登陆一个下挂设备的请求;
步骤S308,读取cookie中的系统号,并执行步骤S309;其中,如果传输的数据中的Cookie中有SystemId(系统号)=××;的数据:则说明此数据已连接到某一下挂网元。
步骤S309,由系统号得到私网IP地址,并执行步骤S310;
也就是说,通过执行步骤S307和步骤S308,
步骤S310,判断是否已与此IP地址建立连接,如果判断为是,则执行步骤S312,否则执行步骤S311;
步骤S311,建立与此IP的连接,并执行步骤S312;
步骤S312,将数据传递到该连接,处理结束。
通过执行步骤S307至步骤S312,就能够通过读取下挂设备的系统号,获取设备的私网地址,然后遍历查询该IE端的连接中是否有此连接,如果存在该连接,则直接透传数据;如果没有,则建立此连接;最后将数据传递到此设备上。
并且,在执行步骤S307的情况下,可以进一步将新登陆的系统号写入到IE的cookie之中,便于下一次的设备数据转发。
此外,在本发明的实现过程中,对于端口连接的处理过程如下:如果是客户端(IE侧)端口的连接断开,则将整个连接释放,清空结构体的数据。如果是某一网元连接断开,只将其对应的连接的释放,而保留整个的客户端连接关系,即,如果某个BS1C-M设备与BMU设备之间的连接断开,则仅释放该连接,而对于其他连接(包括客户端与BMU设备之间的连接以及BMU设备与其他BS1C-M设备之间的连接)仍旧保持。
也就是说,BMU设备的连接关系始终存在,只有等到IE侧释放后,才释放。
此外,对于上行传递的数据,即从IE传输到BS1C-M设备的数据,如果希望成功完成传输,一定需要有对应的连接存在,不需要判定是否要新建连接。所以找到对应的连接直接采用透传进行数据传递,直接转发给IE即可。
通过上述处理,能够在嵌入式设备中有效实现WEB的代理服务器功能,通过一个公网地址可以访问多个其下挂的网元,能够大量节省公网IP;同时,由于使用了安全网页技术(对cookie和传输数据进行加密),使由于使用cookie而带来的安全风险降到了最低点。例如,在上述BMU设备和BS1C-M设备组成的代理网络中,不需要为每一个PICO系统再配置额外的WEB代理服务器,同时使远程访问PICO设备的下挂网元成为了可能,节省了大量的公网地址。并且,对于BMU设备和BS1C-M设备以外的其他设备组成的代理网络,本发明的上述处理同样能够达到类似的效果。
图4是根据本发明实施例的代理网络设备的管理系统的结构框图,该管理系统应用于包含第一网络设备和从属于第一设备的至少一个第二网络设备的网络,其中,第一网络设备用于实现客户端对第二网络设备的访问,如图4所示,代理网络设备的管理系统包括:
发送模块41,用于在客户端与第一网络设备之间建立第一连接、且第一网络设备与客户端访问的第二网络设备建立第二连接的情况下,将连接信息发送给客户端,其中,第一连接为基于第一网络设备的公网地址的连接,第二连接为基于客户端访问的第二网络设备的私网地址的连接,连接信息中包含客户端访问的第二网络设备的标识;
确定模块42,用于接收第一连接断开后由客户端请求重新访问第二网络设备时发送的连接信息,重新建立第一连接,并根据连接信息确定客户端访问的第二网络设备。
进一步地,上述系统还包括释放模块和处理模块:
释放模块(图中未示出),用于在客户端侧的端口断开第一连接的情况下,释放第一连接和第二连接,或者,用于在第二连接的断开的情况下,释放该第二连接。
处理模块(图中未示出),用于在第一网络设备接收到来自客户端的登录请求报文的情况下,将第一网络设备中客户端对应的连接信息删除。
根据本发明实施例的上述系统可以在代理服务器网络中单独设置,也可以将上述系统的部分或全部模块集成在第一网络设备中,该系统的具体功能以及所执行的处理过程已经在之前进行了详细描述,这里不再重复。
综上所述,借助于本发明的上述技术方案,借助于上述处理,通过采用连接信息记录第二网络设备的标识,使得客户端能够在重新连接时确定需要访问的第二网络设备,从而有效解决相关技术中连接断开后客户端无法继续进行访问第二网络设备的问题,避免连接混乱的现象出现,有效提高了代理服务器网络的性能和服务质量;通过上述处理,能够在嵌入式设备中有效实现WEB的代理服务器功能,使得用户能够通过一个公网地址可以访问多个下挂的网元,进而大量节省公网IP地址资源;此外,通过引入安全网页技术(对cookie和传输数据进行加密),能够使由于使用cookie而带来的安全风险降到了最低点,提高了系统的安全性。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。