[建站入門]Web背后的秘密
作者:晉城網站建設 日期:2012-02-16
Web,全稱為 World Wide Web,是 Internet 上最重要和最為人們所熟知的應用之一。Web 是指 Internet 上所有基于 http 協議的 html 網頁、圖像、音頻、視頻等內容的集合。雖然 Web 可能早已成你每天日常生活的一部分,但相信你對 Web 背后的秘密仍然很感興趣。本文向大家展示了關于 Web 的一些通常不為人所知而又有趣的細節。
1. Web的流量
雖然Internet(包括其前身ARPANET等)的歷史比Web要長的多,但直到 Tim Berners-Lee爵士于1989年設計出Web并在1991年開始實際運行之后,Internet才逐漸大眾化并開始流行。自1995年開始,Web占據了整個 Internet的大部分流量,而成為Internet上最重要的一項應用(注意不是“之一”)。
這種影響一直延續到今天:在日常生活中,我們一般甚至不 區分“Internet”和“Web”,而“上網”這個詞在很多情況下指的就是瀏覽Web。Web在流量上的主導地位自2000年起受到以napster為始祖的P2P的挑戰。相比Web來說,P2P在大型文件的傳輸上具有很大優勢,因此雖然從廣度來說Web仍然是主導,但在流量上自2002年起被P2P應用超過。下圖顯示了自1993年到2004年Internet上重要協議的流量變化。
但這種狀況在2007年發生了逆轉。隨著網絡帶寬的增加,以 YouTube為首的在線視頻網站開始流行,使得Web的流量迅速增長并重新超過了P2P流量,盡管這個“優勢”很微弱。總結一下,僅從流量的角度看,目前的Internet可以說是Web和P2P各占半邊天,而其余應用所占的比重是越來越小。關于Web和P2P流量更詳細的分析可以參考這篇文章。
2. Web的規模
Web的規模定義為Web上包含的有效網頁的數量。Google最近宣稱已經索引了1,000,000,000,000個網頁, 不過Google顯然不敢宣稱已經索引了Web上全部或絕大部分的網頁,可以預計,Web的規模已經遠遠超過了上面這個數值。順便提一句,“有效網頁的數 量”嚴格來說其實是個偽命題,因為:1. 很多網站在被請求了不存在的頁面時會返回一個友好的提示而非404錯誤(可以測試url:http://live.aulddays.com/后面跟上任意的文件名),理論上說它們仍然是“有效”的網頁;2. 很多網頁可以根據輸入參數的不同而返回不同的結果(Google目前正著手解決的 Deep web就是屬于這種情況)。從這個意義上說,說Web的規模是無窮大的…
退而求其次,我們可以來估計一下有多少網頁是Google沒有索引到的:假設我們知道了兩個不同的搜索引擎 A 和 B,它們索引的網頁數量分別是 s(A) 和 s(B),A&B為兩個搜索引擎的交集,那么根據容斥原理,所有被它們(中至少一個)索引的網頁數量就是 S=s(A)+s(B)-s(A&B);這個公式還可以推廣到多個搜索引擎的情況,則此時S會越來越靠近真實的 Web 的規模。不過很遺憾,這個公式很不實用:-( 雖然 Google 不久前迫于 Cuil的壓力公布了自己的索引量,但其他幾大搜索引擎仍習慣于對這個數據秘而不宣;更糟的是,Google 或是 Yahoo! 顯然不可能把自己的索引庫共享給對手以求得 s(A&B) 這項。不過,Bharat 和 Broder在1998年基于統計學原理提出了一個很巧妙并且很著名的解決方法:記 Pr(A) 為某個元素屬于集合 A 的概率,Pr(A&B|A) 為已知一個元素屬于 A 時而它同時屬于兩個集合的條件概率。 則可以推出:Pr(A&B|A)≈s(A&B)/s(A),Pr(A&B|B)≈s(A&B)/s(B),即得 s(A)/s(B)≈Pr(A&B|B)/Pr(A&B|A)。而 Pr(A&B|B)、Pr(A&B|A) 都可以用隨機采樣的方法根據一系列精巧構造的搜索用例通過實際的搜索實驗估計出來,從這兩個值還可以用來估算出 s(A&B) 的大小。再進一步,從語言學模型中可以估計出之前構造的搜索用例在整個語言文本中出現的概率,從而估計出 s(A) 和 s(B) 具體的大小。
現在的問題就集中在3點:搜索用例的獨立性、搜索用例的覆蓋性、和結果檢驗的完整性(搜索結果集可能很大,如果只看靠前的部分,通常這部分的 rank 會比較高,因而被同時索引的概率也會偏高,參考下面的Web的結構一 節)。Bharat 和 Broder 構造的方法著重解決了前兩個問題,他們報告當時(1997年底)的幾大搜索引擎HotBot, AltaVista, Excite, Infoseek (其時 Google 還未正式發布) 的索引覆蓋率 (占整個已被索引的 Web) 分別為:48%, 62%, 20%, 和 17%,而 Web 的總規模約為 220,000,000。值得注意的是,他們的結果還顯示各引擎的重合率 (即 s(A&B)) 很低,平均只有 1.4%,可見當時的索引水平也還處于較低的階段。到了 2005 年,Gulli 和 Signorini改進了結果檢驗完整性的問題并在新的搜索巨頭 Google, Yahoo!, Ask/Teoma, MSN 上進行了測試,結果它們各自的覆蓋度分別為 76%, 69%, 58%, 62%,Web的總規模達到了約 11,500,000,000。2006 年 Bar-Yossef 和 Gurevich進一步優化了隨機采樣的理論,根據他們的結果,當時 Google, Yahoo!, MSN 的覆蓋率大約為:64%, 65%, 50%,重合率平均為 44%,比1997年有很大提高。他們并沒有給出估計的Web總規模,不過這組覆蓋率數值應該比較接近目前的水平,因此結合上面 Google 最新的索引數量,相信大家不難估計出當前 Web 的總規模。
3. Web的結構
上面討論了Web的規模。我們知道,Web的特點是各個網頁之間由超鏈接互相連接而形成的網狀結構,那么這么大的一張網具有什么樣的特點呢?
Andrei Broder等人在2000年比較早的研究了這個問題,他們的研究基于兩個Web爬蟲各自爬取的超過2億個網頁和15億個超鏈接,他們認為這些網頁具有一種類似“領結(bow tie)”的結構。領結的形狀大致是中間一個大的“結”以及兩邊各一個三角形的“花”,在每個“花”上面附著了一些穗狀的“花邊”,而兩個花之間還有一條長的“項圈 ”讓領結可以套在脖子上。中間的“結”是由約5600萬網頁組成的SCC(strong connected component,強連接組件),左邊和右邊的花分別是IN組件和OUT組件,分別包含4400萬網頁。剩下的4400萬網頁則是花上的穗狀物 (TENDRIL組件)。在SCC組件中,任意兩個網頁都可以通過很短的有向鏈接路徑到達彼此,它們是整個Web的核心部分。IN組件里的網頁可以鏈入 SCC,但無法從SCC鏈回來,這些一般是比較新的網頁還沒有被大家所發現并鏈接到。OUT組件則是可以從SCC鏈入但不包含鏈回SCC的鏈接,這些可能 是一些只包含內部鏈接的企業網站。TENDRIL組件則是和IN或OUT組件相連但并不和SCC組件有較直接聯系的網頁,有趣的是,TENDRIL組件中 的一小部分可以聯系IN和OUT組件而形成的“項圈”部分。還有很少一部分的網頁是不被鏈接到的,不屬于以上任何一個組件。這項結果中最令人驚奇的部分是 它顯示SCC部分(整個 Web 中相互鏈接最稠密的部分,因而通常也是最經常瀏覽的部分,參考 PageRank的基本原理,它們通常具有較高的 rank 值)的大小只占整個 Web 的一小部分,這暗示Web上可能大量充斥的是那些沒多少“價值”的網頁。
當然上面的是2000年的情況,在最近幾年中Web的結構可能發生了變化,因此一些新的理論也被提了出來。2005年 Debora Donato 等人研究后認為,Web的結構已逐漸轉變成一個類似“菊花”的形狀:在 IN 和 OUT 組件內部出現了很多符合 IN-OUT-SCC 關系的細微結構,因而 IN 和 OUT 可以進一步被細分而形成圍繞在 SCC “花心”周圍一圈大小不一的“花瓣”。不過在他們的結果中,SCC 的比例有所擴大,在部分數據集上甚至達到了 72.3%,這也讓后來的研究者對他們的數據集覆蓋性產生了一些懷疑,或許有一些較深的弱鏈接網頁沒有被他們索引到。另外,他們的結果還顯示,不同語言的 Web 子集其結構有相當大的區別,其中最突出的特點是英語的頁面無疑是 Web 的核心,其他語言的網頁有很多指向英語網頁的鏈接,而反過來的情況則相當的少。最后是中文 Web 的情況,今年 Jonathan J. H. Zhu 等的分析將中文 Web 形容為“茶壺”的結構:相比 IN 組件,OUT 組件的變小了很多,因而在 SCC 兩側構成了一大一小形如“把手”和“壺嘴”的結構,而游離的 TENDRIL 組件則很像壺中滴下的水滴。