foolscap实现rpc(四)

 foolscap中,每个可以被访问的Referenceable对象有一个或者多个FURLs,当然,必须是安全的,我们使用权限安全来定义,意味着这些FURLs有以下2个特征:

l  获取FURL的唯一方式是从已经有这个furl的人那里获取,或者是第一个发布它的人。

l  只有最初的FURL创始人才会决定连接到哪一个Referenceable对象。如果你的tub.getReference(url)调用成功,那么你连接的Referenceable是正确的。

为了实现第一个目标,FURLs必须是不可猜测的。你可以注册一个适合读取的引用reference,若你的意图是使得别人能轻松的访问,但是一般使用tub.registerReference生成一个随机的名字,这样就保证了不可猜测性。

为了实现第二个目标,使用加密后的TubID作为主ID,位置提示就是:hints。若DNS被破坏了,将hostname指向不同的机器,或者认为的中途攻击导致连接到错误的boxTubID将与远端的不匹配,连接将会被丢弃。这样一些攻击可能导致服务的中断,但是不能导致连上错误的目标。

   显然,只要你使用SSL才会有第二个特征。如果你选择使用unauthenticated Tubs,所有的安全特性都丢失了。

   FURL的形式,如:pb://[email protected]::5901,backup.example.com:8800/math-server,组成如下:

Ø  以字符串pb://开头

Ø  TubID

Ø  @字符

Ø  以逗号分来的“location hints”列表。每一个按照以下方式:

u  使用IPV4TCP,经过DNSHOSTNAME:PORTNUM

u  使用IPV4TCP协议,不经过DNS A.B.C.D:PORTNUM

Ø  字符/

Ø  引用reference的名称

你可能感兴趣的:(rpc,foolscap)