第一章 計(jì)算機(jī)網(wǎng)絡(luò)和因特網(wǎng)
這一章簡(jiǎn)述了計(jì)算機(jī)網(wǎng)絡(luò)的一些概念和基礎(chǔ)知識(shí),比如說(shuō)什么是協(xié)議、OSI(Open System Interconnection 開(kāi)放式系統(tǒng)互聯(lián))參考模型等??赐赀@一章后對(duì)計(jì)算機(jī)網(wǎng)絡(luò)有一個(gè)大體的了解,對(duì)之后的深入學(xué)習(xí)有所幫助。
因特網(wǎng)
因特網(wǎng)具體構(gòu)成
公共因特網(wǎng):特定的計(jì)算機(jī)網(wǎng)絡(luò)。因特網(wǎng)是一個(gè)世界范圍的計(jì)算機(jī)網(wǎng)絡(luò),它包含了許多設(shè)備,如傳統(tǒng)的桌面PC、Linux工作站的服務(wù)器,今天有許多“新物品“加入,如智能手機(jī)、平板電腦、電視等。所有的這些設(shè)備都被稱(chēng)為主機(jī)(host)或端系統(tǒng)(end system)。
端系統(tǒng)通過(guò)通信鏈路(communication link)和分組交換機(jī)(packet switch)連接,鏈路的傳輸速率以比特/秒(bit/s)度量,當(dāng)一臺(tái)端系統(tǒng)要向另一臺(tái)端系統(tǒng)發(fā)送數(shù)據(jù)時(shí),發(fā)送端系統(tǒng)將數(shù)據(jù)分段,并為每段加上首部字節(jié),由此形成的信息包用計(jì)算機(jī)網(wǎng)絡(luò)的術(shù)語(yǔ)來(lái)說(shuō)稱(chēng)為分組(packet)。
交換機(jī):兩種最著名的類(lèi)型是路由器(router)和鏈路層交換機(jī)(link-layer switch)。它們朝著最終目的地轉(zhuǎn)發(fā)分組。
從發(fā)送端系統(tǒng)到接受端系統(tǒng),一個(gè)分組所經(jīng)歷的一系列通信鏈路和分組交互機(jī)稱(chēng)為通過(guò)該網(wǎng)絡(luò)的路徑(route或path)。
端系統(tǒng)通過(guò)因特爾服務(wù)提供商(Internet Service Provider, ISP)接入因特網(wǎng)。比如本地電纜或電話(huà)公司那樣的住宅區(qū)ISP、公司ISP等,以及為智能手機(jī)和其他設(shè)備提供移動(dòng)接入的蜂窩數(shù)據(jù)ISP。每個(gè)ISP自身就是一個(gè)由多臺(tái)分組交換機(jī)和多段通信鏈路組成的網(wǎng)絡(luò)。ISP運(yùn)行著IP協(xié)議,遵從一定的命名和地址規(guī)則。
端系統(tǒng)、分組交換機(jī)和其他因特網(wǎng)不見(jiàn)都要運(yùn)行一些列協(xié)議(protocol)。TCP(Transmission Control Protocol, 傳輸控制協(xié)議)和IP(Internet Protocol, 網(wǎng)際協(xié)議)是因特網(wǎng)中兩個(gè)最為重要的協(xié)議。
什么是協(xié)議
《計(jì)算機(jī)網(wǎng)絡(luò) 自頂向下方法》P5 用人類(lèi)活動(dòng)進(jìn)行類(lèi)比,清晰明確。
協(xié)議定義了在兩個(gè)或多個(gè)通信實(shí)體之間交換的報(bào)文的格式和順序,以及報(bào)文發(fā)送和/或接受一條豹紋或其他時(shí)間所采取的動(dòng)作。
網(wǎng)絡(luò)邊緣
通常把與因特網(wǎng)相連的計(jì)算機(jī)和其他設(shè)備稱(chēng)為端系統(tǒng)。因?yàn)樗鼈兾挥谝蛱鼐W(wǎng)的邊緣,故而被稱(chēng)為端系統(tǒng)。包括桌面計(jì)算機(jī)、服務(wù)器和移動(dòng)計(jì)算機(jī)。
端系統(tǒng)也成為主機(jī)(host),主機(jī)又被進(jìn)一步分為兩類(lèi):客戶(hù)(client)和服務(wù)器(server)。Web頁(yè)面和視頻的服務(wù)都屬于大型數(shù)據(jù)中心(data center)。
接入網(wǎng)
接入網(wǎng):指將端系統(tǒng)物理連接到其邊緣路由器(edge router)的網(wǎng)絡(luò)。邊緣路由器是端系統(tǒng)到任何其他遠(yuǎn)程端系統(tǒng)的路徑上的第一臺(tái)路由器。
寬帶住宅接入有兩種最流行的類(lèi)型:數(shù)字用戶(hù)線(xiàn)(Digital Subscriber Line, DSL)和電纜。DSL利用電話(huà)公司現(xiàn)有的本地電話(huà)基礎(chǔ)設(shè)施,而電纜因特網(wǎng)接入(cable Internet access)利用了有線(xiàn)電視公司現(xiàn)有的有線(xiàn)電視基礎(chǔ)設(shè)施。
新興技術(shù):光纖到戶(hù)。
企業(yè)(和家庭)接入:以太網(wǎng)和WiFi
廣域無(wú)線(xiàn)接入:3G和LTE
物理媒體:《計(jì)算機(jī)網(wǎng)絡(luò) 自上而下方法》P13 - P15
網(wǎng)絡(luò)核心
分組交換
在各種網(wǎng)絡(luò)應(yīng)用中,端系統(tǒng)彼此交換報(bào)文(message)。為了從源端系統(tǒng)向目的端系統(tǒng)發(fā)送報(bào)文,源將長(zhǎng)報(bào)文劃分為較小的數(shù)據(jù)塊,稱(chēng)之為分組(packet)。每個(gè)分組都通過(guò)通信鏈路和分組交換機(jī)以等于該鏈路最大傳輸速率的速度傳輸通過(guò)通信鏈路。如果某源端系統(tǒng)或分組交換機(jī)經(jīng)過(guò)一條鏈路發(fā)送一個(gè)L比特的分組,鏈路的傳輸速率為R比特/秒,則傳輸該分組的時(shí)間為L(zhǎng)/R秒。
存儲(chǔ)轉(zhuǎn)發(fā)傳輸
存儲(chǔ)轉(zhuǎn)發(fā)傳輸是指在交換機(jī)能夠開(kāi)始向輸出鏈路傳輸該分組的第一個(gè)比特之前,必須接受到整個(gè)分組。路由器接受到分組的一部分時(shí),緩存分組的比特,當(dāng)路由器接受完了該分組的所有比特后,才能開(kāi)始轉(zhuǎn)發(fā)該分組。
在時(shí)刻L/R,路由器開(kāi)始轉(zhuǎn)發(fā)第一個(gè)分組。而在時(shí)刻L/R源也開(kāi)始發(fā)送第二個(gè)番組,因?yàn)樗呀?jīng)完成了第一個(gè)分組的完整發(fā)送。因此,在時(shí)刻2L/R,目的地已經(jīng)接收到第一個(gè)分組并且路由器已經(jīng)收到第二個(gè)分組。
通過(guò)由N條速率均為R的鏈路組成的路徑,端到端時(shí)延是:d = N * L/R
排隊(duì)時(shí)延和分組丟失
分組交換機(jī)具有一個(gè)輸出緩存(output buffer, 也稱(chēng)為輸出隊(duì)列(output queue)),它用于儲(chǔ)存路由器準(zhǔn)備發(fā)往那條鏈路的分組。如果到達(dá)的分組需要傳輸?shù)侥硹l鏈路,但發(fā)現(xiàn)該鏈路正忙于傳輸其他分組,該到達(dá)分組必須在輸出緩存中等待。除了存儲(chǔ)轉(zhuǎn)發(fā)時(shí)延意外,分組還要承受輸出緩存的排隊(duì)時(shí)延(queuing delay)。
一個(gè)到達(dá)的分組可能發(fā)現(xiàn)該緩存已被其他等待傳輸?shù)姆纸M完全充滿(mǎn)了,將出現(xiàn)分組丟失(丟包)(packet loss),到達(dá)的分組或已經(jīng)排隊(duì)的分組之一將被丟棄。
轉(zhuǎn)發(fā)表和路由選擇協(xié)議
在因特網(wǎng)中,每個(gè)端系統(tǒng)具有一個(gè)稱(chēng)為IP地址的地址。當(dāng)源主機(jī)要向目的端系統(tǒng)發(fā)送一個(gè)分組時(shí),源在該分組的首部包含了目的地的IP地址。每臺(tái)路由器具有一個(gè)轉(zhuǎn)發(fā)表(forwarding table),用于將目的地址映射稱(chēng)為輸出鏈路。
因特網(wǎng)具有一些特殊的路由選擇協(xié)議(routing protocol),用于自動(dòng)地設(shè)置這些轉(zhuǎn)發(fā)表。
電路交換
通過(guò)網(wǎng)絡(luò)鏈路和交換機(jī)移動(dòng)數(shù)據(jù)有兩種基本方法:電路交換(circuit switching)和分組交換(packet switching)。
電路交換:以傳統(tǒng)的電話(huà)網(wǎng)絡(luò)為例子,在發(fā)送方能夠發(fā)送信息之前,該網(wǎng)絡(luò)必須在發(fā)送方和接收方之間建立一條連接。這是一個(gè)名副其實(shí)的連接,因?yàn)榇藭r(shí)沿著發(fā)送方和接收方之間路徑上的交換機(jī)都將為該鏈接維護(hù)連接狀態(tài)。用電話(huà)的術(shù)語(yǔ)來(lái)說(shuō),該連接被稱(chēng)為一條電路(circuit)。
電路交換網(wǎng)絡(luò)在兩臺(tái)主機(jī)之間創(chuàng)建一條專(zhuān)用的端到端連接(end-to-end connection)。
兩個(gè)分組使用同一條鏈路將會(huì)出現(xiàn)阻塞情況,較晚的分組進(jìn)入緩存,產(chǎn)生時(shí)延。
電路交換網(wǎng)絡(luò)中的復(fù)用
頻分復(fù)用(FDM)或時(shí)分復(fù)用(TDM)
頻段寬度稱(chēng)為帶寬(band-width)。
這部分內(nèi)容在《計(jì)算機(jī)網(wǎng)絡(luò) 自頂向下方法》P20,講得很詳細(xì)
分組交換與電路交換的對(duì)比
分組交換的性能優(yōu)于電路交換:1.它提供了比電路交換更好的帶寬共享;2.它比電路交換更簡(jiǎn)單、更有效,實(shí)現(xiàn)成本更低。3.分組交換按需分配鏈路使用,鏈路傳輸能力將在所有需要在鏈路上傳輸分組的用戶(hù)之間逐分組地被共享。
網(wǎng)絡(luò)的網(wǎng)絡(luò)
網(wǎng)絡(luò)結(jié)構(gòu)1:單一的全球傳輸ISP互聯(lián)所有接入ISP。接入ISP被認(rèn)為是客戶(hù)(customer),全球傳輸ISP被認(rèn)為是提供商(provider)。
網(wǎng)絡(luò)結(jié)構(gòu)2:兩層等級(jí)結(jié)構(gòu),全球傳輸提供商位于頂層,而接入ISP位于底層。在任何給定的區(qū)域,可能有一個(gè)區(qū)域ISP(regional ISP),每個(gè)區(qū)域ISP與第一層ISP(tier-1 ISP)連接。第一層ISP類(lèi)似于我們假象的全球傳輸ISP。
另外還有多個(gè)競(jìng)爭(zhēng)的第一層ISP。較小的區(qū)域ISP與較大的區(qū)域ISP相連,還有省級(jí)ISP與國(guó)家級(jí)ISP,因此又有了網(wǎng)絡(luò)結(jié)構(gòu)3。
網(wǎng)絡(luò)結(jié)構(gòu)3:增加了存在點(diǎn)(Point of Presence, PoP)、多宿、對(duì)等和因特網(wǎng)交換點(diǎn)。PoP存在于等級(jí)結(jié)構(gòu)的所有層次,但底層(接入ISP)等級(jí)除外。任何ISP(除了第一層ISP)可以選擇多宿(multi-home),既可以與兩個(gè)區(qū)域ISP多宿,也可以與一個(gè)第一層ISP多宿。當(dāng)一個(gè)ISP多宿時(shí),即使它的提供商之一出現(xiàn)故障,他仍然能夠繼續(xù)發(fā)送和接收分組。
位于相同等級(jí)結(jié)構(gòu)層次的鄰近一對(duì)ISP能夠對(duì)等(peer),能夠直接將它們的網(wǎng)絡(luò)連到一起,使它們之間的所有流量經(jīng)直接連接而不是通過(guò)上游的中間ISP傳輸。
第三方公司可以創(chuàng)建一個(gè)因特網(wǎng)交換點(diǎn)(Internet Exchange Point, IXP)。IXP是一個(gè)匯合點(diǎn),多個(gè)ISP能夠在這里一起對(duì)等。
網(wǎng)絡(luò)結(jié)構(gòu)4:由接入ISP、區(qū)域ISP、第一層ISP、PoP、多宿、對(duì)等和IXP組成的生態(tài)系統(tǒng)。
網(wǎng)絡(luò)結(jié)構(gòu)5:描述了現(xiàn)在的因特網(wǎng),通過(guò)在網(wǎng)絡(luò)結(jié)構(gòu)4頂部增加內(nèi)容提供商網(wǎng)絡(luò)(content provider network)構(gòu)建而成。
分組交換網(wǎng)中的時(shí)延、丟包和吞吐量(重點(diǎn))
這一節(jié)推薦從《計(jì)算機(jī)網(wǎng)絡(luò) 自頂向下方法》P24也開(kāi)始看
吞吐量:每秒能夠傳送的數(shù)據(jù)量
分組交換網(wǎng)中的時(shí)延概述
分組從主機(jī)(源)出發(fā),經(jīng)過(guò)一系列路由器傳輸,到達(dá)另一臺(tái)主機(jī)(目的地)。當(dāng)分組從一個(gè)節(jié)點(diǎn)(主機(jī)或路由器)沿著這條路徑到后繼節(jié)點(diǎn),該分組在沿途的每個(gè)節(jié)點(diǎn)經(jīng)受了幾種不同類(lèi)型的時(shí)延。最重要的是節(jié)點(diǎn)處理時(shí)延(nodal processing delay)、排隊(duì)時(shí)延(queuing delay)、傳輸時(shí)延(transmission delay)和傳播時(shí)延(propagation delay),這些時(shí)延總體累加起來(lái)是節(jié)點(diǎn)總時(shí)延(total nodal delay)。
時(shí)延的類(lèi)型
1.處理時(shí)延:檢查分組首部和決定該分組導(dǎo)向何處所需要的時(shí)間、檢查比特級(jí)別的差錯(cuò)所需要的時(shí)間。
2.排隊(duì)時(shí)延:在隊(duì)列中,該分組在鏈路上等待傳輸時(shí),它經(jīng)受排隊(duì)時(shí)延。
3.傳輸時(shí)延:假定分組已先到先服務(wù)方式傳輸,僅當(dāng)所有已經(jīng)到達(dá)的分組被傳輸后,才能傳輸剛到達(dá)的分組。用L比特表示該分組的長(zhǎng)度,用R bps(b/s)表示從路由器A到路由器B的鏈路傳輸速率。傳輸時(shí)延是L/R。這是將所有分組的比特推向鏈路所需要的時(shí)間。
4.傳播時(shí)延:一旦一個(gè)比特被推向鏈路被推向鏈路,該比特需要向路由器B傳播。從該鏈路的起點(diǎn)到路由器B傳播所需要的時(shí)間是傳播時(shí)延。
節(jié)點(diǎn)總時(shí)延 = 處理時(shí)延 + 排隊(duì)時(shí)延 + 傳輸時(shí)延 + 傳播時(shí)延
排隊(duì)時(shí)延和丟包
排隊(duì)時(shí)延很大程度取決于流量到達(dá)該隊(duì)列的速率、鏈路的傳輸速率和到達(dá)流量的性質(zhì),即流量是周期性到達(dá)還是以突發(fā)形式到達(dá)。
令a表示分組到達(dá)隊(duì)列的平均速率(分組/s, pkt/s),R是傳輸速率(bps/s),假定所有分組都是由L比特組成,則比特到達(dá)隊(duì)列的平均速率是La bps。假定該隊(duì)列能容納無(wú)限數(shù)量的比特。比率La/R被稱(chēng)為流量強(qiáng)度(traffic intensity)。如果La/R > 1,則比特到達(dá)隊(duì)列的平均速率超過(guò)從該隊(duì)列傳輸出去的速率,在這種情況下該隊(duì)列趨向于無(wú)限增加,排隊(duì)時(shí)延將趨向于無(wú)窮大。
設(shè)計(jì)系統(tǒng)時(shí)流量強(qiáng)度不能大于1
La/R <= 1時(shí),到達(dá)流量的性質(zhì)影響排隊(duì)時(shí)延。如果分組時(shí)周期性到達(dá),即每L/R秒到達(dá)一個(gè)分組,則沒(méi)有排隊(duì)時(shí)延。如果分組以突發(fā)形式到達(dá),則可能會(huì)有很大的平均排隊(duì)時(shí)延。
丟包
上述討論假設(shè)隊(duì)列能容納無(wú)窮多分組,但是事實(shí)上排隊(duì)容量是有限的,隨著流量強(qiáng)度接近1,排隊(duì)時(shí)延并不真正趨向無(wú)窮大。相反,到達(dá)的分組將發(fā)現(xiàn)一個(gè)滿(mǎn)的隊(duì)列。由于沒(méi)有地方存儲(chǔ)這個(gè)分組,路由器將丟棄(drop)該分組,即該分組將會(huì)丟失(lost)。
端到端時(shí)延
端到端時(shí)延 = N(傳播時(shí)延 + 傳輸時(shí)延 + 處理時(shí)延)
計(jì)算機(jī)網(wǎng)絡(luò)中的吞吐量
《計(jì)算機(jī)網(wǎng)絡(luò) 自頂向下方法》P30 例子講得很細(xì)致
協(xié)議層次及其服務(wù)模型(重要)
分層的體系結(jié)構(gòu)
利用分層的體系結(jié)構(gòu),我們可以討論一個(gè)大而復(fù)雜系統(tǒng)的定義良好的特定部分。
協(xié)議分層
網(wǎng)絡(luò)設(shè)計(jì)者以分層(layer)的方式組織協(xié)議以及實(shí)現(xiàn)這些協(xié)議的網(wǎng)絡(luò)硬件和軟件。各層的所有協(xié)議被稱(chēng)為協(xié)議棧(protocol stack)。因特網(wǎng)的協(xié)議棧有五個(gè)層次組成:物理層、鏈路層、網(wǎng)絡(luò)層、運(yùn)輸層和應(yīng)用層。采用自頂向下方法我們首先處理應(yīng)用層,然后向下進(jìn)行處理。
1.應(yīng)用層
應(yīng)用層時(shí)網(wǎng)絡(luò)應(yīng)用程序及它們的應(yīng)用層協(xié)議存留的地方。因特網(wǎng)的應(yīng)用層包括許多協(xié)議,例如HTTP(提供了Web文檔的請(qǐng)求和傳送)、SMTP(提供了電子郵件報(bào)文的傳輸)和FTP(提供兩個(gè)端系統(tǒng)之間的文件傳送)。
應(yīng)用層協(xié)議分布在多個(gè)端系統(tǒng)上,而一個(gè)端系統(tǒng)中的應(yīng)用程序使用協(xié)議與另一個(gè)端系統(tǒng)中的應(yīng)用程序交換信息分組,稱(chēng)為報(bào)文(message)。
2.運(yùn)輸層
因特網(wǎng)的運(yùn)輸層在應(yīng)用程序端點(diǎn)之間傳送應(yīng)用層報(bào)文。兩種傳輸協(xié)議:TCP和UDP。TCP提供面向連接服務(wù),確保傳遞和流量控制,它將長(zhǎng)報(bào)文劃分為短報(bào)文,并提供擁塞控制機(jī)制。UDP提供無(wú)連接服務(wù),沒(méi)有可靠性、流量控制、擁塞控制。運(yùn)輸層的分組稱(chēng)為報(bào)文段(segment)。
3.網(wǎng)絡(luò)層
網(wǎng)絡(luò)層負(fù)責(zé)將稱(chēng)為數(shù)據(jù)報(bào)(datagram)的網(wǎng)絡(luò)層分組從一臺(tái)主機(jī)移動(dòng)到另一臺(tái)主機(jī)。網(wǎng)絡(luò)層包括著名的網(wǎng)際協(xié)議IP。所有具有網(wǎng)絡(luò)層的因特網(wǎng)組件必須運(yùn)行IP。因特網(wǎng)還具有許多路由選擇協(xié)議。通常把網(wǎng)絡(luò)層簡(jiǎn)單地稱(chēng)為IP層。
4.鏈路層
為了將分組從一個(gè)節(jié)點(diǎn)(主機(jī)或路由器)移動(dòng)到路徑上的下一個(gè)節(jié)點(diǎn),網(wǎng)絡(luò)層必須依靠該鏈路層的服務(wù)。由鏈路層提供的服務(wù)取決于應(yīng)用于該鏈路的特定鏈路層協(xié)議。鏈路層的例子包括以太網(wǎng)、WiFi和電纜接入網(wǎng)的DOCSIS協(xié)議。我們把鏈路層分組稱(chēng)為幀(frame)。
5.物理層
物理層的任務(wù)將鏈路層分組(幀)中的一個(gè)個(gè)比特從一個(gè)節(jié)點(diǎn)移動(dòng)到下一個(gè)節(jié)點(diǎn)。在這層中的協(xié)議仍然是鏈路鏈路相關(guān)的,并且進(jìn)一步于該鏈路(例如,雙絞銅線(xiàn)、單模光纖)的實(shí)際傳輸媒體有關(guān)。
OSI模型
七層模型:應(yīng)用層、表示層、會(huì)話(huà)層、運(yùn)輸層、網(wǎng)絡(luò)層、鏈路層、物理層。
封裝
封裝(encapsulation):在發(fā)送主機(jī)端,一個(gè)應(yīng)用層報(bào)文(application-layer message)被傳送給運(yùn)輸層,運(yùn)輸層收取到報(bào)文并附上運(yùn)輸層首部信息,該首部將被接受端的運(yùn)輸層使用。應(yīng)用層報(bào)文和運(yùn)輸層首部信息一起構(gòu)成運(yùn)輸層報(bào)文端(transport-layer segment)。運(yùn)輸層報(bào)文因此封裝了應(yīng)用層報(bào)文。運(yùn)輸層向網(wǎng)絡(luò)層傳遞該報(bào)文段,網(wǎng)絡(luò)層增加了如源和目的端系統(tǒng)地址等網(wǎng)絡(luò)層首部信息,生成了網(wǎng)絡(luò)層數(shù)據(jù)報(bào)(network-layer datagram)。該數(shù)據(jù)報(bào)接下來(lái)被傳遞給鏈路層,鏈路層增加它自己的鏈路層首部信息并聲稱(chēng)鏈路層幀(link-layer frame)。我們看到在每一層,一個(gè)分組具有兩種類(lèi)型字段:首部字段和有效載荷字段(payload field)。有效載荷字段通常是來(lái)自上一層的分組。
面對(duì)攻擊的網(wǎng)絡(luò)
病毒、蠕蟲(chóng)、僵尸網(wǎng)絡(luò)等
弱點(diǎn)攻擊、帶寬洪泛、連接洪泛
嗅探分組、IP哄騙