揭秘UDP服務增強搜索的原理
UDP協議是網絡傳輸層的協議。當然也就是起到傳輸作用的一種協議。那么很容易就聯想到,傳輸和下載是有著密不可分的聯系。在這里我們就來就來講解一下UDP服務和電騾下載之間的一些應用。電騾客戶端和服務器使用不可靠的UDP服務來保活和搜索增強。由電騾客戶端產生的UDP包的數量(注意,包不是字節)達到電騾客戶端發送包總數的5%;這依賴于在客戶端的服務器列表中服務器的數量、客戶端下載列表中源的數量以及用戶執行的搜索的數量。UDP包通過定時器來觸發,100ms,如果有一個單獨線程來負責發送UDP通訊,結果最大是每秒10個UDP包。
服務器保活和狀態信息
客戶端定期驗證它的服務器列表的狀態。這個驗證使用UDP服務器狀態請求和UDP服務器描述請求報文來完成。現在介紹的簡單的保活模式每個小時產生少于幾打個包。在任何情況下,最大高產生率是0.2個包每秒(或每5秒一個包)。當檢查一個服務器的狀態是,客戶端首先給服務器發送一個狀態請求,然后是每兩個服務器描述請求一個狀態請求的方式發送;見圖1:
圖1 UDP的保活循環
服務器的狀態請求包含一個隨機數,這個隨機數在服務器的響應中返回。如果服務器中返回的數不同于前面客戶端返回的,響應中的信息會被拋棄。每次從客戶端發送到服務器的狀態請求包,客戶端都會啟動一個嘗試計數器。如果嘗試次數達到設置的最大值是,就認為該服務器是死的,將它從客戶端的服務器列表中刪除。服務器響應包括幾個數據項:服務器狀態響應包括當前的用戶數和服務器上的文件,服務器的軟和硬限制。服務器描述響應包括服務器名稱和一個簡單的描述字符串。圖2描述了一個客戶端和活動服務器之間的完整保活序列的消息流。
圖2 UDP保活序列
文件搜索增強
電騾客戶端可能被配置而用來使用UDP服務來增強文件搜索功能。UDP搜索請求格式幾乎與TCP搜索請求相同。服務器僅僅在有搜索結果的時候響應。有兩種UDP搜索報文的OPCODE,我不能他們之間不同。UDP搜索包發送給客戶端服務器列表中的服務器。
文件源搜索增強
當客戶端所擁有的下載隊列中的某個文件的源的數量小于設置的極限(100)時,客戶端定期向它的服務器隊列中的服務器發送UDP包來得到更多源。有個包可能每秒都發送,它時源搜索客戶端產生的UDP通訊中最重要部分。消息格式和TCP計數器部分非常相似。注意,同TCP源搜索比較,UDP源搜索與文件搜索是隔離的并且依賴于客戶端擁有的給定文件的源的數量。