1. 誰發明的互聯網
50年代
1957
蘇聯發射了人類第一顆人造地球衛星"Sputnik"。作為響應,美國國防部(DoD)組建了高級研究計劃局(ARPA),開始將科學技術應用於軍事領域。
60年代
1961
MIT的Leonard Kleinrock發表"Information Flow in Large Communication Nets",(7月)
第一篇有關包交換(PS)的論文。
1962
MIT的J.C.R. Licklider和W. Clark發表"On-Line Man Computer Communication",(8月)
包含有分布式社交行為的全球網路概念。
1964
RAND公司的Paul Baran發表"On Distributed Communications Networks"。
包交換網路;不存在出口。
1965
ARPA資助進行"分時計算機系統的合作網路"研究。
MIT林肯實驗室的TX-2計算機與位於加州聖莫尼卡的系統開發公司的Q-32計算機通過1200bps的電話專線直接連接(沒有使用包交換)。隨後APRA又將數據設備公司(DEC)的計算機加入其中,組成了"實驗網路"。
1966
MIT的Lawrence G. Roberts發表"Towards a Cooperative Network of Time-Shared Computers",(10月)
第一個ARPANET計劃。
1967
在美國密西根州Ann Arbor召開的ARPA IPTO PI會議上,Larry Roberts組織了有關ARPANET設計方案的討論。(4月)
在田納西州Gatlinburg召開ACM操作原則專題研討會。(10月)
Lawrence G. Roberts發表第一篇關於ARPANET設計的論文"Multiple Computer Networks and Intercomputer Communication"。
三個獨立的包交換網路(RAND、NPL、ARPA)開發人員的第一次會議。
位於英國Middlesex的國家物理實驗室(NDL)在D. W. Davies的主持下開發了國家物理實驗室數據網路,D. W. Davies
是首先使用"包"(packet)這個術語的人。NDL網路是一個包交換的實驗網路,它使用了768kpbs的通信線路。
1968
向高級研究計劃局(ARPA)演示包交換網路。
8月遞交有關ARPANET的建議書,9月受到回應。
10月,加州大學洛杉磯分校(UCLA)獲得建立網路測量中心的合同。
Bolt Beranek and Newman、Inc.公司(BBN)獲得建立介面消息處理機(IMP)中的包交換部分的合同。
美國參議員Edward Kennedy向BBN公司發出祝賀電報,祝賀他們從ARPA處獲得百萬美圓的合同來建造 "Interfaith"(他的筆誤,應為"Interface"介面)消息處理機,並感謝他們的努力。
以Steve Crocker為首的鬆散組織,網路工作組(NWG),開始開發用於APRANET通信的主機一級的協議。
1969
美國國防部委託開發ARPANET,進行聯網的研究。
使用BBN公司開發的介面消息處理器IMP建立節點(配有12K存儲器的Honeywell DDP-516小型計算機);AT&T公司提供速率為50kpbs的通信線路。
節點1:UCLA(8月30日,9月2日接入)
功能:網路測量中心
主機、操作系統:SDS SIGMA 7、SEX
節點2:斯坦福研究院(SRI)(10月1日)
功能:網路信息中心(NIC)
主機、操作系統:SDS940、Genie
Doug Engelbart有關"Augmentation of Human Intellect"的計劃
節點3:加州大學聖巴巴拉分校(UCSB)(11月1日)
功能:Culler-Fried互動式數學
主機、操作系統:IBM 360/75、OS/MVT
節點4:Utah大學(12月)
功能:圖形處理
主機、操作系統:DEC PDP-10、Tenex
由Steve Crocker編寫的第一份RFC文件"Host Software"(4月7日)。
REC 4:Network Timetable
UCLA的Charley Kline試圖登錄到SRI上,發出了第一個數據包,他的第一次嘗試在鍵入LOGIN的G的時候引起了系統的崩潰。(10月20日或者29日,需查實)
密西根州的密西根大學和懷俄明州立大學為他們的學生、教師及校友建立了基於X.25的Merit網路。
70年代
1970
第一份有關最初的ARPANET主機-主機間通信協議的出版物:C.S. Carr、S. Crocker和V.G. Cerf的 "HOST - HOST Communication Protocol in the ARPA Network",發表於AFIPS的SJCC會議論文集上。
AFIPS的第一篇有關ARPANET的報告:"Computer Network Development to Achieve Resource Sharing"(3月)
夏威夷大學的Norman Abrahamson開發的第一個包交換無線網路ALOHAnet開始運行(7月)。
1972年與ARPANET相連。
ARPANET的主機開始使用第一個主機-主機間協議,網路控制協議(NCP)。
AT&T在UCLA和BBN之間建成了第一個跨國家連接的56kbps的通信線路。這條線路後來被BBN和RAND間的另一條線路取代。第二條線路連接MIT和Utah大學。
1971
ARPANET上連接了15個節點(23台主機):UCLA、SRI、UCSB、Univ of Utah、BBN、MIT、RAND、SDC、Harvard、Lincoln Lab、Stanford、UIU(C)、CWRU、CMU、NASA/Ames。
BBN開始使用更便宜的Honeywell 316來構造IMP。但由於IMP有隻能連接4台主機的限制,BBN開始研究能支持64台主機的終端型IMP(TIP)。(9月)
BBN的Ray Tomlinson發明了通過分布式網路發送消息的email程序。最初的程序由兩部分構成:同一機器內部的email程序(SENDMSG)和一個實驗性的文件傳輸程序(CPYNET)。
1972
BBN的Ray Tomlinson為ARPANET修改了email程序,這個程序變得非常熱門。Tomlinson的33型電傳打字機選用"@"作為代表"在"的含義的標點符號(3月)
Larry Roberts寫出了第一個email管理程序(RD),可以將信件列表、有選擇地閱讀、轉存文件、轉發和回復。(7月)
由Bob Kahn組織的計算機通信國際會議(ICCC)在華盛頓特區的Hilton飯店召開,會上演示了由40台計算機和終端介面處理機(TIP)組成的ARPANET。(10月)
在ICCC大會期間,精神科病人PARRY(在Stanford)與醫生(在BBN)第一次使用計算機-計算機間聊天的形式討論了病情。
ICCC大會認為高級聯網技術需要進一步共同合作,導致在10月成立了國際網路工作組(INWG),Vinton Cerf被指定擔任第一屆主席。到了1974年,INWG成為IFIP的6.1工作組。
Louis Pouzin領導建立法國自己的ARPANET-CYCLADES。
RFC 318:Telnet specification
1973
ARPANET首次進行國際聯網:倫敦大學(英國)和NORSAR(挪威)。
Harvard大學Bob Metcalfe的博士論文首先提出了乙太網的概念。他的概念在Xerox公司的PARC的Alto計算機上進行了測試,第一個乙太網叫做Alto Aloha System(5月)。
Bob Kahn提出了建立Internet的問題,並開始在ARPA進行網路互連的研究。3月,Vinton Cerf在舊金山一個飯店的大堂里,將網關體系結構的草圖畫在一個信封的背面。
9月,在英國伯明翰的Sussex大學召開的INWG會議上Cerf和Kahn提出了Internet的基本概念。
RFC 454:File Transfer specification
網路聲音協議(NVP)規范(RFC 741)及其實現使通過ARPAnet上召開會議通知成為可能。
SRI(NIC)在3月開始出版ARPANET新聞;據估計ARPANET用戶有2000人。
ARPA研究顯示在ARPANET的通信量中email佔了75%。
聖誕節死鎖 -- Harvard的IMP硬體故障導致它向所有的ARPANET節點發出了長度為0的廣播信息,造成所有其他的IMP都將它們的通信轉向Harvard。(12月25日)
RFC 527: ARPAWOCKY
RFC 602: The Stockings Were Hung by the Chimney with Care
1974
Vinton Cerf和Bob Kahn發表了論文"A Protocol for Packet Network Interconnection",文中對TCP協議的設計作了詳細的描述。[IEEE Trans Comm]
BBN開始提供ARPANET上第一個公共包數據服務Telenet(ARPANET的一個商業版本)。
1975
DCA(現在是DISA)接管Internet的運行管理。
Steve Walker建立ARPANET第一個郵件抄送表(mailing list)MsgGroup,因為最初該表不是自動管理的,Einar Stefferud很快接受成為它的管理者。一個有關科幻小說的抄送表SF-Lovers成為早期最受歡迎的非官方抄送表。
John Vittal開發研製了全功能email程序MSG,它具有郵件回復、轉發、歸檔功能。
跨越兩大洋的人造衛星連接(連接夏威夷和英國),第一次通過它進行的TCP測試是Stanford、BBN和UCL進行的。
SAIL的Raphael Finkel編寫的"Jargon File"第一次發布。
John Brunner出版科幻小說"The Shockwave Rider"。
1976
2月,英國女王伊麗莎白二世在Malvern的皇家信號與雷達研究院(RSRE)發出一封電子郵件。
AT&T的Bell實驗室開發了UUCP(Unix到Unix文件拷貝),並於第二年同UNIX一同發行。
開發出多處理器多匯流排IMP。
1977
美國威斯康星大學(Wisconsin)的Larry Landweber開發了THEORYNET,為超過100名計算機科學家提供電子郵件服務(使用他們自己開發的基於TELENET的email系統)。
RFC 733:Mail specification
Tymshare公司發表Tymnet。
7月,舉行了運行Internet協議的ARPANET/舊金山灣無線包交換網/大西洋SANNET演示會,演示會採用了BBN提供的網關。
1978
TCP分解成TCP和IP兩個協議。(3月)
RFC 748:TELNET RANDOMLY-LOSE Option
1979
來自威斯康星大學、DARPA、美國國家科學基金會(NSF)以及許多其他大學的計算機科學家召開會議,計劃建立一個連接各學校計算機系的網路(會議由Larry Landweber組織)。
Tom Truscott和Steve Bellovin使用UUCP協議建立了連接Duke大學和UNC的USENET,最初USENET只包括net.新聞組。
Essex大學的Richard Bartle和Roy Trubshaw開發了第一個多人參與的游戲MUD,它被稱做MUD1。
ARPA建立了Internet結構控制委員會(ICCB)。
在DARPA的資助下開始進行無線包交換網(PRNET)的實驗,它主要用於汽車之間的通信。ARPANET通過SRI進行連接。
4月12日,Kevin MacKenzie向MsgGroup發出email,建議在email的枯燥單調文字中加入一些表情符號,比如-)表示伸出舌頭。他的建議多次引起爭論,最後被廣泛應用。
80年代
1980
10月27日,由於一種狀態信息病毒出人意料的自我繁殖,ARPANET完全停止運行。
BBN的第一部基於C/30的IMP。
1981
BITNET,"Because It』s Time NETwork"。
首先美國紐約市立大學建立的合作網路,連接的第一個節點是耶魯大學。
根據同IBM系統一道提供的免費NJE協議,最初名字縮寫中的"T"代表的是"There"而不是"Time"。
提供電子郵件服務、建立了電子論壇伺服器來傳播信息,還提供文件傳輸服務。
由美國國家科學基金會提供啟動資金,Univ of Delaware、Pure Univ、Univ of Wisconsin、RAND公司和BBN的計算機科學家們合作建立了CSNET(計算機科學網路),為那些不能與ARPANET連接的科學家提供網路服務(主要是電子郵件服務)。CSNET後來又被稱為計算機與科學網路。
基於C/30的IMP在網路中佔主導地位;SAC的第一部急於C/30的TIP。
法國Telecom公司在法國全境部署Minitel(Teletel)網。
Vernor Vinge出版小說"True Names"。
RFC 801: NCP/TCP Transition Plan
1982
挪威採用TCP/IP協議,經SANNET接入Internet;UCL也以同樣的方式接入。
DCA和ARPA為ARPANET制定傳輸控制協議(TCP)和網際協議(IP),作為一組協議,通常稱為TCP/IP協議。
由此第一次引出了關於互連網路的定義,即將"internet"定義為使用TCP/IP連接起來的一組網路; "Internet"則是通**過TCP/IP協議連接起來的"internet"。
美國國防部(DoD)宣布將TCP/IP協議作為DoD標准網路協議。
EUUG建立EUnet(歐洲Unix網),提供email和USENET服務。
最初連接的國家有荷蘭、丹麥、瑞典和英國。
外部網關協議(EGP,RFC 827),EGP用於網路間的網關。
1983
美國威斯康星大學開發了名字伺服器,這樣,用戶不需要了解到另一個節點的確切路徑就可以與其進行通信。
ARPANET從NCP協議切換為TCP/IP協議。(1月1日)
不再使用Honeywell或者多匯流排(Pluribus)IMP,TIP被TAC(terminal access controller,終端訪問控制機)代替。
Stuttgart和韓國上網。
年初歐洲開始建立運動信息網(MINET),9月接入Internet。
CSNET與ARPANET的網關開始啟用。
ARPANET分成ARPANET和MILNET兩部分,後者並入1982年建立的國防數據網。現存113個節點中的68個進入MILNET。
開始出現工作站,它們大多使用包含有IP網路協議的Berkeley Unix(4.2 BSD)操作系統。
連網需求從每個節點單獨的大型分時計算機系統與Internet相連轉為將一個區域網絡與Internet相連。
建立Internet行動委員會(IAB),取代了ICCB。
EARN(歐洲科學研究網)建立,它同BITNET非常相似,使用IBM公司贊助的網關硬體。
Tom Jennings建立Fidonet。
1984
引入名字伺服器系統(DNS)。
主機數超過1,000。
使用UUCP協議的JUNET(日本Unix網)建成。
英國使用Coloured Book協議建成JANET(聯合學術網),就是以前的SERCnet。
USENET建立人工管理新聞組。
William Gibson完成Neuromancer。
加拿大開始用一年的時間將大學連網的努力。從多倫多向Ithaca連接,NetNorth Network連入BITNET。
Kremvax的消息宣布蘇聯連入USENET。
1985
全球電子連接(WELL)開始提供服務。
原由DCA和SRI負責的DNS根域名管理的職責移交給USC的信息科學學院(ISI),負責進行DNS NIC的注冊管理。
3月15日Symbolics.com成為第一個登記的域名。最初的其他幾個域名是:cmu.e、pure.e、rice.e、ucla.e(4月);css.gov(6月);mitre.org、.uk(7月)。
加拿大橫跨東西海岸的鐵路鋪設用了100年的時間,而從開始到最後一個加拿大的大學連入NetNorth只用了1年的時間。
RFC 968:』Twas the Night Before Start-up
1986
NSFnet建成(主幹網速率為56K bps)。
NSF在美國建立了五個超級計算中心,為所有用戶提供強大的計算能力。(Princeton的JVNC,Pittsburgh的PSC,UCSD的SDSC,UIUC的NCSA,Cornell的Theory Center)
這掀起了一個與Internet連接的高潮,尤其是各大學。
NSF資助的SDSCNET、JVNCNET、SURANET、NYSERNET開始運營。
IAB成立Internet工程特別工作(IETF)和Internet研究特別工作組。IETF第一次會議1月在San Diego的Linkabit召開。
在公共計算協會(SoPAC)的贊助下,7月16日第一次Freenet會議上網召開(Cleveland)。Freenet後續議程的管理由1989年國家公共遠程計算網路(NPTN)負責管理。
為提高USENET新聞在TCP/IP網路上的傳輸效率,制定了網路新聞傳輸協議(NNTP)。
為使非IP網路擁有域地址,Craig Partridge開發了郵件交換器(MX)記錄。
USENET更名,它的人工管理新聞組1987年更名。
使用高速連接線路的BARRNET(海灣地區研究網路)建成並與1987年開始運營。
AT&T公司在新澤西州的Newark和紐約州的White Plains之間的傳輸光纖線路中斷,導致新英格蘭州州與Internet的連接中斷。新英格蘭州的7條ARPANET主幹網都連在一起,它們在12月12日東部時間1:11到12:11間停止運行。
1987
NSF簽定合作協議,將NSFnet主幹網的管理權移交給Merit網路公司(IBM公司和MCI公司又同Merit公司簽定協議,三家共同參與管理)。IBM公司、MCI公司、Merit公司後來聯合成立了ANS。
在Usenix基金的支持下建立了UUNET,提供商業的UUCP服務和USENET服務。最初的UUNET實驗由Rick Adams和Mike O』Dell完成。
3月,第一屆TCP/IP Interoperability會議召開。1988年會議改名為INTEROP。
在德國和中國間採用CSNET協議建立了email連接,9月20日從中國發出了第一封信。
第1000份RFC文件:"Request For Comments reference guide"。
主機數超過10,000。
BITNET的主機數超過1,000。
1988
11月2日 - Internet蠕蟲在Internet上蔓延,全部60,000個節點中的大約6,000個節點受到影響。
莫立斯蠕蟲事件促使DARPA建立了CERT(計算機危機快速反應小組)以應付此類事件。蠕蟲是CERT年內受到咨詢的唯一的一件事情。
美國國防部採納OSI協議,將TCP/IP作為過渡。美國的政府OSI大綱(GOSIP)公布了美國政府部門采購的產品所必須支持的一組協議。
在沒有使用聯邦基金的情況下建立了Los Nettos網路,網路由當地的一些機構(包括Caltech、TIS、UCLA、USC、ISI)支持。
NSFNET主幹網速率升級到T1(1.544M bps)。
在Susan Estrada資助下建立了CERFnet(加里福尼亞教育與研究聯合網)。
12月以Jon Postel為首的Internet Assigned Numbers Authority(IANA)成立。Postel多年來還是REC文件編輯和美國域名注冊管理者。
Jarkko Oikarinen開發了Internet網上聊天(IRC)。
加拿大的地區網路第一次連入NSFNET:ONet通過Cornell、RISQ通過Princeton、BCnet通過華盛頓大學。
FidoNet連入Internet,可以交換email和網路新聞。
1988年夏季在Stanford和BBN間建立了第一個多址傳送通道。
連入NSFNET的國家: 加拿大(CA)、丹麥(DK)、芬蘭(FI)、法國(FR)、冰島(IC)、挪威(NO)、瑞典(SE)。
1989
主機數超過100,000。
歐洲提供Internet服務的公司建立了RIPE(Reseaux IP Europeens),為泛歐洲的IP網路提供管理和技術上的支持。
商業電子郵件系統第一次同Internet進行郵件接力傳遞:MCI郵遞公司通過National Research Initiative(CNRI)、 *Compuserv通過Ohio大學進行郵件交換。
CSNET並入BITNET,成立了研究與教育合作網(CREN)。(8月)
AARNET - 澳大利亞科學研究網 - 由AVCC和CSIRO建立,並於第二年年開始提供服務。
Clifford Stoll完成了"布穀鳥的蛋"一書,講述了關於德國的一個密碼破譯小組通過網路入侵到美國的多台計算機設施中的真實故事。
UCLA資助Act One研討會,以慶祝ARPANET建成20周年和它的功成身退。(8月)
RFC 1121: Act One - The Poems
RFC 1097: TELNET SUBLIMINAL-MESSAGE Option
連入NSFNET的國家:澳大利亞(AU)、德國(DE)、以色列(IL)、義大利(IT)、日本(JP)、墨西哥(MX)、荷蘭(NL)、紐西蘭(NZ)、波多黎哥(PR)、英國(UK)。
90年代
1990
ARPANET停止運營。 Mitch Kapor組建Electronic Frontier Foundation(EFF)。 McGill大學的Peter Deutsch,Alan Emtage和Bill Heelan發布了archie。 Peter Scott(Saskatchewan大學)發布了Hytelnet。 世界在線(world.std.com)成為第一個Internet電話撥號接入服務提供商。 ISO開發環境(ISODE)為DoD提供了向OSI協議轉移的手段。ISODE軟體允許在TCP/IP協議環境下運行OSI應用程序。(:gck:) 加拿大10個地區性的網路組成了CA$*$net,作為加拿大的國家主幹網與NSFNET直接相連。(:ec1:) 第一台遠程操作的機器,John Romkey的Internet烤麵包機(通過SNMP協議對它進行控制),接入Internet,並在Interop會議上初次亮相。圖片:Internode、Invisible。 RFC 1149: A Standard for the Transmission of IP Datagrams on Avian Carriers RFC 1178: Choosing a Name for Your Computer 連入NSFNET的國家:阿根廷(AR)、奧地利(AT)、比利時(BE)、巴西(BR)、智利(CL)、希臘(GR)、印度(IN)、愛爾蘭(IE)、韓國(KR)、西班牙(ES)、瑞士(CH)。
1991
General Atomics(CERFnet),Performance Systems International,Inc.(PSInet )和UUNET Technologies,Inc.(AlterNet)在NSF解除了Internet商業應用的限制後聯合組建Commercial Internet eXchange Association,Inc.(CIX)公司。(3月) Thinking Machines公司發布由Brewster Kahle發明的廣域消息伺服器(WAIS)。 美國明尼蘇達大學的Paul Lindner和Mark P. McCahill發布Gopher。 CERN發布World-Wide Web (WWW),開發者為 Tim Berners-Lee。(:pb1:) Philip Zimmerman發布PGP(Pretty Good Privacy)。(:ad1:) 根據美國高性能計算條例(Gore 1),建立了國家研究與教育網(NREN)。 NSFNET主幹網速率升級到T3(44.736M bps)。 NSFNET的通信量達到10^12位元組/月和10^10包/月。 DISA與Government Systems Inc簽定合同,在5月由後者接替SRI成為美國國防數據網的NIC。 JANET IP服務(JIPS)開始運營,標志著英國學術網所使用的軟體從Coloured Book轉向TCP/IP。IP協議最初是在X.25協議內部轉換的。(:gst:) RFC 1216: Gigabit Network Economics and Paradigm Shifts RFC 1217: Memo from the Consortium for Slow Commotion Research (CSCR) 連入NSFNET的國家和地區:克羅埃西亞(HR)、捷克共和國(CZ)、中國香港(HK)、匈牙利(HU)、波蘭(PL)、葡萄牙(PT)、新加坡(SG)、南非(ZA)、中國台灣(TW)、突尼西亞(TN)。
1992
Internet協會(ISOC)成立。(1月) IAB更名為Internet Architecture Board,並成為Internet協會的一部分。 主機數超過1,000,000。 第一次進行MBONE音頻廣播(3月)和視頻廣播(11月)。 4月,RIPE的Network Coordination Center(NCC)建立,向歐洲的Internet用戶提供地址注冊和協調服務。(:dk1:) Nevada大學發布了gopher空間查詢工具Veronica。 世界銀行提供在線服務。 Jean Armour Polly創造術語"網路沖浪"("surfing the Internet")。(:jap:) Brendan Kehoe出版"Zen and the Art of the Internet"一書。(:jap:) Rick Gates開始提供Internet Hunt測驗。 RFC 1300: Remembrances of Things Past RFC 1313: Today』s Programming for KRFC AM 1313 - Internet Talk Radio 連入NSFNET的國家:南極洲(AQ)、喀麥隆(CM)、塞普勒斯(CY)、厄瓜多(EC)、愛沙尼亞(EE)、科威特(KW)、拉脫維亞(LV)、盧森堡(LU)、馬來西亞(MY)、斯洛伐克(SK)、斯洛維尼亞(SI)、泰國(TH)、委內瑞拉(VE)。
1993
NSF建立InterNIC,提供以下Internet服務:(:sc1:) 目錄和資料庫服務(AT&T)。 注冊服務(Network Solutions Inc.)。 信息服務(General Atomics Inc./CERFnet)。 美國白宮提供在線服務(http://www.whitehouse.gov/): 總統Bill Clinton:[email protected] 副總統Al Gore:[email protected] 新的蠕蟲在Internet上發現他們的生存空間 - 出現了WWW蠕蟲(W4),接著出現了蜘蛛、漫遊者、爬蟲和蛇等... Internet Talk Radio開始播音。(:sk2:) 聯合國提供在線服務。(:vgc:) 美國國家信息基礎設施(NII)條例。 Internet開始引起商業界和新聞媒體的注意。 9月,日本的InterCon International KK(IIKK)第一次提供商業Internet接入,從第二個月開始,TWICS租用IIKK的線路開始提供電話撥號上網帳號。(:tb1:) Internet颳起Mosaic旋風,WWW在Internet上的通信量的年增長率達到341,634%。gopher的年增長率是997%。 RFC 1437: The Extension of MIME Content-Types to a New Medium RFC 1438: IETF Statements of Boredom (SOBs) 連入NSFNET的國家:保加利亞(BG)、哥斯大黎加(CR)、埃及(EG)、斐濟(FJ)、迦納(GH)、關島(GU)、印度尼西亞(ID)、哈薩克(KZ)、肯亞(KE)、列支敦斯登(LI)、秘魯(PE)、羅馬尼亞(RO)、俄羅斯聯邦(RU)、土耳其(TR)、烏克蘭(UA)、阿聯酋(AE)、美國維爾京群島(VI)。
1994
慶祝ARPANET/Internet誕生25周年。 社區開始直接連入Internet(美國Mass的Lexington and Cambridge社區)。 美國參議院和美國眾議院開始提供信息服務。 購物中心上網。 第一家網上電台RT-FM開始在Las Vegas的Interop會議上播音。 美國標准與技術研究院(NIST)建議GOSIP放棄"只使用OSI協議標准"的原則,而採納TCP/IP協議。(:gck:) 美國Arizona州的Canter & Siegel法律事務所在Internet發出大量"垃圾"email廣告以推銷其綠卡業務,網路用戶憤怒地予以回應。 NSFNET的通信量達到10^13位元組/月。 通過Hut online可直接訂購比薩餅。 根據在NSFNET上傳輸的包和位元組數所佔的百分數,WWW超過telnet成為Internet上第二種最受歡迎的服務(最受歡迎的服務是文件傳輸)。 日本首相提供在線服務(http://www.kantei.go.jp/)。 英國財政大臣提供在線服務(http://www.hm-treasury.gov.uk/)。 紐西蘭總理提供在線服務(http://www.govt.nz/)。 第一家網上銀行First Virtual開始營業。 電台開始在網上提供不間斷搖滾樂廣播:Univ of NC的WXYC、Univ of KS-Lawrence的WJHK、Western WA Univ的WJHK。 RARE和EARN合並成立了歐洲科研與教育網聯盟(TERENA),它包括了38個國家、CERN及ECMWF。TERENA的目標是"推動並參與國際高性能的信息與遠程通信基礎設施的開發,為科研與教育服務"。(10月) Bill Woodcock和Jon Postel注意到在很多的網路軟體商家的文檔例子中使用domain.com這個域名,於是他們就注冊了這個域名。果然,經過分析域訪問日誌文件,他們發現有很多用戶使用例子中的"domain.com"域名來配置他們的應用軟體。 RFC 1605: SONET to Sonnet Translation RFC 1606: A Historical Perspective On The Usage Of IP Version 9 RFC 1607: A VIEW FROM THE 21ST CENTURY 連入NSFNET的國家和地區:阿爾及利亞(DZ)、亞美尼亞(AM)、百慕大(BM)、布幾納法索(BF)、中國(CN)、哥倫比亞(CO)、牙買加(JM)、約旦(JO)、黎巴嫩(LB)、立陶宛(LT)、中國澳門(MO)、摩洛哥(MA)、新喀里多尼亞、尼加拉瓜(NI)、尼日(NE)、巴拿馬(PA)、菲律賓(PH)、塞內加爾(SN)、斯里蘭卡(LK)、瑞士(SZ)、烏拉圭(UY)、烏茲別克(UZ)。 按主機數目排名前10的域名:com、e、uk、gov、de、ca、mil、au、org、net
1995
NSFNET恢復成為學術網路,美國大部分的主幹網業務由互聯的網路服務提供商辦理。 NSF建立超高速主幹網服務(vBNS),連接超級計算中心:NCAR、NCSA、SDSC、CTC、PSC,新的NSFNET誕生。 香港警方為了搜捕一個計算機"黑客(hacker)",除了本地的一個Internet供應商外,關閉了所有的Internet供應商,使10,000人無法使用網路。 5月23日,Sun公司發布JAVA。 使用音頻流技術的RealAudio使在網上可以收聽到接近於真實的聲音。
2. 大型的 PHP應用 通常使用什麼應用做 消息隊列 的
一、消息隊列概述
消息隊列中間件是分布式系統中重要的組件,主要解決應用耦合,非同步消息,流量削鋒等問題。實現高性能,高可用,可伸縮和最終一致性架構。是大型分布式系統不可缺少的中間件。
目前在生產環境,使用較多的消息隊列有ActiveMQ,RabbitMQ,ZeroMQ,Kafka,MetaMQ,RocketMQ等。
二、消息隊列應用場景
以下介紹消息隊列在實際應用中常用的使用場景。非同步處理,應用解耦,流量削鋒和消息通訊四個場景。
2.1非同步處理
場景說明:用戶注冊後,需要發注冊郵件和注冊簡訊。傳統的做法有兩種1.串列的方式;2.並行方式。
(1)串列方式:將注冊信息寫入資料庫成功後,發送注冊郵件,再發送注冊簡訊。以上三個任務全部完成後,返回給客戶端。(架構KKQ:466097527,歡迎加入)
(2)並行方式:將注冊信息寫入資料庫成功後,發送注冊郵件的同時,發送注冊簡訊。以上三個任務完成後,返回給客戶端。與串列的差別是,並行的方式可以提高處理的時間。
假設三個業務節點每個使用50毫秒鍾,不考慮網路等其他開銷,則串列方式的時間是150毫秒,並行的時間可能是100毫秒。
因為CPU在單位時間內處理的請求數是一定的,假設CPU1秒內吞吐量是100次。則串列方式1秒內CPU可處理的請求量是7次(1000/150)。並行方式處理的請求量是10次(1000/100)。
小結:如以上案例描述,傳統的方式系統的性能(並發量,吞吐量,響應時間)會有瓶頸。如何解決這個問題呢?
引入消息隊列,將不是必須的業務邏輯,非同步處理。改造後的架構如下:
按照以上約定,用戶的響應時間相當於是注冊信息寫入資料庫的時間,也就是50毫秒。注冊郵件,發送簡訊寫入消息隊列後,直接返回,因此寫入消息隊列的速度很快,基本可以忽略,因此用戶的響應時間可能是50毫秒。因此架構改變後,系統的吞吐量提高到每秒20 QPS。比串列提高了3倍,比並行提高了兩倍。
2.2應用解耦
場景說明:用戶下單後,訂單系統需要通知庫存系統。傳統的做法是,訂單系統調用庫存系統的介面。如下圖:
傳統模式的缺點:
1) 假如庫存系統無法訪問,則訂單減庫存將失敗,從而導致訂單失敗;
2) 訂單系統與庫存系統耦合;
如何解決以上問題呢?引入應用消息隊列後的方案,如下圖:
訂單系統:用戶下單後,訂單系統完成持久化處理,將消息寫入消息隊列,返回用戶訂單下單成功。
庫存系統:訂閱下單的消息,採用拉/推的方式,獲取下單信息,庫存系統根據下單信息,進行庫存操作。
假如:在下單時庫存系統不能正常使用。也不影響正常下單,因為下單後,訂單系統寫入消息隊列就不再關心其他的後續操作了。實現訂單系統與庫存系統的應用解耦。
2.3流量削鋒
流量削鋒也是消息隊列中的常用場景,一般在秒殺或團搶活動中使用廣泛。
應用場景:秒殺活動,一般會因為流量過大,導致流量暴增,應用掛掉。為解決這個問題,一般需要在應用前端加入消息隊列。
可以控制活動的人數;
可以緩解短時間內高流量壓垮應用;
用戶的請求,伺服器接收後,首先寫入消息隊列。假如消息隊列長度超過最大數量,則直接拋棄用戶請求或跳轉到錯誤頁面;
秒殺業務根據消息隊列中的請求信息,再做後續處理。
2.4日誌處理
日誌處理是指將消息隊列用在日誌處理中,比如Kafka的應用,解決大量日誌傳輸的問題。架構簡化如下:
日誌採集客戶端,負責日誌數據採集,定時寫受寫入Kafka隊列;
Kafka消息隊列,負責日誌數據的接收,存儲和轉發;
日誌處理應用:訂閱並消費kafka隊列中的日誌數據;
以下是新浪kafka日誌處理應用案例:
(1)Kafka:接收用戶日誌的消息隊列。
(2)Logstash:做日誌解析,統一成JSON輸出給Elasticsearch。
(3)Elasticsearch:實時日誌分析服務的核心技術,一個schemaless,實時的數據存儲服務,通過index組織數據,兼具強大的搜索和統計功能。
(4)Kibana:基於Elasticsearch的數據可視化組件,超強的數據可視化能力是眾多公司選擇ELK stack的重要原因。
2.5消息通訊
消息通訊是指,消息隊列一般都內置了高效的通信機制,因此也可以用在純的消息通訊。比如實現點對點消息隊列,或者聊天室等。
點對點通訊:
客戶端A和客戶端B使用同一隊列,進行消息通訊。
聊天室通訊:
客戶端A,客戶端B,客戶端N訂閱同一主題,進行消息發布和接收。實現類似聊天室效果。
以上實際是消息隊列的兩種消息模式,點對點或發布訂閱模式。模型為示意圖,供參考。
三、消息中間件示例
3.1電商系統
消息隊列採用高可用,可持久化的消息中間件。比如Active MQ,Rabbit MQ,Rocket Mq。(1)應用將主幹邏輯處理完成後,寫入消息隊列。消息發送是否成功可以開啟消息的確認模式。(消息隊列返回消息接收成功狀態後,應用再返回,這樣保障消息的完整性)
(2)擴展流程(發簡訊,配送處理)訂閱隊列消息。採用推或拉的方式獲取消息並處理。
(3)消息將應用解耦的同時,帶來了數據一致性問題,可以採用最終一致性方式解決。比如主數據寫入資料庫,擴展應用根據消息隊列,並結合資料庫方式實現基於消息隊列的後續處理。
3.2日誌收集系統
分為Zookeeper注冊中心,日誌收集客戶端,Kafka集群和Storm集群(OtherApp)四部分組成。
Zookeeper注冊中心,提出負載均衡和地址查找服務;
日誌收集客戶端,用於採集應用系統的日誌,並將數據推送到kafka隊列;
四、JMS消息服務
講消息隊列就不得不提JMS 。JMS(Java Message Service,Java消息服務)API是一個消息服務的標准/規范,允許應用程序組件基於JavaEE平台創建、發送、接收和讀取消息。它使分布式通信耦合度更低,消息服務更加可靠以及非同步性。
在EJB架構中,有消息bean可以無縫的與JM消息服務集成。在J2EE架構模式中,有消息服務者模式,用於實現消息與應用直接的解耦。
4.1消息模型
在JMS標准中,有兩種消息模型P2P(Point to Point),Publish/Subscribe(Pub/Sub)。
4.1.1 P2P模式
P2P模式包含三個角色:消息隊列(Queue),發送者(Sender),接收者(Receiver)。每個消息都被發送到一個特定的隊列,接收者從隊列中獲取消息。隊列保留著消息,直到他們被消費或超時。
P2P的特點
每個消息只有一個消費者(Consumer)(即一旦被消費,消息就不再在消息隊列中)
發送者和接收者之間在時間上沒有依賴性,也就是說當發送者發送了消息之後,不管接收者有沒有正在運行,它不會影響到消息被發送到隊列
接收者在成功接收消息之後需向隊列應答成功
如果希望發送的每個消息都會被成功處理的話,那麼需要P2P模式。(架構KKQ:466097527,歡迎加入)
4.1.2 Pub/sub模式
包含三個角色主題(Topic),發布者(Publisher),訂閱者(Subscriber) 。多個發布者將消息發送到Topic,系統將這些消息傳遞給多個訂閱者。
Pub/Sub的特點
每個消息可以有多個消費者
發布者和訂閱者之間有時間上的依賴性。針對某個主題(Topic)的訂閱者,它必須創建一個訂閱者之後,才能消費發布者的消息。
為了消費消息,訂閱者必須保持運行的狀態。
為了緩和這樣嚴格的時間相關性,JMS允許訂閱者創建一個可持久化的訂閱。這樣,即使訂閱者沒有被激活(運行),它也能接收到發布者的消息。
如果希望發送的消息可以不被做任何處理、或者只被一個消息者處理、或者可以被多個消費者處理的話,那麼可以採用Pub/Sub模型。
4.2消息消費
在JMS中,消息的產生和消費都是非同步的。對於消費來說,JMS的消息者可以通過兩種方式來消費消息。
(1)同步
訂閱者或接收者通過receive方法來接收消息,receive方法在接收到消息之前(或超時之前)將一直阻塞;
(2)非同步
訂閱者或接收者可以注冊為一個消息監聽器。當消息到達之後,系統自動調用監聽器的onMessage方法。
JNDI:Java命名和目錄介面,是一種標準的Java命名系統介面。可以在網路上查找和訪問服務。通過指定一個資源名稱,該名稱對應於資料庫或命名服務中的一個記錄,同時返回資源連接建立所必須的信息。
JNDI在JMS中起到查找和訪問發送目標或消息來源的作用。(架構KKQ:466097527,歡迎加入)
4.3JMS編程模型
(1) ConnectionFactory
創建Connection對象的工廠,針對兩種不同的jms消息模型,分別有QueueConnectionFactory和TopicConnectionFactory兩種。可以通過JNDI來查找ConnectionFactory對象。
(2) Destination
Destination的意思是消息生產者的消息發送目標或者說消息消費者的消息來源。對於消息生產者來說,它的Destination是某個隊列(Queue)或某個主題(Topic);對於消息消費者來說,它的Destination也是某個隊列或主題(即消息來源)。
所以,Destination實際上就是兩種類型的對象:Queue、Topic可以通過JNDI來查找Destination。
(3) Connection
Connection表示在客戶端和JMS系統之間建立的鏈接(對TCP/IP socket的包裝)。Connection可以產生一個或多個Session。跟ConnectionFactory一樣,Connection也有兩種類型:QueueConnection和TopicConnection。
(4) Session
Session是操作消息的介面。可以通過session創建生產者、消費者、消息等。Session提供了事務的功能。當需要使用session發送/接收多個消息時,可以將這些發送/接收動作放到一個事務中。同樣,也分QueueSession和TopicSession。
(5) 消息的生產者
消息生產者由Session創建,並用於將消息發送到Destination。同樣,消息生產者分兩種類型:QueueSender和TopicPublisher。可以調用消息生產者的方法(send或publish方法)發送消息。
(6) 消息消費者
消息消費者由Session創建,用於接收被發送到Destination的消息。兩種類型:QueueReceiver和TopicSubscriber。可分別通過session的createReceiver(Queue)或createSubscriber(Topic)來創建。當然,也可以session的creatDurableSubscriber方法來創建持久化的訂閱者。
(7) MessageListener
消息監聽器。如果注冊了消息監聽器,一旦消息到達,將自動調用監聽器的onMessage方法。EJB中的MDB(Message-Driven Bean)就是一種MessageListener。
深入學習JMS對掌握JAVA架構,EJB架構有很好的幫助,消息中間件也是大型分布式系統必須的組件。本次分享主要做全局性介紹,具體的深入需要大家學習,實踐,總結,領會。
五、常用消息隊列
一般商用的容器,比如WebLogic,JBoss,都支持JMS標准,開發上很方便。但免費的比如Tomcat,Jetty等則需要使用第三方的消息中間件。本部分內容介紹常用的消息中間件(Active MQ,Rabbit MQ,Zero MQ,Kafka)以及他們的特點。
5.1 ActiveMQ
ActiveMQ 是Apache出品,最流行的,能力強勁的開源消息匯流排。ActiveMQ 是一個完全支持JMS1.1和J2EE 1.4規范的 JMS Provider實現,盡管JMS規范出台已經是很久的事情了,但是JMS在當今的J2EE應用中間仍然扮演著特殊的地位。
ActiveMQ特性如下:
⒈ 多種語言和協議編寫客戶端。語言: Java,C,C++,C#,Ruby,Perl,Python,PHP。應用協議: OpenWire,Stomp REST,WS Notification,XMPP,AMQP
⒉ 完全支持JMS1.1和J2EE 1.4規范 (持久化,XA消息,事務)
⒊ 對spring的支持,ActiveMQ可以很容易內嵌到使用Spring的系統裡面去,而且也支持Spring2.0的特性
⒋ 通過了常見J2EE伺服器(如 Geronimo,JBoss 4,GlassFish,WebLogic)的測試,其中通過JCA 1.5 resource adaptors的配置,可以讓ActiveMQ可以自動的部署到任何兼容J2EE 1.4 商業伺服器上
⒌ 支持多種傳送協議:in-VM,TCP,SSL,NIO,UDP,JGroups,JXTA
⒍ 支持通過JDBC和journal提供高速的消息持久化
⒎ 從設計上保證了高性能的集群,客戶端-伺服器,點對點
⒏ 支持Ajax
⒐ 支持與Axis的整合
⒑ 可以很容易得調用內嵌JMS provider,進行測試
5.2 RabbitMQ
RabbitMQ是流行的開源消息隊列系統,用erlang語言開發。RabbitMQ是AMQP(高級消息隊列協議)的標准實現。支持多種客戶端,如:Python、Ruby、.NET、Java、JMS、C、PHP、ActionScript、XMPP、STOMP等,支持AJAX,持久化。用於在分布式系統中存儲轉發消息,在易用性、擴展性、高可用性等方面表現不俗。
幾個重要概念:
Broker:簡單來說就是消息隊列伺服器實體。
Exchange:消息交換機,它指定消息按什麼規則,路由到哪個隊列。
Queue:消息隊列載體,每個消息都會被投入到一個或多個隊列。
Binding:綁定,它的作用就是把exchange和queue按照路由規則綁定起來。
Routing Key:路由關鍵字,exchange根據這個關鍵字進行消息投遞。
vhost:虛擬主機,一個broker里可以開設多個vhost,用作不同用戶的許可權分離。
procer:消息生產者,就是投遞消息的程序。
consumer:消息消費者,就是接受消息的程序。
channel:消息通道,在客戶端的每個連接里,可建立多個channel,每個channel代表一個會話任務。
消息隊列的使用過程,如下:
(1)客戶端連接到消息隊列伺服器,打開一個channel。
(2)客戶端聲明一個exchange,並設置相關屬性。
(3)客戶端聲明一個queue,並設置相關屬性。
(4)客戶端使用routing key,在exchange和queue之間建立好綁定關系。
(5)客戶端投遞消息到exchange。
exchange接收到消息後,就根據消息的key和已經設置的binding,進行消息路由,將消息投遞到一個或多個隊列里。
5.3 ZeroMQ
號稱史上最快的消息隊列,它實際類似於Socket的一系列介面,他跟Socket的區別是:普通的socket是端到端的(1:1的關系),而ZMQ卻是可以N:M 的關系,人們對BSD套接字的了解較多的是點對點的連接,點對點連接需要顯式地建立連接、銷毀連接、選擇協議(TCP/UDP)和處理錯誤等,而ZMQ屏蔽了這些細節,讓你的網路編程更為簡單。ZMQ用於node與node間的通信,node可以是主機或者是進程。
引用官方的說法: 「ZMQ(以下ZeroMQ簡稱ZMQ)是一個簡單好用的傳輸層,像框架一樣的一個socket library,他使得Socket編程更加簡單、簡潔和性能更高。是一個消息處理隊列庫,可在多個線程、內核和主機盒之間彈性伸縮。ZMQ的明確目標是「成為標准網路協議棧的一部分,之後進入Linux內核」。現在還未看到它們的成功。但是,它無疑是極具前景的、並且是人們更加需要的「傳統」BSD套接字之上的一 層封裝。ZMQ讓編寫高性能網路應用程序極為簡單和有趣。」
特點是:
高性能,非持久化;
跨平台:支持Linux、Windows、OS X等。
多語言支持; C、C++、Java、.NET、Python等30多種開發語言。
可單獨部署或集成到應用中使用;
可作為Socket通信庫使用。
與RabbitMQ相比,ZMQ並不像是一個傳統意義上的消息隊列伺服器,事實上,它也根本不是一個伺服器,更像一個底層的網路通訊庫,在Socket API之上做了一層封裝,將網路通訊、進程通訊和線程通訊抽象為統一的API介面。支持「Request-Reply 「,」Publisher-Subscriber「,」Parallel Pipeline」三種基本模型和擴展模型。
ZeroMQ高性能設計要點:
1、無鎖的隊列模型
對於跨線程間的交互(用戶端和session)之間的數據交換通道pipe,採用無鎖的隊列演算法CAS;在pipe兩端注冊有非同步事件,在讀或者寫消息到pipe的時,會自動觸發讀寫事件。
2、批量處理的演算法
對於傳統的消息處理,每個消息在發送和接收的時候,都需要系統的調用,這樣對於大量的消息,系統的開銷比較大,zeroMQ對於批量的消息,進行了適應性的優化,可以批量的接收和發送消息。
3、多核下的線程綁定,無須CPU切換
區別於傳統的多線程並發模式,信號量或者臨界區, zeroMQ充分利用多核的優勢,每個核綁定運行一個工作者線程,避免多線程之間的CPU切換開銷。
5.4 Kafka
Kafka是一種高吞吐量的分布式發布訂閱消息系統,它可以處理消費者規模的網站中的所有動作流數據。 這種動作(網頁瀏覽,搜索和其他用戶的行動)是在現代網路上的許多社會功能的一個關鍵因素。 這些數據通常是由於吞吐量的要求而通過處理日誌和日誌聚合來解決。 對於像Hadoop的一樣的日誌數據和離線分析系統,但又要求實時處理的限制,這是一個可行的解決方案。Kafka的目的是通過Hadoop的並行載入機制來統一線上和離線的消息處理,也是為了通過集群機來提供實時的消費。
Kafka是一種高吞吐量的分布式發布訂閱消息系統,有如下特性:
通過O(1)的磁碟數據結構提供消息的持久化,這種結構對於即使數以TB的消息存儲也能夠保持長時間的穩定性能。(文件追加的方式寫入數據,過期的數據定期刪除)
高吞吐量:即使是非常普通的硬體Kafka也可以支持每秒數百萬的消息。
支持通過Kafka伺服器和消費機集群來分區消息。
支持Hadoop並行數據載入。
Kafka相關概念
Broker
Kafka集群包含一個或多個伺服器,這種伺服器被稱為broker[5]
Topic
每條發布到Kafka集群的消息都有一個類別,這個類別被稱為Topic。(物理上不同Topic的消息分開存儲,邏輯上一個Topic的消息雖然保存於一個或多個broker上但用戶只需指定消息的Topic即可生產或消費數據而不必關心數據存於何處)
Partition
Parition是物理上的概念,每個Topic包含一個或多個Partition.
Procer
負責發布消息到Kafka broker
Consumer
消息消費者,向Kafka broker讀取消息的客戶端。
Consumer Group
每個Consumer屬於一個特定的Consumer Group(可為每個Consumer指定group name,若不指定group name則屬於默認的group)。
一般應用在大數據日誌處理或對實時性(少量延遲),可靠性(少量丟數據)要求稍低的場景使用。