建议看 | 计算机网络核心概念
戳藍(lán)字“CSDN云計(jì)算”關(guān)注我們哦!
作者 |?cxuan
責(zé)編 | 阿禿
本篇文章我們來(lái)探討一下網(wǎng)絡(luò)核心、交換網(wǎng)絡(luò)、時(shí)延、丟包、吞吐量以及計(jì)算機(jī)網(wǎng)絡(luò)的協(xié)議層次和網(wǎng)絡(luò)攻擊。
網(wǎng)絡(luò)核心
網(wǎng)絡(luò)的核心是由因特網(wǎng)端系統(tǒng)和鏈路構(gòu)成的網(wǎng)狀網(wǎng)絡(luò),下面這幅圖正確的表達(dá)了這一點(diǎn)。
那么在不同的 ISP 和本地以及家庭網(wǎng)絡(luò)是如何交換信息的呢?信息交換主要分為兩種方式 分組交換 和 電路交互,下面我們就來(lái)一起認(rèn)識(shí)一下。
分組交換
在互聯(lián)網(wǎng)應(yīng)用中,每個(gè)終端系統(tǒng)都可以彼此交換信息,這種信息也被稱為 報(bào)文(Message),報(bào)文是一個(gè)集大成者,它可以包括你想要的任何東西,比如文字、數(shù)據(jù)、電子郵件、音頻、視頻等。為了從源目的地向端系統(tǒng)發(fā)送報(bào)文,需要把長(zhǎng)報(bào)文切分為一個(gè)個(gè)小的數(shù)據(jù)塊,這種數(shù)據(jù)塊稱為分組(Packets),也就是說(shuō),報(bào)文是由一個(gè)個(gè)小塊的分組組成。在端系統(tǒng)和目的地之間,每個(gè)分組都要經(jīng)過(guò)通信鏈路(communication links) 和分組交換機(jī)(switch packets) ,通信鏈路可以分為雙絞銅線、同軸電纜和光纖。分組交換機(jī)又分為路由器和鏈路層交換機(jī)。(這塊如果你不明白的話,還需要翻看我上一篇文章 你說(shuō)你懂互聯(lián)網(wǎng),那這些你知道么?)分組要在端系統(tǒng)之間交互需要經(jīng)過(guò)一定的時(shí)間,如果兩個(gè)端系統(tǒng)之間需要交互的分組為 L 比特,鏈路的傳輸速率為 R 比特/秒,那么傳輸時(shí)間就是 L / R秒。
現(xiàn)在我們來(lái)模擬一下這個(gè)分組交換的過(guò)程,一個(gè)端系統(tǒng)需要經(jīng)過(guò)交換機(jī)給其他端系統(tǒng)發(fā)送分組,當(dāng)分組到達(dá)交換機(jī)時(shí),交換機(jī)就能夠直接進(jìn)行轉(zhuǎn)發(fā)嗎?不是的,交換機(jī)可沒(méi)有這么無(wú)私,你想讓我?guī)湍戕D(zhuǎn)發(fā)分組?好,首先你需要先把整個(gè)分組數(shù)據(jù)都給我,我再考慮給你發(fā)送的問(wèn)題,這就是存儲(chǔ)轉(zhuǎn)發(fā)傳輸
存儲(chǔ)轉(zhuǎn)發(fā)傳輸
存儲(chǔ)轉(zhuǎn)發(fā)傳輸指的就是交換機(jī)在轉(zhuǎn)發(fā)分組的第一個(gè)比特前,必須要接受到整個(gè)分組,下面是一個(gè)存儲(chǔ)轉(zhuǎn)發(fā)傳輸?shù)氖疽鈭D,可以從圖中窺出端倪。
由圖可以看出,分組 1、2、3 在以 R bps 的速率向交換器進(jìn)行分組傳輸,并且交換機(jī)已經(jīng)收到了分組1 發(fā)送的比特,此時(shí)交換機(jī)會(huì)直接進(jìn)行轉(zhuǎn)發(fā)嗎?答案是不會(huì)的,交換機(jī)會(huì)把你的分組先緩存在本地。這就和考試作弊一樣,一個(gè)學(xué)霸要經(jīng)過(guò)學(xué)渣 A 給學(xué)渣 B 傳答案,學(xué)渣 A 說(shuō),學(xué)渣 A 在收到答案后,他可能直接把卷子傳過(guò)去嗎?學(xué)渣A 說(shuō),等我先把答案抄完(保存功能)后再把卷子給你。
排隊(duì)時(shí)延和分組丟失
什么?你認(rèn)為交換機(jī)只能和一條通信鏈路進(jìn)行相連?那你就大錯(cuò)特錯(cuò)了,這可是交換機(jī)啊,怎么可能只有一條通信鏈路呢?
所以我相信你一定能想到這個(gè)問(wèn)題,多個(gè)端系統(tǒng)同時(shí)給交換器發(fā)送分組,一定存在順序到達(dá)和排隊(duì)的問(wèn)題。事實(shí)上,對(duì)于每條相連的鏈路,該分組交換機(jī)會(huì)有一個(gè)輸出緩存(output buffer) 和 輸出隊(duì)列(output queue) 與之對(duì)應(yīng),它用于存儲(chǔ)路由器準(zhǔn)備發(fā)往每條鏈路的分組。如果到達(dá)的分組發(fā)現(xiàn)路由器正在接收其他分組,那么新到達(dá)的分組就會(huì)在輸出隊(duì)列中進(jìn)行排隊(duì),這種等待分組轉(zhuǎn)發(fā)所耗費(fèi)的時(shí)間也被稱為 排隊(duì)時(shí)延,上面提到分組交換器在轉(zhuǎn)發(fā)分組時(shí)會(huì)進(jìn)行等待,這種等待被稱為 存儲(chǔ)轉(zhuǎn)發(fā)時(shí)延,所以我們現(xiàn)在了解到的有兩種時(shí)延,但是其實(shí)是有四種時(shí)延。這些時(shí)延不是一成不變的,其變化程序取決于網(wǎng)絡(luò)的擁塞程度。
因?yàn)殛?duì)列是有容量限制的,當(dāng)多條鏈路同時(shí)發(fā)送分組導(dǎo)致輸出緩存無(wú)法接受超額的分組后,這些分組會(huì)丟失,這種情況被稱為 丟包(packet loss),到達(dá)的分組或者已排隊(duì)的分組將會(huì)被丟棄。
下圖說(shuō)明了一個(gè)簡(jiǎn)單的分組交換網(wǎng)絡(luò):
在上圖中,分組由三位數(shù)據(jù)平板展示,平板的寬度表示著分組數(shù)據(jù)的大小。所有的分組都有相同的寬度,因此也就有相同的數(shù)據(jù)包大小。下面來(lái)一個(gè)情景模擬: 假定主機(jī) A 和 主機(jī) B 要向主機(jī) E 發(fā)送分組,主機(jī) A 和 B 首先通過(guò)100 Mbps以太網(wǎng)鏈路將其數(shù)據(jù)包發(fā)送到第一臺(tái)路由器,然后路由器將這些數(shù)據(jù)包定向到15 Mbps的鏈路。如果在較短的時(shí)間間隔內(nèi),數(shù)據(jù)包到達(dá)路由器的速率(轉(zhuǎn)換為每秒比特?cái)?shù))超過(guò)15 Mbps,則在數(shù)據(jù)包在鏈路輸出緩沖區(qū)中排隊(duì)之前,路由器上會(huì)發(fā)生擁塞,然后再傳輸?shù)芥溌飞稀@?#xff0c;如果主機(jī) A 和主機(jī) B 背靠背同時(shí)發(fā)了5包數(shù)據(jù),那么這些數(shù)據(jù)包中的大多數(shù)將花費(fèi)一些時(shí)間在隊(duì)列中等待。實(shí)際上,這種情況與許多普通情況完全相似,例如,當(dāng)我們排隊(duì)等候銀行出納員或在收費(fèi)站前等候時(shí)。
轉(zhuǎn)發(fā)表和路由器選擇協(xié)議
我們剛剛講過(guò),路由器和多個(gè)通信線路進(jìn)行相連,如果每條通信鏈路同時(shí)發(fā)送分組的話,可能會(huì)造成排隊(duì)和丟包的情況,然后分組在隊(duì)列中等待發(fā)送,現(xiàn)在我就有一個(gè)問(wèn)題問(wèn)你,隊(duì)列中的分組發(fā)向哪里?這是由什么機(jī)制決定的?
換個(gè)角度想問(wèn)題,路由的作用是什么?把不同端系統(tǒng)中的數(shù)據(jù)包進(jìn)行存儲(chǔ)和轉(zhuǎn)發(fā) 。在因特網(wǎng)中,每個(gè)端系統(tǒng)都會(huì)有一個(gè) IP 地址,當(dāng)原主機(jī)發(fā)送一個(gè)分組時(shí),在分組的首部都會(huì)加上原主機(jī)的 IP 地址。每一臺(tái)路由器都會(huì)有一個(gè) 轉(zhuǎn)發(fā)表(forwarding table),當(dāng)一個(gè)分組到達(dá)路由器后,路由器會(huì)檢查分組的目的地址的一部分,并用目的地址搜索轉(zhuǎn)發(fā)表,以找出適當(dāng)?shù)膫魉玩溌?#xff0c;然后映射成為輸出鏈路進(jìn)行轉(zhuǎn)發(fā)。
那么問(wèn)題來(lái)了,路由器內(nèi)部是怎樣設(shè)置轉(zhuǎn)發(fā)表的呢?詳細(xì)的我們后面會(huì)講到,這里只是說(shuō)個(gè)大概,路由器內(nèi)部也是具有路由選擇協(xié)議的,用于自動(dòng)設(shè)置轉(zhuǎn)發(fā)表。
電路交換
在計(jì)算機(jī)網(wǎng)絡(luò)中,另一種通過(guò)網(wǎng)絡(luò)鏈路和路由進(jìn)行數(shù)據(jù)傳輸?shù)牧硗庖环N方式就是 電路交換(circuit switching)。電路交換在資源預(yù)留上與分組交換不同,什么意思呢?就是分組交換不會(huì)預(yù)留每次端系統(tǒng)之間交互分組的緩存和鏈路傳輸速率,所以每次都會(huì)進(jìn)行排隊(duì)傳輸;而電路交換會(huì)預(yù)留這些信息。一個(gè)簡(jiǎn)單的例子幫助你理解:這就好比有兩家餐館,餐館 A 需要預(yù)定而餐館 B 不需要預(yù)定,對(duì)于可以預(yù)定的餐館 A,我們必須先提前與其進(jìn)行聯(lián)系,但是當(dāng)我們到達(dá)目的地時(shí),我們能夠立刻入座并選菜。而對(duì)于不需要預(yù)定的那家餐館來(lái)說(shuō),你可能不需要提前聯(lián)系,但是你必須承受到達(dá)目的地后需要排隊(duì)的風(fēng)險(xiǎn)。
下面顯示了一個(gè)電路交換網(wǎng)絡(luò):
在這個(gè)網(wǎng)絡(luò)中,4條鏈路用于4臺(tái)電路交換機(jī)。這些鏈路中的每一條都有4條電路,因此每條鏈路能支持4條并行的鏈接。每臺(tái)主機(jī)都與一臺(tái)交換機(jī)直接相連,當(dāng)兩臺(tái)主機(jī)需要通信時(shí),該網(wǎng)絡(luò)在兩臺(tái)主機(jī)之間創(chuàng)建一條專用的 端到端的鏈接(end-to-end connection)。
分組交換和電路交換的對(duì)比
分組交換的支持者經(jīng)常說(shuō)分組交換不適合實(shí)時(shí)服務(wù),因?yàn)樗亩说蕉藭r(shí)延時(shí)不可預(yù)測(cè)的。而分組交換的支持者卻認(rèn)為分組交換提供了比電路交換更好的帶寬共享;它比電路交換更加簡(jiǎn)單、更有效,實(shí)現(xiàn)成本更低。但是現(xiàn)在的趨勢(shì)更多的是朝著分組交換的方向發(fā)展。
分組交換網(wǎng)的時(shí)延、丟包和吞吐量
因特網(wǎng)可以看成是一種基礎(chǔ)設(shè)施,該基礎(chǔ)設(shè)施為運(yùn)行在端系統(tǒng)上的分布式應(yīng)用提供服務(wù)。我們希望在計(jì)算機(jī)網(wǎng)絡(luò)中任意兩個(gè)端系統(tǒng)之間傳遞數(shù)據(jù)都不會(huì)造成數(shù)據(jù)丟失,然而這是一個(gè)極高的目標(biāo),實(shí)踐中難以達(dá)到。所以,在實(shí)踐中必須要限制端系統(tǒng)之間的 吞吐量 用來(lái)控制數(shù)據(jù)丟失。如果在端系統(tǒng)之間引入時(shí)延,也不能保證不會(huì)丟失分組問(wèn)題。所以我們從時(shí)延、丟包和吞吐量三個(gè)層面來(lái)看一下計(jì)算機(jī)網(wǎng)絡(luò)。
分組交換中的時(shí)延
計(jì)算機(jī)網(wǎng)絡(luò)中的分組從一臺(tái)主機(jī)(源)出發(fā),經(jīng)過(guò)一系列路由器傳輸,在另一個(gè)端系統(tǒng)中結(jié)束它的歷程。在這整個(gè)傳輸歷程中,分組會(huì)涉及到四種最主要的時(shí)延:節(jié)點(diǎn)處理時(shí)延(nodal processing delay)、排隊(duì)時(shí)延(queuing delay)、傳輸時(shí)延(total nodal delay)和傳播時(shí)延(propagation delay)。這四種時(shí)延加起來(lái)就是 節(jié)點(diǎn)總時(shí)延(total nodal delay)。
如果用 dproc dqueue dtrans dpop 分別表示處理時(shí)延、排隊(duì)時(shí)延、傳輸時(shí)延和傳播時(shí)延,則節(jié)點(diǎn)的總時(shí)延由以下公式?jīng)Q定: ?dnodal = dproc + dqueue + dtrans + dpop。
時(shí)延的類型
下面是一副典型的時(shí)延分布圖,讓我們從圖中進(jìn)行分析一下不同的時(shí)延類型。
分組由端系統(tǒng)經(jīng)過(guò)通信鏈路傳輸?shù)铰酚善?A,路由器A 檢查分組頭部以映射出適當(dāng)?shù)膫鬏旀溌?#xff0c;并將分組送入該鏈路。僅當(dāng)該鏈路沒(méi)有其他分組正在傳輸并且沒(méi)有其他分組排在該該分組前面時(shí),才能在這條鏈路上自由的傳輸該分組。如果該鏈路當(dāng)前繁忙或者已經(jīng)有其他分組排在該分組前面時(shí),新到達(dá)的分組將會(huì)加入排隊(duì)。下面我們分開(kāi)討論一下這四種時(shí)延。
節(jié)點(diǎn)處理時(shí)延
節(jié)點(diǎn)處理時(shí)延分為兩部分,第一部分是路由器會(huì)檢查分組的首部信息;第二部分是決定將分組傳輸?shù)侥臈l通信鏈路所需要的時(shí)間。一般高速網(wǎng)絡(luò)的節(jié)點(diǎn)處理時(shí)延都在微妙級(jí)和更低的數(shù)量級(jí)。在這種處理時(shí)延完成后,分組會(huì)發(fā)往路由器的轉(zhuǎn)發(fā)隊(duì)列中。
排隊(duì)時(shí)延
在隊(duì)列排隊(duì)轉(zhuǎn)發(fā)過(guò)程中,分組需要在隊(duì)列中等待發(fā)送,分組在等待發(fā)送過(guò)程中消耗的時(shí)間被稱為排隊(duì)時(shí)延。排隊(duì)時(shí)延的長(zhǎng)短取決于先于該分組到達(dá)正在隊(duì)列中排隊(duì)的分組數(shù)量。如果該隊(duì)列是空的,并且當(dāng)前沒(méi)有正在傳輸?shù)姆纸M,那么該分組的排隊(duì)時(shí)延就是 0。如果處于網(wǎng)絡(luò)高發(fā)時(shí)段,那么鏈路中傳輸?shù)姆纸M比較多,那么分組的排隊(duì)時(shí)延將延長(zhǎng)。實(shí)際的排隊(duì)時(shí)延也可以到達(dá)微秒級(jí)。
傳輸時(shí)延
隊(duì)列 是路由器所用的主要的數(shù)據(jù)結(jié)構(gòu)。隊(duì)列的特征就是先進(jìn)先出,先到達(dá)食堂的先打飯。傳輸時(shí)延是理論情況下單位時(shí)間內(nèi)的傳輸比特所消耗的時(shí)間。比如分組的長(zhǎng)度是 L 比特,R 表示從路由器 A 到路由器 B 的傳輸速率。那么傳輸時(shí)延就是 L / R 。這是將所有分組推向該鏈路所需要的時(shí)間。這種情況下傳輸時(shí)延通常也在毫秒到微妙級(jí)。
傳播時(shí)延
從鏈路的起點(diǎn)到路由器 B 傳播所需要的時(shí)間就是 傳播時(shí)延。該比特以該鏈路的傳播速率傳播。該傳播速率取決于鏈路的物理介質(zhì)(雙絞線、同軸電纜、光纖)。如果用公式來(lái)計(jì)算一下的話,該傳播時(shí)延等于兩臺(tái)路由器之間的距離 / 傳播速率。即傳播速率是 d/s ,其中 d 是路由器 A 和 路由器 B 之間的距離,s 是該鏈路的傳播速率。
傳輸時(shí)延和傳播時(shí)延的比較
計(jì)算機(jī)網(wǎng)絡(luò)中的傳輸時(shí)延和傳播時(shí)延有時(shí)候難以區(qū)分,在這里解釋一下,傳輸時(shí)延是路由器推出分組所需要的時(shí)間,它是分組長(zhǎng)度和鏈路傳輸速率的函數(shù),而與兩臺(tái)路由器之間的距離無(wú)關(guān)。而傳播時(shí)延是一個(gè)比特從一臺(tái)路由器傳播到另一臺(tái)路由器所需要的時(shí)間,它是兩臺(tái)路由器之間距離的倒數(shù),而與分組長(zhǎng)度和鏈路傳輸速率無(wú)關(guān)。從公式也可以看出來(lái),傳輸時(shí)延是 L/R,也就是分組的長(zhǎng)度 / 路由器之間傳輸速率。傳播時(shí)延的公式是 d/s,也就是路由器之間的距離 / 傳播速率。
排隊(duì)時(shí)延
在這四種時(shí)延中,人們最感興趣的時(shí)延或許就是排隊(duì)時(shí)延了 dqueue。與其他三種時(shí)延(dproc、dtrans、dpop)不同的是,排隊(duì)時(shí)延對(duì)不同的分組可能是不同的。例如,如果10個(gè)分組同時(shí)到達(dá)某個(gè)隊(duì)列,第一個(gè)到達(dá)隊(duì)列的分組沒(méi)有排隊(duì)時(shí)延,而最后到達(dá)的分組卻要經(jīng)受最大的排隊(duì)時(shí)延(需要等待其他九個(gè)時(shí)延被傳輸)。
那么如何表征排隊(duì)時(shí)延呢?或許可以從三個(gè)方面來(lái)考慮:流量到達(dá)隊(duì)列的速率、鏈路的傳輸速率和到達(dá)流量的性質(zhì)。即流量是周期性到達(dá)還是突發(fā)性到達(dá),如果用 a 表示分組到達(dá)隊(duì)列的平均速率( a 的單位是分組/秒,即 pkt/s)前面說(shuō)過(guò) R 表示的是傳輸速率,所以能夠從隊(duì)列中推出比特的速率(以 bps 即 b/s 為單位)。假設(shè)所有的分組都是由 L 比特組成的,那么比特到達(dá)隊(duì)列的平均速率是 La bps。那么比率 La/R 被稱為流量強(qiáng)度(traffic intensity),如果 La/R > 1,則比特到達(dá)隊(duì)列的平均速率超過(guò)從隊(duì)列傳輸出去的速率,這種情況下隊(duì)列趨向于無(wú)限增加。所以,設(shè)計(jì)系統(tǒng)時(shí)流量強(qiáng)度不能大于1。
現(xiàn)在考慮 La / R <= 1 時(shí)的情況。流量到達(dá)的性質(zhì)將影響排隊(duì)時(shí)延。如果流量是周期性到達(dá)的,即每 L / R 秒到達(dá)一個(gè)分組,則每個(gè)分組將到達(dá)一個(gè)空隊(duì)列中,不會(huì)有排隊(duì)時(shí)延。如果流量是 突發(fā)性 到達(dá)的,則可能會(huì)有很大的平均排隊(duì)時(shí)延。一般可以用下面這幅圖表示平均排隊(duì)時(shí)延與流量強(qiáng)度的關(guān)系
橫軸是 La/R 流量強(qiáng)度,縱軸是平均排隊(duì)時(shí)延。
丟包
我們?cè)谏鲜龅挠懻撨^(guò)程中描繪了一個(gè)公式那就是 La/R 不能大于1,如果 La/R 大于1,那么到達(dá)的排隊(duì)將會(huì)無(wú)窮大,而且路由器中的排隊(duì)隊(duì)列所容納的分組是有限的,所以等到路由器隊(duì)列堆滿后,新到達(dá)的分組就無(wú)法被容納,導(dǎo)致路由器 丟棄(drop) 該分組,即分組會(huì) 丟失(lost)。
計(jì)算機(jī)網(wǎng)絡(luò)中的吞吐量
除了丟包和時(shí)延外,衡量計(jì)算機(jī)另一個(gè)至關(guān)重要的性能測(cè)度是端到端的吞吐量。假如從主機(jī) A 向主機(jī) B 傳送一個(gè)大文件,那么在任何時(shí)刻主機(jī) B 接收到該文件的速率就是 瞬時(shí)吞吐量(instantaneous throughput)。如果該文件由 F 比特組成,主機(jī) B 接收到所有 F 比特用去 T 秒,則文件的傳送平均吞吐量(average throughput) 是 F / T bps。
協(xié)議層次以及服務(wù)模型
因特網(wǎng)是一個(gè)復(fù)雜的系統(tǒng),不僅包括大量的應(yīng)用程序、端系統(tǒng)、通信鏈路、分組交換機(jī)等,還有各種各樣的協(xié)議組成,那么現(xiàn)在我們就來(lái)聊一下因特網(wǎng)中的協(xié)議層次。
協(xié)議分層
為了給網(wǎng)絡(luò)協(xié)議的設(shè)計(jì)提供一個(gè)結(jié)構(gòu),網(wǎng)絡(luò)設(shè)計(jì)者以分層(layer)的方式組織協(xié)議,每個(gè)協(xié)議屬于層次模型之一。每一層都是向它的上一層提供服務(wù)(service),即所謂的服務(wù)模型(service model)。每個(gè)分層中所有的協(xié)議稱為 協(xié)議棧(protocol stack)。因特網(wǎng)的協(xié)議棧由五個(gè)部分組成:物理層、鏈路層、網(wǎng)絡(luò)層、運(yùn)輸層和應(yīng)用層。我們采用自上而下的方法研究其原理,也就是應(yīng)用層 -> 物理層的方式。
應(yīng)用層
應(yīng)用層是網(wǎng)絡(luò)應(yīng)用程序和網(wǎng)絡(luò)協(xié)議存放的分層,因特網(wǎng)的應(yīng)用層包括許多協(xié)議,例如我們學(xué) web 離不開(kāi)的 HTTP,電子郵件傳送協(xié)議 SMTP、端系統(tǒng)文件上傳協(xié)議 FTP、還有為我們進(jìn)行域名解析的 DNS 協(xié)議。應(yīng)用層協(xié)議分布在多個(gè)端系統(tǒng)上,一個(gè)端系統(tǒng)應(yīng)用程序與另外一個(gè)端系統(tǒng)應(yīng)用程序交換信息分組,我們把位于應(yīng)用層的信息分組稱為 報(bào)文(message)。
運(yùn)輸層
因特網(wǎng)的運(yùn)輸層在應(yīng)用程序斷點(diǎn)之間傳送應(yīng)用程序報(bào)文,在這一層主要有兩種傳輸協(xié)議 TCP和 UDP,利用這兩者中的任何一個(gè)都能夠傳輸報(bào)文,不過(guò)這兩種協(xié)議有巨大的不同。
TCP 向它的應(yīng)用程序提供了面向連接的服務(wù),它能夠控制并確認(rèn)報(bào)文是否到達(dá),并提供了擁塞機(jī)制來(lái)控制網(wǎng)絡(luò)傳輸,因此當(dāng)網(wǎng)絡(luò)擁塞時(shí),會(huì)抑制其傳輸速率。
UDP 協(xié)議向它的應(yīng)用程序提供了無(wú)連接服務(wù)。它不具備可靠性的特征,沒(méi)有流量控制,也沒(méi)有擁塞控制。我們把運(yùn)輸層的分組稱為 報(bào)文段(segment)。
網(wǎng)絡(luò)層
因特網(wǎng)的網(wǎng)絡(luò)層負(fù)責(zé)將稱為 數(shù)據(jù)報(bào)(datagram) 的網(wǎng)絡(luò)分層從一臺(tái)主機(jī)移動(dòng)到另一臺(tái)主機(jī)。網(wǎng)絡(luò)層一個(gè)非常重要的協(xié)議是 IP 協(xié)議,所有具有網(wǎng)絡(luò)層的因特網(wǎng)組件都必須運(yùn)行 IP 協(xié)議,IP 協(xié)議是一種網(wǎng)際協(xié)議,除了 IP 協(xié)議外,網(wǎng)絡(luò)層還包括一些其他網(wǎng)際協(xié)議和路由選擇協(xié)議,一般把網(wǎng)絡(luò)層就稱為 IP 層,由此可知 IP 協(xié)議的重要性。
鏈路層
現(xiàn)在我們有應(yīng)用程序通信的協(xié)議,有了給應(yīng)用程序提供運(yùn)輸?shù)膮f(xié)議,還有了用于約定發(fā)送位置的 IP 協(xié)議,那么如何才能真正的發(fā)送數(shù)據(jù)呢?為了將分組從一個(gè)節(jié)點(diǎn)(主機(jī)或路由器)運(yùn)輸?shù)搅硪粋€(gè)節(jié)點(diǎn),網(wǎng)絡(luò)層必須依靠鏈路層提供服務(wù)。鏈路層的例子包括以太網(wǎng)、WiFi 和電纜接入的 DOCSIS 協(xié)議,因?yàn)閿?shù)據(jù)從源目的地傳送通常需要經(jīng)過(guò)幾條鏈路,一個(gè)數(shù)據(jù)包可能被沿途不同的鏈路層協(xié)議處理,我們把鏈路層的分組稱為 幀(frame)。
物理層
雖然鏈路層的作用是將幀從一個(gè)端系統(tǒng)運(yùn)輸?shù)搅硪粋€(gè)端系統(tǒng),而物理層的作用是將幀中的一個(gè)個(gè) 比特 從一個(gè)節(jié)點(diǎn)運(yùn)輸?shù)搅硪粋€(gè)節(jié)點(diǎn),物理層的協(xié)議仍然使用鏈路層協(xié)議,這些協(xié)議與實(shí)際的物理傳輸介質(zhì)有關(guān),例如,以太網(wǎng)有很多物理層協(xié)議:關(guān)于雙絞銅線、關(guān)于同軸電纜、關(guān)于光纖等等。
五層網(wǎng)絡(luò)協(xié)議的示意圖如下:
OSI 模型
我們上面討論的計(jì)算網(wǎng)絡(luò)協(xié)議模型不是唯一的 協(xié)議棧,ISO(國(guó)際標(biāo)準(zhǔn)化組織)提出來(lái)計(jì)算機(jī)網(wǎng)絡(luò)應(yīng)該按照7層來(lái)組織,那么7層網(wǎng)絡(luò)協(xié)議棧與5層的區(qū)別在哪里?
從圖中可以一眼看出,OSI 要比上面的網(wǎng)絡(luò)模型多了 表示層 和 會(huì)話層,其他層基本一致。表示層主要包括數(shù)據(jù)壓縮和數(shù)據(jù)加密以及數(shù)據(jù)描述,數(shù)據(jù)描述使得應(yīng)用程序不必?fù)?dān)心計(jì)算機(jī)內(nèi)部存儲(chǔ)格式的問(wèn)題,而會(huì)話層提供了數(shù)據(jù)交換的定界和同步功能,包括建立檢查點(diǎn)和恢復(fù)方案。
網(wǎng)絡(luò)攻擊
在計(jì)算機(jī)高速發(fā)展的 21世紀(jì),我們已經(jīng)越來(lái)越離不開(kāi)計(jì)算機(jī)網(wǎng)絡(luò),計(jì)算機(jī)網(wǎng)絡(luò)在為我們帶來(lái)諸多便利的同時(shí),我們也會(huì)遭受一些網(wǎng)絡(luò)攻擊,下面我們就一起來(lái)認(rèn)識(shí)一下網(wǎng)絡(luò)中的攻擊有哪些。
植入有害程序
因?yàn)槲覀円獜囊蛱鼐W(wǎng)接收/發(fā)送 數(shù)據(jù),所以我們將設(shè)備與因特網(wǎng)相連,我們可以使用各種互聯(lián)網(wǎng)應(yīng)用例如微信、微博、上網(wǎng)瀏覽網(wǎng)頁(yè)、流式音樂(lè)、多媒體會(huì)議等,網(wǎng)絡(luò)攻擊很可能在這時(shí)不知不覺(jué)的發(fā)生,通過(guò)在這些軟件中植入有害程序來(lái)入侵我們的計(jì)算機(jī),包括刪除我們的文件,進(jìn)行活動(dòng)監(jiān)視,侵犯隱私等。我們的受害主機(jī)也可能成為眾多類似受害設(shè)備網(wǎng)絡(luò)中的一員,它們被統(tǒng)稱為 僵尸網(wǎng)絡(luò)(botnet),這些攻擊者會(huì)利用僵尸網(wǎng)絡(luò)控制并有效的對(duì)目標(biāo)主機(jī)開(kāi)展垃圾郵件分發(fā)和分布式拒絕服務(wù)攻擊。
大多數(shù)有害程序都具有自我復(fù)制(self-replicating)的功能,傳播性非常強(qiáng),一旦它感染了一臺(tái)主機(jī),就會(huì)從這臺(tái)感染的主機(jī)上尋找進(jìn)入因特網(wǎng)的其他主機(jī),從而感染新的主機(jī)。有害應(yīng)用程序主要分為兩種:病毒(virus) 和 蠕蟲(chóng)(worm),病毒是一種需要某種形式的用戶交互來(lái)感染用戶的計(jì)算機(jī),比如包含了病毒的電子郵件附件。如果用戶接收并打開(kāi)感染病毒的電子郵件的話,就會(huì)以某種方式破壞你的計(jì)算機(jī);而蠕蟲(chóng)是一種不需要用戶交互就能進(jìn)入計(jì)算機(jī)的惡意軟件,比如你運(yùn)行了一個(gè)攻擊者想要攻擊的應(yīng)用程序,某些情況下不需要用戶干預(yù),應(yīng)用程序就可能通過(guò)互聯(lián)網(wǎng)接收惡意軟件并運(yùn)行,從而生成蠕蟲(chóng),然后再進(jìn)行擴(kuò)散。
攻擊服務(wù)器和網(wǎng)絡(luò)基礎(chǔ)設(shè)施
另一種影響較大的網(wǎng)絡(luò)攻擊稱為拒絕服務(wù)攻擊(Denial-of-Service Dos),這種網(wǎng)絡(luò)攻擊使得網(wǎng)絡(luò)、主機(jī)、服務(wù)器、基礎(chǔ)網(wǎng)絡(luò)設(shè)施不能常規(guī)使用。Web 服務(wù)器、電子郵件服務(wù)器、DNS 服務(wù)器都能成為 Dos 的攻擊目標(biāo)。大多數(shù)因特網(wǎng) Dos 攻擊分為以下三類:
弱點(diǎn)攻擊。這涉及向一臺(tái)目標(biāo)主機(jī)上運(yùn)行的易受攻擊的應(yīng)用程序或操作系統(tǒng)發(fā)送制作精細(xì)的報(bào)文,如果適當(dāng)順序的多個(gè)分組發(fā)送給一個(gè)易受攻擊的應(yīng)用程序或操作系統(tǒng),該服務(wù)器可能停止運(yùn)行。
帶寬洪泛。攻擊者通過(guò)網(wǎng)絡(luò)向主機(jī)或服務(wù)器發(fā)送大量的分組,分組數(shù)量太多使得目標(biāo)接入鏈路變得擁塞,使得合法分組無(wú)法到達(dá)服務(wù)器。
連接洪泛。和上面的帶寬洪范攻擊性質(zhì)相似,只不過(guò)這次換成了通過(guò)創(chuàng)建大量的 TCP 連接進(jìn)行攻擊。因?yàn)?TCP 連接數(shù)量太多導(dǎo)致有效的 TCP 連接無(wú)法到達(dá)服務(wù)器。
互聯(lián)網(wǎng)中攻擊最多的就屬于帶寬洪泛攻擊了,可以回顧一下我們上面討論的時(shí)延和丟包問(wèn)題,如果某服務(wù)器的接入速率為 R bps,那么攻擊者則需要向服務(wù)器發(fā)送大于 R bps 的速率來(lái)產(chǎn)生危害。如果 R 非常大的話,單一攻擊源可能無(wú)法產(chǎn)生足夠大的流量來(lái)傷害服務(wù)器,所以還需要產(chǎn)生多個(gè)數(shù)據(jù)源,這就是屢見(jiàn)不鮮的 分布式Dos(Distributed Dos,DDos) 。攻擊者通過(guò)控制多個(gè)數(shù)據(jù)源并讓每個(gè)數(shù)據(jù)源發(fā)送大量的分組來(lái)致使服務(wù)器癱瘓。如下圖所示:
嗅探分組
今天許多用戶通過(guò)無(wú)線設(shè)備接入因特網(wǎng)。例如 WiFi 連接的計(jì)算機(jī)或者使用蜂窩因特網(wǎng)連接的手持設(shè)備。在帶來(lái)便利的同時(shí)也會(huì)成為易受攻擊的目標(biāo)。在無(wú)線傳輸設(shè)備的附近放置一臺(tái)被動(dòng)的接收機(jī),該接收機(jī)就能夠得到傳輸?shù)拿總€(gè)分組的副本!這些分組中包含了各種敏感信息,例如口令、密碼等,記錄每個(gè)流經(jīng)分組副本的接收機(jī)被稱為分組嗅探器(packet sniffer)。分組嗅探也能夠應(yīng)用于有線環(huán)境中,可以用 Wireshark 實(shí)驗(yàn)來(lái)進(jìn)行模擬。
IP 偽裝
生成具有任意源地址、分組內(nèi)容和目的地址的分組,然后將這個(gè)分組傳輸?shù)交ヂ?lián)網(wǎng)中。這種將虛假源地址的分組注入因特網(wǎng)的能力被稱為 IP 哄騙(IP spoofing)。為了解決這個(gè)問(wèn)題,我們需要采用 端點(diǎn)鑒別,它是一種使我們能夠確信真正源目的地的機(jī)制。我們后面會(huì)再探討這些機(jī)制。
福利掃描添加小編微信,備注“姓名+公司職位”,加入【云計(jì)算學(xué)習(xí)交流群】,和志同道合的朋友們共同打卡學(xué)習(xí)! 推薦閱讀:微服務(wù)架構(gòu)的四大殺手锏
谷歌因Android警告美國(guó)最高法院;亞馬遜云計(jì)算部門將與威瑞森合作推出5G邊緣云計(jì)算;阿里聯(lián)合ODCC新年放大招……
鯤鵬之大,何止幾千里?
門限簽名技術(shù)火了,它的硬核之處絕不僅僅是秘密共享……
解密Elasticsearch技術(shù),騰訊開(kāi)源的萬(wàn)億級(jí)分布式搜索分析引擎
TIOBE 1 月編程語(yǔ)言排行榜:C 語(yǔ)言再度「C 位」出道!
真香,朕在看了!
總結(jié)
以上是生活随笔為你收集整理的建议看 | 计算机网络核心概念的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: Kubernetes 是如何调度的?
- 下一篇: 两亿人在家开会!钉钉紧急扩容1万台云服务