具體構成描述
因特網(wǎng)是一個世界范圍內的計算機網(wǎng)絡,即它是一個互聯(lián)了遍及全世界數(shù)十億計算設備的網(wǎng)絡。在不久前,這些計算設備多數(shù)是傳統(tǒng)的桌面PC、Linux工作站以及所謂的服務器。然而,越來越多的非傳統(tǒng)的因特網(wǎng)“物品”正在與因特網(wǎng)相連。的確,在許多非傳統(tǒng)設備連接到因特網(wǎng)的情況下,計算機網(wǎng)絡這個術語有些過時了。用因特網(wǎng)術語來說,所有這些設備都稱為主機或端系統(tǒng)。據(jù)估計,到2015年大約有50億臺設備與因特網(wǎng)連接,而到2020年該數(shù)字將達到250億。2015年,全世界已有超過32億因特網(wǎng)用戶,接近世界人口的40%。
端系統(tǒng)通過通信鏈路和分組交換機連接到一起。其中,通信鏈路由不同類型的物理媒體組成。這些物理媒體包括同軸電纜、銅線、光纖和無線電頻譜。不同的鏈路能夠以不同的速率傳輸數(shù)據(jù),鏈路的傳輸數(shù)據(jù)以比特/秒度量。當一臺端系統(tǒng)要向另一臺端系統(tǒng)發(fā)送數(shù)據(jù)時,發(fā)送端系統(tǒng)將數(shù)據(jù)分段,并為每段加上首部字節(jié)。由此形成的信息包用計算機網(wǎng)絡的術語稱為分組。這些分組通過網(wǎng)絡發(fā)送到目的端系統(tǒng),在那里轉配成初始數(shù)據(jù)。
分組交換機從它的一條入通信鏈路接收到達的分組,并從它的一條出通信鏈路轉發(fā)該分組。市面上流行著各種類型、各具特色的分組交換機,但在當今的因特網(wǎng)中,兩種最著名的類型是路由器和鏈路層交換機。這兩種類型的交換機朝著最終目的地轉發(fā)分組。鏈路層交換機通常用于接入網(wǎng)中,而路由器通常用于網(wǎng)絡核心中。從發(fā)送端系統(tǒng)到接收端系統(tǒng),一個分組所經(jīng)歷的一系列通信鏈路和分組交換機稱為通過該網(wǎng)絡的路徑。思科公司估計到2016年年底全球年度IP流量將超過澤字節(jié),到2019年超過2澤字節(jié)。
由于傳送分組分組交換網(wǎng)絡在許多方面類似于承載車輛的運輸網(wǎng)絡,該網(wǎng)絡包括了高速公路、公路和交叉口。例如,考慮下列情況,一個工廠需要將大量貨物搬運到數(shù)千公里以外的某個目的地倉庫。在工廠中,貨物要分開并裝上卡車車隊。然后,每輛卡車獨立地通過高速公路、公路和立交橋組成的網(wǎng)絡向倉庫運輸貨物。在目的地倉庫,卸下這些貨物,并且與一起裝載的同一批貨物的其余部分堆在一起。因此,在許多方面,分組類似于卡車,通信鏈路類似于高速公路和公路,分組交換類似于交叉口,而端系統(tǒng)類似于建筑物。就像卡車選取運輸網(wǎng)絡的一條路徑前行一樣,分組則選取計算機網(wǎng)絡的一條路徑前行。
端系統(tǒng)通過因特網(wǎng)服務提供商接入因特網(wǎng),包括如本地電纜和電話公司那樣的住宅ISP、公司ISP、大學ISP,在機場、旅館、咖啡店和其他公共場所提供WIFI接入的ISP,以及為智能手機和其他設備提供移動接入的蜂窩數(shù)據(jù)ISP。每個ISP自身就是一個由多臺分組交換機和多段通信鏈路組成的網(wǎng)絡。各ISP為端系統(tǒng)提供了各種不同類型的網(wǎng)絡接入,包括如線纜調制解調器或DSL那樣的住宅寬帶接入、高速局域網(wǎng)接入和移動無線接入。ISP也為內容提供者提供因特網(wǎng)接入服務,將Web站點和視頻服務器直接連入因特網(wǎng)。因特網(wǎng)就是將端系統(tǒng)彼此互聯(lián),因此為端系統(tǒng)提供互聯(lián)的ISP也必須互聯(lián)。較低層的ISP通過國家的、國際的較高層ISP互聯(lián)起來。較高層ISP則則是通過高速光纖鏈路互聯(lián)的高速路由器組成的。無論是較高層還是較低層ISP網(wǎng)絡,他們每個都是獨立管理的,運行著IP協(xié)議,遵從一定的命名和地址規(guī)則。
端系統(tǒng)、分組交換機和其他因特網(wǎng)部件都要運行一系列協(xié)議,這些協(xié)議控制因特網(wǎng)中信息的接收和發(fā)送。TCP和IP協(xié)議是因特網(wǎng)中兩個最為重要的協(xié)議。IP協(xié)議定義了在路由器和端系統(tǒng)之間發(fā)送和接收的分組格式。因特網(wǎng)的主要協(xié)議統(tǒng)稱為TCP/IP。
鑒于因特網(wǎng)協(xié)議的重要性,每個人就各個協(xié)議及其作用取得一致認識是很重要的,這樣人們就能夠創(chuàng)造協(xié)同工作的系統(tǒng)和產(chǎn)品。這正是標準發(fā)揮作用的地方。
因特網(wǎng)標準是由因特網(wǎng)工程任務組研發(fā)。IETF的標準文檔稱為請求評論。RFC最初只是普通的請求評論,目的是解決因特網(wǎng)先驅者們面臨的網(wǎng)絡和協(xié)議問題。RFC文檔往往是技術性很強并相當詳細的。他們定義了TCP、IP、HTTP、SMTP等協(xié)議。目前已經(jīng)有將近7000個RFC。其他組織也在指定用于網(wǎng)絡組件的標準,最引人注目的是網(wǎng)絡鏈路的標準。例如,IEEE 802 LAN/MAN標準化委員會【IEEE 802 2016】制定了以太網(wǎng)和無線WIFI的標準。
服務描述
前面的討論已經(jīng)辨識了構成因特網(wǎng)的許多部件。但是我們也能從一個完全不同的角度,即從為應用程序提供服務的基礎設施的角度來描述因特網(wǎng)。除了諸如電子郵件和Web沖浪等傳統(tǒng)應用外,因特網(wǎng)還包括移動智能手機和平板電腦應用程序,其中包括即時訊息、與實時道路流量信息的映射、來自云的音樂流、電影和電視流、在線社交網(wǎng)絡、視頻會議、多人游戲以及基于位置的推薦系統(tǒng)。因為這些應用程序涉及多個相互交換數(shù)據(jù)的端系統(tǒng),故它們被稱為分布式應用程序。重要的是,因特網(wǎng)應用程序在端系統(tǒng)上,即它們并不運行在網(wǎng)絡核心中的分組交換機中。盡管分組交換機能夠加速端系統(tǒng)之間的數(shù)據(jù)交換,但它們并不在意作為數(shù)據(jù)的源或宿的應用程序。
我們稍深入探討一下為應用程序提供服務的基礎設施的含義。為此,假定你對某種分布式因特網(wǎng)應用有一個激動人心的新想法,它可能大大地造福于人類,或者它可能直接使你名利雙收。你將如何把這種想法轉化成一個實際的因特網(wǎng)應用呢?因為應用程序運行在端系統(tǒng)上,所以你需要編寫運行在端系統(tǒng)的一些軟件。例如,你可能用C、Java或Python編寫軟件。此時,因為你研發(fā)一種分布式因特網(wǎng)應用程序,運行在不同端系統(tǒng)的軟件將需要互相發(fā)送數(shù)據(jù)。此時我們碰到了一個核心問題,這個問題導致了另一種描述因特網(wǎng)的方法,即將因特網(wǎng)描述為應用程序的平臺。運行在端系統(tǒng)上的應用程序怎樣才能指令因特網(wǎng)向運行在另一個端系統(tǒng)上的軟件發(fā)送數(shù)據(jù)呢?
與因特網(wǎng)相連的端系統(tǒng)提供了一個套接字接口,改接口規(guī)定了運行在另一個端系統(tǒng)上的程序請求因特網(wǎng)基礎設施向運行在另一個端系統(tǒng)的特定目的地程序交付數(shù)據(jù)的方式。因特網(wǎng)套接字接口是一套發(fā)送程序必須遵循的規(guī)則集合,因此因特網(wǎng)能夠將數(shù)據(jù)交付給目的地。此時,我們做一個簡單的類比。假定Alice使用郵政服務向Bob發(fā)一封信。當然,Alice不能只是寫了這封信然后把信丟出窗外。相反,郵政服務要求Alice將信放入一個信封中;在信封的中間寫上Bob的全名、地址和郵政編碼;封上信封;在信封的右上角貼上郵票;最后將該信封丟進郵局的一個郵政服務信箱中。因此,該郵政服務有自己的“郵政接口服務”或一套規(guī)則,這是Alice必須遵循的,這樣郵政服務才能將她的信件交給Bob。同理,因特網(wǎng)也有一個發(fā)送數(shù)據(jù)的程序必須遵循套接字接口,使因特網(wǎng)向接收數(shù)據(jù)的程序交付數(shù)據(jù)。
當然,郵政服務向顧客提供了多種服務,如特快專遞、掛號、普通服務等。同樣,因特網(wǎng)向應用程序提供了多種服務。當你研發(fā)一種因特網(wǎng)應用程序時,也必須為你的應用程序選擇其中的 一種因特網(wǎng)服務。
我們已經(jīng)給出了因特網(wǎng)的兩種描述方法:一種是根據(jù)它的硬件和軟件組件來描述,另一種是基礎設施像向分布式應用程序提供的服務來描述。
什么是協(xié)議?
1、人類活動的類比
也許理解計算機網(wǎng)絡協(xié)議這一概念的一個最容易的辦法是,先與某些人類活動進行類比,因為我們人類無時無刻不止在執(zhí)行協(xié)議??紤]到當你想要向某人詢問時間將要怎么做。人類協(xié)議要求一方首先進行問候,然后開始與另一個人的通信。對“你好”的典型響應是返回一個“你好”報文。此人用一個熱情的“你好進行響應”,隱含著一種指示,表明能夠繼續(xù)向那人詢問時間了。對最初的“你好”的不同響應也許表明了一個勉強的或不能進行的通信。在此情況下,按照人類協(xié)議,發(fā)話者就不能詢問時間了。有時,問的問題根本得不到任何回答,在此情況下,按照人類協(xié)議,發(fā)話者通常會放棄向這個人詢問時間。注意在我們人類協(xié)議中,有我們發(fā)送的特定報文,也有我們根據(jù)接收到的應答報文或其他時間采取的動作。顯然,發(fā)送和接收的報文,以及這些報文發(fā)送和接收或其他事件出現(xiàn)時所采取的動作,這些在一個人類協(xié)議中起到了核心作用。如果人們使用不同的協(xié)議,這些協(xié)議就不能交互,因而不能完成有用的工作。在網(wǎng)絡中這個道理同樣成立。即為了完成一項工作,要求兩個通信實體運行相同的協(xié)議。
我們再考慮第二個人類類比的例子。假定你正在大學課堂里上課。教師正在嘮嘮叨叨地講述協(xié)議,而你困惑不解。這名教師停下來問:“同學們你們有什么問題嗎?”你舉起了手。這位教師面帶微笑地示意你說:“請講……”接著你就問了問題。教師聽取了你的問題并加以回答。我們再一次看到了報文的發(fā)送和接收,以及這些報文發(fā)送和接收時所采取的一系列約定俗成的動作,這些是這個“提問與回答”協(xié)議的關鍵所在。
2、網(wǎng)絡協(xié)議
網(wǎng)絡協(xié)議類似于人類協(xié)議,除了交換報文和采取動作的實體是某些設備的硬件或軟件組件。在因特網(wǎng)中,涉及兩個或多個遠程通信實體的所有活動都受協(xié)議的制約。例如,在兩臺物理上連接的計算機中,硬件實現(xiàn)的協(xié)議控制了在兩塊網(wǎng)絡接口卡間的“線上”得比特流;在端系統(tǒng)中,擁塞控制協(xié)議控制了在發(fā)送方和接收方之間傳輸?shù)姆纸M發(fā)送的速率;路由器中的協(xié)議決定了分組從源到目的地的路徑。在因特網(wǎng)中協(xié)議運行無處不在。
以大家可能熟悉的一個計算機網(wǎng)絡協(xié)議為例,考慮當你向一個Web服務器發(fā)出請求時所發(fā)生的情況。首先,你的計算機向該Web服務器發(fā)送一條連接請求報文,并等待回答。該Web服務器將最終能接收到連接請求報文,并返回一條連接響應報文。得知請求該Web文檔正常以后,計算機則在一條GET報文中發(fā)送要從這臺Web服務器上取回的網(wǎng)頁名字。最后,Web服務器向計算機返回該Web網(wǎng)頁。
以上述的人類活動和網(wǎng)絡例子中可見,報文的交換以及發(fā)送和接收這些報文時所采取的動作是定義一個協(xié)議的關鍵元素:
協(xié)議定義了在兩個或多個通信實體之間交換的報文的格式和順序,以及報文發(fā)送和接收一條報文或其他事件所采取的動作。
因特網(wǎng)廣泛地使用了協(xié)議。不同的協(xié)議用于完成不同的通信任務。某些協(xié)議簡單而直接了當,而某些協(xié)議則復雜且晦澀難懂。掌握計算機網(wǎng)絡領域知識的過程就是理解網(wǎng)絡協(xié)議的構成、原理和工作方式的過程。