版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、計(jì)算機(jī)網(wǎng)絡(luò)協(xié)議教案一、TCP/IP協(xié)議族的結(jié)構(gòu)和協(xié)議TCP/IP協(xié)議簇是Internet的基礎(chǔ),也是當(dāng)今最流行的組網(wǎng)形式。 HYPERLINK /item/TCP%2FIP/214077 t _blank TCP/IP是一組協(xié)議的代名詞,包括許多別的協(xié)議,組成了TCP/IP協(xié)議簇。其中比較重要的有 HYPERLINK /item/SLIP/610740 t _blank SLIP協(xié)議、PPP協(xié)議、IP協(xié)議、ICMP協(xié)議、ARP協(xié)議、TCP協(xié)議、UDP協(xié)議、 HYPERLINK /item/FTP%E5%8D%8F%E8%AE%AE/7651119 t _blank FTP協(xié)議、 HYPERLI
2、NK /item/DNS%E5%8D%8F%E8%AE%AE/1860066 t _blank DNS協(xié)議、 HYPERLINK /item/SMTP%E5%8D%8F%E8%AE%AE/421587 t _blank SMTP協(xié)議等。 HYPERLINK /item/TCP%2FIP%E5%8D%8F%E8%AE%AE/212915 t _blank TCP/IP協(xié)議并不完全符合OSI的七層參考模型。傳統(tǒng)的 HYPERLINK /item/%E5%BC%80%E6%94%BE%E5%BC%8F%E7%B3%BB%E7%BB%9F t _blank 開(kāi)放式系統(tǒng)互連參考模型,是一種 HYPERL
3、INK /item/%E9%80%9A%E4%BF%A1%E5%8D%8F%E8%AE%AE t _blank 通信協(xié)議的7層抽象的參考模型,其中每一層執(zhí)行某一特定任務(wù)。該模型的目的是使各種硬件在相同的層次上相互通信。而TCP/IP通訊協(xié)議采用了4層的層級(jí)結(jié)構(gòu),每一層都呼叫它的下一層所提供的網(wǎng)絡(luò)來(lái)完成自己的需求。(一)熟悉Internet地址結(jié)構(gòu)(二)了解Internet地址的概念互聯(lián)網(wǎng)上的每個(gè)接口必須有一個(gè)唯一的 I n t e r n e t地址(也稱作I P地址)。I P地址長(zhǎng)32 bit。I n t e r n e t地址并不采用平面形式的地址空間,如 1、2、3等。I P地址具有一定
4、的結(jié)構(gòu),五類不同的互聯(lián)網(wǎng)地址格式如圖1 - 5所示。這些3 2位的地址通常寫(xiě)成四個(gè)十進(jìn)制的數(shù),其中每個(gè)整數(shù)對(duì)應(yīng)一個(gè)字節(jié)。這種表示方法稱作“點(diǎn)分十進(jìn)制表示法(Dotted decimal notation)”。例如,作者的系統(tǒng)就是一個(gè)B類地址,它表示為:1 4 0 . 2 5 2 . 1 3 . 3 3。區(qū)分各類地址的最簡(jiǎn)單方法是看它的第一個(gè)十進(jìn)制整數(shù)。圖1 - 6列出了各類地址的起止范圍,其中第一個(gè)十進(jìn)制整數(shù)用加黑字體表示。需要再次指出的是,多接口主機(jī)具有多個(gè) I P地址,其中每個(gè)接口都對(duì)應(yīng)一個(gè)I P地址。由于互聯(lián)網(wǎng)上的每個(gè)接口必須有一個(gè)唯一的 I P地址,因此必須要有一個(gè)管理機(jī)構(gòu)為接入互聯(lián)網(wǎng)
5、的網(wǎng)絡(luò)分配I P地址。這個(gè)管理機(jī)構(gòu)就是互聯(lián)網(wǎng)絡(luò)信息中心( Internet Network Information Centre),稱作I n t e r N I C。I n t e r N I C只分配網(wǎng)絡(luò)號(hào)。主機(jī)號(hào)的分配由系統(tǒng)管理員來(lái)負(fù)責(zé)。有三類I P地址:?jiǎn)尾サ刂罚康臑閱蝹€(gè)主機(jī))、廣播地址(目的端為給定網(wǎng)絡(luò)上的所有主機(jī))以及多播地址(目的端為同一組內(nèi)的所有主機(jī))。二、熟悉Internet協(xié)議通信原理及報(bào)文格式(一)控制報(bào)文協(xié)議ICMP協(xié)議引言I C M P經(jīng)常被認(rèn)為是 I P層的一個(gè)組成部分。它傳遞差錯(cuò)報(bào)文以及其他需要注意的信息。I C M P報(bào)文通常被I P層或更高層協(xié)議( T C
6、P或U D P)使用。一些I C M P報(bào)文把差錯(cuò)報(bào)文返回給用戶進(jìn)程。I C M P報(bào)文是在I P數(shù)據(jù)報(bào)內(nèi)部被傳輸?shù)模鐖D6 - 1所示。ICMP 的正式規(guī)范參見(jiàn) RFC 792 Posterl1 9 8 1 b 。I C M P報(bào)文的格式如圖6 - 2所示。所有報(bào)文的前4個(gè)字節(jié)都是一樣的,但是剩下的其他字節(jié)則互不相同。下面我們將逐個(gè)介紹各種報(bào)文格式。類型字段可以有 1 5個(gè)不同的值,以描述特定類型的 I C M P報(bào)文。某些I C M P報(bào)文還使用代碼字段的值來(lái)進(jìn)一步描述不同的條件。檢驗(yàn)和字段覆蓋整個(gè)I C M P報(bào)文。使用的算法與我們?cè)?3 . 2節(jié)中介紹的I P首部檢驗(yàn)和算法相同。I C
7、 M P的檢驗(yàn)和是必需的。ICMP報(bào)文的類型各種類型的I C M P報(bào)文如圖6 - 3所示,不同類型由報(bào)文中的類型字段和代碼字段來(lái)共同決定。圖中的最后兩列表明 I C M P報(bào)文是一份查詢報(bào)文還是一份差錯(cuò)報(bào)文。因?yàn)閷?duì) I C M P差錯(cuò)報(bào)文有時(shí)需要作特殊處理,因此我們需要對(duì)它們進(jìn)行區(qū)分。例如,在對(duì) I C M P差錯(cuò)報(bào)文進(jìn)行響應(yīng)時(shí),永遠(yuǎn)不會(huì)生成另一份 I C M P差錯(cuò)報(bào)文(如果沒(méi)有這個(gè)限制規(guī)則,可能會(huì)遇到一個(gè)差錯(cuò)產(chǎn)生另一個(gè)差錯(cuò)的情況,而差錯(cuò)再產(chǎn)生差錯(cuò),這樣會(huì)無(wú)休止地循環(huán)下去)。當(dāng)發(fā)送一份I C M P差錯(cuò)報(bào)文時(shí),報(bào)文始終包含I P的首部和產(chǎn)生I C M P差錯(cuò)報(bào)文的I P數(shù)據(jù)報(bào)的前8個(gè)字節(jié)。
8、這樣,接收 I C M P差錯(cuò)報(bào)文的模塊就會(huì)把它與某個(gè)特定的協(xié)議(根據(jù) I P數(shù)據(jù)報(bào)首部中的協(xié)議字段來(lái)判斷)和用戶進(jìn)程(根據(jù)包含在 I P數(shù)據(jù)報(bào)前8個(gè)字節(jié)中的T C P或U D P報(bào)文首部中的T C P或U D P端口號(hào)來(lái)判斷)聯(lián)系起來(lái)。下面各種情況都不會(huì)導(dǎo)致產(chǎn)生I C M P差錯(cuò)報(bào)文:1) ICMP差錯(cuò)報(bào)文(但是,I C M P查詢報(bào)文可能會(huì)產(chǎn)生I C M P差錯(cuò)報(bào)文)。2) 目的地址是廣播地址(見(jiàn)圖3 - 9)或多播地址(D類地址,見(jiàn)圖1 - 5)的I P數(shù)據(jù)報(bào)。3) 作為鏈路層廣播的數(shù)據(jù)報(bào)。4) 不是I P分片的第一片(將在11 . 5節(jié)介紹分片)。5) 源地址不是單個(gè)主機(jī)的數(shù)據(jù)報(bào)。這就
9、是說(shuō),源地址不能為零地址、環(huán)回地址、廣播地址或多播地址。這些規(guī)則是為了防止過(guò)去允許I C M P差錯(cuò)報(bào)文對(duì)廣播分組響應(yīng)所帶來(lái)的廣播風(fēng)暴。ICMP地址掩碼請(qǐng)求與應(yīng)答I C M P地址掩碼請(qǐng)求用于無(wú)盤(pán)系統(tǒng)在引導(dǎo)過(guò)程中獲取自己的子網(wǎng)掩碼( 3 . 5節(jié))。系統(tǒng)廣播它的I C M P請(qǐng)求報(bào)文(這一過(guò)程與無(wú)盤(pán)系統(tǒng)在引導(dǎo)過(guò)程中用 R A R P獲取I P地址是類似的)。無(wú)盤(pán)系統(tǒng)獲取子網(wǎng)掩碼的另一個(gè)方法是 B O O T P協(xié)議,我們將在第 1 6章中介紹。I C M P地址掩碼請(qǐng)求和應(yīng)答報(bào)文的格式如圖6 - 4所示。I C M P報(bào)文中的標(biāo)識(shí)符和序列號(hào)字段由發(fā)送端任意選擇設(shè)定,這些值在應(yīng)答中將被返回。這樣
10、,發(fā)送端就可以把應(yīng)答與請(qǐng)求進(jìn)行匹配。我們可以寫(xiě)一個(gè)簡(jiǎn)單的程序(取名為 i c m p a d d r m a s k),它發(fā)送一份I C M P地址掩碼請(qǐng)求報(bào)文,然后打印出所有的應(yīng)答。由于一般是把請(qǐng)求報(bào)文發(fā)往廣播地址,因此這里我們也這樣做。目的地址(1 4 0 . 2 5 2 . 1 3 . 6 3)是子網(wǎng)1 4 0 . 2 5 2 . 1 3 . 3 2的廣播地址(見(jiàn)圖3 - 1 2)。ICMP時(shí)間戳請(qǐng)求與應(yīng)答I C M P時(shí)間戳請(qǐng)求允許系統(tǒng)向另一個(gè)系統(tǒng)查詢當(dāng)前的時(shí)間。返回的建議值是自午夜開(kāi)始計(jì)算的毫秒數(shù),協(xié)調(diào)的統(tǒng)一時(shí)間( Coordinated Universal Time, UTC)(早
11、期的參考手冊(cè)認(rèn)為U T C是格林尼治時(shí)間)。這種I C M P報(bào)文的好處是它提供了毫秒級(jí)的分辨率,而利用其他方法從別的主機(jī)獲取的時(shí)間(如某些 U n i x系統(tǒng)提供的r d a t e命令)只能提供秒級(jí)的分辨率。由于返回的時(shí)間是從午夜開(kāi)始計(jì)算的,因此調(diào)用者必須通過(guò)其他方法獲知當(dāng)時(shí)的日期,這是它的一個(gè)缺陷。請(qǐng)求端填寫(xiě)發(fā)起時(shí)間戳,然后發(fā)送報(bào)文。應(yīng)答系統(tǒng)收到請(qǐng)求報(bào)文時(shí)填寫(xiě)接收時(shí)間戳,在發(fā)送應(yīng)答時(shí)填寫(xiě)發(fā)送時(shí)間戳。但是,實(shí)際上,大多數(shù)的實(shí)現(xiàn)把后面兩個(gè)字段都設(shè)成相同的值(提供三個(gè)字段的原因是可以讓發(fā)送方分別計(jì)算發(fā)送請(qǐng)求的時(shí)間和發(fā)送應(yīng)答的時(shí)間)。(二)用戶數(shù)據(jù)報(bào)協(xié)議UDP協(xié)議引言U D P是一個(gè)簡(jiǎn)單的面向數(shù)
12、據(jù)報(bào)的運(yùn)輸層協(xié)議:進(jìn)程的每個(gè)輸出操作都正好產(chǎn)生一個(gè) U D P數(shù)據(jù)報(bào),并組裝成一份待發(fā)送的 I P數(shù)據(jù)報(bào)。這與面向流字符的協(xié)議不同,如 T C P,應(yīng)用程序產(chǎn)生的全體數(shù)據(jù)與真正發(fā)送的單個(gè) I P數(shù)據(jù)報(bào)可能沒(méi)有什么聯(lián)系。U D P數(shù)據(jù)報(bào)封裝成一份 I P數(shù)據(jù)報(bào)的格式如圖11 - 1所示。RFC 768 Postel 1980 是U D P的正式規(guī)范。U D P不提供可靠性:它把應(yīng)用程序傳給 I P層的數(shù)據(jù)發(fā)送出去,但是并不保證它們能到達(dá)目的地。由于缺乏可靠性,我們似乎覺(jué)得要避免使用 U D P而使用一種可靠協(xié)議如 T C P。我們?cè)诘? 7章討論完T C P后將再回到這個(gè)話題,看看什么樣的應(yīng)用程
13、序可以使用 U D P。應(yīng)用程序必須關(guān)心 I P數(shù)據(jù)報(bào)的長(zhǎng)度。如果它超過(guò)網(wǎng)絡(luò)的 M T U(2 . 8節(jié)),那么就要對(duì)I P數(shù)據(jù)報(bào)進(jìn)行分片。如果需要,源端到目的端之間的每個(gè)網(wǎng)絡(luò)都要進(jìn)行分片,并不只是發(fā)送端主機(jī)連接第一個(gè)網(wǎng)絡(luò)才這樣做(我們?cè)?2 . 9節(jié)中已定義了路徑 M T U的概念)。在11 . 5節(jié)中,我們將討論I P分片機(jī)制。UDP首部U D P首部的各字段如圖11 - 2所示。端口號(hào)表示發(fā)送進(jìn)程和接收進(jìn)程。在圖 1 - 8中,我們畫(huà)出了T C P和U D P用目的端口號(hào)來(lái)分用來(lái)自I P層的數(shù)據(jù)的過(guò)程。由于I P層已經(jīng)把I P數(shù)據(jù)報(bào)分配給T C P或U D P(根據(jù)I P首部中協(xié)議字段值
14、),因此T C P端口號(hào)由T C P來(lái)查看,而U D P端口號(hào)由U D P來(lái)查看。T C P端口號(hào)與U D P端口號(hào)是相互獨(dú)立的。U D P長(zhǎng)度字段指的是U D P首部和U D P數(shù)據(jù)的字節(jié)長(zhǎng)度。該字段的最小值為 8字節(jié)(發(fā)送一份0字節(jié)的U D P數(shù)據(jù)報(bào)是O K)。這個(gè)U D P長(zhǎng)度是有冗余的。 I P數(shù)據(jù)報(bào)長(zhǎng)度指的是數(shù)據(jù)報(bào)全長(zhǎng)(圖3 - 1),因此U D P數(shù)據(jù)報(bào)長(zhǎng)度是全長(zhǎng)減去 I P首部的長(zhǎng)度(該值在首部長(zhǎng)度字段中指定,如圖3 - 1所示)。UDP檢驗(yàn)和U D P檢驗(yàn)和覆蓋U D P首部和U D P數(shù)據(jù)。回想I P首部的檢驗(yàn)和,它只覆蓋I P的首部 并不覆蓋I P數(shù)據(jù)報(bào)中的任何數(shù)據(jù)。U D
15、 P和T C P在首部中都有覆蓋它們首部和數(shù)據(jù)的檢驗(yàn)和。 U D P的檢驗(yàn)和是可選的,而T C P的檢驗(yàn)和是必需的。盡管U D P檢驗(yàn)和的基本計(jì)算方法與我們?cè)?3 . 2節(jié)中描述的 I P首部檢驗(yàn)和計(jì)算方法相類似(16 bit字的二進(jìn)制反碼和),但是它們之間存在不同的地方。首先, U D P數(shù)據(jù)報(bào)的長(zhǎng)度可以為奇數(shù)字節(jié),但是檢驗(yàn)和算法是把若干個(gè) 16 bit字相加。解決方法是必要時(shí)在最后增加填充字節(jié)0,這只是為了檢驗(yàn)和的計(jì)算(也就是說(shuō),可能增加的填充字節(jié)不被傳送)。其次,U D P數(shù)據(jù)報(bào)和T C P段都包含一個(gè)1 2字節(jié)長(zhǎng)的偽首部,它是為了計(jì)算檢驗(yàn)和而設(shè)置的。偽首部包含 I P首部一些字段。其目
16、的是讓 U D P兩次檢查數(shù)據(jù)是否已經(jīng)正確到達(dá)目的地(例如,I P沒(méi)有接受地址不是本主機(jī)的數(shù)據(jù)報(bào),以及 I P沒(méi)有把應(yīng)傳給另一高層的數(shù)據(jù)報(bào)傳給U D P)。U D P數(shù)據(jù)報(bào)中的偽首部格式如圖11 - 3所示。在該圖中,我們特地舉了一個(gè)奇數(shù)長(zhǎng)度的數(shù)據(jù)報(bào)例子,因而在計(jì)算檢驗(yàn)和時(shí)需要加上填充字節(jié)。注意,U D P數(shù)據(jù)報(bào)的長(zhǎng)度在檢驗(yàn)和計(jì)算過(guò)程中出現(xiàn)兩次。如果檢驗(yàn)和的計(jì)算結(jié)果為 0,則存入的值為全 1(6 5 5 3 5),這在二進(jìn)制反碼計(jì)算中是等效的。如果傳送的檢驗(yàn)和為0,說(shuō)明發(fā)送端沒(méi)有計(jì)算檢驗(yàn)和。如果發(fā)送端沒(méi)有計(jì)算檢驗(yàn)和而接收端檢測(cè)到檢驗(yàn)和有差錯(cuò),那么 U D P數(shù)據(jù)報(bào)就要被悄悄地丟棄。不產(chǎn)生任何差
17、錯(cuò)報(bào)文(當(dāng) I P層檢測(cè)到I P首部檢驗(yàn)和有差錯(cuò)時(shí)也這樣做)。U D P檢驗(yàn)和是一個(gè)端到端的檢驗(yàn)和。它由發(fā)送端計(jì)算,然后由接收端驗(yàn)證。其目的是為了發(fā)現(xiàn)U D P首部和數(shù)據(jù)在發(fā)送端到接收端之間發(fā)生的任何改動(dòng)。盡管U D P檢驗(yàn)和是可選的,但是它們應(yīng)該總是在用。在 8 0年代,一些計(jì)算機(jī)產(chǎn)商在默認(rèn)條件下關(guān)閉U D P檢驗(yàn)和的功能,以提高使用 U D P協(xié)議的N F S(Network File System)的速度。在單個(gè)局域網(wǎng)中這可能是可以接受的,但是在數(shù)據(jù)報(bào)通過(guò)路由器時(shí),通過(guò)對(duì)鏈路層數(shù)據(jù)幀進(jìn)行循環(huán)冗余檢驗(yàn)(如以太網(wǎng)或令牌環(huán)數(shù)據(jù)幀)可以檢測(cè)到大多數(shù)的差錯(cuò),導(dǎo)致傳輸失敗。不管相信與否,路由器中也存
18、在軟件和硬件差錯(cuò),以致于修改數(shù)據(jù)報(bào)中的數(shù)據(jù)。如果關(guān)閉端到端的U D P檢驗(yàn)和功能,那么這些差錯(cuò)在 U D P數(shù)據(jù)報(bào)中就不能被檢測(cè)出來(lái)。另外,一些數(shù)據(jù)鏈路層協(xié)議(如S L I P)沒(méi)有任何形式的數(shù)據(jù)鏈路檢驗(yàn)和。IP分片(三)傳輸控制協(xié)議TCP協(xié)議即傳輸控制協(xié)議,它提供的是一種可靠的 HYPERLINK /item/%E6%95%B0%E6%8D%AE%E6%B5%81 t _blank 數(shù)據(jù)流服務(wù)。當(dāng)傳送受差錯(cuò)干擾的數(shù)據(jù),或舉出 HYPERLINK /item/%E7%BD%91%E7%BB%9C%E6%95%85%E9%9A%9C/1391028 t _blank 網(wǎng)絡(luò)故障,或網(wǎng)絡(luò)負(fù)荷太重而使
19、網(wǎng)際基本傳輸系統(tǒng)不能正常工作時(shí),就需要通過(guò)其他的協(xié)議來(lái)保證通信的可靠。 HYPERLINK /item/TCP/33012 t _blank TCP就是這樣的協(xié)議。TCP采用“帶重傳的肯定確認(rèn)”技術(shù)來(lái)實(shí)現(xiàn)傳輸?shù)目煽啃?。并使用?HYPERLINK /item/%E6%BB%91%E5%8A%A8%E7%AA%97%E5%8F%A3 t _blank 滑動(dòng)窗口”的 HYPERLINK /item/%E6%B5%81%E9%87%8F%E6%8E%A7%E5%88%B6 t _blank 流量控制機(jī)制來(lái)提高網(wǎng)絡(luò)的吞吐量。TCP通信建立實(shí)現(xiàn)了一種“ HYPERLINK /item/%E8%99%9A
20、%E7%94%B5%E8%B7%AF/1609903 t _blank 虛電路”的概念。雙方通信之前,先建立一條鏈接然后雙方就可以在其上發(fā)送數(shù)據(jù)流。這種數(shù)據(jù)交換方式能提高效率,但事先建立連接和事后拆除連接需要開(kāi)銷。TCP的服務(wù)盡管T C P和U D P都使用相同的網(wǎng)絡(luò)層(I P),T C P卻向應(yīng)用層提供與U D P完全不同的服務(wù)。T C P提供一種面向連接的、可靠的字節(jié)流服務(wù)。面向連接意味著兩個(gè)使用 T C P的應(yīng)用(通常是一個(gè)客戶和一個(gè)服務(wù)器)在彼此交換數(shù)據(jù)之前必須先建立一個(gè) T C P連接。這一過(guò)程與打電話很相似,先撥號(hào)振鈴,等待對(duì)方摘機(jī)說(shuō)“喂”,然后才說(shuō)明是誰(shuí)。在第 1 8章我們將看到
21、一個(gè) T C P連接是如何建立的,以及當(dāng)一方通信結(jié)束后如何斷開(kāi)連接。在一個(gè)T C P連接中,僅有兩方進(jìn)行彼此通信。在第 1 2章介紹的廣播和多播不能用于T C P。T C P通過(guò)下列方式來(lái)提供可靠性: 應(yīng)用數(shù)據(jù)被分割成T C P認(rèn)為最適合發(fā)送的數(shù)據(jù)塊。這和 U D P完全不同,應(yīng)用程序產(chǎn)生的數(shù)據(jù)報(bào)長(zhǎng)度將保持不變。由 T C P傳遞給I P的信息單位稱為報(bào)文段或段( s e g m e n t)(參見(jiàn)圖1 - 7)。在1 8 . 4節(jié)我們將看到T C P如何確定報(bào)文段的長(zhǎng)度。 當(dāng)T C P發(fā)出一個(gè)段后,它啟動(dòng)一個(gè)定時(shí)器,等待目的端確認(rèn)收到這個(gè)報(bào)文段。如果不能及時(shí)收到一個(gè)確認(rèn),將重發(fā)這個(gè)報(bào)文段。在
22、第 2 1章我們將了解T C P協(xié)議中自適應(yīng)的超時(shí)及重傳策略。 當(dāng)T C P收到發(fā)自T C P連接另一端的數(shù)據(jù),它將發(fā)送一個(gè)確認(rèn)。這個(gè)確認(rèn)不是立即發(fā)送,通常將推遲幾分之一秒,這將在1 9 . 3節(jié)討論。 T C P將保持它首部和數(shù)據(jù)的檢驗(yàn)和。這是一個(gè)端到端的檢驗(yàn)和,目的是檢測(cè)數(shù)據(jù)在傳輸過(guò)程中的任何變化。如果收到段的檢驗(yàn)和有差錯(cuò), T C P將丟棄這個(gè)報(bào)文段和不確認(rèn)收到此報(bào)文段(希望發(fā)端超時(shí)并重發(fā))。 既然T C P報(bào)文段作為I P數(shù)據(jù)報(bào)來(lái)傳輸,而I P數(shù)據(jù)報(bào)的到達(dá)可能會(huì)失序,因此 T C P報(bào)文段的到達(dá)也可能會(huì)失序。如果必要, T C P將對(duì)收到的數(shù)據(jù)進(jìn)行重新排序,將收到的數(shù)據(jù)以正確的順序交給
23、應(yīng)用層。 既然I P數(shù)據(jù)報(bào)會(huì)發(fā)生重復(fù),T C P的接收端必須丟棄重復(fù)的數(shù)據(jù)。 T C P還能提供流量控制。 T C P連接的每一方都有固定大小的緩沖空間。 T C P的接收端只允許另一端發(fā)送接收端緩沖區(qū)所能接納的數(shù)據(jù)。這將防止較快主機(jī)致使較慢主機(jī)的緩沖區(qū)溢出。兩個(gè)應(yīng)用程序通過(guò)T C P連接交換8 bit字節(jié)構(gòu)成的字節(jié)流。T C P不在字節(jié)流中插入記錄標(biāo)識(shí)符。我們將這稱為字節(jié)流服務(wù)(byte stream service)。如果一方的應(yīng)用程序先傳1 0字節(jié),又傳2 0字節(jié),再傳5 0字節(jié),連接的另一方將無(wú)法了解發(fā)方每次發(fā)送了多少字節(jié)。收方可以分 4次接收這8 0個(gè)字節(jié),每次接收 2 0字節(jié)。一端
24、將字節(jié)流放到 T C P連接上,同樣的字節(jié)流將出現(xiàn)在T C P連接的另一端。另外,T C P對(duì)字節(jié)流的內(nèi)容不作任何解釋。 T C P不知道傳輸?shù)臄?shù)據(jù)字節(jié)流是二進(jìn)制數(shù)據(jù),還是A S C I I字符、E B C D I C字符或者其他類型數(shù)據(jù)。對(duì)字節(jié)流的解釋由 T C P連接雙方的應(yīng)用層解釋。TCP的首部T C P數(shù)據(jù)被封裝在一個(gè)I P數(shù)據(jù)報(bào)中,如圖1 7 - 1所示。每個(gè)T C P段都包含源端和目的端的端口號(hào),用于尋找發(fā)端和收端應(yīng)用進(jìn)程。這兩個(gè)值加上I P首部中的源端I P地址和目的端I P地址唯一確定一個(gè)T C P連接。有時(shí),一個(gè)I P地址和一個(gè)端口號(hào)也稱為一個(gè)插口( s o c k e t)
25、。這個(gè)術(shù)語(yǔ)出現(xiàn)在最早的 T C P規(guī)范(R F C 7 9 3)中,后來(lái)它也作為表示伯克利版的編程接口(參見(jiàn) 1 . 1 5節(jié))。插口對(duì)(s o c k e tp a i r)(包含客戶I P地址、客戶端口號(hào)、服務(wù)器 I P地址和服務(wù)器端口號(hào)的四元組 )可唯一確定互聯(lián)網(wǎng)絡(luò)中每個(gè)T C P連接的雙方。序號(hào)用來(lái)標(biāo)識(shí)從T C P發(fā)端向T C P收端發(fā)送的數(shù)據(jù)字節(jié)流,它表示在這個(gè)報(bào)文段中的的第一個(gè)數(shù)據(jù)字節(jié)。如果將字節(jié)流看作在兩個(gè)應(yīng)用程序間的單向流動(dòng),則 T C P用序號(hào)對(duì)每個(gè)字節(jié)進(jìn)行計(jì)數(shù)。序號(hào)是32 bit的無(wú)符號(hào)數(shù),序號(hào)到達(dá)2 3 2 1后又從0開(kāi)始。當(dāng)建立一個(gè)新的連接時(shí), S Y N標(biāo)志變1。序號(hào)
26、字段包含由這個(gè)主機(jī)選擇的該連接的初始序號(hào)I S N(Initial Sequence Number)。該主機(jī)要發(fā)送數(shù)據(jù)的第一個(gè)字節(jié)序號(hào)為這個(gè) I S N加1,因?yàn)镾 Y N標(biāo)志消耗了一個(gè)序號(hào)(將在下章詳細(xì)介紹如何建立和終止連接,屆時(shí)我們將看到 F I N標(biāo)志也要占用一個(gè)序號(hào))。既然每個(gè)傳輸?shù)淖止?jié)都被計(jì)數(shù),確認(rèn)序號(hào)包含發(fā)送確認(rèn)的一端所期望收到的下一個(gè)序號(hào)。因此,確認(rèn)序號(hào)應(yīng)當(dāng)是上次已成功收到數(shù)據(jù)字節(jié)序號(hào)加 1。只有A C K標(biāo)志(下面介紹)為 1時(shí)確認(rèn)序號(hào)字段才有效。發(fā)送A C K無(wú)需任何代價(jià),因?yàn)?2 bit的確認(rèn)序號(hào)字段和A C K標(biāo)志一樣,總是T C P首部的一部分。因此,我們看到一旦一個(gè)連
27、接建立起來(lái),這個(gè)字段總是被設(shè)置, A C K標(biāo)志也總是被設(shè)置為1。T C P為應(yīng)用層提供全雙工服務(wù)。這意味數(shù)據(jù)能在兩個(gè)方向上獨(dú)立地進(jìn)行傳輸。因此,連接的每一端必須保持每個(gè)方向上的傳輸數(shù)據(jù)序號(hào)。T C P可以表述為一個(gè)沒(méi)有選擇確認(rèn)或否認(rèn)的滑動(dòng)窗口協(xié)議(滑動(dòng)窗口協(xié)議用于數(shù)據(jù)傳輸將在2 0 . 3節(jié)介紹)。我們說(shuō)T C P缺少選擇確認(rèn)是因?yàn)?T C P首部中的確認(rèn)序號(hào)表示發(fā)方已成功收到字節(jié),但還不包含確認(rèn)序號(hào)所指的字節(jié)。當(dāng)前還無(wú)法對(duì)數(shù)據(jù)流中選定的部分進(jìn)行確認(rèn)。例如,如果11 0 2 4字節(jié)已經(jīng)成功收到,下一報(bào)文段中包含序號(hào)從 2 0 4 93 0 7 2的字節(jié),收端并不能確認(rèn)這個(gè)新的報(bào)文段。它所能做
28、的就是發(fā)回一個(gè)確認(rèn)序號(hào)為 1 0 2 5的A C K。它也無(wú)法對(duì)一個(gè)報(bào)文段進(jìn)行否認(rèn)。例如,如果收到包含 1 0 2 52 0 4 8字節(jié)的報(bào)文段,但它的檢驗(yàn)和錯(cuò), T C P接收端所能做的就是發(fā)回一個(gè)確認(rèn)序號(hào)為 1 0 2 5的A C K。在2 1 . 7節(jié)我們將看到重復(fù)的確認(rèn)如何幫助確定分組已經(jīng)丟失。首部長(zhǎng)度給出首部中32 bit字的數(shù)目。需要這個(gè)值是因?yàn)槿芜x字段的長(zhǎng)度是可變的。這個(gè)字段占4 bit,因此T C P最多有6 0字節(jié)的首部。然而,沒(méi)有任選字段,正常的長(zhǎng)度是 2 0字節(jié)。在T C P首部中有6個(gè)標(biāo)志比特。它們中的多個(gè)可同時(shí)被設(shè)置為 1。我們?cè)谶@兒簡(jiǎn)單介紹它們的用法,在隨后的章節(jié)中
29、有更詳細(xì)的介紹。U R G 緊急指針(u rgent pointer)有效(見(jiàn)2 0 . 8節(jié))。A C K 確認(rèn)序號(hào)有效。P S H 接收方應(yīng)該盡快將這個(gè)報(bào)文段交給應(yīng)用層。R S T 重建連接。S Y N 同步序號(hào)用來(lái)發(fā)起一個(gè)連接。這個(gè)標(biāo)志和下一個(gè)標(biāo)志將在第 1 8章介紹。F I N 發(fā)端完成發(fā)送任務(wù)。T C P的流量控制由連接的每一端通過(guò)聲明的窗口大小來(lái)提供。窗口大小為字節(jié)數(shù),起始于確認(rèn)序號(hào)字段指明的值,這個(gè)值是接收端正期望接收的字節(jié)。窗口大小是一個(gè) 16 bit字段,因而窗口大小最大為 6 5 5 3 5字節(jié)。在2 4 . 4節(jié)我們將看到新的窗口刻度選項(xiàng),它允許這個(gè)值按比例變化以提供更大
30、的窗口。檢驗(yàn)和覆蓋了整個(gè)的T C P報(bào)文段:T C P首部和T C P數(shù)據(jù)。這是一個(gè)強(qiáng)制性的字段,一定是由發(fā)端計(jì)算和存儲(chǔ),并由收端進(jìn)行驗(yàn)證。 T C P檢驗(yàn)和的計(jì)算和 U D P檢驗(yàn)和的計(jì)算相似,使用如11 . 3節(jié)所述的一個(gè)偽首部。只有當(dāng)U R G標(biāo)志置1時(shí)緊急指針才有效。緊急指針是一個(gè)正的偏移量,和序號(hào)字段中的值相加表示緊急數(shù)據(jù)最后一個(gè)字節(jié)的序號(hào)。 T C P的緊急方式是發(fā)送端向另一端發(fā)送緊急數(shù)據(jù)的一種方式。我們將在2 0 . 8節(jié)介紹它。最常見(jiàn)的可選字段是最長(zhǎng)報(bào)文大小,又稱為 MSS (Maximum Segment Size)。每個(gè)連接方通常都在通信的第一個(gè)報(bào)文段(為建立連接而設(shè)置 S
31、 Y N標(biāo)志的那個(gè)段)中指明這個(gè)選項(xiàng)。它指明本端所能接收的最大長(zhǎng)度的報(bào)文段。我們將在 1 8 . 4節(jié)更詳細(xì)地介紹M S S選項(xiàng),T C P的其他選項(xiàng)中的一些將在第2 4章中介紹。從圖1 7 - 2中我們注意到T C P報(bào)文段中的數(shù)據(jù)部分是可選的。我們將在 1 8章中看到在一個(gè)連接建立和一個(gè)連接終止時(shí),雙方交換的報(bào)文段僅有 T C P首部。如果一方?jīng)]有數(shù)據(jù)要發(fā)送,也使用沒(méi)有任何數(shù)據(jù)的首部來(lái)確認(rèn)收到的數(shù)據(jù)。在處理超時(shí)的許多情況中,也會(huì)發(fā)送不帶任何數(shù)據(jù)的報(bào)文段。(四)其他協(xié)議T F T P ( Trivial File Transfer Protocol)即簡(jiǎn)單文件傳送協(xié)議,最初打算用于引導(dǎo)無(wú)盤(pán)系
32、統(tǒng)(通常是工作站或X終端)。和將在第2 7章介紹的使用T C P的文件傳送協(xié)議(F T P)不同,為了保持簡(jiǎn)單和短小,T F T P將使用U D P。T F T P的代碼(和它所需要的 U D P、I P和設(shè)備驅(qū)動(dòng)程序)都能適合只讀存儲(chǔ)器。在開(kāi)始工作時(shí),T F T P的客戶與服務(wù)器交換信息,客戶發(fā)送一個(gè)讀請(qǐng)求或?qū)懻?qǐng)求給服務(wù)器。在一個(gè)無(wú)盤(pán)系統(tǒng)進(jìn)行系統(tǒng)引導(dǎo)的正常情況下,第一個(gè)請(qǐng)求是讀請(qǐng)求( R R Q)。圖1 5 - 1顯示了5種T F T P報(bào)文格式(操作碼為1和2的報(bào)文使用相同的格式)。T F T P報(bào)文的頭兩個(gè)字節(jié)表示操作碼。對(duì)于讀請(qǐng)求和寫(xiě)請(qǐng)求( W R Q),文件名字段說(shuō)明客戶要讀或?qū)懙奈?/p>
33、于服務(wù)器上的文件。這個(gè)文件字段以 0字節(jié)作為結(jié)束(見(jiàn)圖 1 5 - 1)。模式字段是一個(gè)A S C I I碼串n e t a s c i i或o c t e t(可大小寫(xiě)任意組合),同樣以0字節(jié)結(jié)束。n e t a s c i i表示數(shù)據(jù)是以成行的A S C I I碼字符組成,以兩個(gè)字節(jié) 回車(chē)字符后跟換行字符(稱為C R / L F)作為行結(jié)束符。這兩個(gè)行結(jié)束字符在這種格式和本地主機(jī)使用的行定界符之間進(jìn)行轉(zhuǎn)化。o c t e t則將數(shù)據(jù)看作8 bit一組的字節(jié)流而不作任何解釋。每個(gè)數(shù)據(jù)分組包含一個(gè)塊編號(hào)字段,它以后要在確認(rèn)分組中使用。以讀一個(gè)文件作為例子,T F T P客戶需要發(fā)送一個(gè)讀請(qǐng)求說(shuō)
34、明要讀的文件名和文件模式 ( m o d e )。如果這個(gè)文件能被這個(gè)客戶讀取,T F T P服務(wù)器就返回一個(gè)塊編號(hào)為 1的數(shù)據(jù)分組。T F T P客戶又發(fā)送一個(gè)塊編號(hào)為1的A C K。T F T P服務(wù)器隨后發(fā)送塊編號(hào)為2的數(shù)據(jù)。T F T P客戶發(fā)回塊編號(hào)為2的A C K。重復(fù)這個(gè)過(guò)程直到這個(gè)文件傳送完。除了最后一個(gè)數(shù)據(jù)分組可含有不足 5 1 2字節(jié)的數(shù)據(jù),其他每個(gè)數(shù)據(jù)分組均含有5 1 2字節(jié)的數(shù)據(jù)。當(dāng)T F T P客戶收到一個(gè)不足5 1 2字節(jié)的數(shù)據(jù)分組,就知道它收到最后一個(gè)數(shù)據(jù)分組。在寫(xiě)請(qǐng)求的情況下,TFTP 客戶發(fā)送W R Q指明文件名和模式。如果該文件能被 該客戶寫(xiě),TFTP 服務(wù)
35、器就返回塊編號(hào)為 0的A C K包。該客戶就將文件的頭 5 1 2字節(jié)以塊編號(hào)為1發(fā)出。服務(wù)器則返回塊編號(hào)為1的A C K。這種類型的數(shù)據(jù)傳輸稱為停止等待協(xié)議。它只用在一些簡(jiǎn)單的協(xié)議如 T F T P中。在2 0 . 3節(jié)中將看到T C P提供了不同形式的確認(rèn),能提供更高的系統(tǒng)吞吐量。 T F T P的優(yōu)點(diǎn)在于實(shí)現(xiàn)的簡(jiǎn)單而不是高的系統(tǒng)吞吐量。最后一種T F T P報(bào)文類型是差錯(cuò)報(bào)文,它的操作碼為 5。它用于服務(wù)器不能處理讀請(qǐng)求或?qū)懻?qǐng)求的情況。在文件傳輸過(guò)程中的讀和寫(xiě)差錯(cuò)也會(huì)導(dǎo)致傳送這種報(bào)文,接著停止傳輸。差錯(cuò)編號(hào)字段給出一個(gè)數(shù)字的差錯(cuò)碼,跟著是一個(gè) A S C I I表示的差錯(cuò)報(bào)文字段,可能包
36、含額外的操作系統(tǒng)說(shuō)明的信息。既然T F T P使用不可靠的U D P,T F T P就必須處理分組丟失和分組重復(fù)。分組丟失可通過(guò)發(fā)送方的超時(shí)與重傳機(jī)制解決(注意存在一種稱為“魔術(shù)新手綜合癥 ( s o r c e r e rs apprentices y n d r o m e )”的潛在問(wèn)題,如果雙方都超時(shí)與重傳,就可能出現(xiàn)這個(gè)問(wèn)題。 12.2 節(jié) S t e v e n s1990 介紹了這個(gè)問(wèn)題是如何發(fā)生的 )。和許多U D P應(yīng)用程序一樣,T F T P報(bào)文中沒(méi)有檢驗(yàn)和,它假定任何數(shù)據(jù)差錯(cuò)都將被U D P的檢驗(yàn)和檢測(cè)到(參見(jiàn)11 . 3節(jié))。RARP:逆地址解析協(xié)議引言具有本地磁盤(pán)的系
37、統(tǒng)引導(dǎo)時(shí),一般是從磁盤(pán)上的配置文件中讀取 I P地址。但是無(wú)盤(pán)機(jī),如X終端或無(wú)盤(pán)工作站,則需要采用其他方法來(lái)獲得 I P地址。網(wǎng)絡(luò)上的每個(gè)系統(tǒng)都具有唯一的硬件地址,它是由網(wǎng)絡(luò)接口生產(chǎn)廠家配置的。無(wú)盤(pán)系統(tǒng)的R A R P實(shí)現(xiàn)過(guò)程是從接口卡上讀取唯一的硬件地址,然后發(fā)送一份 R A R P請(qǐng)求(一幀在網(wǎng)絡(luò)上廣播的數(shù)據(jù)),請(qǐng)求某個(gè)主機(jī)響應(yīng)該無(wú)盤(pán)系統(tǒng)的 I P地址(在R A R P應(yīng)答中)。在概念上這個(gè)過(guò)程是很簡(jiǎn)單的,但是實(shí)現(xiàn)起來(lái)常常比 A R P要困難,其原因在本章后面介紹。R A R P的正式規(guī)范是RFC 903 Finlayson et al. 1984。RARP的分組格式R A R P分組的格
38、式與A R P分組基本一致(見(jiàn)圖 4 - 3)。它們之間主要的差別是 R A R P請(qǐng)求或應(yīng)答的幀類型代碼為0 x 8 0 3 5,而且R A R P請(qǐng)求的操作代碼為3,應(yīng)答操作代碼為4。對(duì)應(yīng)于A R P,R A R P請(qǐng)求以廣播方式傳送,而R A R P應(yīng)答一般是單播( u n i c a s t )傳送的。三、了解Internet安全協(xié)議知識(shí)(一)可擴(kuò)展身份認(rèn)證協(xié)議可擴(kuò)展認(rèn)證協(xié)議(Extensible authentication protocol, HYPERLINK /item/EAP t _blank EAP)是一個(gè)第二層處理,允許網(wǎng)絡(luò)對(duì)無(wú)線客戶端進(jìn)行認(rèn)證的協(xié)議。簡(jiǎn)介如今Intern
39、et用戶都需要連接到ISP以取得網(wǎng)絡(luò)服務(wù),同時(shí)也有許多個(gè)人需要將家中的個(gè)人計(jì)算機(jī)互聯(lián)起來(lái),他們一般都有撥號(hào)電話線路或租用的電話專用線路。然而這些線路都只是提供了點(diǎn)到點(diǎn)之間的一條物理鏈路,要在物理鏈路上進(jìn)行通信必須借助于某種通信協(xié)議來(lái)對(duì)鏈路進(jìn)行控制。因此出現(xiàn)了兩種協(xié)議: SLIP和PPP。其中SLIP有以下一些缺陷:只支持IP;不允許IP地址的動(dòng)態(tài)分配;不支持用戶認(rèn)證。而PPP卻為點(diǎn)到點(diǎn)數(shù)據(jù)鏈路上傳輸多協(xié)議數(shù)據(jù)報(bào)提供了一種通用方法。為了在點(diǎn)到點(diǎn)物理鏈路上建立通信,在鏈路建立階段, PPP通信鏈路的每一端都必須首先發(fā)送LCP數(shù)據(jù)包來(lái)對(duì)該數(shù)據(jù)鏈路進(jìn)行配置協(xié)商。在鏈路已經(jīng)建立起來(lái)后,在進(jìn)入網(wǎng)絡(luò)層協(xié)議進(jìn)
40、行實(shí)際的數(shù)據(jù)通信之前,PPP提供了一個(gè)可選的認(rèn)證階段。缺省時(shí),認(rèn)證并不是必需的。如果想要對(duì)通信鏈路進(jìn)行認(rèn)證,具體實(shí)現(xiàn)時(shí)必須在鏈路建立階段指定認(rèn)證協(xié)議配置選項(xiàng)來(lái)說(shuō)明要進(jìn)行認(rèn)證。起初PPP上支持的認(rèn)證方式主要是PAP和CHAP,然而它們都不能擴(kuò)展。對(duì)此,PPP協(xié)議現(xiàn)在增加了一種新的可擴(kuò)展認(rèn)證協(xié)議(EAP),它是PPP , 認(rèn)證的一個(gè)通用認(rèn)證協(xié)議 在它上面可以支持多種認(rèn)證機(jī)制,也就是說(shuō)它提供了在PPP上進(jìn)行多種認(rèn)證的底層框架其它各種具體的認(rèn)證機(jī)制都是建立在它之上的。 ,具體來(lái)講, EAP在鏈路建立階段并沒(méi)有選定某一種特定的認(rèn)證機(jī)制,只需說(shuō)明要使用EAP , 認(rèn)證即可 而把具體認(rèn)證過(guò)程推遲到后面一個(gè)獨(dú)
41、立的認(rèn)證階段。在這一階段進(jìn)行認(rèn)證方式的協(xié)商和具體認(rèn)證過(guò)程,并由認(rèn)證成功與失敗的結(jié)果來(lái)決定是否進(jìn)入網(wǎng)絡(luò)層以使網(wǎng)絡(luò)層數(shù)據(jù)能夠在鏈路上進(jìn)行傳輸1??蓴U(kuò)展認(rèn)證協(xié)議(Extensible authentication protocol, HYPERLINK /item/EAP t _blank EAP)是一個(gè)第二層處理過(guò)程,允許網(wǎng)絡(luò)對(duì)無(wú)線客戶端進(jìn)行認(rèn)證。有兩種EAP:一種用于無(wú)線網(wǎng)路,另一種用于LAN HYPERLINK /item/%E8%BF%9E%E6%8E%A5/70199 t _blank 連接,通常稱為 EAP over LAN(EAPoL)。無(wú)線環(huán)境中的一個(gè)問(wèn)題是要允許WLAN設(shè)備與AP
42、后面的設(shè)備進(jìn)行通信。有3個(gè)標(biāo)準(zhǔn)定義了此過(guò)程:EAP,802.1x和遠(yuǎn)程認(rèn)證撥入用戶服務(wù)(Remote authentication dial in user service, RADIUS )。EAP定義了標(biāo)準(zhǔn)的認(rèn)證信息封裝方法,如AP用于對(duì)用戶進(jìn)行認(rèn)證的用戶名和密碼和數(shù)字證書(shū)。EAP本質(zhì)上是點(diǎn)對(duì)點(diǎn)協(xié)議(PPP)的擴(kuò)展,第一種EAP是EAP-MD5,它使用挑戰(zhàn)握手認(rèn)證協(xié)議(challenge handshake authentication protocol, CHAP)進(jìn)行認(rèn)證,下面是一些EAP擴(kuò)展(介紹其中EAP-MD5和EAP-TLS)。EAP設(shè)計(jì)思想設(shè)計(jì)思想:PPP主要作用于兩層,數(shù)據(jù)
43、鏈路層和物理層。PPP根據(jù)雙方的選項(xiàng)協(xié)商、認(rèn)證協(xié)商等來(lái)控制串行網(wǎng)絡(luò)設(shè)備數(shù)據(jù)鏈路是否允許某些特定的網(wǎng)絡(luò)層數(shù)據(jù)是否可以通過(guò)。網(wǎng)絡(luò)層是建立在數(shù)據(jù)鏈路層之上的,當(dāng)數(shù)據(jù)鏈路層有來(lái)自物理層的數(shù)據(jù)時(shí),它將處理得到的數(shù)據(jù),即根據(jù)數(shù)據(jù)幀協(xié)議域的不同而對(duì)網(wǎng)絡(luò)協(xié)議數(shù)據(jù)進(jìn)行分流,將不同協(xié)議的數(shù)據(jù)分別發(fā)往相應(yīng)的上層網(wǎng)絡(luò)協(xié)議輸入隊(duì)列,并相應(yīng)地給它們發(fā)一個(gè)軟中斷,以通知上層對(duì)輸入隊(duì)列進(jìn)行處理。只需通過(guò)檢測(cè)認(rèn)證過(guò)程的成功與否來(lái)決定是否將鏈路交給相應(yīng)的上層網(wǎng)絡(luò)使用,具體如圖所示。下面是具體的設(shè)計(jì)與實(shí)現(xiàn):首先設(shè)計(jì)一個(gè)用于EAP認(rèn)證配置信息文件,PPP用此文件來(lái)獲得EAP認(rèn)證的客戶與服務(wù)器的認(rèn)證選項(xiàng)信息。有PPP一個(gè)從文件中獲取各
44、種認(rèn)證選項(xiàng)信息的通用子程序,通過(guò)它可把與EAP認(rèn)證有關(guān)的選項(xiàng)參數(shù)加入到的PPPLCP配置選項(xiàng)列表中。如果真的要進(jìn)行EAP認(rèn)證,則在LCP發(fā)送LCP配置包時(shí),對(duì)方將知道要進(jìn)行EAP認(rèn)證。同時(shí)將EAP的通信認(rèn)證過(guò)程設(shè)計(jì)為一個(gè)有限狀態(tài)自動(dòng)機(jī)。有限自動(dòng)機(jī)的信息結(jié)構(gòu)主要內(nèi)容如下:123456typedefstructeap_stateintes_unit;通信接口structeap_authclient;客戶認(rèn)證信息structeap_authserver;服務(wù)器認(rèn)證信息eap_state;其中認(rèn)證信息主要包括通信雙方的名字、認(rèn)證請(qǐng)求類型、請(qǐng)求序列號(hào)、超時(shí)值等參數(shù)。它們是控制EAP有限自動(dòng)機(jī)通信協(xié)商過(guò)程
45、的依據(jù)。EAP認(rèn)證流程機(jī)制如下:首先在用PPP,向遠(yuǎn)程端點(diǎn)進(jìn)行連接時(shí)在鏈路建立階段表明要使用EAP認(rèn)證之后當(dāng)進(jìn)行到認(rèn)證階段時(shí)就進(jìn),行EAP認(rèn)證過(guò)程:認(rèn)證一方向另一方首先發(fā)送一個(gè)身份請(qǐng)求并等待對(duì)方發(fā)來(lái),相應(yīng)的響應(yīng)。對(duì)方在接到身份請(qǐng)求要求時(shí),它應(yīng)發(fā)送一個(gè)身份響應(yīng)包,它們的ID必須相同。ID認(rèn)證方檢查包類型是否是身份響應(yīng)包,且是否與發(fā)送請(qǐng)求時(shí)一致,如不一致則看是否到達(dá)了最大次數(shù),如果沒(méi)到則重發(fā)身份認(rèn)證請(qǐng)求同時(shí)可選擇性地發(fā)送一,個(gè)notification來(lái)傳遞一些通知信息,如這樣的例子:包括帶一個(gè)超時(shí)設(shè)定能(expiration)的口令,OTP0序列整數(shù)(接近),認(rèn)證失敗警告等。在大多數(shù)情況下,not
46、ification不是必要的。在接到身份響應(yīng)時(shí),認(rèn)證方根據(jù)身份,檢查通信實(shí)體數(shù)據(jù)庫(kù),以查找對(duì)應(yīng)的認(rèn)證方式如找到則開(kāi)始發(fā)送相應(yīng)的認(rèn)證請(qǐng)求。對(duì)方在接到認(rèn)證請(qǐng)求時(shí),首先檢查它自己是否支持認(rèn)證者所要求的認(rèn)證請(qǐng)求如不支,持,則要發(fā)送一個(gè)NAK,否認(rèn)包攜帶自己允許的認(rèn)證類型。如支持則發(fā)送認(rèn)證響應(yīng)。NAK認(rèn)證者檢查響應(yīng)包,如是否認(rèn)包,則重發(fā)對(duì)方允許的認(rèn)證請(qǐng)求。如是上一次的認(rèn)證請(qǐng)求的響應(yīng),則檢查它是否是它所期待的響應(yīng)以決定認(rèn)證成功與失敗,從而決定鏈路的打開(kāi)與關(guān)閉。如上一步成功,向?qū)Ψ桨l(fā)送認(rèn)證確認(rèn)包,以使對(duì)方把鏈路打開(kāi),通知上層網(wǎng)絡(luò)控制協(xié)議進(jìn)行網(wǎng)絡(luò)通信協(xié)議參數(shù)的協(xié)商,隨著各個(gè)網(wǎng)絡(luò)控制協(xié)議打開(kāi)之后,PPP就把數(shù)據(jù)
47、鏈路交給通信網(wǎng)絡(luò)協(xié)議,這時(shí)雙方才可以進(jìn)行實(shí)際的通信。PPP當(dāng)所有的上層協(xié)議都不再需要使用此數(shù)據(jù)鏈路時(shí),將發(fā)送中止鏈路請(qǐng)求包來(lái)結(jié)束數(shù)據(jù)鏈路。EAP-MD5支持使用CHAP和靜態(tài)密碼進(jìn)行認(rèn)證;EAP-TLS支持使用x.509v3數(shù)字證書(shū)進(jìn)行認(rèn)證;802.1x和 RADIUS 定義了如何打包EAP信息,從而在網(wǎng)絡(luò)上傳輸這些信息。 下圖中顯示了所使用的3中標(biāo)準(zhǔn)。802.1x描述了客戶端(通常稱為請(qǐng)求者)如何將EAP信息傳輸?shù)骄W(wǎng)絡(luò)訪問(wèn)設(shè)備(認(rèn)證者)。網(wǎng)絡(luò)訪問(wèn)設(shè)備可以是AP,交換機(jī),路由器,VPN網(wǎng)關(guān)等。認(rèn)證者使用RADIUS 協(xié)議將這些信息傳輸?shù)秸J(rèn)證服務(wù)器,改服務(wù)器會(huì)確認(rèn)此請(qǐng)求者是否可以訪問(wèn)網(wǎng)絡(luò)。注意,
48、認(rèn)證者處通常沒(méi)有本地定義的用戶憑據(jù),它通常在認(rèn)證服務(wù)器上查找此內(nèi)容。(二)ip安全協(xié)議1 IP Sec協(xié)議概述IPSec是一系列基于IP網(wǎng)絡(luò)(包括Intranet、Extranet和Internet)的,由IETF正式定制的開(kāi)放性IP安全標(biāo)準(zhǔn),是虛擬專網(wǎng)的基礎(chǔ),已經(jīng)相當(dāng)成熟可靠。 IPSec可以保證局域網(wǎng)、專用或公用的廣域網(wǎng)及Internet上信息傳輸?shù)陌踩?保證Internet上各分支辦公點(diǎn)的安全連接:公司可以借助Internet或公用的廣域網(wǎng)搭建安全的虛擬專用網(wǎng)絡(luò)。這使得公司可以不必耗巨資去建立自己的專用網(wǎng)絡(luò),而只需依托Internet即可以獲得同樣的效果。 保證Internet上遠(yuǎn)程訪
49、問(wèn)的安全:在計(jì)算機(jī)上裝有IPSec的終端用戶可以通過(guò)撥入所在地的ISP的方式獲得對(duì)公司網(wǎng)絡(luò)的安全訪問(wèn)權(quán)。這一做法降低了流動(dòng)辦公雇員及遠(yuǎn)距離工作者的長(zhǎng)途電話費(fèi)用。 通過(guò)外部網(wǎng)或內(nèi)部網(wǎng)建立與合作伙伴的聯(lián)系:IPSec通過(guò)認(rèn)證和鑰匙交換機(jī)制確保企業(yè)與其它組織的信息往來(lái)的安全性與機(jī)密性。 提高了電子商務(wù)的安全性:盡管在電子商務(wù)的許多應(yīng)用中已嵌入了一些安全協(xié)議,IPSec的使用仍可以使其安全級(jí)別在原有的基礎(chǔ)上更進(jìn)一步,因?yàn)樗杏删W(wǎng)絡(luò)管理員指定的通信都是經(jīng)過(guò)加密和認(rèn)證的。 IPSec的主要特征在于它可以對(duì)所有IP級(jí)的通信進(jìn)行加密和認(rèn)證,正是這一點(diǎn)才使IPSec可以確保包括遠(yuǎn)程登錄、客戶/服務(wù)器、電子郵件、
50、文件傳輸及Web訪問(wèn)在內(nèi)多種應(yīng)用程序的安全。 IPSec在傳輸層之下,對(duì)于應(yīng)用程序來(lái)說(shuō)是透明的。當(dāng)在路由器或防火墻上安裝IPSec時(shí),無(wú)需更改用戶或服務(wù)器系統(tǒng)中的軟件設(shè)置。即使在終端系統(tǒng)中執(zhí)行IPSec,應(yīng)用程序一類的上層軟件也不會(huì)被影響。 IPSec對(duì)終端用戶來(lái)說(shuō)是透明的,因此不必對(duì)用戶進(jìn)行安全機(jī)制的培訓(xùn)。 如果需要的話,IPSec可以為個(gè)體用戶提供安全保障,這樣做就可以保護(hù)企業(yè)內(nèi)部的敏感信息。 IPSec正向Internet靠攏。已經(jīng)有一些機(jī)構(gòu)部分或全部執(zhí)行了IPSec。IAB的前任總裁Christian Huitema認(rèn)為,關(guān)于如何保證Internet安全的討論是他所見(jiàn)過(guò)的最激烈的討論之
51、一。討論的話題之一就是安全是否在恰當(dāng)?shù)膮f(xié)議層上被使用。想要提供IP級(jí)的安全,IPSec必須成為配置在所有相關(guān)平臺(tái)(包括Windows NT,Unix和Macintosh系統(tǒng))的網(wǎng)絡(luò)代碼中的一部分。 實(shí)際上,現(xiàn)在發(fā)行的許多Internet應(yīng)用軟件中已包含了安全特征。例如,Netscape Navigator和Microsoft Internet Explorer支持保護(hù)互聯(lián)網(wǎng)通信的安全套層協(xié)議(SSL),還有一部分產(chǎn)品支持保護(hù)Internet上信用卡交易的安全電子交易協(xié)議(SET)。然而,VPN需要的是網(wǎng)絡(luò)級(jí)的功能,這也正是IPSec所提供的。 2 IPSec VPN工作原理 當(dāng)IPSec用于路
52、由器時(shí),就可以建立虛擬專用網(wǎng)。在路由器的連內(nèi)部網(wǎng)的一端,是一個(gè)受保護(hù)的網(wǎng)絡(luò),另一端則是不安全的公共網(wǎng)絡(luò)。兩個(gè)這樣的路由器建立起一個(gè)安全通道,通信就可以通過(guò)這個(gè)通道從一個(gè)本地的保護(hù)子網(wǎng)發(fā)送到一個(gè)遠(yuǎn)程的保護(hù)子網(wǎng),這就形成了一個(gè)VPN。4.2.1 隧道建立方式IPsec VPN隧道的建立過(guò)程可以分為二個(gè)階段: 第一階段有二種模式: 主模式或主動(dòng)模式和第二階段:快速模式 。第一階段有三個(gè)任務(wù)必須完成: 協(xié)商一系列算法和參數(shù)(這些算法和參數(shù)用于保護(hù)隧道建立過(guò)程中的數(shù)據(jù))。 必須計(jì)算出二邊使用的加密KEY值,例如,二邊使用3DES算法密,3DES算法則需要一個(gè)密碼,這個(gè)密碼兩端端必須一樣,但又不能在鏈路上
53、傳遞。 對(duì)等體的驗(yàn)證,如何才能知道對(duì)端就是我要與之通信的對(duì)端.這里驗(yàn)證有三種方法:預(yù)共享,數(shù)字簽名,加密臨時(shí)值。 這一系列過(guò)程都是IKE這個(gè)協(xié)議來(lái)實(shí)現(xiàn)。第一階段三個(gè)任務(wù),分別用6個(gè)消息來(lái)完成,每二個(gè)為一組。第一個(gè)消息由隧道的發(fā)起者發(fā)起,攜帶了如這樣一些參數(shù),如加密機(jī)制-DES,散列機(jī)制-MD5-HMAC,Diffie-Hellman組-2,認(rèn)證機(jī)制-預(yù)共享。第二個(gè)消息由響應(yīng)者回應(yīng),內(nèi)容基本一樣,主要與發(fā)起者比較,是否與發(fā)起者匹配,不匹配就進(jìn)行下一組的比較.如果最終都找不到匹配,隧道就停止建立。第三個(gè)消息由發(fā)起者發(fā)出,但是在發(fā)出這個(gè)消息之前,有個(gè)過(guò)程必須先完成,就是Diffie-Hellman算
54、法過(guò)程。該過(guò)程的目的是什么呢?剛剛第一二條消息中所協(xié)商的算法它們必須需要一個(gè)KEY,這個(gè)KEY在二個(gè)對(duì)等體上必須一樣,但同時(shí)這個(gè)KEY不能在鏈路中傳遞,因?yàn)閭鬟fKEY是一個(gè)不安全的手段.所以,該過(guò)程的目的是分別在二個(gè)對(duì)等間獨(dú)立地生成一個(gè)DH公共值,該公共值有什么用呢?因?yàn)槎€(gè)對(duì)等體上都生成該DH公共值后,它們會(huì)在接下來(lái)的第三第四消息中傳送給對(duì)方,打個(gè)比方,就是A收到了B的DH公共值,B收到了A的DH公共值.當(dāng)A,B都收到了對(duì)方的該公共值后,問(wèn)題就好解決了.因?yàn)橛幸粋€(gè)公式在數(shù)學(xué)中被論證成立,那么現(xiàn)在借助該公式,就可以在二個(gè)對(duì)等上生成一個(gè)只有他們二個(gè)對(duì)等體知道的相同的KEY,該公式為 發(fā)起者密秘=
55、(Xb)amod p=(Xa)bmod p=響應(yīng)者密秘 注意,這個(gè)密秘不是最終算法中使用的KEY,但二個(gè)對(duì)等體通過(guò)該KEY材料來(lái)生成另個(gè)三個(gè)密鑰,分別是: SKEYID_d-此密鑰被用于計(jì)算后續(xù)IPsec密鑰資源。SKEYID_a-此密鑰被用于提供后續(xù)IKE消息的數(shù)據(jù)完整性以及認(rèn)證。 SKEYID_e-此密鑰被用于對(duì)后續(xù)IKE消息進(jìn)行加密。所以由發(fā)起者發(fā)起的第三條消息主要是向?qū)Φ润w發(fā)送自己的DH公共值 。第四條消息由響應(yīng)者向發(fā)起者發(fā)送,主要是向發(fā)送者發(fā)送自己的DH公共值.由于第一二條消息的算法,第三四條消息生成的KEY,所以在后續(xù)的第五六條消息就能被加密傳送. 第五條消息由發(fā)起者向響應(yīng)者發(fā)送,
56、主要是為了驗(yàn)證對(duì)端自己就是自己想要與之通信的對(duì)端.這可以通過(guò)預(yù)共享,數(shù)字簽名,加密臨時(shí)值來(lái)實(shí)現(xiàn).。第六條消息由響應(yīng)者向發(fā)起者發(fā)送,主要目的和第五條一樣。第二階段只有一任務(wù)必須完成:在二個(gè)對(duì)等體間協(xié)商產(chǎn)生IPsec聯(lián)盟的屬性,安全聯(lián)盟可以加密二個(gè)對(duì)等體間的數(shù)據(jù),這才是真正的需要加密的用戶數(shù)據(jù),至此,隧道才真正建立起來(lái)。 在第一階段的六條消息過(guò)后,就進(jìn)入了第二階段:快速模式,快速模式使用二條消息來(lái)實(shí)現(xiàn):發(fā)起者會(huì)在第一條消息中發(fā)送IPsec SA的轉(zhuǎn)換屬性,如:封裝-ESP,完整性檢驗(yàn)-SHA-HMAC,DH組-2,模式-隧道,響應(yīng)者向發(fā)起者發(fā)送第二條消息,同意第一條消息中的屬性,同時(shí)也能起到確認(rèn)收
57、到對(duì)端消息的作用。這一步一旦完成,隧道就建立起來(lái)了,用戶的數(shù)據(jù)就能被放入隧道中傳送。IPSec隧道建立過(guò)程類似于TCP三次握手,如下圖所示:連接請(qǐng)求確認(rèn)SYN,ACK,SEQ=Y,ACK=X+1被動(dòng)打開(kāi)SYN,SEQ=X確認(rèn)SYN,SEQ=X+1,ACK=Y+1服務(wù)器客戶端 圖1 “三次”握手隧道的建立過(guò)程1)客戶端向服務(wù)器端發(fā)送一個(gè)SYN置位的TCP報(bào)文;2)服務(wù)器端接收到客戶端發(fā)送過(guò)來(lái)的SYN報(bào)文后,向客戶端發(fā)送一個(gè)SYN和ACK都置位的TCP報(bào)文,其中包括確認(rèn)號(hào)為x+1和服務(wù)器的初始序列號(hào)y;3)客戶端收到服務(wù)器返回的SYN+ACK報(bào)文后,向服務(wù)器返回一個(gè)確認(rèn)號(hào)為y+1序列號(hào)為x+1的A
58、CK報(bào)文。2.2 數(shù)據(jù)保護(hù)方式IPSec提供三種不同的形式來(lái)保護(hù)通過(guò)公有或私有IP網(wǎng)絡(luò)來(lái)傳送的私有數(shù)據(jù): 認(rèn)證:可以確定所接受的數(shù)據(jù)與所發(fā)送的數(shù)據(jù)是一致的,同時(shí)可以確定申請(qǐng)發(fā)送者在實(shí)際上是真實(shí)發(fā)送者,而不是偽裝的。 數(shù)據(jù)完整:保證數(shù)據(jù)從原發(fā)地到目的地的傳送過(guò)程中沒(méi)有任何不可檢測(cè)的數(shù)據(jù)丟失與改變。 機(jī)密性:使相應(yīng)的接收者能獲取發(fā)送的真正內(nèi)容,而無(wú)意獲取數(shù)據(jù)的接收者無(wú)法獲知數(shù)據(jù)的真正內(nèi)容。 在IPSec由三個(gè)基本要素來(lái)提供以上三種保護(hù)形式:認(rèn)證協(xié)議頭(AH)、安全加載封裝(ESP)和互聯(lián)網(wǎng)密鑰管理協(xié)議(IKMP)。認(rèn)證協(xié)議頭和安全加載封裝可以通過(guò)分開(kāi)或組合使用來(lái)達(dá)到所希望的保護(hù)等級(jí)。 對(duì)于VPN來(lái)
59、說(shuō),認(rèn)證和加密都是必需的,因?yàn)橹挥须p重安全措施才能確保未經(jīng)授權(quán)的用戶不能進(jìn)入VPN,同時(shí),Internet上的竊聽(tīng)者無(wú)法讀取VPN上傳輸?shù)男畔ⅰ4蟛糠值膽?yīng)用實(shí)例中都采用了ESP而不是AH。密鑰交換功能允許手工或自動(dòng)交換密鑰。 當(dāng)前的IPSec支持?jǐn)?shù)據(jù)加密標(biāo)準(zhǔn)(DES),但也可以使用其它多種加密算法。因?yàn)槿藗儗?duì)DES的安全性有所懷疑,所以用戶會(huì)選擇使用Triple-DES(即三次DES加密)。至于認(rèn)證技術(shù),將會(huì)推出一個(gè)叫作HMAC(MAC 即信息認(rèn)證代碼Message Authentication Code)的新概念。2.3 IPSEC 協(xié)議體系結(jié)構(gòu)IPSec將幾種安全技術(shù)結(jié)合形成一個(gè)完整的安全
60、體系,它包括安全協(xié)議部分和密匙協(xié)商部分。這些協(xié)議之間的相互關(guān)系如圖2所示:圖2 IPSec 協(xié)議體系 安全關(guān)聯(lián)和安全策略:安全關(guān)聯(lián)(Security Association,SA)是構(gòu)成IPSec的基礎(chǔ),是兩個(gè)通信實(shí)體經(jīng)協(xié)商建立起來(lái)的一種協(xié)定,它們決定了用來(lái)保護(hù)數(shù)據(jù)包安全的安全協(xié)議(AH協(xié)或者ESP協(xié)議) 、轉(zhuǎn)碼方式、密匙及密匙的有效存在時(shí)間等等。 IPSec協(xié)議的運(yùn)行模式:IPSec協(xié)議的運(yùn)行模式有兩種,IPSec隧道模式及IPSec傳輸模式。隧道模式的特點(diǎn)是數(shù)據(jù)包最終的目的地不是安全的終點(diǎn)。通常情況下,只有IPSec雙方有一方是安全網(wǎng)關(guān)或路由器,就必須使用隧道模式。傳輸模式下,IPSec主
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024年農(nóng)民專業(yè)合作社股權(quán)轉(zhuǎn)讓及品牌授權(quán)合作協(xié)議2篇
- 2024年版:股東之間股權(quán)轉(zhuǎn)讓協(xié)議書(shū)
- 采購(gòu)工作總結(jié)與計(jì)劃9篇
- 一年級(jí)上冊(cè)音樂(lè)教學(xué)計(jì)劃三篇
- 高三教學(xué)工作計(jì)劃4篇
- 樣品買(mǎi)賣(mài)合同
- 將優(yōu) 質(zhì) 服務(wù)進(jìn)行到底
- 2025年專用級(jí)次磷酸鈉項(xiàng)目發(fā)展計(jì)劃
- 全國(guó)獨(dú)家分銷合同(2篇)
- 商業(yè)租房協(xié)議范本
- 2023年1月廣東省自考00634廣告策劃試題及答案含解析
- 河南省洛陽(yáng)市2023-2024學(xué)年高二上學(xué)期期末考試英語(yǔ)試題(解析版)
- 超聲檢查醫(yī)療糾紛的防范培訓(xùn)課件
- 采購(gòu)管理的流程與原則
- 2022-2023學(xué)年山東省東營(yíng)市東營(yíng)區(qū)七年級(jí)(上)期末歷史試卷(五四學(xué)制)(附答案詳解)
- 《城市道路工程設(shè)計(jì)規(guī)范》宣貫課件
- 稻盛和夫的實(shí)學(xué)經(jīng)營(yíng)與會(huì)計(jì)
- 視頻監(jiān)控維保項(xiàng)目投標(biāo)方案(技術(shù)標(biāo))
- 椎管內(nèi)腫瘤圍手術(shù)期護(hù)理課件
- 麻醉科主任述職報(bào)告
- PDCA降低護(hù)士針刺傷發(fā)生率
評(píng)論
0/150
提交評(píng)論