如何和Whois++网毗连查询
当前位置:以往代写 > C/C++ 教程 >如何和Whois++网毗连查询
2019-06-13

如何和Whois++网毗连查询

如何和Whois++网毗连查询

副标题#e#

在Whois++布局中,由客户认真举办网状周游,因为每个主机仅通知客户与它相邻的主机是什么,这个协议倒不是巨大,客户打开到一台处事器的毗连,发送查询请求,吸收应答,封锁毗连。客户在吸收到应答后举办阐明,然后抉择下一个接洽哪一台主机。这样使得客户必需有一种算法使得客户查询的主机没有反复的,并且可以或许尽快找到要找的主机。

每个Whois++客户应该被设置为自动和一个特定的Whois++处事器接洽。这个默认的处事器大概有这样那样的要求,可是最根基的要求就是最好是当地处事器。

在吸收随处事器的应答后,假如掷中数大于0,则把功效返回用户。假如客户被要求和一个或多个处事器举办通信,客户要可以或许知道这些处事器指针是什么。

查询的要领有两种一种是扩充查询,一种是利用处事器目次。假如掷中数为0,或用户但愿扩展查询,客户机应该举办扩展查询,它只需要向处事器发送下面两种动静即可:’polled-by’或’polled-for’,客户可以向新指定的主机举办扩充查询。

客户必需保存查询过的处事器,不要查询过的处事器再查询一次。

3.1.1. 优化网络

假如A但愿常常利用B的WHOIS++处事器,A会但愿通过建设一个当地索引处事器将B的处事器成为当地可用的。当A的客户通过扩充查询但愿查询B时,理会的速度就会快得多。

Whois++网络已经不是一个树了,B和F之间已经成立了直接通道。这样查询的速度就快得多了,不消在查询完B后查询A,再查询C,最后再查询F。因为B和F已经成立了联络,所以,当客户只需要查询个中之一的数据时需要指时要的是哪一个,否则会返回B和F结点的内容。在客户方还可以利用黑名单要领将查询中的一些处事器屏蔽掉,因为会见这些处事器价钱太大或其它原因不肯意让用户会见这些处事器。

3.1.2. 客户利用的算法

Query := 需要查询的数据;
QueriedServers := {};
AnswerList := {};
OriginalServers := { 客户所知的处事器 };
while OriginalServers非空 do:
  ServerList = OriginalServers;
  while ServerList非空 do:
   Server := ServerList[1];
   if Server未包罗在QueriedServers中 then do:
   send Query to Server;
   Answer := 从Server返回的响应;
   将ServersToAsk附加到ServerList;
   将Server从ServerList删除;
   将Answers附加到AnswerList;
   end;
  done;
  if 应该扩充查询 then do:
   ServerList := OriginalServers;
   OriginalServers := {};
   while ServerList非空 do:
    Server := ServerList[1];
    发送Polled-For-Query到Server;
    Answer := 从Server返回的响应;
    将Answer附加到OriginalServers;
    将Server从ServerList删除;
   end;
  done;
done;

显示AnswerList;


#p#副标题#e#

3.2. 处事器目次

第二个寻找正确处事器的要领是利用一个单独的处事,我们称为处事器目次。处事器目次实际上是一个非凡的Whois++处事器。这个处事器内包罗了所有处事器上信息,用户在查询前先查询些处事器,由此处事器指出应该查询哪一个处事器,将来的技能大概答允客户选择处事器,而不是由处事器。

3.2.3. 例子

下面是一个客户与处事器接洽的例子。

> % 220-This is services.bunyip.com running Bunyip-Whois++: DIGGER 1.0.5
> % 220 Ready to go!
< template=serverhandle and bunyip
> % 200 Search is executing
> # FULL SERVERHANDLE BUNYIPCOM01 BUNYIPCOM01
> SERVER-HANDLE: BUNYIPCOM01
> HOST-NAME: services.bunyip.com
> HOST-PORT: 63
> ADMIN-NAME: Patrik Faltstrom
> ADMIN-EMAIL: [email protected]
> ORGANIZATION-NAME: Bunyip Information Systems Inc.
> DESCRIPTION: USER information
> DESCRIPTION: Directory of Servers
> DESCRIPTION: Toplevel Index server in the world
> MENU-ITEM: World (Bunyip Information Systems inc)
> CITY: Montreal
> COUNTRY: Canada
> # END
>
> # FULL SERVERHANDLE BUNYIPCOM01 BUNYIPCOM02
> SERVER-HANDLE: BUNYIPCOM02
> HOST-NAME: services.bunyip.com
> HOST-PORT: 7778
> ADMIN-NAME: Patrik Faltstrom
> ADMIN-EMAIL: [email protected]
> ORGANIZATION-NAME: Bunyip Information Systems Inc.
> DESCRIPTION: USER information
> MENU-ITEM: Bunyip Information Systems
> CITY: Montreal
> COUNTRY: Canada
> # END
>
> % 226 Transaction complete
> % 203 Bye, bye

4. 缓冲

客户可以缓冲它从处事器取得的信息。客户自行选择缓冲多长时间更新。

#p#副标题#e#

4.1. 缓冲Whois++处事器主机名

下面是一个缓冲算法:

response := 从处事器A得到的servers-to-ask响应

IP-address := 寻找DNS中response.hostname的IP地点

毗连IP地点上的端口

#p#分页标题#e#

if 连结失败 {
  连结处事器目次处事器
  查询主机
  response := 由处事器目次处事器得到的响应
  IP-address := 寻找DNS中response.hostname的IP地点
  connect to ip-address at port response.portnumber
  if 连结失败 {
   以错误动静返回
  }
}

查询这个新处事器

5. 安详问题

客户应该维护一个黑名单,因为在网络上大概有假的Whois++处事器,一旦发明这样的处事器,应该把它插手黑名单,今后不再查询。因为在扩充查询时较量费时,应该答允用户在操纵举办中退出。

    关键字:

在线提交作业