電腦店訊 網絡新聞的起源要追溯到1 9 7 9,當時,兩個大學生, Tom Tr u s c o t t和Jim Ellis想到利用U U C P把計算機連接起來,供各用戶交換信息之用。於是,他們便於自己就讀的北卡羅萊大學內,建立了一個由三台計算機組成的小型網絡。最初,信息的傳輸是用大量外殼腳本(後來采用C語言重寫)來處理的,但這些腳本從來沒有公開發布過。因為,它們很快就被“ A”新聞替代了,後者是第一個公開發布的新聞軟件。
設計“A”新聞軟件的時候,並沒有打算讓它對每天每個新聞組大量文章進行處理。但隨著信息量的不斷增大,它已經不堪重負,所以Mark Horton和Matt Glickman對它進行了改寫,他們把它叫作“B”版(也就是B n e w s)。B n e w s的第一個版本是1 9 8 2年發布的2 . 1。後來人們又對它不斷的擴展,並增加了許多新功能。其當前版本是Bnews 2.11。隨著其最後一個正式維護人員轉向I N N,它也逐漸被廢棄不用。對“A”新聞軟件的另一次改寫完成並發布於1 9 8 7年,是G e o ff Collyer和Henry Spencer改寫的,這被稱為“ C”版。後來還出現了許多C - N e w s 補丁,最為突出的是C - N e w sPerformance Release。對那些運行許多個新聞組的站點來說,頻繁調用中轉新聞所涉及的開支是非常之大的,因為要負責分發進入的所有新聞組文章。Performance Release為中轉新聞增加了一個選項,允許管理員在後台程序模式下運行它,這種模式下,程序將自己置入後台運行。Performance Release是當前最新的C - N e w s版本。
C版本的所有新聞主要用於U U C P網絡,但也可用於其他環境中。在T C P / I P、D E C N e t或相關網絡上有效地傳輸新聞,都需要一個新方案。所以N N T P(網絡新聞協議)於1 9 8 6年應運而生。該協議以網絡連接為基礎,指定了大量的命令,用於交互傳輸和獲取新聞。網上有許多基於N N T P的應用。其中之一是n n t p d包,它是Brian Barber和Phil Lapsley共同編寫的,可用於為局域網內的大量主機提供新聞閱讀服務。設計n n t p d的目的是完善B n e w s和C - N e w s之類的新聞包,為它們賦予N N T P特性。
另一個不同的N N T P包是I N N,也稱作Internet News。它不只是一個前端,而是獨立的新聞系統。它包含一個復雜的新聞中轉後台程序,這個程序能夠有效維護並發的若干個N N T P鏈接,因此,它也是許多因特網站點首選的新聞服務器。
15.1 何謂Usenet
關於U s e n e t,最意外的是它並不屬於哪個組織,也沒有任何核心網絡管理人員。事實上,除了技術說明之外,它只是U s e n e t知識的一部分,所以你不能確切地定義它是……,只能說它不是……。如果你手中有Brendan Kehoe 編寫的《因特網中的禅機與藝術》(位於w w w. c s . i n d i a n a . e d u / d o c p r o j e c t / z e n / z e n - 1 . 0 t o c / h t m l);或看過他的主頁( w w w. z e n . o rg / ~ b r e n -d a n),就能充分了解U s e n e t的特性。雖然如此,有人仍然將U s e n e t定義為由各個獨立站點組成的群體,這些站點間彼此交換U s e n e t新聞。要想成為U s e n e t站點,你只須找到另一個U s e n e t站點,與其擁有者和維護人員達成一致,允許他們與你交換U s e n e t新聞即可。為另一個站點提供新聞,被稱為“為它發送、分配或交換新聞”,套用另一句大家熟悉的U s e n e t名言:“提供新聞,你就能上U s e n e t了”。U s e n e t新聞的基本單元是文章。即用戶寫入或“投遞”到網上的消息。為了使新聞系統能夠處理它們,所以在這些文章前面加了一些管理信息,也就是所謂的“文章頭”。它與因特
網郵件標准R F C - 8 2 2中規定的郵件頭極為相似,由若干個文本行組成,每行的格式是這樣的:字段名:字段值。
注意Usenet新聞消息格式是在RFC-1036“USENET消息交換標准”中指定的。新聞組文章被提交到一個或多個新聞組。我們可以把新聞組想像為一個聚集了與某一主題相關的文章的場所。所有的新聞組都是以分層式結構來組織的,各組的組名便代表它在這個結構中的位置。這樣,一眼就能看出一個新聞組的主題是什麼。比如,任何人都可從c o m p . o s . l i n u x . a n n o u n c e這個新聞組名得知,該新聞組用於發布名為L i n u x的計算機操作系統之相關消息。提交之後,這些新聞組文章便在願為該組傳播新聞的所有U s e n e t站點間進行交換。兩個站點同意交換新聞後,便可根據自己喜好,自由交換新聞組,甚至可加入自己的本地新聞結構。例如,g r o u c h o . e d u有一條指向b a r n y a r d . e d u(是一個主要的新聞發送站點)和若干條指向次要新聞發送站點的鏈接。現在, B a r n y a r d學院可能收到了所有的U s e n e t新聞組,而G M U只想傳輸少數主要的新聞結構比如( s c i、c o m p、r e c等)。有的下游站點,比如說一個叫做b r e w h q的U U C P站點,打算傳輸比前者還要少的新聞組,因為它們缺乏網絡和硬件資源。另一方面, b r e w h q可能想收到f j結構中的新聞組, G M U卻沒有將這些新聞組傳輸過來。因此,它維護了另一條到g a rg l e b l a s t e r. c o m的鏈接,後者將傳輸所有的f j新聞組結構,並把它們發送給b r e w h q。
15.2 Usenet如何對新聞加以控制
如今, U s e n e t增長比例日趨加大。以傳輸整個網絡新聞的站點為例,它們每天傳輸的數據量一般都在3 ~ 5 G B之間。這當然要求對新聞加以更多的控制。因此,為大家講講多數系統怎樣處理U s e n e t新聞是非常必要的。注意如果想了解最新的U s e n i x主題會(會上涉及了一些非常有趣的主題),一定要到這裡看看:www.infosys.tuwien.ac.at/staff/pooh/papers/NewsCacheHP/。新聞在網絡間的分發是由不同的傳輸點來完成的。過去常用的是U U C P,現在則主要由因特網站點負責傳輸。采用的路由被稱作“擴散式路由選擇”(f l o o d i n g)。每個站點維護許多指向其他站點的鏈接(新聞發送),本地新聞系統發出或收到的任何一篇文章都將被轉發到鏈接站點,但如果鏈接站點上已有這些文章的話,它們就會被丟棄。通過查看路徑:文章頭字段,站點就可以找到文章經歷了哪些站點。文章頭中包含一個所有系統列表,通過b a n g路徑表達式可看出文章經歷了哪些系統。
為了區分文章和識別文章是否重復, U s e n e t文章必須傳輸一個消息I D(是M e s s a g e -I D : h e a d e r字段中指定的),這個I D由發送站點名和一個序列號組合而成,即< s e r i a l @ s i t e>。針對每篇處理過的文章,新聞系統都會把這個I D記錄在歷史文件內。要檢查所有新到的文章,可查看這個歷史文件。
任何兩個站點間的通信流都要受兩個標准的限制:其一,一個文章對應一個分配(定義在D i s t r i b u t i o n : h e a d e r字段內,用於把該文章的發送限定在特定的站點組內。其二,參與交換的新聞組要受到發送和接收系統雙方的限制。允許傳到某一個站點的新聞組集和分配通常保存在s y s文件內。文章的絕對編號通常要求對前面提到的方案進行改進。U U C P網絡本身用於定期收集文章並把收集到的文章歸入一個單一的文件內。該文件再被壓縮,發送到遠程站點。這就是所謂的“批處理法”(b a t c h i n g)。
另一種方法是采用i h a v e / s e n d m e協議,它可防止重復性的文章從本地傳輸到遠程站點,從而節省網絡帶寬。它采取的作法不是把所有文章放入b a t c h文件,並將它們一並發送到遠程站點,而是,只將文章的消息I D合成一條大型的“i h a v e”消息,再將它發送到遠程站點。然後,讀取這條消息,把它和自己的歷史文件進行比較,並在返回的“ s e n d m e”消息中,列出自己需要的文章列表。最後,只有消息中的那些文章才被發送到遠程站點。當然,i h a v e / s e n d m e只適用於這種情況:交換新聞的兩個大型站點各自接收數個發送站點發來的文章,兩者頻繁交換文章。因特網上的站點一般依靠基於T C P / I P的軟件來進行傳輸。它采用的是“新聞傳輸協議”(N N T P,具體說明參見R F C - 9 7 7)。它在新聞發送雙方進行新聞的傳輸,並提供對遠程主機上的個體用戶的訪問。
N N T P可識別三種新聞傳輸方式。其一是i h a v e / s e n d m e的實時版本,也稱為“推”(p u s h i n g)新聞。其二是“拉”(p u l l i n g)新聞,這種方式中,客戶機請求一份列出指定新聞組或結構中文章的列表(這些文章是在指定日期後到達服務器站點的),並選出自己歷史文件內沒有的那些文章。第三種方式則用於交互式閱讀,允許你或你的新聞閱讀機獲取指定新聞組的文章和投遞文章頭信息不完整的文章。每個站點上,新聞都是保存在/ v a r / s p o o l / n e w s下面的一個目錄結構內,每篇文章在一個單獨的文件內,每個新聞組在一個單獨的目錄內。目錄名由新聞組名和路徑部分組成。因此,c o m p . o s . l i n u x . m i s c文章被保存在/ v a r / s p o o l / n e w s / c o m p / o s / l i n u x / m i s c內。新聞組內的文章根據其到達順序,被編了號。這個編號被當作文件名使用。目前,在線文章的編號范圍被保存在一個名為a c t i v e的文件內,該文件同時充當你的站點所知的新聞組列表。由於磁盤空間是有限的,所以隔段時間,就應該刪除某些文章。這就是所謂的“期滿”。通常情況下,來自特定新聞組和結構的文章都會在它們抵達之後的既定天內期滿。這個期限可由投遞者改寫,具體做法是在文章頭的E x p i r e s : f i e l d字段內,指定期滿日期。