課本是第五版 謝希仁 謝鈞 《計(jì)算機(jī)網(wǎng)絡(luò)教程》
概述
因特網(wǎng)的組成
從功能上劃分有邊緣部分和核心部分,邊緣部分由所有連接在因特網(wǎng)的主機(jī)組成,這部分是用戶(hù)直接使用的;而核心部分就是由大量連接這些網(wǎng)絡(luò)的路由器組成。這部分是為邊緣部分提供服務(wù)的
網(wǎng)絡(luò)的邊緣部分的主機(jī)也有被不正式的劃分為客戶(hù)機(jī)(Client)和服務(wù)器(Server)
網(wǎng)絡(luò)的核心部分起特殊作用的就是路由器,它是一種專(zhuān)用計(jì)算機(jī),但不是主機(jī)。路由器是實(shí)現(xiàn)分組交換的關(guān)鍵構(gòu)件,其任務(wù)是轉(zhuǎn)發(fā)收到的分組。
電路交換
在電話問(wèn)世不久后就發(fā)現(xiàn),讓兩兩電話之間都相連是不現(xiàn)實(shí)的事情,于是有了交換機(jī),兩個(gè)電話要連接就通過(guò)交換機(jī)來(lái)相連。這就是一種稱(chēng)為電路交換的方式。
其過(guò)程就是建立連接(分配資源)----通話------釋放連接(歸還所占的資源)。
但是計(jì)算機(jī)可不是這樣的,建立了連接不一定在不停的傳輸數(shù)據(jù),所以這樣的傳輸效率很低,寶貴的通信資源利用率很低,這是一種浪費(fèi)。
分組交換
我們要發(fā)送的整個(gè)數(shù)據(jù)稱(chēng)作報(bào)文,將報(bào)文劃分成多個(gè)數(shù)據(jù)段,每個(gè)數(shù)據(jù)段為1024bit,再在每個(gè)數(shù)據(jù)段前面加上一些必要的控制信息組成的首部后,一個(gè)數(shù)據(jù)段加首部就構(gòu)成了一個(gè)分組,又叫做包。計(jì)算機(jī)將分組通過(guò)通信鏈路直接發(fā)送給分組交換機(jī),分組交換機(jī)收到分組,先將分組存儲(chǔ)起來(lái),再檢查其首部的信息,根據(jù)信息查找轉(zhuǎn)發(fā)表,找到合適的接口再轉(zhuǎn)發(fā)出去,這個(gè)過(guò)程叫做存儲(chǔ)轉(zhuǎn)發(fā)方式。
分組交換機(jī)有多條鏈路相連,所以這個(gè)分組交換機(jī)有一個(gè)輸出緩存,用于存儲(chǔ)分組交換機(jī)準(zhǔn)備發(fā)往哪條鏈路的分組。如果太多,輸出緩存滿(mǎn)了,將發(fā)生分組丟失,這時(shí)被稱(chēng)作網(wǎng)絡(luò)發(fā)生了擁塞。
計(jì)算機(jī)網(wǎng)絡(luò)的定義、分類(lèi)
最簡(jiǎn)單的定義是:一些互相連接的、自治的計(jì)算機(jī)的集合。
局域網(wǎng)(Local Area Network LAN)
一般用微信計(jì)算機(jī)或者工作站通過(guò)高速通信線路,地理上的范圍比較小,距離大概在1km左右
城域網(wǎng)(MAN)
作用范圍一般是一個(gè)城市,可以跨越幾個(gè)街區(qū)甚至整個(gè)城市。作用范圍一般在5~50km
廣域網(wǎng)(WAN)
作用范圍在幾十千米到幾千千米,可以覆蓋整個(gè)國(guó)家甚至跨幾個(gè)洲,又叫做遠(yuǎn)程網(wǎng)
個(gè)人區(qū)域網(wǎng)(PAN)
不同于以上網(wǎng)絡(luò),這個(gè)網(wǎng)絡(luò)不是用來(lái)連接普通的計(jì)算機(jī)的,而是用來(lái)連接個(gè)人使用的電子設(shè)備用的。也叫做無(wú)線個(gè)人區(qū)域網(wǎng)
公用網(wǎng)
指電信公司出資建造大型網(wǎng)絡(luò)。向該公司繳費(fèi)可以使用這種網(wǎng)絡(luò)
專(zhuān)用網(wǎng)
某個(gè)部門(mén)為本單位的特殊業(yè)務(wù)工作的需要而建造的一個(gè)網(wǎng)絡(luò),這種網(wǎng)絡(luò)不向外界提供服務(wù)。
計(jì)算機(jī)網(wǎng)絡(luò)的主要性能指標(biāo)
帶寬
本指某個(gè)信號(hào)具有的頻帶寬度。在計(jì)算機(jī)網(wǎng)絡(luò)中帶寬用來(lái)表示網(wǎng)絡(luò)通信線路所能傳輸數(shù)據(jù)的能力,帶寬在這表示的就是單位時(shí)間內(nèi)從網(wǎng)絡(luò)中某一點(diǎn)到另一點(diǎn)所能通過(guò)的最高數(shù)據(jù)率單位是bit/s
吞吐量
表示在實(shí)際應(yīng)用中,單位時(shí)間內(nèi)能夠通過(guò)網(wǎng)絡(luò)的數(shù)據(jù)量。它受到帶寬的影響。
時(shí)延
數(shù)據(jù)從一端傳送到另一端的時(shí)間。
發(fā)送時(shí)延:是主機(jī)或路由器將分組發(fā)送到通信線路上所需要的時(shí)間。計(jì)算公式是:
發(fā)送時(shí)延=分組長(zhǎng)度/發(fā)送速率
傳播時(shí)延:電磁波在信道中需要傳播一定距離而花費(fèi)的時(shí)間。
物理層
物理層協(xié)議的主要任務(wù)就是 確定與傳輸媒體的接口有關(guān)的一些特性,如下:
機(jī)械特性 指明接口所用接線器的形狀和尺寸、引腳樹(shù)木和排列、固定和鎖定裝置。
電氣特性 指明在接口電纜的各條線上出現(xiàn)的電壓的范圍
功能特性 指明某條線上出現(xiàn)的某一電平的電壓表示何種意義
過(guò)程特性 指明對(duì)于不同功能的各種事件出現(xiàn)順序
數(shù)據(jù)通信的基礎(chǔ)知識(shí)
數(shù)據(jù)通信系統(tǒng)的模型
一個(gè)數(shù)據(jù)通信系統(tǒng)包括 :
**源系統(tǒng)**:
源點(diǎn):源點(diǎn)設(shè)備要傳輸?shù)臄?shù)據(jù)
發(fā)送器:通常源點(diǎn)生成的數(shù)字比特流要通過(guò)發(fā)送器編碼后才可以在傳輸系統(tǒng)中進(jìn)行傳輸
**傳輸系統(tǒng)**
**目的系統(tǒng)**:
接收器:接收傳輸系統(tǒng)傳送過(guò)來(lái)的信號(hào),并把它們轉(zhuǎn)換成為能夠被目的設(shè)備處理的信息
終點(diǎn):終點(diǎn)設(shè)備從接收器獲取傳送過(guò)來(lái)的數(shù)字比特流
編碼與調(diào)制
數(shù)字?jǐn)?shù)據(jù)轉(zhuǎn)換成為數(shù)字信號(hào)的過(guò)程稱(chēng)為編碼
將數(shù)字?jǐn)?shù)據(jù)轉(zhuǎn)換成為模擬信號(hào)的過(guò)程稱(chēng)為調(diào)制
幾種基本調(diào)制方法
- 調(diào)幅 即載波的振幅隨基帶數(shù)字信號(hào)而變化。0代表無(wú)載波,1代表有載波
- 調(diào)頻 即載波的頻率隨基帶數(shù)字信號(hào)而變化
- 調(diào)相 即載波的初始相位隨基帶數(shù)字信號(hào)而變化
信道的極限容量
信號(hào)能通過(guò)的頻率范圍
在傳輸信號(hào)的時(shí)候要控制好傳輸速率,不然很容易出現(xiàn)碼間串?dāng)_(碼間串?dāng)_就是嚴(yán)重失真出現(xiàn)的時(shí)候,接收端收到的信號(hào)波形失去了碼元之間的清晰分界線)。
關(guān)于傳輸速率的上限,有奈奎斯的奈氏準(zhǔn)則可以表達(dá),
奈氏準(zhǔn)則:每赫帶寬的理想低通信道的最高碼元傳輸速率是每秒2個(gè)碼元,每赫帶寬的帶通信道的最高碼元傳輸速率為1個(gè)碼元
信噪比
通過(guò)多元制可以提高信息的傳輸速率,但是卻不能夠無(wú)限提升,還有信道中的噪聲會(huì)影響接收端對(duì)碼元的識(shí)別,并且噪聲功率越高影響越大。香農(nóng)公式表明:信道的帶寬或信道中的信噪比越大,信息的極限傳輸速率就越高
香農(nóng)公式:

香農(nóng)公式表明:信道的帶寬或者信道中的信噪比越大,則信息的極限傳輸速率就高。
傳輸方式
并行傳輸和串行傳輸
并行傳輸:是指一次發(fā)送n個(gè)比特而不是一個(gè),為此,在發(fā)送端和接收端之間需要n條傳輸路線
串行傳輸:一個(gè)一個(gè)比特發(fā)送。
異步傳輸和同步傳輸
同步傳輸就是收發(fā)雙方在時(shí)間基準(zhǔn)上保持一致的過(guò)程
異步傳輸是以字節(jié)為獨(dú)立的傳輸單位,字節(jié)中的每個(gè)比特還是要同步的,為此,每個(gè)字節(jié)前后要加上起始位和結(jié)束位。
單工、半雙工和全雙工
單向通信又稱(chēng)為單工通信,即只能有一個(gè)方向的通信而沒(méi)有反方向的交互。無(wú)線電廣播或有線電廣播,以及電視廣播。
雙向交替通信,又稱(chēng)為半雙工通信,即雙方都可以發(fā)送消息,但不能雙方同時(shí)發(fā)送,也不能同時(shí)接收。
雙向同時(shí)通信,又稱(chēng)作全雙工通信
物理層下的傳輸媒體
導(dǎo)引型傳輸媒體
雙絞線
把兩根相互絕緣的線按照喲定規(guī)則絞合起來(lái)就構(gòu)成了雙絞線。電話系統(tǒng)中使用的雙絞線最多。
模擬傳輸和數(shù)字傳輸都可以使用雙絞線,通信距離為幾千米到十幾千米,太長(zhǎng)的距離就要加放大器或者用中繼器,不然的話就會(huì)失真。導(dǎo)線越粗,傳的就越遠(yuǎn),但是相應(yīng)的需要的造價(jià)就越高,局域網(wǎng)就用雙絞線。為了提高抗干擾能力,可以在雙絞線外面加一層金屬網(wǎng)屏蔽層,這就是屏蔽雙絞線,比無(wú)屏蔽雙絞線貴一點(diǎn)。
同軸電纜
由內(nèi)導(dǎo)體銅制芯線、絕緣層、網(wǎng)狀編織的外導(dǎo)體屏蔽層、保護(hù)塑料外套構(gòu)成,有比雙絞線更加抗干擾、更高帶寬的特性。
光纖
利用光導(dǎo)纖維傳遞光脈沖來(lái)實(shí)現(xiàn)通信傳遞。有光脈沖為1,無(wú)光脈沖為0。
信道復(fù)用技術(shù)
復(fù)用技術(shù)就是指一個(gè)傳輸媒介可以給多個(gè)通信使用,而不是專(zhuān)屬哪個(gè)通信。
頻分復(fù)用(FDM):就是將傳輸線路頻帶資源劃分為多個(gè)子頻帶,形成多個(gè)子信道
時(shí)分復(fù)用(TDM):將傳輸線路的帶寬資源按時(shí)間輪流分配給不同的用戶(hù),每個(gè)用戶(hù)只在分配的時(shí)間里使用線路傳輸。
波分復(fù)用:就是光的頻分復(fù)用。
數(shù)據(jù)鏈路層
鏈路與數(shù)據(jù)鏈路的區(qū)別
數(shù)據(jù)鏈路與鏈路不是一回事,鏈路是指從一個(gè)節(jié)點(diǎn)到相鄰節(jié)點(diǎn)的一段物理線路;數(shù)據(jù)鏈路除了一段物理線路之外還有通信協(xié)議控制這些數(shù)據(jù)的傳輸。
數(shù)據(jù)鏈路層主要就是將網(wǎng)絡(luò)層傳下來(lái)的數(shù)據(jù)封裝成幀,數(shù)據(jù)鏈路層的協(xié)議數(shù)據(jù)單元——幀
數(shù)據(jù)鏈路層必須使用物理層來(lái)一個(gè)一個(gè)傳輸幀,這樣就需要一個(gè)界定標(biāo)記來(lái)劃分從什么時(shí)候是一個(gè)幀開(kāi)始,什么時(shí)候是幀的結(jié)束。這樣就是封裝成幀
為了防止出現(xiàn)數(shù)據(jù)中有結(jié)束標(biāo)志或開(kāi)始標(biāo)志導(dǎo)致傳輸?shù)臅r(shí)候誤認(rèn)為是一個(gè)幀從而定錯(cuò)幀,可以使用字符填充(字節(jié)填充)的方法來(lái)解決,達(dá)到透明傳輸?shù)男Ч?/p>
透明傳輸?shù)囊馑际菙?shù)據(jù)進(jìn)入鏈路層傳輸,我們不需要什么數(shù)據(jù)或者操作就能使得這些幀里的部分?jǐn)?shù)據(jù)不被認(rèn)為是幀的開(kāi)始或者結(jié)束,機(jī)器自己知道這些是數(shù)據(jù)部分不會(huì)提早結(jié)束一個(gè)幀。整體上看起來(lái)就像是直接從鏈路層傳到兩一個(gè)主機(jī)的鏈路層上一樣,里面的字符填充之類(lèi)的操作好像是不存在一樣,是透明的。
PPP協(xié)議采用的是零比特填充法:發(fā)送端會(huì)掃描整個(gè)信息段,只要有5個(gè)連續(xù)的1就在后面加一個(gè)0,以保證絕對(duì)不會(huì)出現(xiàn)六個(gè)1。
但是傳輸不可能絕對(duì)正確,是有可能出現(xiàn)比特差錯(cuò),通常使用的差錯(cuò)檢測(cè)方法是循環(huán)冗余檢驗(yàn)(CRC)也稱(chēng)作多項(xiàng)式檢驗(yàn)
可靠傳輸
停止等待協(xié)議:接收方收到一個(gè)分組,用差錯(cuò)檢驗(yàn)技術(shù)檢測(cè),沒(méi)問(wèn)題則發(fā)送一個(gè)確認(rèn)分組ACK,出錯(cuò)時(shí)發(fā)送一個(gè)否認(rèn)分組NAK,發(fā)送方收到ACK則發(fā)送下一個(gè)分組,收到NAK就重發(fā)。
當(dāng)數(shù)據(jù)分組或確認(rèn)分組丟失時(shí),發(fā)送方會(huì)一直等待接收方的確認(rèn)分組,為解決此問(wèn)題,發(fā)送方會(huì)啟用一個(gè)超時(shí)計(jì)時(shí)器,超時(shí)了就會(huì)重傳。
點(diǎn)對(duì)點(diǎn)協(xié)議(PPP)
數(shù)據(jù)鏈路層通常是用PPP協(xié)議來(lái)傳輸數(shù)據(jù),PPP的特點(diǎn)有:
簡(jiǎn)單:接收方每收到一個(gè)幀,就進(jìn)行CRC檢驗(yàn),檢驗(yàn)正確就收下這個(gè)幀,反之就拋棄這個(gè)幀。而且PPP的數(shù)據(jù)鏈路層向上不提供可靠傳輸服務(wù),如果需要可靠傳輸服務(wù),就靠運(yùn)輸層來(lái)完成。
封裝成幀:PPP規(guī)定特殊的字符作為幀界定符
透明傳輸
差錯(cuò)檢測(cè):檢測(cè)到錯(cuò)誤的幀,直接丟掉,不會(huì)糾錯(cuò)
PPP能夠在同一條物理線路上同時(shí)支持多種網(wǎng)絡(luò)層的協(xié)議
檢測(cè)連接狀態(tài):PPP有一種機(jī)制,能夠自動(dòng)檢測(cè)出來(lái)是否處在正常工作狀態(tài)
最大傳送單元:PPP對(duì)每一種類(lèi)型的帶隊(duì)點(diǎn)鏈路設(shè)置最大傳送單元MTU,分組的數(shù)據(jù)部分長(zhǎng)度超過(guò)MTU就會(huì)丟棄這個(gè)幀。
PPP的幀格式

PPP工作狀態(tài)
CSMA/CD協(xié)議
以太網(wǎng)的通信為了簡(jiǎn)便,采取了兩個(gè)措施:
- 采用較為靈活的無(wú)連接的工作方式,因此以太網(wǎng)提供的服務(wù)是不可靠的交付,如果收到錯(cuò)誤的幀,直接丟棄,不管其他的。是否重傳是高層決定的,以太網(wǎng)什么都不用管。
- 采用基帶傳輸,發(fā)送的數(shù)據(jù)都使用曼切斯特編碼的信號(hào)。
還剩下一個(gè)重要的問(wèn)題就是:總線同一時(shí)間只可以發(fā)或者接受,不然就會(huì)撞在一起。于是就有了CSMA/CD協(xié)議(載波監(jiān)聽(tīng)多址接入/碰撞檢測(cè)),這個(gè)協(xié)議就是用來(lái)解決這個(gè)問(wèn)題的。
多址接入:許多站點(diǎn)以多址接入的方式接在總線上
載波監(jiān)聽(tīng):發(fā)送前先監(jiān)聽(tīng)
碰撞檢測(cè):邊發(fā)邊監(jiān)聽(tīng)
以太網(wǎng)幀格式:

網(wǎng)絡(luò)層
分組轉(zhuǎn)發(fā):按照最佳的路線發(fā)送
路由選擇:確定一條最佳路由
網(wǎng)絡(luò)層提供的兩種服務(wù)
在網(wǎng)絡(luò)層提供面向連接服務(wù)的計(jì)算機(jī)網(wǎng)絡(luò)叫做虛電路網(wǎng)絡(luò)
在網(wǎng)絡(luò)層提供無(wú)連接服務(wù)的計(jì)算機(jī)網(wǎng)絡(luò)叫做數(shù)據(jù)報(bào)網(wǎng)絡(luò)
虛電路網(wǎng)絡(luò)
網(wǎng)際協(xié)議(IP)
32位,分四份,每份8位;點(diǎn)分十進(jìn)制表示:x.x.x.x
IP地址編址方式三個(gè)歷史階段:
分類(lèi)編址
劃分網(wǎng)絡(luò)號(hào)和主機(jī)號(hào);
IP地址 ::={<網(wǎng)絡(luò)號(hào)>,<主機(jī)號(hào)>}
根據(jù)網(wǎng)絡(luò)號(hào)的位數(shù)劃分ABCDE類(lèi)
A類(lèi):8為網(wǎng)絡(luò)號(hào),24為主機(jī)號(hào)
B類(lèi):16位網(wǎng)絡(luò)號(hào),16位主機(jī)號(hào)
C類(lèi):24位網(wǎng)絡(luò)號(hào),8位主機(jī)號(hào)
D類(lèi):多播地址
E類(lèi):保留為今后使用
劃分子網(wǎng)
劃分網(wǎng)絡(luò)號(hào)、子網(wǎng)號(hào)和主機(jī)號(hào);
IP地址 ::={<網(wǎng)絡(luò)號(hào)>,<子網(wǎng)號(hào)>,<主機(jī)號(hào)>}
減少了A、B類(lèi)地址空間的浪費(fèi)
無(wú)分類(lèi)編址
前面兩個(gè)方法仍然無(wú)法解決IP地址快要消耗干凈的問(wèn)題,于是在1993年,IETF發(fā)布了無(wú)分類(lèi)域間路由選擇(CIDR)的文檔。CIDR消除了ABC類(lèi)地址以及劃分子網(wǎng)的概念。
CIDR將IP地址劃分為不定長(zhǎng)的網(wǎng)絡(luò)前綴和主機(jī)號(hào)
IP地址 ::={<網(wǎng)絡(luò)前綴>,<主機(jī)號(hào)>}
網(wǎng)絡(luò)前綴不定長(zhǎng),主機(jī)號(hào)也是不定長(zhǎng),于是這就需要子網(wǎng)掩碼來(lái)決定他的網(wǎng)絡(luò)前綴有多長(zhǎng)。
地址解析協(xié)議(ARP)
在網(wǎng)絡(luò)中,我們雖然有IP地址,但是IP地址是會(huì)隨時(shí)改變的,所以我們都是通過(guò)MAC地址來(lái)查找是不是你要連接的主機(jī),ARP協(xié)議就是通過(guò)IP地址來(lái)獲取對(duì)方的MAC地址
IP數(shù)據(jù)報(bào)格式
IP數(shù)據(jù)報(bào)的首部有固定部分和可變部分兩個(gè)部分,固定部分長(zhǎng)度20個(gè)字節(jié)

網(wǎng)際控制報(bào)文協(xié)議(ICMP)
ICMP報(bào)文作為IP層數(shù)據(jù)報(bào)的數(shù)據(jù)部分。
傳輸層
應(yīng)用進(jìn)程之間的通信
運(yùn)輸層向他上面的應(yīng)用層提供端到端通信服務(wù)
UDP協(xié)議(用戶(hù)數(shù)據(jù)報(bào)協(xié)議)
UDP在傳送數(shù)據(jù)前不建立連接,是無(wú)連接的,所以傳輸不可靠,但是所需要的信息不多,簡(jiǎn)便,傳輸方便。
UDP首部格式
四個(gè)部分:源端口號(hào)、目的端口號(hào)、長(zhǎng)度(UDP用戶(hù)數(shù)據(jù)包長(zhǎng)度)、檢驗(yàn)和;每個(gè)部分兩個(gè)字節(jié),只有八個(gè)字節(jié)
TCP協(xié)議(傳輸控制協(xié)議)
TCP是面向連接的,比UDP可靠,除此之外,TCP還在運(yùn)輸層使用了流量控制和擁塞控制機(jī)制。
TCP提供全雙工通信,而且雙邊都有緩存;
TCP面向字節(jié)流
TCP報(bào)文段格式
源端口和目的端口:各占兩個(gè)字節(jié)。
序號(hào):占四個(gè)字節(jié),TCP是面向字節(jié)流的,在一個(gè)TCP連接中每一個(gè)字節(jié)都按順序編號(hào)。
確認(rèn)號(hào):占四個(gè)字節(jié),是期望收到對(duì)方下一個(gè)保溫段的第一個(gè)數(shù)據(jù)字節(jié)的序號(hào)
數(shù)據(jù)偏移:占四個(gè)字節(jié),指出TCP保溫段的數(shù)據(jù)其實(shí)距離TCP報(bào)文段的起始處有多遠(yuǎn),實(shí)際上就是TCP報(bào)文段首部的長(zhǎng)度。
保留:占六位
緊急URG:當(dāng)URG=1的時(shí)候表示緊急指針字段有效,意思是告訴接收方TCP此報(bào)文段中有緊急數(shù)據(jù)
確認(rèn)ACK:ACK=1的時(shí)候有效
窗口:占兩個(gè)字節(jié),指示發(fā)送方的接收窗口的大小,在0到2的十六次方減一之間
檢驗(yàn)和:占兩個(gè)字節(jié)
選項(xiàng):長(zhǎng)度可變。
TCP的連接管理
TCP連接有三個(gè)階段:連接建立、數(shù)據(jù)傳送、連接釋放
連接建立
TCP建立連接需要解決這些問(wèn)題:
- 要使得每一方都知道對(duì)方的存在;
- 要允許雙方協(xié)商一些參數(shù)(如報(bào)文長(zhǎng)度、最大窗口代銷(xiāo),服務(wù)質(zhì)量等)
- 能夠?qū)\(yùn)輸實(shí)體資源進(jìn)行分配和初始化
TCP三次握手
假設(shè) A 為客戶(hù)端,B 為服務(wù)器端。
- 首先 B 處于 LISTEN(監(jiān)聽(tīng))狀態(tài),等待客戶(hù)的連接請(qǐng)求。
- A 向 B 發(fā)送連接請(qǐng)求報(bào)文,SYN=1,ACK=0,選擇一個(gè)初始的序號(hào) x。
- B 收到連接請(qǐng)求報(bào)文,如果同意建立連接,則向 A 發(fā)送連接確認(rèn)報(bào)文,SYN=1,ACK=1,確認(rèn)號(hào)為 x+1,同時(shí)也選擇一個(gè)初始的序號(hào) y。
- A 收到 B 的連接確認(rèn)報(bào)文后,還要向 B 發(fā)出確認(rèn),確認(rèn)號(hào)為 y+1,序號(hào)為 x+1。
- B 收到 A 的確認(rèn)后,連接建立。
三次握手的原因
第三次握手是為了防止失效的連接請(qǐng)求到達(dá)服務(wù)器,讓服務(wù)器錯(cuò)誤打開(kāi)連接。
客戶(hù)端發(fā)送的連接請(qǐng)求如果在網(wǎng)絡(luò)中滯留,那么就會(huì)隔很長(zhǎng)一段時(shí)間才能收到服務(wù)器端發(fā)回的連接確認(rèn)。客戶(hù)端等待一個(gè)超時(shí)重傳時(shí)間之后,就會(huì)重新請(qǐng)求連接。但是這個(gè)滯留的連接請(qǐng)求最后還是會(huì)到達(dá)服務(wù)器,如果不進(jìn)行三次握手,那么服務(wù)器就會(huì)打開(kāi)兩個(gè)連接。如果有第三次握手,客戶(hù)端會(huì)忽略服務(wù)器之后發(fā)送的對(duì)滯留連接請(qǐng)求的連接確認(rèn),不進(jìn)行第三次握手,因此就不會(huì)再次打開(kāi)連接。
TCP四次揮手
A 發(fā)送連接釋放報(bào)文,F(xiàn)IN=1。
B 收到之后發(fā)出確認(rèn),此時(shí) TCP 屬于半關(guān)閉狀態(tài),B 能向 A 發(fā)送數(shù)據(jù)但是 A 不能向 B 發(fā)送數(shù)據(jù)。
當(dāng) B 不再需要連接時(shí),發(fā)送連接釋放報(bào)文,F(xiàn)IN=1。
A 收到后發(fā)出確認(rèn),進(jìn)入 TIME-WAIT 狀態(tài),等待 2 MSL(最大報(bào)文存活時(shí)間)后釋放連接。
B 收到 A 的確認(rèn)后釋放連接。
四次揮手的原因
客戶(hù)端發(fā)送了 FIN 連接釋放報(bào)文之后,服務(wù)器收到了這個(gè)報(bào)文,就進(jìn)入了 CLOSE-WAIT 狀態(tài)。這個(gè)狀態(tài)是為了讓服務(wù)器端發(fā)送還未傳送完畢的數(shù)據(jù),傳送完畢之后,服務(wù)器會(huì)發(fā)送 FIN 連接釋放報(bào)文。
TIME_WAIT
客戶(hù)端接收到服務(wù)器端的 FIN 報(bào)文后進(jìn)入此狀態(tài),此時(shí)并不是直接進(jìn)入 CLOSED 狀態(tài),還需要等待一個(gè)時(shí)間計(jì)時(shí)器設(shè)置的時(shí)間 2MSL。這么做有兩個(gè)理由:
- 確保最后一個(gè)確認(rèn)報(bào)文能夠到達(dá)。如果 B 沒(méi)收到 A 發(fā)送來(lái)的確認(rèn)報(bào)文,那么就會(huì)重新發(fā)送連接釋放請(qǐng)求報(bào)文,A 等待一段時(shí)間就是為了處理這種情況的發(fā)生。
- 等待一段時(shí)間是為了讓本連接持續(xù)時(shí)間內(nèi)所產(chǎn)生的所有報(bào)文都從網(wǎng)絡(luò)中消失,使得下一個(gè)新的連接不會(huì)出現(xiàn)舊的連接請(qǐng)求報(bào)文。
TCP流量控制
TCP流量控制服務(wù),以解決因發(fā)送方發(fā)送數(shù)據(jù)太快而導(dǎo)致接收方來(lái)不及接收,使得接收方緩存溢出的問(wèn)題。
利用滑動(dòng)窗口實(shí)現(xiàn)流量控制
- TCP 流量控制
- 流量控制是為了控制發(fā)送方發(fā)送速率,保證接收方來(lái)得及接收。
接收方發(fā)送的確認(rèn)報(bào)文中的窗口字段可以用來(lái)控制發(fā)送方窗口大小,從而影響發(fā)送方的發(fā)送速率。將窗口字段設(shè)置為 0,則發(fā)送方不能發(fā)送數(shù)據(jù)。
- 流量控制舉例
應(yīng)用層
域名系統(tǒng)
用來(lái)將域名轉(zhuǎn)換為ip地址用的一個(gè)系統(tǒng),轉(zhuǎn)換過(guò)程稱(chēng)為域名解析。
在一個(gè)應(yīng)用進(jìn)程中,我們輸入一個(gè)域名,就會(huì)把待解析的域名放在DNS報(bào)文中,以UDP數(shù)據(jù)報(bào)方式發(fā)送給本地域名服務(wù)器。本地域名服務(wù)器在查找到域名對(duì)應(yīng)的IP地址放在回答報(bào)文中返回。
域名的結(jié)構(gòu)分為頂級(jí)域名、二級(jí)域名、三級(jí)域名······。
根據(jù)域名的不同分級(jí),域名服務(wù)器也分出多個(gè)級(jí)別,方便查詢(xún),將頂級(jí)域名放入頂級(jí)域名服務(wù)器,其他級(jí)別放入權(quán)威域名服務(wù)器。
有遞歸查詢(xún)和迭代查詢(xún)兩種方法,但都是主機(jī)發(fā)送DNS報(bào)文給本地域名服務(wù)器,讓本地域名服務(wù)器作為DNS代理。
萬(wàn)維網(wǎng) WWW
概述
- 萬(wàn)維網(wǎng) WWW (World Wide Web)并非某種特殊的計(jì)算機(jī)網(wǎng)絡(luò)。
- 萬(wàn)維網(wǎng)是一個(gè)大規(guī)模的、聯(lián)機(jī)式的信息儲(chǔ)藏所。
- 萬(wàn)維網(wǎng)用鏈接的方法能非常方便地從因特網(wǎng)上的一個(gè)站點(diǎn)訪問(wèn)另一個(gè)站點(diǎn),從而主動(dòng)地按需獲取豐富的信息。
- 這種訪問(wèn)方式稱(chēng)為“鏈接”。
- 萬(wàn)維網(wǎng)是分布式超媒體(hypermedia)系統(tǒng),它是超文本(hypertext)系統(tǒng)的擴(kuò)充。
萬(wàn)維網(wǎng)的工作方式
- 萬(wàn)維網(wǎng)以客戶(hù)服務(wù)器方式工作。
- 瀏覽器就是在用戶(hù)計(jì)算機(jī)上的萬(wàn)維網(wǎng)客戶(hù)程序。萬(wàn)維網(wǎng)文檔所駐留的計(jì)算機(jī)則運(yùn)行服務(wù)器程序,因此這個(gè)計(jì)算機(jī)也稱(chēng)為萬(wàn)維網(wǎng)服務(wù)器。
萬(wàn)維網(wǎng)必須解決的問(wèn)題
- (1) 怎樣標(biāo)志分布在整個(gè)因特網(wǎng)上的萬(wàn)維網(wǎng)文檔?
使用統(tǒng)一資源定位符 URL (Uniform Resource Locator)來(lái)標(biāo)志萬(wàn)維網(wǎng)上的各種文檔。
使每一個(gè)文檔在整個(gè)因特網(wǎng)的范圍內(nèi)具有唯一的標(biāo)識(shí)符 URL。 - (2) 用何協(xié)議實(shí)現(xiàn)萬(wàn)維網(wǎng)上各種超鏈的鏈接?
在萬(wàn)維網(wǎng)客戶(hù)程序與萬(wàn)維網(wǎng)服務(wù)器程序之間進(jìn)行交互所使用的協(xié)議,是超文本傳送協(xié)議 HTTP (HyperText Transfer Protocol)。
HTTP 是一個(gè)應(yīng)用層協(xié)議,它使用 TCP 連接進(jìn)行可靠的傳送。 - (3) 怎樣使各種萬(wàn)維網(wǎng)文檔都能在因特網(wǎng)上的各種計(jì)算機(jī)上顯示出來(lái),同時(shí)使用戶(hù)清楚地知道在什么地方存在著超鏈?
超文本標(biāo)記語(yǔ)言 HTML (HyperText Markup Language)使得萬(wàn)維網(wǎng)頁(yè)面的設(shè)計(jì)者可以很方便地用一個(gè)超鏈從本頁(yè)面的某處鏈接到因特網(wǎng)上的任何一個(gè)萬(wàn)維網(wǎng)頁(yè)面,并且能夠在自己的計(jì)算機(jī)屏幕上將這些頁(yè)面顯示出來(lái)。 - (4) 怎樣使用戶(hù)能夠很方便地找到所需的信息?
為了在萬(wàn)維網(wǎng)上方便地查找信息,用戶(hù)可使用各種的搜索工具(即搜索引擎)。
統(tǒng)一資源定位符 URL
- 統(tǒng)一資源定位符 URL 是對(duì)可以從因特網(wǎng)上得到的資源的位置和訪問(wèn)方法的一種簡(jiǎn)潔的表示。
- URL 的一般形式是:<協(xié)議>://<主機(jī)>:<端口>/<路徑>
超文本傳送協(xié)議 HTTP
- HTTP 是面向事務(wù)的客戶(hù)服務(wù)器協(xié)議。
- HTTP 1.0 協(xié)議是無(wú)狀態(tài)的(stateless)。
- HTTP 協(xié)議本身也是無(wú)連接的,雖然它使用了面向連接的 TCP 向上提供的服務(wù)。
萬(wàn)維網(wǎng)的文檔
- 超文本標(biāo)記語(yǔ)言 HTML
- 超文本標(biāo)記語(yǔ)言 HTML 中的 Markup 的意思就是“設(shè)置標(biāo)記”。
- HTML 定義了許多用于排版的命令(即標(biāo)簽)。
- HTML 把各種標(biāo)簽嵌入到萬(wàn)維網(wǎng)的頁(yè)面中。這樣就構(gòu)成了所謂的 HTML 文檔。HTML 文檔是一種可以用任何文本編輯器創(chuàng)建的 ASCII 碼文件。
- 動(dòng)態(tài)萬(wàn)維網(wǎng)文檔
- 靜態(tài)文檔是指該文檔創(chuàng)作完畢后就存放在萬(wàn)維網(wǎng)服務(wù)器中,在被用戶(hù)瀏覽的過(guò)程中,內(nèi)容不會(huì)改變。
- 動(dòng)態(tài)文檔是指文檔的內(nèi)容是在瀏覽器訪問(wèn)萬(wàn)維網(wǎng)服務(wù)器時(shí)才由應(yīng)用程序動(dòng)態(tài)創(chuàng)建。
- 動(dòng)態(tài)文檔和靜態(tài)文檔之間的主要差別體現(xiàn)在服務(wù)器一端。這主要是文檔內(nèi)容的生成方法不同。而從瀏覽器的角度看,這兩種文檔并沒(méi)有區(qū)別。
萬(wàn)維網(wǎng)的信息檢索系統(tǒng)
- 全文檢索搜索
- 全文檢索搜索引擎是一種純技術(shù)型的檢索工具。它的工作原理是通過(guò)搜索軟件到因特網(wǎng)上的各網(wǎng)站收集信息,找到一個(gè)網(wǎng)站后可以從這個(gè)網(wǎng)站再鏈接到另一個(gè)網(wǎng)站。然后按照一定的規(guī)則建立一個(gè)很大的在線數(shù)據(jù)庫(kù)供用戶(hù)查詢(xún)。
- 分類(lèi)目錄搜索
- 分類(lèi)目錄搜索引擎并不采集網(wǎng)站的任何信息,而是利用各網(wǎng)站向搜索引擎提交的網(wǎng)站信息時(shí)填寫(xiě)的關(guān)鍵詞和網(wǎng)站描述等信息,經(jīng)過(guò)人工審核編輯后,如果認(rèn)為符合網(wǎng)站登錄的條件,則輸入到分類(lèi)目錄的數(shù)據(jù)庫(kù)中,供網(wǎng)上用戶(hù)查詢(xún)。
超文本傳輸協(xié)議(HTTP)
HTTP定義了瀏覽器是如何向萬(wàn)維網(wǎng)服務(wù)器請(qǐng)求萬(wàn)維網(wǎng)文檔,以及萬(wàn)維網(wǎng)服務(wù)器如何把萬(wàn)維網(wǎng)文檔傳送給了瀏覽器。
每個(gè)萬(wàn)維網(wǎng)網(wǎng)站都有一個(gè)服務(wù)器進(jìn)程,它不斷監(jiān)聽(tīng)TCP的80端口,監(jiān)聽(tīng)到請(qǐng)求就會(huì)建立連接,然后發(fā)送響應(yīng)交互,最后被釋放連接。
HTTP使用了面向連接的TCP作為運(yùn)輸層協(xié)議,保證了數(shù)據(jù)包傳輸?shù)目煽啃?。HTTP是不需要考慮數(shù)據(jù)傳輸?shù)姆€(wěn)不穩(wěn),有沒(méi)有丟,丟了要怎樣重傳。
HTTP/1.0采用的是非持續(xù)連接方式,一次交互建立一次TCP請(qǐng)求,完成后就斷開(kāi)連接。
HTTP/1.1采用持續(xù)連接方式,就是連一次不斷開(kāi),只要你請(qǐng)求同一個(gè)服務(wù)器的文檔就一直保持連接狀態(tài)。
HTTP報(bào)文格式:
請(qǐng)求格式:
請(qǐng)求行:
方法:OPTION、GET、HEAD、POST、PUT、CONNECT
URL
版本
請(qǐng)求頭部
請(qǐng)求正文
響應(yīng)格式:
狀態(tài)行:
版本
狀態(tài)碼:200、500、404
短語(yǔ)
響應(yīng)頭部
響應(yīng)正文
FTP協(xié)議
FTP 文件傳輸協(xié)議 提供交互式訪問(wèn),允許客戶(hù)知名文件的類(lèi)型與格式,并允許文件具有存取權(quán)限。FTP屏蔽了計(jì)算機(jī)系統(tǒng)的細(xì)節(jié),適用于異構(gòu)網(wǎng)絡(luò)中人以計(jì)算機(jī)之間傳送文件。
FTP工作過(guò)程
FTP的客戶(hù)現(xiàn)象FTP服務(wù)器的21端口發(fā)起一個(gè)TCP請(qǐng)求,建立連接控制。FTP客戶(hù)通過(guò)該控制連接發(fā)送用戶(hù)的表示和口令,也發(fā)送改變遠(yuǎn)程目錄等命令。如果客戶(hù)發(fā)送起一個(gè)文件傳輸命令,服務(wù)端就會(huì)從20端口發(fā)起一個(gè)到客戶(hù)端的數(shù)據(jù)連接。為此沒(méi)在客戶(hù)想服務(wù)器發(fā)送文件傳輸命令的時(shí)候要告訴服務(wù)器其數(shù)據(jù)傳送進(jìn)程打開(kāi)的端口。
電子郵件
電子郵件概述
- 電子郵件(e-mail)是因特網(wǎng)上使用得最多的和最受用戶(hù)歡迎的一種應(yīng)用。
- 電子郵件把郵件發(fā)送到收件人使用的郵件服務(wù)器,并放在其中的收件人郵箱中,收件人可隨時(shí)上網(wǎng)到自己使用的郵件服務(wù)器進(jìn)行讀取。
- 電子郵件不僅使用方便,而且還具有傳遞迅速和費(fèi)用低廉的優(yōu)點(diǎn)。
- 一個(gè)電子郵件系統(tǒng)由三部分組成:用戶(hù)代理、郵件服務(wù)器以及郵件協(xié)議。
電子郵件的最主要的組成構(gòu)件
簡(jiǎn)單郵件傳送協(xié)議 SMTP
- SMTP 只能發(fā)送 ASCII 碼,而互聯(lián)網(wǎng)郵件擴(kuò)充 MIME 可以發(fā)送二進(jìn)制文件。MIME 并沒(méi)有改動(dòng)或者取代 SMTP,而是增加郵件主體的結(jié)構(gòu),定義了非 ASCII 碼的編碼規(guī)則。
電子郵件的信息格式
- 一個(gè)電子郵件分為信封和內(nèi)容兩大部分。
- RFC 822 只規(guī)定了郵件內(nèi)容中的首部(header)格式,而對(duì)郵件的主體(body)部分則讓用戶(hù)自由撰寫(xiě)。
- 郵件內(nèi)容的首部
- “To:”后面填入一個(gè)或多個(gè)收件人的電子郵件地址。用戶(hù)只需打開(kāi)地址簿,點(diǎn)擊收件人名字,收件人的電子郵件地址就會(huì)自動(dòng)地填入到合適的位置上。
- “Subject:”是郵件的主題。它反映了郵件的主要內(nèi)容,便于用戶(hù)查找郵件。
- 抄送 “Cc:” 表示應(yīng)給某某人發(fā)送一個(gè)郵件副本。
- “From” 和 “Date” 表示發(fā)信人的電子郵件地址和發(fā)信日期。“Reply-To” 是對(duì)方回信所用的地址。
- 郵件內(nèi)容的首部
郵件讀取協(xié)議 POP3 和 IMAP
- POP3
- POP3 的特點(diǎn)是只要用戶(hù)從服務(wù)器上讀取了郵件,就把該郵件刪除。但最新版本的 POP3 可以不刪除郵件。
- IMAP
- IMAP 協(xié)議中客戶(hù)端和服務(wù)器上的郵件保持同步,如果不手動(dòng)刪除郵件,那么服務(wù)器上的郵件也不會(huì)被刪除。IMAP 這種做法可以讓用戶(hù)隨時(shí)隨地去訪問(wèn)服務(wù)器上的郵件。
基于萬(wàn)維網(wǎng)的電子郵件
- 例子
- 電子郵件從 A 發(fā)送到網(wǎng)易郵件服務(wù)器是使用 HTTP 協(xié)議。
- 兩個(gè)郵件服務(wù)器之間的傳送使用 SMTP。
- 郵件從新浪郵件服務(wù)器傳送到 B 是使用 HTTP 協(xié)議。
- 概要: 示意圖
通用因特網(wǎng)郵件擴(kuò)充 MIME
- MIME 概述
- MIME 并沒(méi)有改動(dòng) SMTP 或取代它。
- MIME 的意圖是繼續(xù)使用目前的[RFC 822]格式,但增加了郵件主體的結(jié)構(gòu),并定義了傳送非 ASCII 碼的編碼規(guī)則。
網(wǎng)絡(luò)安全
計(jì)算機(jī)網(wǎng)絡(luò)通信面臨的安全性威脅及安全措施
安全威脅
網(wǎng)絡(luò)通信四種攻擊方式:
截獲:攻擊者從網(wǎng)絡(luò)上竊聽(tīng)他人通信內(nèi)容
中斷:攻擊者有意中斷他人在網(wǎng)絡(luò)上的通信
篡改:攻擊者故意篡改網(wǎng)絡(luò)上傳送報(bào)文
偽造:攻擊者偽造信息在網(wǎng)絡(luò)上傳送
流量分析:屬于被動(dòng)攻擊,就是只把截獲的信息讀取,不做什么破壞的影響。
拒絕服務(wù):屬于主動(dòng)攻擊,攻擊者發(fā)一大堆惡意報(bào)文把服務(wù)器搞崩。
惡意程序:包括計(jì)算機(jī)病毒、計(jì)算機(jī)蠕蟲(chóng)、特洛伊木馬、邏輯炸彈
安全服務(wù)
為防以上安全威脅,有幾個(gè)基本安全服務(wù):機(jī)密性、報(bào)文完整新、不可否認(rèn)性、實(shí)體鑒別、訪問(wèn)控制、可用性
機(jī)密性與密碼學(xué)
對(duì)稱(chēng)秘鑰密碼體制和公開(kāi)密鑰密碼體制
對(duì)稱(chēng)秘鑰密碼體制
一種加密秘鑰和解密秘鑰相同的密碼體制,雙方有一樣的秘鑰,然后根據(jù)數(shù)據(jù)加密標(biāo)準(zhǔn)(DES)這個(gè)算法進(jìn)行加密解密。但是現(xiàn)在的計(jì)算機(jī)算力可以暴力解密,現(xiàn)在人們提出三重DES來(lái)執(zhí)行加密和解密。
公鑰密碼體制
公鑰(加密秘鑰)是公開(kāi)的,加密算法E和解密算法D都是公開(kāi)的;
公鑰加密的密文要解密秘鑰(私鑰)才能解開(kāi)
計(jì)算機(jī)可以容易的生成公鑰和私鑰
從已知的公鑰在計(jì)算上無(wú)法推導(dǎo)出私鑰
基于這幾個(gè)情況下,公鑰密碼體制就很安全了,公鑰可以發(fā)給別人,也不怕別人截獲,他們用公鑰加密,發(fā)密文給你,你再用私鑰解開(kāi)密文。
完整性與鑒別
報(bào)文摘要和報(bào)文鑒別碼
有些通信內(nèi)容不在乎是否被人監(jiān)聽(tīng)了,只在乎是否是完整性,這個(gè)時(shí)候就是報(bào)文完整性的問(wèn)題,報(bào)文完整性的驗(yàn)證就是報(bào)文鑒別。如果我們加密整個(gè)報(bào)文就很浪費(fèi)時(shí)間和資源。于是使用報(bào)文摘要來(lái)進(jìn)行報(bào)文鑒別。
先把報(bào)文通過(guò)報(bào)文摘要算法得出一個(gè)固定長(zhǎng)度的報(bào)文摘要,再對(duì)報(bào)文摘要加密,叫做報(bào)文鑒別碼(MAC),并將其附在報(bào)文后面一起發(fā)過(guò)去
報(bào)文摘要和差錯(cuò)檢測(cè)碼都是多對(duì)一的散列函數(shù)的例子,需要滿(mǎn)足:
- 給定報(bào)文摘要x,不能在計(jì)算上實(shí)現(xiàn) 報(bào)文摘要x->報(bào)文y
- 任意兩個(gè)報(bào)文,經(jīng)過(guò)報(bào)文摘要算法計(jì)算會(huì)得到兩個(gè)相同的報(bào)文摘要
滿(mǎn)足條件的叫做密碼散列函數(shù)或安全散列函數(shù)
還有一種方法:前提是雙方通過(guò)通信雙方共享一個(gè)叫做鑒別秘鑰的秘密比特串s,發(fā)送方用s與報(bào)文級(jí)連生成m+s,并計(jì)算三列H(m+s)。將H(m+s)作為報(bào)文鑒別碼附加到報(bào)文m上。這樣攻擊者不知道s就無(wú)法偽造報(bào)文,這種技術(shù)叫做散列報(bào)文鑒別碼(HMAC)。
數(shù)字簽名
數(shù)字簽名首先要保證這三點(diǎn):
接收方可以核實(shí)發(fā)送方對(duì)報(bào)文的數(shù)字簽名
發(fā)送方事后不能抵賴(lài)對(duì)報(bào)文的數(shù)字簽名
任何人包括接收方都不能對(duì)數(shù)字簽名進(jìn)行偽造
數(shù)字簽名的生成式發(fā)送方用解密秘鑰進(jìn)行計(jì)算,這樣就沒(méi)人可以偽造數(shù)字簽名了。