摘要:這一章首先介紹網(wǎng)絡(luò)的結(jié)構(gòu),然后介紹分組交換以及分組交換網(wǎng)絡(luò)中的時(shí)延、丟包、吞吐率等基本概念,這些概念在后續(xù)各章節(jié)中會(huì)反復(fù)提到。最后對(duì)計(jì)算機(jī)網(wǎng)絡(luò)中協(xié)議進(jìn)行了概述。
關(guān)鍵詞:網(wǎng)絡(luò)結(jié)構(gòu);分組運(yùn)輸;協(xié)議
目錄:
??1.網(wǎng)絡(luò)邊緣
??2.網(wǎng)絡(luò)核心
??3.分組交換
????3.1分組交換原理及其原因
????3.2分組交換網(wǎng)絡(luò)的特點(diǎn)
??4.協(xié)議
????4.1協(xié)議棧
????4.2服務(wù)模型
1 網(wǎng)絡(luò)邊緣
目前的計(jì)算機(jī)網(wǎng)絡(luò)組成部分有很多,包括端系統(tǒng)、路由器、交換機(jī)、傳輸介質(zhì)等。
網(wǎng)絡(luò)邊緣:端系統(tǒng)及其接入網(wǎng)。端系統(tǒng)也就是運(yùn)行應(yīng)用程序的終端主機(jī),而接入網(wǎng)則是將端系統(tǒng)介入網(wǎng)絡(luò)的第一條傳輸鏈路,比如wlan、2G/3G/4G/5G、有線。顧名思義,網(wǎng)絡(luò)邊緣,就是在一個(gè)2D網(wǎng)絡(luò)圖中,他們都將位于圖邊界上的節(jié)點(diǎn)(端系統(tǒng))和與之相連的邊上(接入網(wǎng))。
2 網(wǎng)絡(luò)核心
網(wǎng)絡(luò)核心:分組交換網(wǎng)絡(luò)和其之間的鏈路構(gòu)成。網(wǎng)絡(luò)邊緣由消費(fèi)者使用,而網(wǎng)絡(luò)核心則由網(wǎng)絡(luò)服務(wù)提供商(Internet Service Provider,ISP)提供。
3 分組交換
3.1 分組交換原理及其原因
端系統(tǒng)接入計(jì)算機(jī)網(wǎng)絡(luò)之后,便可以與網(wǎng)絡(luò)中的其他端系統(tǒng)之間進(jìn)行信息交換。而信息是如何交換的呢?分組交換。
分組交換:把一個(gè)數(shù)據(jù)(后面都將稱之為“報(bào)文”)切分成分割成若干小的數(shù)據(jù)段,將小數(shù)據(jù)段依次傳送出去。
Why分組交換?
使用分組交換的一個(gè)重要原因在于網(wǎng)絡(luò)核心中路由器使用的存儲(chǔ)轉(zhuǎn)發(fā)傳輸機(jī)制:在一個(gè)分組沒(méi)有完全到達(dá)之前,不會(huì)向下一個(gè)路由器發(fā)送該分組。也就是意味著一個(gè)長(zhǎng)度為L的分組的從端系統(tǒng)A經(jīng)過(guò)N個(gè)路由器和傳輸速率為R的鏈路到達(dá)端系統(tǒng)B經(jīng)歷的時(shí)間延遲為:
delay=N*L/R
L越大,delay越大,如果不使用分組運(yùn)輸,那么一個(gè)數(shù)據(jù)包相當(dāng)于只有一個(gè)分組,L就會(huì)很大。但分組也不是越多越好,一個(gè)數(shù)據(jù)包的分組越多,每個(gè)分組就越小,理論上總延遲就會(huì)減少,實(shí)際的做法是,每個(gè)分組的大小是固定的并非越小越好。分組的大小為什么選取這個(gè)值,等到第五章的時(shí)候,自然知曉了。
除了分組交換的策略之外,還有電路交換,只是已經(jīng)逐漸不再使用了。
3.2 分組交換網(wǎng)絡(luò)特點(diǎn)
3.2.1 時(shí)延
時(shí)間延遲更確切的其實(shí)就是數(shù)據(jù)從一個(gè)端系統(tǒng)運(yùn)輸至另一個(gè)端系統(tǒng)所需的時(shí)間。包括:
- 處理時(shí)延:路由器檢查分組的首部并決定該分組將發(fā)往何處的時(shí)間
- 排隊(duì)時(shí)延: 分組在路由器中等待的時(shí)間。在大流量的時(shí)候,很可能分組達(dá)到一個(gè)路由后需要等待前面的分組發(fā)送完成之后才輪到自己被路由器發(fā)送出去。
- 傳輸時(shí)延:將分組推出路由器的時(shí)間。就好比一個(gè)水池把里面的水放完的時(shí)間
-
傳播時(shí)延:分組在鏈路中傳播的時(shí)間。就好比水從水池放出去后,到達(dá)下一個(gè)地方需要消耗的時(shí)間。
那么端到端的總時(shí)延為:
delay = delayproc + delayqueue+ delaytrans+ delayprop
3.2.2 丟包
我們把路由器比作一個(gè)水池,水池上部有流入流量為Rin的水管,水池底部有流出流量為Rout的水管,如果Rin>Rout,隨著時(shí)間的推移,水池里的水就會(huì)慢慢上漲,也就是意味著流入的水開(kāi)始排隊(duì)流出,而水池滿了以后,水就溢出來(lái)了,也就是數(shù)據(jù)包丟失了,即丟包。
3.2.3 吞吐量
在介紹吞吐量之前,需要首先知道傳輸速率。
傳輸速率:?jiǎn)挝粫r(shí)間內(nèi)可以傳輸?shù)谋忍財(cái)?shù)。常用單位:bps。
吞吐量則是指,單位時(shí)間內(nèi),從一個(gè)端系統(tǒng)發(fā)送到另一個(gè)端系統(tǒng)的數(shù)據(jù),單位也是bps。
吞吐量與什么有關(guān)呢?
顯然首先與路由器的傳輸速率有關(guān),路由器能提供的傳輸速率越高,單位時(shí)間就能傳送越多的數(shù)據(jù),其能達(dá)到的理想的最大吞吐量是整個(gè)鏈路中所有路由器中傳輸速率的最小值,但這只是理想情況。實(shí)際情況是,同時(shí)有很多端系統(tǒng)之間在傳送數(shù)據(jù),吞吐量往往達(dá)不到理想的吞吐量,網(wǎng)絡(luò)越擁塞,吞吐量就會(huì)越小,因此吞吐量還會(huì)與網(wǎng)絡(luò)擁塞程度相關(guān)。
吞吐量vs時(shí)延
- 吞吐量和時(shí)延從兩個(gè)不同的方面描述了網(wǎng)絡(luò)性能。
吞吐量表明連接個(gè)水池之間的管道有多大,管道越大流量越大。而時(shí)延表明該管道有多長(zhǎng)。越長(zhǎng)消耗在運(yùn)輸過(guò)程中的時(shí)間將會(huì)越大 - 對(duì)于一條給定的網(wǎng)絡(luò)而言,如果吞吐量降低了或者時(shí)延提高了,都表明網(wǎng)絡(luò)擁塞程度提高了。
- 不同的數(shù)據(jù)對(duì)吞吐量和時(shí)延有不同的要求
高吞吐量:對(duì)于傳送一個(gè)大文件而言,時(shí)延高一點(diǎn)沒(méi)關(guān)系,因?yàn)闀r(shí)延再高,相比于文件推送出去的時(shí)間而言都是很小的,如果吞吐量很小文件要很久才能推出去,因此對(duì)大文件傳送而言,更看重高吞吐量。就好比將青海湖的水運(yùn)到你家附件,你家在中國(guó)哪個(gè)位置不是關(guān)鍵,關(guān)鍵是你用多大流量的管道來(lái)運(yùn)輸。用普通管道運(yùn)輸即使你家在青海湖附近,估計(jì)也要很久很久,如果你用長(zhǎng)江來(lái)運(yùn),即使你家在上海,也用不了很久。
低延時(shí):有些數(shù)據(jù)不大,而且發(fā)出去的也是斷斷續(xù)續(xù)的,需要的是時(shí)候發(fā)送,不需要的時(shí)候不發(fā)送,但響應(yīng)要快,比如微信聊天,這對(duì)時(shí)延的要求就比較低了。
當(dāng)然如果吞吐量也高,延時(shí)也低,那就最好了。這樣就可以玩實(shí)時(shí)在線游戲了。
此外要說(shuō)明的一點(diǎn)是,平常所謂的”帶寬“和”傳輸速率“實(shí)際上并不是同一個(gè)概念。
帶寬:能傳輸信號(hào)的頻率范圍,就最高頻率和最低之差,其單位是赫茲Hz。
由于帶寬的大小決定了能其能達(dá)到的傳輸速率,并有一個(gè)確定的關(guān)系(香農(nóng)定理),越來(lái)越多的情況下,帶寬就指代了傳輸速率,如果你遇到別人說(shuō)帶寬多少bps的,你就當(dāng)成傳輸速率就可以了。
4.協(xié)議
4.1協(xié)議棧
各種層級(jí)的協(xié)議貫穿著整個(gè)計(jì)算機(jī)網(wǎng)絡(luò)知識(shí)體系的始終,學(xué)習(xí)計(jì)算機(jī)網(wǎng)絡(luò)很大程度上是在學(xué)習(xí)其各種協(xié)議。
目前互聯(lián)網(wǎng)使用的是五層模型:
| 協(xié)議棧 | 服務(wù)內(nèi)容 | 分組的別稱 |
|---|---|---|
| 應(yīng)用層 | 描述端系統(tǒng)之間發(fā)送或接收的是什么信息,提供了很多對(duì)信息本身的描述,只要是關(guān)于信息本身的都由應(yīng)用層提供 | 報(bào)文(message) |
| 傳輸層 | 確定應(yīng)用層的報(bào)文將以何種方式從端系統(tǒng)中推送出去,如報(bào)文將被分成多少段,每段大小多少,報(bào)文將發(fā)往哪個(gè)ip和端口。與報(bào)文傳輸相關(guān)的信息都將由傳輸層提供 | 報(bào)文段(segment) |
| 網(wǎng)絡(luò)層 | 報(bào)文段從傳輸層推出后,將由網(wǎng)絡(luò)邊緣進(jìn)入網(wǎng)絡(luò)核心,網(wǎng)絡(luò)層將確定該報(bào)文經(jīng)由什么樣的路由,以順利達(dá)到目的地,并使網(wǎng)絡(luò)中的各個(gè)鏈路負(fù)載均衡 | 數(shù)據(jù)報(bào)(datagram) |
| 鏈路層 | 確定如何在兩個(gè)路由器之間移動(dòng)數(shù)據(jù)報(bào),是可靠傳輸還是不可靠傳輸(此處與TCP可靠傳輸協(xié)議不同,TCP是端到端的,這里是路由器之間的) | 幀(frame) |
| 物理層 | 將鏈路層中的幀以一個(gè)一個(gè)比特從一個(gè)節(jié)點(diǎn)移動(dòng)到下一個(gè)節(jié)點(diǎn),不同的傳輸介質(zhì),其移動(dòng)比特的方式也將是不同的 | -- |
為什么要稱之為協(xié)議棧?
棧的特點(diǎn)是先入棧的元素后出棧,協(xié)議棧也是一樣。
例如:現(xiàn)在需要傳送一段文字“i was graduated from Huazhong University of Science and Technology ”。
發(fā)送數(shù)據(jù):先將文本變成二進(jìn)制流0,首先應(yīng)用層會(huì)在這個(gè)二進(jìn)制流基礎(chǔ)上增加應(yīng)用層信息,變成一個(gè)新的二進(jìn)制流1 = 二進(jìn)制流0+應(yīng)用層二進(jìn)制流,該流推送到傳輸層后,將二進(jìn)制流1分割后,每個(gè)報(bào)文段加上傳輸層的信息形成二進(jìn)制流2i = 二進(jìn)制流1i+傳輸層二進(jìn)制流i,后面的協(xié)議層依次類推。
接收數(shù)據(jù):接受信息時(shí),傳輸層會(huì)先抽出屬于傳輸層的信息,剩下的二進(jìn)制流中包含由應(yīng)用層信息和真正的文本信息,之后送到應(yīng)用層,應(yīng)用層把他這層的信息抽取出來(lái),剩下真正要交換的信息給應(yīng)用程序。
從這個(gè)發(fā)送和接收的過(guò)程可以看到,發(fā)送過(guò)程各層將相應(yīng)的數(shù)據(jù)入棧,接收過(guò)程各層將相應(yīng)的數(shù)據(jù)出棧。
4.2 服務(wù)模型
從將一個(gè)數(shù)據(jù)傳輸從一個(gè)端系統(tǒng)傳送至另一個(gè)端系統(tǒng),數(shù)據(jù)將經(jīng)過(guò)5層處理,每一層都各司其職,層與層之間都是消費(fèi)者和生成者的關(guān)系,每一層要做的事情就是確保自己能提供上一層所需要的服務(wù),以及如何把該服務(wù)的質(zhì)量提高,而不做不屬于自己該做的事情。例如使用https協(xié)議時(shí),TCP層只負(fù)責(zé)報(bào)文段的發(fā)送,而不負(fù)責(zé)https報(bào)文數(shù)據(jù)的解密,TCP不會(huì)先將數(shù)據(jù)解密再遞交到應(yīng)用層。
在此后的學(xué)習(xí)中,我們除了應(yīng)該關(guān)注于每一層能提供的服務(wù)及其是如何提供的之外,還需要知道其是如何與上一層和下一層進(jìn)行交互的,比如應(yīng)用層是如何把信息傳給傳輸層的,而傳輸層不斷收到分組之后又是以何種方式送給應(yīng)用層的。