使用哈希函数来分发网络标识的制作方法

文档序号:7991207阅读:223来源:国知局
使用哈希函数来分发网络标识的制作方法
【专利摘要】用于从通信系统的第一节点向第二节点分发涉及网络集合的信息的方法和通信系统,其中属于该网络集合的相应网络的标识集合被存储在第一节点处。在第一节点处通过使用哈希函数产生针对该标识集合中的标识的哈希值。从第一节点向第二节点发送所产生的哈希值。第二节点确定可用于与第二节点通信的特定网络的标识。第二节点通过使用该哈希函数产生针对该特定网络的该标识的哈希值。然后第二节点将在第二节点处产生的该特定网络的该标识的所述哈希值与在第二节点处从第一节点接收的哈希值进行比较,从而确定该特定网络是否属于所述网络集合。
【专利说明】使用哈希函数来分发网络标识
【技术领域】
[0001]本发明涉及分发信息。具体地,本发明涉及从通信系统的第一节点向第二节点分发涉及网络集合的信息。
【背景技术】
[0002]设备可能能够连接到大量不同的网络,从而允许设备的用户访问网络。这样的网络可以是局域网(LAN)或广域网(WAN)。网络可以是有线的或无线的。网络可以允许设备与诸如因特网之类的其它网络通信。在网络是无线网络的情况下,设备可以经由诸如WiFi连接之类的无线连接与网络通信。可以使用无线连接(比如WiFi连接)的范围是有限的(例如限制到约10-100m)。因此,不同的无线网络在不同时刻可用于与设备的通信,这取决于该设备的位置。因此,如果设备是移动设备,则当设备被移动时,范围内的可用于与该设备的通信的无线网络将发生改变。
[0003]可用于与设备(或“用户终端”)通信的网络可能由该设备的用户之外的某人所有。在这种情况下,只有当设备用户参与到与网络所有者的认证过程时,该设备才可以被允许连接到该网络。例如,可以在诸如购物中心、旅馆、火车站、机场或咖啡店之类的公共场所提供到WiFi网络的连接,并且可以为遵守与WiFi网络所有者的认证过程的设备提供对该WiFi网络的访问。然而,在认证过程中所需要的步骤可能会阻碍一些用户访问该WiFi网络,因为这通常牵涉耗时的签约手续。
[0004]“Skype Access”是解决上文中描述的与用于允许访问WiFi网络的认证过程相关联的一些问题的系统。设备的用户可以是通信系统(比如Skype?通信系统)的一部分,并且同样可以在该通信系统中具有预授权。在诸如“Skype Access”系统之类的系统情况下,在该通信系统中用户的预授权可以在WiFi网络所有者已经同意确认由该通信系统提供的预授权的情况下被用于允许对该WiFi网络的访问。
[0005]诸如“Skype Access”系统之类的授权系统需要通信系统的运营商和WiFi网络的运营商之间的协作,以便通过使用在该通信系统中用户的预授权来许可对该WiFi网络的访问。通信系统维护可以根据授权系统(例如“Skype Access”)使用的网络(“受支持网络”)集合的列表。该列表被存储在通信系统的服务器上(或多个服务器上)。该列表可以是网络集合的标识(比如服务集标识(SSID))列表。目前Skype Access系统可以与全世界范围内的几十万个WiFi热点一起使用,但是这个数目在未来很可能增长。
[0006]为了便于设备确定特定网络是否可以由特定用户访问,设备可以例如通过使用域名系统(DNS)协议询问通信系统的服务器,该服务器将检查特定网络是否在受支持网络的列表中,从而检查该特定网络受支持与否。如果用户在该通信系统中可以使用预授权以便访问网络,则该网络是“受支持网络”。然而,这种检查仅仅可以在该设备已连接到如下网络后执行:该网络允许DNS询问被发送到通信系统的服务器上(可以或可以不支持该网络与通信系统的授权系统一起使用)。这呈现出问题,因为用户将仅在特定网络已连接之后才发现不支持该特定网络与该通信系统的授权系统一起使用。这对于用户来说可能不便并且可能浪费用户的时间。

【发明内容】

[0007]为了克服上文中描述的关于用户仅在特定网络已连接之后才发现不支持该特定网络与通信系统的授权系统一起使用这一问题,可以将受支持的网络集合的标识列表从通信系统的服务器发送到设备。该列表可以在设备尝试连接到网络之前被发送到该设备并且可以被存储于该设备以便于随后的使用。这样,受支持以用于与通信系统的授权系统一起使用的无线网络的SSID可以被提供给设备并且在设备处被存储。
[0008]本发明人已经意识到分发受支持网络的实际SSID并非空间有效的(即它需要比必需的更多的带宽和存储空间)并且还允许第三方看见哪些网络受支持。向第三方精确示出哪些网络受支持可能并不理想。因此本文提供了一种方法和系统用于以紧凑的形式分发涉及受支持无线网络的信息,同时不向第三方透露受支持网络的SSID。
[0009]根据本发明的第一方面,提供了一种从通信系统的第一节点向第二节点分发涉及网络集合的信息的方法,其中属于该网络集合的相应网络的标识集合被存储在第一节点处,该方法包括:在第一节点处通过使用哈希函数产生针对该标识集合中的标识的哈希值;将所产生的哈希值从第一节点发送到第二节点;第二节点确定可用于与第二节点通信的特定网络的标识;在第二节点处通过使用所述哈希函数产生针对该特定网络的该标识的哈希值;以及在第二节点处将在第二节点处产生的该特定网络的标识的哈希值与在第二节点处从第一节点接收的哈希值进行比较,从而确定该特定网络是否属于所述网络集合。
[0010]在一些实施例中,该方法进一步包括如果确定该特定网络属于所述网络集合,第二节点连接到该特定网络。在其它实施例中,该方法进一步包括,如果确定该特定网络属于所述网络集合,在第二节点处向第二节点的用户显示该网络集合的列表。在这些其它实施例中,用户可以选择使用网络管理软件或其它合适的功能性来访问该网络。
[0011]根据本发明的第二方面,提供了一种用于分发涉及网络集合的信息的通信系统,该通信系统包括第一节点和第二节点,其中第一节点包括:存储装置,其用于存储属于网络集合的相应网络的标识集合;第一产生装置,其用于通过使用哈希函数产生针对该标识集合中的标识的哈希值;以及发送装置,其用于将所产生的哈希值发送到第二节点;并且其中第二节点包括:接收装置,其用于接收从第一节点发送的哈希值;确定装置,其用于确定可用于与第二节点通信的特定网络的标识;第二产生装置,其用于通过使用所述哈希函数产生针对该特定网络的该标识的哈希值;以及比较装置,其用于将第二产生装置产生的该特定网络的标识的哈希值与在接收装置处从第一节点接收的哈希值进行比较,从而确定该特定网络是否属于所述网络集合。
[0012]从第一节点发送哈希值而不是网络集合(或“群组”)的SSID。在优选实施例中哈希值的尺寸小于标识的平均尺寸。例如,哈希值的尺寸可以是或者4个字节或者8个字节。哈希值的“尺寸”指的是构成该哈希值的数据量(例如比特或字节数)。有利地,这意味着在优选实施例中,以比分发SSID完整列表更加有效的方式执行从第一节点到第二节点的网络信息分发。此外,完成分发无需向第三方提供网络集合的SSID完整列表。
[0013]在优选实施例中,网络集合是允许第二节点与之连接(例如通过使用通信系统的授权系统)的受支持网络的集合。然而,在一些其它实施例中,上文描述的方法和系统不与通信系统的授权系统(例如Skype Access)结合来实现。在这些其它实施例中,网络集合中的网络可以以一些其它方式彼此相关,例如,网络集合中的网络可以彼此相关的原因在于它们全部由相同实体所有,或者在于它们全部使用相同的通信协议,再或者在于它们全部共享某一其它性质,该性质可以在第二节点与来自该网络集合的网络通信时与之有关。然而,在所有实施例中,第二节点可以使用从第一节点接收的哈希值来确定可用于与第二节点通信的特定网络是否属于所述网络集合。
[0014]在优选实施例中,第一节点是通信系统中的服务器并且第二节点是通信系统中的用户终端。第二节点可以包括通信客户端,该通信客户端当在第二节点处运行时被配置成充当所述确定装置、所述第二产生装置和所述比较装置。
[0015]在一些实施例中,标识集合中的一个或多个标识是部分标识。如果特定网络的哈希值与在第二节点处从第一节点接收的任何哈希值都不匹配,则第二节点可以从该特定网络的标识(例如从该标识的末尾)移除字符,并且之后重复以下步骤(i)在第二节点处通过使用所述哈希函数产生针对该特定网络的标识的哈希值并且(ii)将在第二节点处产生的该特定网络的标识的哈希值与在第二节点处从第一节点接收的哈希值进行比较,从而确定该特定网络是否属于所述网络集合。然后重复该过程,直到标识的长度变得短到不能可靠地匹配来自标识集合的标识时为止(例如标识的长度变得少于四个字符)。这在计算上非常可行,并且提供了一种用于分发受支持网络列表的可用方法,该方法无需透露受支持网络名称的完整列表,同时保持搜索部分匹配的能力。
[0016]可以存在多个可用于与第二节点通信的网络,并且可以对于每一个这样的网络重复该方法。在优选实施例中,网络是无线网络。
[0017]根据本发明的第三方面,提供了一种从通信系统的第一节点向第二节点分发涉及网络集合的信息的方法,其中在第一节点处存储属于该网络集合的相应网络的标识集合,该方法包括:在第一节点处通过使用哈希函数产生针对该标识集合中的标识的哈希值;以及从第一节点向第二节点发送所产生的哈希值,从而允许第二节点通过将该特定网络的标识的哈希值与从第一节点发送的哈希值进行比较来确定可用于与第二节点通信的特定网络是否属于所述网络集合。
[0018]根据本发明的第四方面,提供了一种包括计算机可读指令的计算机程序产品,该计算机可读指令由在通信系统的第一节点处的计算机处理装置运行,用于从通信系统的第一节点向第二节点分发涉及网络集合的信息,该指令包括用于实行根据本发明第三方面的方法的指令。
[0019]根据本发明的第五方面,提供了一种通信系统的节点,其用于向该通信系统的另一节点分发涉及网络集合的信息,所述节点包括:存储装置,其用于存储属于该网络集合的相应网络的标识集合;产生装置,其用于通过使用哈希函数产生针对该标识集合中的标识的哈希值;以及发送装置,其用于将所产生的哈希值发送到该另一节点,从而允许该另一节点通过将特定网络的标识的哈希值与从所述节点发送的哈希值进行比较来确定可用于与该另一节点通信的该特定网络是否属于所述网络集合。
[0020]根据本发明的第六方面,提供了一种处理涉及网络集合的信息的方法,该方法包括:在通信系统的第二节点处从第一节点接收针对属于该网络集合的网络的标识的哈希值,通过使用哈希函数产生所述哈希值;第二节点确定可用于与第二节点通信的特定网络的标识;在第二节点处通过使用所述哈希函数产生针对该特定网络的标识的哈希值;以及在第二节点处将在第二节点处产生的该特定网络的标识的哈希值与在第二节点处从第一节点接收的哈希值进行比较,从而确定该特定网络是否属于所述网络集合。
[0021]根据本发明的第七方面,提供了一种包括计算机可读指令的计算机程序产品,该计算机可读指令由在通信系统的第二节点处的计算机处理装置运行,用于处理涉及网络集合的信息,该指令包括用于实行根据本发明第六方面的方法的指令。
[0022]根据本发明的第八方面,提供了一种用于处理涉及网络集合的信息的通信系统的节点,该节点包括:接收装置,其用于从该通信系统的另一节点接收针对属于该网络集合的网络的标识的哈希值,通过使用哈希函数产生所述哈希值;确定装置,其用于确定可用于与该节点通信的特定网络的标识;产生装置,其用于通过使用所述哈希函数产生针对该特定网络的该标识的哈希值;以及比较装置,其用于将产生装置产生的该特定网络的标识的哈希值与在接收装置处从该另一节点接收的哈希值进行比较,从而确定该特定网络是否属于所述网络集合。
【专利附图】

【附图说明】
[0023]为了较好地理解本发明并且示出可以如何付诸实施,将以示例的方式参考下面的附图,其中:
图1A示出根据优选实施例的通信系统;
图1B示出根据优选实施例的通信系统和网络;
图2示出根据优选实施例的用户终端;
图3是根据优选实施例从服务器向用户终端分发涉及网络的信息的过程的流程图;以

图4是根据优选实施例找到匹配部分标识的过程的流程图。
【具体实施方式】
[0024]现在将仅仅以示例的方式描述本发明的优选实施例。
[0025]图1示出包括具有相关联的第一用户终端104的第一用户(“用户A”)102和服务器112的通信系统。用户终端104能够通过该通信系统的链路106与服务器112通信。在优选实施例中该通信系统是基于分组的P2P通信系统,但是还可以使用其它类型的通信系统,比如非P2P、VoIP或頂系统。用户终端104例如可以是移动电话、个人数字助理(“PDA”)、个人计算机(“PC”)(包含例如Windows?、Mac OS?和Linux? PC)、游戏设备或其它能够连接到该通信系统并且当链路106可用时能够与服务器112通信的嵌入式设备。用户终端104被设置用来从用户终端104的用户102接收信息并且向其输出信息。在本发明的优选实施例中,用户终端104包括诸如屏幕之类的显示器和诸如小键盘(keypad)、触摸屏、操纵杆、键盘和/或鼠标之类的输入设备。用户终端104具有用于通过链路106通信的网络接口。链路106可以是有线或无线链路。例如,链路106可以是通过因特网的链路,从而允许用户终端104通过因特网与服务器112通信。
[0026]应当指出在可替换的实施例中,用户终端104可以经由额外的中间网络连接到链路106。例如,如果用户终端104是移动设备,则它可能能够经由蜂窝移动网络(例如GSM或UMTS网络)连接到链路106。
[0027]用户终端104运行由与该通信系统相关联的软件提供者提供的通信客户端108。通信客户端108是运行在用户终端104中的本地处理器上的软件程序。客户端108执行在用户终端104处所需要的处理,以便用户终端104通过该通信系统(例如在链路106上)发送和接收数据。正如本领域中已知的,客户端108可以通过展示数字证书被认证以通过该通信系统通信(例如来证明用户A 102是该通信系统的真实订户,这在WO 2005/009019中有更加详细的描述)。
[0028]图2图示了其上运行客户端108的用户终端104的详细视图。用户终端104包括中央处理单元(“CPU”)202和与之连接的诸如屏幕之类的显示器204、诸如小键盘(或键盘)206之类的输入设备和诸如操纵杆208之类的定标设备。显示器204可以包括用于向CPU202输入数据的触摸屏。输出音频设备210 (例如扬声器)和输入音频设备212 (例如麦克风)连接到CPU 202。显示器204、小键盘206、操纵杆208、输出音频设备210和输入音频设备212被集成在用户终端104中。在可替换的用户终端中,显示器204、小键盘206、操纵杆208、输出音频设备210和输入音频设备212中的一个或多个可以不被集成到用户终端104中,而是可以经由相应的接口被连接到CPU 202。这样的接口的一个示例是USB接口。CPU 202被连接到网络接口 110,该网络接口 110例如可以是用于通过链路106通信的调制解调器。网络接口 110可以被集成在用户终端104中,如图2所示。在可替换的用户终端中,网络接口 110没有被集成在用户终端104中。用户终端104还包括用于存储数据的存储器226,正如本领域中已知的。
[0029]图2还图示了运行在CPU 202上的操作系统(“0S”)214。运行在OS 214顶部的是用于客户端108的软件栈216。该软件栈示出客户端协议层218、客户端引擎层220和客户端用户接口层(“Π”)222。每层负责明确的功能。因为每层通常与其它两层通信,它们被看作是被设置在栈中,如图2所示。操作系统214管理计算机的硬件资源并且处理经由网络接口 110被发送到链路106和从链路106发来的数据。客户端软件的客户端协议层218与操作系统214通信并且管理该通信系统上的连接。需要较高级别处理的进程被传递到客户端引擎层220。客户端引擎220还与客户端用户接口层222通信。客户端引擎220可以被设置用来控制客户端用户接口层222以经由该客户端的用户接口向用户102呈现信息并且经由该用户接口从用户102接收信息。
[0030]服务器112包含用于存储数据的数据库(或“存储装置”)114。服务器112还包含用于处理数据的CPU 116。服务器112具有用于通过链路106与用户终端104通信的网络接口 118。服务器(其可以是服务器112,但是更加有可能是该通信系统中的另一服务器)为该通信系统中的用户终端112提供通信服务。例如,该服务器可以便于通话建立并且为该通信系统上的用户终端104处理通话,并且/或者可以存储涉及用户102或用户终端104的关于该通信系统的数据(例如用户102在该通信系统中的联系人列表)。本领域技术人员将会了解服务器可以执行的便于用户102参与该通信系统的许多不同的功能。
[0031]图1B示出在第二种情形中的用户终端104,其中用户终端104能够经由接入点122 (在链路124上)或经由接入点126 (在链路128上)连接到网络120。接入点122表示其中用户终端104可以例如通过链路124通信的第一无线网络。类似地,接入点124表示其中用户终端104可以例如通过链路128通信的第二无线网络。链路124和128是诸如WiFi链路之类的无线链路。通过与接入点122或126通信,用户终端104能够访问网络120。网络120例如可以是因特网。可以存在比图1B中示出的两个更多或更少的接入点(并且因此存在更多或更少的无线网络),用户终端104能够与这些接入点通信,从而访问网络120。
[0032]在本文所描述的优选实施例中,接入点122和126可以位于诸如机场、咖啡店、火车站或购物中心之类的公共场所中。
[0033]正如上文所描述的,用于为用户102提供授权来访问与接入点122相关联的无线网络(或与接入点126相关联的无线网络)的授权系统(比如Skype Access系统)可以是有利的。
[0034]目前并非支持所有无线网络与SkypeAccess系统一起使用。知晓支持哪些网络与Skype Access系统(或其它类似的授权系统)一起使用是必要的。因此,通信系统的服务器112存储通过使用用户102在该通信系统中的授权来支持该授权系统的网络的标识(例如服务集标识SSID)列表。这些网络可以被称为“受支持网络”。其它不受支持的网络的SSID不在该标识列表中。仅支持该受支持网络集合中的网络与该通信系统的授权系统一起使用。
[0035]然而,正如上文所描述的,如果仅在服务器112处存储受支持网络的列表,那么为了用户终端确定他能够(例如经由接入点122)连接到的特定网络(而且是目前他能够连接到的唯一网络)是否是受支持网络,他必须连接到该网络,以便询问服务器112。如果该网络不是受支持网络,那么这显然是成问题的,因为这个事实只有在用户终端104已经连接到该网络之后才在用户终端104处被确定。
[0036]为了克服这个问题,应该在用户终端104本身呈现受支持SSID的列表(例如以便由客户端108来使用)。这意味着当用户终端104确定与接入点122相关联的无线网络可用于与用户终端104的通信(例如因为接入点122已经进入与用户终端104无线通信的范围内)时,用户终端104能够确定该无线网络是否是受支持网络,而无需联系服务器112并且无需连接到接入点122。
[0037]参考图3和4在下文中描述了用于从服务器112向用户终端104分发涉及该受支持网络集合的信息的方法。
[0038]在步骤S302中,SSID的集合被存储在服务器112的数据库114,其中该SSID的集合标识受支持网络的集合(即用户终端104基于由用户102对该通信系统的账户提供的授权可能能够连接到的那些网络)。该SSID的集合可以被存储在该通信系统的多于一个的服务器中。该SSID的集合标识受支持网络。该SSID典型地是由相对应的网络的运营商定义的字符串。
[0039]在步骤S304中,服务器112的CPU 116产生针对在步骤S302中被存储在数据库114中的受支持网络的SSID的哈希值。可以在步骤S304中使用任何合适的哈希函数来产生哈希值。例如,可以使用MD5摘要函数,并且可以取MD5摘要函数结果的前八个字节来用作哈希值。可替换地,可以取MD5摘要函数结果的前四个字节来用作哈希值。可替换地,可以在仅需保证该哈希结果的充分唯一性的条件下使用更少、更多或不同的字节。步骤S304的结果是针对受支持网络的SSID的哈希值列表。该哈希值是由SSID值计算得到的单向哈希值。
[0040]在步骤S306中,在步骤S304中产生的哈希值从服务器112被发送到用户终端104(并且还被发送到该通信系统中的其它用户终端,为了清楚起见,在图中未示出这些用户终端)。这样,将该哈希值从服务器112分发到用户终端104。每当用户终端104 (并且具体地客户端108)被连接到该通信系统(例如经由因特网)时,哈希值的这种分发可以通过任何合适的通信信道(例如链路106)发生。每当对受支持网络的集合做出改变时可以更新哈希值列表,并且每当用户终端104被连接到该通信系统时,对哈希值的这些更新可以被发送到用户终端104。
[0041]在步骤S308中,在步骤S306中从服务器112接收的哈希值被存储在用户终端104的存储器226中。这样客户端108可以从用户终端104的本地存储器226访问受支持网络的SSID的哈希值列表,从而使得客户端108无需联系服务器112来访问哈希值列表。从这个意义上说,通过在用户终端104处存储哈希值,可以在步骤S306中从服务器112接收哈希值之后的任何时刻使用该哈希值。例如,尽管需要与服务器112的连接来用于在步骤S306中将哈希值从服务器112发送到用户终端104,但在一些后续时刻不需要与服务器112的连接来在用户终端104处使用哈希值,因为该哈希值在步骤S308中被存储在用户终端104。
[0042]发送和存储哈希值要比发送和存储受支持网络集合的实际SSID更高效。这是因为SSID的平均尺寸大于哈希值的尺寸。这里使用的术语“尺寸”意味着表示SSID或哈希值所需要的数据量。例如,平均SSID长度超过11个字符,而在优选实施例中的哈希值相对短。由于受支持网络的集合目前相对较小(相比于受支持和不受支持两者的现有网络的总数),最大程度可能足够的是具有4个字节的哈希值,但为了可靠地假设每个哈希值将是独一无二的,具有8个字节的哈希值是非常好的。然而,可以使用其它尺寸的哈希值。例如,目前存在几十万个在Skype Access系统下受支持的网络,但是这个数字很可能增加。
[0043]在步骤S310中(该步骤可以发生在步骤S308之后的某一时刻),用户终端104 (具体地,客户端108)确定可用于与用户终端104通信的网络的SSID。例如,任何在与用户终端104无线通信的范围内的无线网络都可以被看作可用于与用户终端104通信。在图1B中示出这种情形。在该示例中,如图1B所示,用户终端104能够与和相应的两个接入点122和126相关联的两个无线网络通信。在其它示例中,用户终端104可能能够与更多或更少的网络通信。当客户端108在用户终端104被启动并且发现它没有网络连接但是在某范围内存在无线网络(例如与接入点122和126相关联的无线网络)时,可以启动步骤S310。还可以通过用户102发指令给客户端108寻找可用网络来启动步骤S310。还可以当用户终端104移动到接入点的范围内时启动步骤S310。
[0044]为了确定与接入点122和126相关联的网络的SSID,用户终端104与接入点通信或者侦听接入点122和126用于它们广播它们的SSID的通信频率。本领域技术人员将认识到用户终端104如何能够通过与接入点122和126通信来确定无线网络的SSID。然后用户终端104应当在可能继续连接到接入点122或126中的一个之前确定是否支持无线网络与该通信系统的授权系统(例如Skype Access系统)一起使用。
[0045]在步骤S312中,用户终端104 (具体地,客户端108)产生针对在步骤S310中确定的SSID的哈希值。步骤S312中产生的哈希值是通过使用与在步骤S304中当产生针对受支持网络的哈希值时所使用的哈希函数相同的哈希函数来产生的。
[0046]在步骤S314中,用户终端104 (具体地,客户端108)将在步骤S312中产生的哈希值与在步骤S308中被存储在用户终端104的存储器226中的哈希值做比较。可以非常简单地实现在步骤S314中执行的比较,因为该结果是“匹配”或“不匹配”。在步骤S314中的比较不需要提供任何关于如果哈希值不精确匹配、它们如何接近地彼此对应的进一步信息。步骤S316示出确定在步骤S314中的比较是否找到匹配。例如,在只有接入点122可用于与用户终端104通信的情况下,则步骤S314的比较包括确定在步骤S312中针对与接入点122相关联的无线网络的SSID产生的哈希值是否与在步骤S308中被存储在用户终端104的任何哈希值匹配。
[0047]如果与接入点122和126相关联的网络的SSID的哈希值的比较确实与在步骤S308中被存储在用户终端104的哈希值之一匹配,则确定该网络在该通信系统的授权系统(例如Skype Access系统)下是受支持的网络。换言之,确定该网络属于其SSID被存储在服务器112的网络的集合。这在没有从服务器112向用户终端104提供实际的SSID(而是提供了 SSID的哈希值)时就已经被确定并且无需用户终端104连接到服务器112来执行该确定。这提供了一种用于从服务器112向用户终端104分发涉及网络集合的信息的有利系统。这样有利是因为哈希值小于SSID,从而使得相比于发送和存储SSID本身对带宽和存储容量的需求更小。此外,由于要向用户终端104提供哈希值而不是SSID,该方法不向第三方提供受支持网络的SSID完整列表。这样,上文所描述的用于分发涉及网络集合的信息的方法和系统比发送SSID更加安全。
[0048]在图3中示出的优选实施例中,当确定与接入点122和126中的至少一个相关联的网络是受支持网络中的一个时,该方法跳到步骤S318,其中用户终端104连接到那些网络中的一个,从而连接到网络120。可以响应于在步骤S316中对与接入点122和126中的一个相关联的网络是受支持网络的确定,自动地执行到网络120的该连接。可替换地,响应于在步骤S316中对与接入点122和126中的一个相关联的网络是受支持网络的确定,客户端108可以经由客户端108的用户接口提问用户102他是否想要连接到网络120。在受支持网络列表中有多于一个网络的情况下,客户端108可以经由客户端108的用户接口提问用户102他想要选择连接到这些网络中的哪一个(例如与接入点122相关联的网络或者与接入点126相关联的网络)。如果用户102同意访问网络120,则他能够通过在客户端108的用户接口中选择适当的控制来将指示传达给客户端108,并且然后客户端108将继续经由适当的接入点连接到网络120。然而,用户102可以决定他不想要访问网络120,然后他能够通过在客户端108的用户接口中选择另外的适当控制来将指示传达给客户端108,并且然后客户端108将不继续连接到网络120。
[0049]作为对步骤S318的替换,当确定与接入点122和126中的至少一个相关联的网络是受支持网络中的一个时,代替连接到网络120,客户端108可以经由客户端108的用户接口向用户102显示可用的受支持网络列表。然后用户102可以决定是否在之后的某一时间点连接到可用的受支持网络中的一个。
[0050]可以针对所有可用的无线网络重复本文所描述的方法。
[0051]然而,如果在步骤S316后确定在步骤S312中产生的哈希值与在步骤S308中被存储在用户终端的任何哈希值都不匹配,则在步骤S320中确定是否检查部分SSID匹配。如果用户终端104没有实现部分SSID匹配,则该方法跳到步骤S322,这里该方法结束。在该情境下,不存在用户终端104可以连接到那些受支持网络的可用网络。这样在该通信系统中的用户授权不能够被用于将用户终端104连接到网络。[0052]然而,如果用户终端104确实实现了部分SSID匹配,则该方法从步骤S320跳到在图4中示出的步骤S402。一些实施例总是可以实现部分SSID匹配的检查,这样,该方法可以直接从步骤S316跳到步骤S324而无需步骤S320的决定过程。在这些实施例中,对匹配SSID的搜索可以遍及所有可用SSID,下至每个SSID中字符的最小合理数目。
[0053]该通信系统的授权系统(例如Skype Access系统)可以允许在服务器端定义要与许多单独的SSID值匹配的部分SSID值。例如,部分SSID值“F0N_”匹配于“F0N_12345”和“F0N_0FFICE”,但是不匹配于“F0NETIC”。通过做较长的搜索可以找到部分SSID匹配。这种搜索在计算上是可行的,因为可用于在任何给定时刻与用户终端104通信的不同无线网络的数目通常小而非常有限。例如,在给定时刻可用于与用户终端104通信的不同无线网络的数目通常在O到10的范围内。在该示例中,如图1B所示,存在可用于与用户终端104通信的两个无线网络(与接入点122和126相关联的网络)。
[0054]该方法因在图3所示方法中没有找到哈希值的精确匹配而已经跳到步骤S402。在步骤S404中变量i被设为零。然后,在步骤S406中从(在步骤S310中确定的)第i个可用网络的SSID值移除最后的字符。然后该方法执行产生(步骤S408)针对新SSID的哈希值的步骤并且将新的哈希值与在步骤S308中被存储在用户终端104中的哈希值做比较(步骤S410)。步骤S408和S410相当于上文描述的步骤S312和S314。
[0055]如果在步骤S412中确定新的哈希值与受支持网络的哈希值中的一个确实匹配,则确定由该哈希值标识的无线网络属于受支持网络的集合。在这种情况下该方法可以跳到步骤S414,该步骤相当于上文描述的步骤S318,其中用户终端104连接到网络120。正如上文所描述的,客户端108在步骤S414中实际连接到网络120之前可以提问用户102他是否想要访问网络120。此外,正如上文所描述的,作为步骤S414的替换,当确定与接入点122和126中的至少一个相关联的网络是受支持网络中的一个时,代替连接到网络120,客户端108可以经由客户端108的用户接口向用户102显示可用的受支持网络列表。然后用户102可以决定是否在之后的某一时间点连接到可用的受支持网络中的一个。
[0056]然而,如果在步骤S412中确定新的哈希值与在步骤S308中被存储在用户终端的任何哈希值都不匹配,则该方法跳到步骤S416,在该步骤中确定在第i个可用网络的SSID中是否剩余多于个字符。如果在第i个可用网络的SSID中剩余字符多于个,则该方法直接跳到步骤S420。然而,如果在第i个可用网络的SSID中剩余字符不多于个,则该方法跳到步骤S418。在步骤S418中i的值加I。该方法从步骤S418跳到步骤S420。η的值指示可靠匹配所需的最小字符数。例如,/7可以是四。在其它示例中可以大于或小于四。
[0057]在步骤S420中确定i是否小于在步骤S310中确定的可用网络的数目。如果i不小于在步骤S310中确定的可用网络的数目,则该方法跳到步骤S422,这里该方法结束。在这种情形下该方法已经搜索针对在步骤S310中确定的所有SSID的所有部分匹配并且未找到匹配。然而,如果i小于在步骤S310中确定的可用网络的数目,则仍然存在至少一个可用网络的至少一个部分SSID还没有与在步骤S308中被存储在用户终端104中的哈希值做比较。在这种情况下,该方法跳回到步骤S406,并且重复步骤S406到S420。
[0058]因此,根据在图4中示出的方法,如果在图3的方法中没有找到精确匹配,则客户端108从SSID值移除最后的字符,并且重复搜索至少仍然有个字符长度的SSID的匹配哈希值,重复该操作直到遍及所有可能的哈希值。[0059]为了说明这点,我们假设“F0N_”是部分SSID,针对它的哈希值出现在步骤S306从服务器112向用户终端104分发的哈希值列表中。例如,当使用MD5摘要函数作为哈希函数时“F0N_”的哈希值是5975bff094b364d8。依此部分SSID,“F0N_12345”的SSID值是受支持网络的SSID。
[0060]然而,“F0N_12345”的哈希值是de845a7288d87514 (当MD5摘要函数被用作哈希函数时),这与列表中的哈希值不匹配。然后客户端108从该SSID值移除最后的字符(从而使得新的SSID值是“F0N_1234”)并且计算针对新SSID值的哈希值。当使用MD5摘要函数作为哈希函数时,“F0N_1234”的哈希值是0329d375203d44cc,这再次与该列表中的哈希值不匹配。该方法继续、产生并且比较针对“F0N_123”、“F0N_12”和“F0N_1”的SSID值的哈希值,它们还会与在步骤S308中被存储在用户终端的任何哈希值都不匹配。然后该SSID被缩短到“F0N_”,这当然导致匹配的哈希值。这样该方法允许使用部分SSID,即使它是从服务器112向用户终端104分发的哈希值(而不是SSID值本身)。
[0061]作为一个示例,如果在用户终端104的范围内存在4个平均SSID长度为12个字符的无线网络,并且一共存在1000个受支持网络,则客户端108将不得不计算4*11=44个哈希值,即便它所允许的SSID所需最小长度为I,此外做44000次哈希值比较来执行对完整和部分匹配的遍及式搜索。这在计算上非常可行,并且提供了一种用于分发受支持网络的列表而不透露受支持网络名称(SSID)的完整列表并同时保持搜索部分匹配的能力的可用的方法。
[0062]在存在多个可用于用户终端104的受支持网络的情况下,用户终端104可以确定要连接到那些可用的受支持网络中的哪一个。这种确定可以基于例如连同哈希值一起从服务器112向用户终端104分发的优先值,其中该优先值在服务器112处被确定并且可以是基于价格、质量以及基于在先使用的用户偏好。该确定还可以基于在用户终端104处确定的因素,比如可用于客户端108的无线网络的信号强度或其它参数。
[0063]在图3和4的流程图中示出的方法步骤优选地在软件中由例如服务器112中的客户端108和CPU 116实现。
[0064]可以提供包括计算机可读指令的计算机程序产品,用于由在服务器112处或在用户终端104处的计算机处理装置执行该计算机可读指令,其中该指令包括用于实行上文所描述的方法的指令。
[0065]在一些实施例中,每个网络可以具有它自己的唯一的SSID。然而,在其它实施例中,多个网络可以共享SSID,例如不同SSID以相同的前缀开始的情况。例如,在该系统中可能存在一百万个网络,但是这些网络可能通过使用少于一千个SSID或部分SSID来标识。例如,SSID “F0N_”被用于标识在Skype Access系统中的几十万个网络,仅存储一个SSID(“F0N_”)来标识所有这些网络,因为所有的SSID都以“F0N_”开始。
[0066]尽管已经关于分发通信系统的授权系统(例如Skype Access系统)所支持网络的SSID的哈希值描述了本发明,但是该方法可以被用于分发涉及任何网络集合的信息,由此可以通过从该网络或该网络中的设备自由地观察的某个其它性质来链接该网络集合中的网络(例如它们都使用相同的协议或者都由特定所有者所有)。实施例允许用户终端104确定可用无线网络是否属于被存储在服务器112的网络集合而无需用户终端104连接到服务器112并且无需向用户终端104提供在该网络集合中的网络的SSID。[0067]尽管在上文描述的优选实施例中,信息从通信系统中的服务器向用户终端发送,但是在其它实施例中,可以在该通信系统的任何两个不同节点之间发送该信息。
[0068]尽管在上文描述的优选实施例中,网络通过它们的SSID被标识,但是在其它实施例中,网络的其它标识也可以或者与SSID—起被使用,或者代替SSID被使用。例如可以使用媒体接入控制(MAC)地址来标识接入点。
[0069]尽管在上文描述的优选实施例中,哈希函数是MD5摘要函数,但是可以替代地使用任何其它合适的单向哈希函数,正如对本领域技术人员是显然的。
[0070]此外,尽管已经参考优选实施例具体示出和描述了本发明,但是本领域技术人员应当理解的是可以做出在形式和细节上的各种改变而不脱离如随附权利要求所限定的本发明的范围。
【权利要求】
1.一种处理涉及网络集合的信息的方法,该方法包括: 在通信系统的第二节点处从第一节点接收针对属于该网络集合的网络的标识的哈希值,使用哈希函数产生所述哈希值; 第二节点确定可用于与第二节点通信的特定网络的标识;在第二节点处通过使用所述哈希函数产生针对该特定网络的该标识的哈希值;以及在第二节点处、将在第二节点处产生的该特定网络的该标识的所述哈希值与在第二节点处从第一节点接收的所述哈希值进行比较,从而确定该特定网络是否属于所述网络集口 O
2.根据权利要求1所述的方法,进一步包括: 如果确定该特定网络属于所述网络集合,则第二节点连接到该特定网络。
3.根据权利要求1或2所述的方法,其中在所述网络集合中的网络是允许第二节点连接的受支持网络。
4.根据权利要求1到3中任一项所述的方法,其中第二节点通过与该特定网络通信或者通过在该特定网络的广播信道上接收标识来确定该特定网络的该标识。
5.根据权利要求1到4中任一项所述的方法,其中属于该网络集合的网络的标识中的一个是部分标识,并且其中如果在所述比较步骤中该特定网络的该标识的所述哈希值与在第二节点处从第一节点接收的任何哈希值都不匹配,则该方法包括从该特定网络的该标识移除字符,然后重复以下步骤(i)在第二节点处通过使用所述哈希函数产生针对该特定网络的该标识的哈希值以及(ii)将在第二节点处产生的该特定网络的该标识的所述哈希值与在第二节点处从第一节点接收的哈希值进行比较,从而确定该特定网络是否属于所述网络集合。
6.一种包括计算机可读指令的计算机程序产品,用于由在通信系统的第二节点处的计算机处理装置执行该计算机可读指令以便处理涉及网络集合的信息,该指令包括用于实行根据权利要求1到5中任一项的方法的指令。
7.一种用于处理涉及网络集合的信息的通信系统的节点,该节点包括: 接收装置,其用于 从该通信系统的另一节点接收针对属于该网络集合的网络的标识的哈希值,使用哈希函数产生所述哈希值; 确定装置,其用于确定可用于与该节点通信的特定网络的标识; 产生装置,其用于通过使用所述哈希函数产生针对该特定网络的该标识的哈希值;以及 比较装置,其用于将由该产生装置产生的该特定网络的该标识的所述哈希值与在该接收装置处从该另一节点接收的所述哈希值进行比较,从而确定该特定网络是否属于所述网络集合。
8.根据权利要求7所述的节点,其中节点是该通信系统中的用户终端,并且其中该用户终端进一步包括通信客户端,当在该节点处运行时,该通信客户端被配置成充当所述确定装置、所述产生装置和所述比较装置。
9.一种通信系统的节点,用于向该通信系统的另一节点分发涉及网络集合的信息,所述节点包括: 存储装置,其用于存储属于该网络集合的相应网络的标识集合;产生装置,其用于通过使用哈希函数产生针对该标识集合中的标识的哈希值;以及发送装置,其用于将所产生的哈希值发送到该另一节点,从而允许该另一节点通过将该特定网络的标识的哈希值与从所述节点发送的所述哈希值进行比较来确定可用于与该另一节点通信的特定网络是否属于所述网络集合。
10.根据权利要 求9所述的节点,其中所述哈希值的尺寸小于所述标识的平均尺寸。
【文档编号】H04L29/06GK103765849SQ201280035655
【公开日】2014年4月30日 申请日期:2012年7月18日 优先权日:2011年7月18日
【发明者】M.卡尔 申请人:微软公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1