首頁(yè) > 編程 > Java > 正文

            如何和Whois++網(wǎng)連接查詢

            2019-09-06 23:33:15
            字體:
            來(lái)源:轉(zhuǎn)載
            供稿:網(wǎng)友

                                在Whois++結(jié)構(gòu)中,由客戶負(fù)責(zé)進(jìn)行網(wǎng)狀漫游,因?yàn)槊總€(gè)主機(jī)僅通知客戶與它相鄰的主機(jī)是什么,這個(gè)協(xié)議倒不是復(fù)雜,客戶打開到一臺(tái)服務(wù)器的連接,發(fā)送查詢請(qǐng)求,接收應(yīng)答,關(guān)閉連接。客戶在接收到應(yīng)答后進(jìn)行分析,然后決定下一個(gè)聯(lián)系哪一臺(tái)主機(jī)。這樣使得客戶必須有一種算法使得客戶查詢的主機(jī)沒有重復(fù)的,而且能夠盡快找到要找的主機(jī)。

            每個(gè)Whois++客戶應(yīng)該被配置為自動(dòng)和一個(gè)特定的Whois++服務(wù)器聯(lián)系。這個(gè)默認(rèn)的服務(wù)器可能有這樣那樣的要求,但是最基本的要求就是最好是本地服務(wù)器。

            在接收到服務(wù)器的應(yīng)答后,如果命中數(shù)大于0,則把結(jié)果返回用戶。如果客戶被要求和一個(gè)或多個(gè)服務(wù)器進(jìn)行通信,客戶要能夠知道這些服務(wù)器指針是什么。

            查詢的方法有兩種一種是擴(kuò)充查詢,一種是使用服務(wù)器目錄。如果命中數(shù)為0,或用戶希望擴(kuò)展查詢,客戶機(jī)應(yīng)該進(jìn)行擴(kuò)展查詢,它只需要向服務(wù)器發(fā)送下面兩種消息即可:'polled-by'或'polled-for',客戶可以向新指定的主機(jī)進(jìn)行擴(kuò)充查詢。

            客戶必須保留查詢過的服務(wù)器,不要查詢過的服務(wù)器再查詢一次。

            3.1.1. 優(yōu)化網(wǎng)絡(luò)

            如果A希望經(jīng)常使用B的WHOIS++服務(wù)器,A會(huì)希望通過創(chuàng)建一個(gè)本地索引服務(wù)器將B的服務(wù)器成為本地可用的。當(dāng)A的客戶通過擴(kuò)充查詢希望查詢B時(shí),解析的速度就會(huì)快得多。

            Whois++網(wǎng)絡(luò)已經(jīng)不是一個(gè)樹了,B和F之間已經(jīng)建立了直接通道。這樣查詢的速度就快得多了,不用在查詢完B后查詢A,再查詢C,最后再查詢F。因?yàn)锽和F已經(jīng)建立了聯(lián)結(jié),所以,當(dāng)客戶只需要查詢其中之一的數(shù)據(jù)時(shí)需要指時(shí)要的是哪一個(gè),不然會(huì)返回B和F結(jié)點(diǎn)的內(nèi)容。在客戶方還可以使用黑名單方法將查詢中的一些服務(wù)器屏蔽掉,因?yàn)樵L問這些服務(wù)器代價(jià)太大或其它原因不愿意讓用戶訪問這些服務(wù)器。

            3.1.2. 客戶使用的算法

            Query := 需要查詢的數(shù)據(jù);
            QueriedServers := {};
            AnswerList := {};
            OriginalServers := { 客戶所知的服務(wù)器 };
            while OriginalServers非空 do:
             ServerList = OriginalServers;
             while ServerList非空 do:
               Server := ServerList[1];
               if Server未包括在QueriedServers中 then do:
                send Query to Server;
                Answer := 從Server返回的響應(yīng);
                將ServersToAsk附加到ServerList;
                將Server從ServerList刪除;
                將Answers附加到AnswerList;
               end;
             done;
             if 應(yīng)該擴(kuò)充查詢 then do:
               ServerList := OriginalServers;
               OriginalServers := {};
               while ServerList非空 do:
                 Server := ServerList[1];
                 發(fā)送Polled-For-Query到Server;
                 Answer := 從Server返回的響應(yīng);
                 將Answer附加到OriginalServers;
                 將Server從ServerList刪除;
               end;
             done;
            done;
            顯示AnswerList;

            3.2. 服務(wù)器目錄

            第二個(gè)尋找正確服務(wù)器的方法是使用一個(gè)單獨(dú)的服務(wù),我們稱為服務(wù)器目錄。服務(wù)器目錄實(shí)際上是一個(gè)特殊的Whois++服務(wù)器。這個(gè)服務(wù)器內(nèi)包括了所有服務(wù)器上信息,用戶在查詢前先查詢些服務(wù)器,由此服務(wù)器指出應(yīng)該查詢哪一個(gè)服務(wù)器,未來(lái)的技術(shù)可能允許客戶選擇服務(wù)器,而不是由服務(wù)器。

            3.2.3. 例子

            下面是一個(gè)客戶與服務(wù)器聯(lián)系的例子。

            > % 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: paf@bunyip.com
            > 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: paf@bunyip.com
            > 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. 緩沖

            客戶可以緩沖它從服務(wù)器取得的信息。客戶自行選擇緩沖多長(zhǎng)時(shí)間更新。

            4.1. 緩沖Whois++服務(wù)器主機(jī)名

            下面是一個(gè)緩沖算法:

            response := 從服務(wù)器A獲得的servers-to-ask響應(yīng)
            IP-address := 尋找DNS中response.hostname的IP地址
            連接IP地址上的端口
            if 連結(jié)失敗 {
             連結(jié)服務(wù)器目錄服務(wù)器
             查詢主機(jī)
             response := 由服務(wù)器目錄服務(wù)器獲得的響應(yīng)
             IP-address := 尋找DNS中response.hostname的IP地址
             connect to ip-address at port response.portnumber
             if 連結(jié)失敗 {
               以錯(cuò)誤消息返回
             }
            }
            查詢這個(gè)新服務(wù)器

            5. 安全問題

            客戶應(yīng)該維護(hù)一個(gè)黑名單,因?yàn)樵诰W(wǎng)絡(luò)上可能有假的Whois++服務(wù)器,一旦發(fā)現(xiàn)這樣的服務(wù)器,應(yīng)該把它加入黑名單,以后不再查詢。因?yàn)樵跀U(kuò)充查詢時(shí)比較費(fèi)時(shí),應(yīng)該允許用戶在操作進(jìn)行中退出。
            發(fā)表評(píng)論 共有條評(píng)論
            用戶名: 密碼:
            驗(yàn)證碼: 匿名發(fā)表

            圖片精選