計(jì)算機(jī)網(wǎng)絡(luò)之基礎(chǔ)篇 什么是計(jì)算機(jī)網(wǎng)絡(luò),? 主機(jī)之間通過(guò)交換網(wǎng)絡(luò)互連,交換節(jié)點(diǎn)一般是路由器或者交換機(jī),。 什么是網(wǎng)絡(luò)協(xié)議,? 為進(jìn)行網(wǎng)絡(luò)中的數(shù)據(jù)交換而建立的規(guī)則、標(biāo)準(zhǔn)或約定,。 協(xié)議的三要素是什么,? 語(yǔ)法、語(yǔ)義,、時(shí)序,。 計(jì)算機(jī)網(wǎng)絡(luò)的結(jié)構(gòu)? 網(wǎng)絡(luò)邊緣:主機(jī)(端系統(tǒng)),、網(wǎng)絡(luò)應(yīng)用 主機(jī)(端系統(tǒng)):運(yùn)行網(wǎng)絡(luò)應(yīng)用程序,。 客戶/服務(wù)器(C/S)應(yīng)用模型:客戶發(fā)送請(qǐng)求,接受服務(wù)器響應(yīng),。 對(duì)等(P2P)應(yīng)用模型:不用依賴專用服務(wù)器,;對(duì)等實(shí)體之間直接進(jìn)行通信。 接入網(wǎng)絡(luò),,物理介質(zhì):有線或無(wú)線通信鏈路,,將網(wǎng)絡(luò)邊緣接入核心網(wǎng)絡(luò) 帶寬(bps):網(wǎng)絡(luò)中指數(shù)據(jù)傳輸速率,Mb/s,。 無(wú)線局域網(wǎng)(LANs):wifi,。 廣域無(wú)線接入:通過(guò)電信運(yùn)營(yíng)商,3G,、4G,。 網(wǎng)絡(luò)核心:互聯(lián)的路由器(或分組轉(zhuǎn)發(fā)設(shè)備),將數(shù)據(jù)從源主機(jī)通過(guò)網(wǎng)絡(luò)核心發(fā)送到目的主機(jī) 關(guān)鍵功能:路由+轉(zhuǎn)發(fā),。 路由:確定分組從源到目的傳輸路徑,,路由算法。 轉(zhuǎn)發(fā):將分組從路由器的輸入端口交換至正確的輸出端口,,本地轉(zhuǎn)發(fā)表,。 數(shù)據(jù)交換? 構(gòu)建: 最簡(jiǎn)單的就是任意兩臺(tái)主機(jī)之間建立一條鏈路:O(N^2),。 什么是交換,? 動(dòng)態(tài)轉(zhuǎn)接: 數(shù)據(jù)通過(guò)交換設(shè)備從一個(gè)端口轉(zhuǎn)到另一個(gè)端口,,而且可以在多組端口之間并行。 數(shù)據(jù)交換的類型,? 1.電路交換—>典型的電話 選好鏈路占好資源。 資源獨(dú)占,,不能被第三方共享,。 電路交換網(wǎng)絡(luò)的鏈路共享:多路復(fù)用。 2.報(bào)文交換 源(應(yīng)用)發(fā)送信息整體,,比如一個(gè)文件,,完整的發(fā)到下一個(gè)站點(diǎn)。 3.分組交換 分組:報(bào)文分拆出來(lái)的一系列相對(duì)較小的數(shù)據(jù)包頭+數(shù)據(jù),。 需要報(bào)文的拆分和重組,。 產(chǎn)生額外開(kāi)銷:時(shí)間開(kāi)銷必不可少,通常在計(jì)算機(jī)網(wǎng)絡(luò)中源主機(jī)和目的主機(jī)之間進(jìn)行的,,拆分重組開(kāi)銷不嚴(yán)重,。 4.報(bào)文交換與分組交換均采用存儲(chǔ)–轉(zhuǎn)發(fā)交換方式 路由器將數(shù)據(jù)分組完整的接收過(guò)來(lái)暫存一下,再?zèng)Q定怎么轉(zhuǎn)發(fā),,轉(zhuǎn)發(fā)的鏈路可用了,,再發(fā)出去。 丟包:隊(duì)列緩存容量有限,,分組到達(dá)已滿隊(duì)列,,到達(dá)分組被丟棄--丟包(loss)。 5.報(bào)文交換的效率高于分組交換 報(bào)文交換是串行,,而分組交換很多分組之間是并行的,,而且相比之下路由器需要的緩存更小。 6.分組交換VS電路交換,,可支持更多用戶同時(shí)使用網(wǎng)絡(luò),,網(wǎng)絡(luò)資源充分共享 大家建立連接后,一般不一直傳送數(shù)據(jù),,一段時(shí)間根本不用網(wǎng)絡(luò),,平均活動(dòng)時(shí)間較少。 7.分組交換不是絕對(duì)優(yōu)于電路交換 分組交換更適用于突發(fā)數(shù)據(jù)傳輸網(wǎng)絡(luò),。 資源充分共享;簡(jiǎn)單,、無(wú)需呼叫建立,,事先占好資源。 網(wǎng)絡(luò)性能的評(píng)價(jià) 速率:數(shù)據(jù)傳輸速率或比特率(單位時(shí)間傳輸比特量),,最重要的一個(gè)性能指標(biāo)。 帶寬:原指信號(hào)具有的頻帶寬度,,單位是赫茲,。在計(jì)算機(jī)網(wǎng)絡(luò)中,指數(shù)字信道所能傳送的“最高數(shù)據(jù)率”,。 延遲/時(shí)延:分組在路由器緩存中排隊(duì),,分組到達(dá)速率大于輸出鏈路容量時(shí) 結(jié)點(diǎn)處理延遲:差錯(cuò)檢測(cè)、確定輸出鏈路可用,。 丟包率: 丟包數(shù)/已發(fā)分組總數(shù)。 吞吐量/率:表示在發(fā)送端與接收端之間傳送數(shù)據(jù)速率(b/s),,取決與端到端路徑之間的瓶頸鏈路(速率最小的鏈路),。 計(jì)算機(jī)網(wǎng)絡(luò)體系結(jié)構(gòu)? 從功能上描述,,分層結(jié)構(gòu),,每層完成本層功能,體系結(jié)構(gòu)是抽象的,。 為什么分層,? 結(jié)構(gòu)清晰;模塊化的分層易于系統(tǒng)更新,、維護(hù),;有利于標(biāo)準(zhǔn)化。 協(xié)議是控制兩個(gè)對(duì)等實(shí)體進(jìn)行通信的規(guī)則的集合,協(xié)議是“水平的”,。 網(wǎng)卡是什么,? 網(wǎng)卡:網(wǎng)絡(luò)適配器,,插在(或者集成在)主板上的硬件設(shè)備,每個(gè)網(wǎng)卡都有一個(gè)全球唯一的標(biāo)識(shí),,從一生產(chǎn)出來(lái)就確定了,,48位,叫做MAC地址,,如11:27:F5:8A:79:54,。 網(wǎng)卡屬于OSI模型中的物理層和數(shù)據(jù)鏈路層,網(wǎng)絡(luò)層以上的部分則由操作系統(tǒng)中的協(xié)議棧實(shí)現(xiàn),,所以TCP/IP協(xié)議棧其實(shí)只包含了網(wǎng)絡(luò)層和傳輸層,。 網(wǎng)卡是怎么工作的? 首先需要一個(gè)IP地址,,用到DHCP(動(dòng)態(tài)主機(jī)配置協(xié)議,,集中管理、分配IP地址),。網(wǎng)絡(luò)里有DHCP服務(wù)器,,動(dòng)態(tài)的分配地址,CPU寫(xiě)好報(bào)文,。首先是一個(gè)應(yīng)用層的DHCP報(bào)文,,然后被DUP報(bào)文封裝(目的地端口:67,源地址端口:68),,之后再被IP數(shù)據(jù)報(bào)封裝(目的地址:255.255.255.255,,源地址:0.0.0.0)。 網(wǎng)卡是數(shù)據(jù)鏈路層的,,需要知道MAC地址才能發(fā)送到指定對(duì)方,,如果不知道就發(fā)廣播。然后又把數(shù)據(jù)報(bào)封裝了一下,,廣播到同一子網(wǎng)內(nèi)的所有電腦,,目的地址就是FF:FF:FF:FF:FF:FF。 然后網(wǎng)卡通過(guò)網(wǎng)線把報(bào)文發(fā)到交換機(jī),,交換機(jī)將報(bào)文轉(zhuǎn)發(fā)到所有連接到交換機(jī)的設(shè)備,。過(guò)一會(huì),交換機(jī)轉(zhuǎn)來(lái)報(bào)文,,就是DHCP服務(wù)器發(fā)來(lái)的,。然后網(wǎng)卡廣播發(fā)送一個(gè)報(bào)文確定要哪個(gè)IP,,之后DHCP再回一個(gè)報(bào)文,包括網(wǎng)卡的IP,、網(wǎng)關(guān)路由器的IP,、DNS服務(wù)器IP。 如果系統(tǒng)重啟之后,,這個(gè)獲取IP的步驟需要再走一遍,,除非用戶手動(dòng)的配置IP地址、網(wǎng)關(guān),、DNS,,但是這樣很煩還容易出錯(cuò),所以一般情況下都是自動(dòng)的用DHCP搞定一個(gè)IP,。 怎么訪問(wèn)百度,? 要想互聯(lián),不僅自己要有IP地址,,還要知道對(duì)方的IP地址,,比如訪問(wèn)www.baidu.com,要先經(jīng)過(guò)DNS查詢,,知道它的IP,。 DNS服務(wù)器不在局域網(wǎng)內(nèi),我們將報(bào)文發(fā)送到網(wǎng)關(guān)路由器,,由網(wǎng)關(guān)路由器想辦法轉(zhuǎn)給DNS服務(wù)器,。那么網(wǎng)關(guān)路由器的MAC地址在哪呢?這時(shí)候需要用到ARP(地址解析協(xié)議),,通過(guò)廣播查詢一個(gè)IP地址對(duì)應(yīng)的MAC地址,,得到網(wǎng)關(guān)路由器的MAC地址,網(wǎng)卡只需要將DNS查詢發(fā)送給網(wǎng)關(guān)路由器即可,。之后就沒(méi)網(wǎng)卡的事情了,,網(wǎng)卡只能管局域網(wǎng)的事情,出了局域網(wǎng),,就是路由器的事情了,。 出了局域網(wǎng)之后的事情呢? 現(xiàn)在來(lái)看網(wǎng)關(guān)路由器,,我還在想為什么叫網(wǎng)關(guān)呢,?在網(wǎng)上看到的解釋是大家想上網(wǎng),一定得經(jīng)過(guò)這一關(guān),,所有的對(duì)局域網(wǎng)之外的訪問(wèn)必須得經(jīng)過(guò)網(wǎng)關(guān),。 網(wǎng)關(guān)直接和ISP(網(wǎng)絡(luò)服務(wù)供應(yīng)商,比如聯(lián)通)的網(wǎng)絡(luò)相連,得到一個(gè)外網(wǎng)地址,。 NAT(網(wǎng)絡(luò)地址轉(zhuǎn)換) 網(wǎng)關(guān)路由器不僅是個(gè)路由器,,還是個(gè)DHCP服務(wù)器,掌握著整個(gè)局域網(wǎng)的IP生殺大權(quán),。局域網(wǎng)內(nèi)的主機(jī)拿著內(nèi)網(wǎng)IP是無(wú)法直接上網(wǎng)的,,這個(gè)地址只有局域網(wǎng)的網(wǎng)關(guān)才知道,像百度這樣的網(wǎng)站根本就不知道,;即使知道了也沒(méi)用,世界上無(wú)數(shù)的路由器都會(huì)分配192.168.xxx.xxx這樣的地址,,也不知道到底要找哪一個(gè),。 那怎么通過(guò)網(wǎng)關(guān)路由器上網(wǎng)呢?下面看過(guò)程: 以太網(wǎng)幀: 目的地:88:25:93:97:E0:C8 源地址:11:27:F5:8A:79:54 IP數(shù)據(jù)報(bào): 目的地:115.239.211.112 源地址:192.168.1.2 TCP報(bào)文: 目的地址端口:80 源地址端口:3345 HTTP報(bào)文: GET / Host:www.baidu.com 發(fā)過(guò)來(lái)之后,網(wǎng)關(guān)路由器這樣處理:它把數(shù)據(jù)鏈路層去掉,,發(fā)現(xiàn)IP數(shù)據(jù)包中的目標(biāo)地址是115.239.211.112,,可以知道這是要向外網(wǎng)發(fā)出請(qǐng)求了,網(wǎng)關(guān)路由器把源IP地址換成從ISP那里拿來(lái)的外網(wǎng)IP,,再創(chuàng)建一個(gè)新的端口號(hào)將TCP數(shù)據(jù)包中的源端口也替換掉,,之后數(shù)據(jù)包就換成了下面這樣: IP數(shù)據(jù)報(bào): 目的地:115.239.211.112 源地址:61.52.247.112 TCP報(bào)文: 目的地址端口:80 源地址端口:2001 HTTP報(bào)文: GET / Host:www.baidu.com 總之就是網(wǎng)關(guān)路由器將源IP地址和源端口都替換了,目的就是讓外網(wǎng)認(rèn)為這是路由器發(fā)出的,,他們根本不知道什么某一塊網(wǎng)卡,。之后再給IP數(shù)據(jù)報(bào)封上數(shù)據(jù)鏈路層的頭,將數(shù)據(jù)包發(fā)送給服務(wù)商的網(wǎng)絡(luò),,剩下的事情就不用管了,。 這個(gè)替換源地址和源端口的小把戲就叫做網(wǎng)絡(luò)地址轉(zhuǎn)換,簡(jiǎn)稱為NAT,。 PS:路由器上的WAN口是用來(lái)連接外網(wǎng)的,或者說(shuō)連接寬帶運(yùn)營(yíng)商的,;LAN口(1,、2、3,、4)是用來(lái)連接內(nèi)網(wǎng)中的設(shè)備的,。 接著說(shuō),當(dāng)百度那邊的回復(fù)通過(guò)別的路由器轉(zhuǎn)到網(wǎng)關(guān)路由器這里,需要反過(guò)來(lái)處理:首先去掉數(shù)據(jù)鏈路層的頭,,發(fā)現(xiàn)IP和TCP數(shù)據(jù)報(bào)中包含這樣的信息:目的IP:61.52.247.112,,端口:2001,這時(shí)候網(wǎng)關(guān)去查表,,找到了192.168.1.2:3345,,就知道這是給哪一塊網(wǎng)卡的數(shù)據(jù)包了。就再次把數(shù)據(jù)報(bào)中的IP地址和端口號(hào)改了,,讓網(wǎng)卡認(rèn)為這個(gè)數(shù)據(jù)包是網(wǎng)關(guān)發(fā)的,。 就這樣,網(wǎng)關(guān)用一個(gè)外網(wǎng)的IP支持了局域網(wǎng)內(nèi)多個(gè)電腦的上網(wǎng)需求,,并且他們根本不知道怎么回事,! NAT弊端 NAT使IP會(huì)話的保持時(shí)效變短。一個(gè)會(huì)話建立后會(huì)在NAT設(shè)備上建立一個(gè)關(guān)聯(lián)表,,因?yàn)镮P和端口資源有限,,通信的需求無(wú)限,所以必須在會(huì)話結(jié)束后回收資源,。 NAT在實(shí)現(xiàn)將多個(gè)內(nèi)部主機(jī)發(fā)出的連接復(fù)用到一個(gè)IP上,,這樣使得依賴IP進(jìn)行主機(jī)追蹤的機(jī)制失效了。NAT隱蔽了通信的一端,,把簡(jiǎn)單的事情復(fù)雜化了,。 NAT工作機(jī)制依賴于修改IP頭部信息,這會(huì)妨礙一些安全協(xié)議的工作,。NAT篡改了IP地址,、端口和校驗(yàn)和,這會(huì)導(dǎo)致認(rèn)證協(xié)議徹底不能工作,,因?yàn)檎J(rèn)證的目的就是要保證這些信息在傳輸過(guò)程中沒(méi)有發(fā)生變化,。 NAT穿越 在P2P模式下,比如電驢,,機(jī)器不僅僅是客戶端,,同時(shí)也是一個(gè)能夠接受請(qǐng)求的服務(wù)器。但是其他人怎么能連上它呢,?外網(wǎng)的人不知道它的IP地址呀,。 解決方案是這樣的,網(wǎng)卡可以主動(dòng)的請(qǐng)求網(wǎng)關(guān)建立一個(gè)NAT映射,,比如(192.168.1.2 : 4096) <-> (61.52.247.112: 3001),,保存到NAT表中,當(dāng)有外網(wǎng)連接到來(lái)時(shí),,網(wǎng)關(guān)負(fù)責(zé)把連接請(qǐng)求轉(zhuǎn)發(fā)到指定主機(jī),。這其實(shí)是UPnP,。 |
|
來(lái)自: 昵稱36869443 > 《IT及趨勢(shì)》