傳輸層課件講義整理_第1頁(yè)
傳輸層課件講義整理_第2頁(yè)
傳輸層課件講義整理_第3頁(yè)
傳輸層課件講義整理_第4頁(yè)
傳輸層課件講義整理_第5頁(yè)
已閱讀5頁(yè),還剩183頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

計(jì)算機(jī)網(wǎng)絡(luò)1中科院研究生院授課教師:魯士文2003.12.11計(jì)算機(jī)網(wǎng)絡(luò)1中科院研究生

第六章傳輸層學(xué)習(xí)要點(diǎn)傳輸層的功能TCP/IP體系中的傳輸層協(xié)議2中科院研究生院授課教師:魯士文2003.12.11第六章傳輸層學(xué)習(xí)要點(diǎn)2中科院研究生院授課教師:魯?shù)诹聜鬏攲?.1OSI傳輸協(xié)議6.2Internet傳輸協(xié)議 6.2.1 TCP的基本概念6.2.2 TCP報(bào)文段的格式

6.2.3 TCP連接的建立、拆除和重置

6.2.4 TCP擁塞控制 6.2.5Internet傳輸協(xié)議UDP

6.2.6Internet關(guān)于端口號(hào)的約定

3中科院研究生院授課教師:魯士文2003.12.11第六章傳輸層6.1OSI傳輸協(xié)議3中科院研究生院為什么需要運(yùn)輸層1、在一個(gè)網(wǎng)絡(luò)連接上復(fù)用多對(duì)進(jìn)程的通信。2、解決多互連的通信子網(wǎng)的通信協(xié)議的差異和提供的服務(wù)功能的不同。3、解決網(wǎng)絡(luò)層及下兩層自身不能解決的傳輸錯(cuò)誤。4中科院研究生院授課教師:魯士文2003.12.11為什么需要運(yùn)輸層1、在一個(gè)網(wǎng)絡(luò)連接上復(fù)用多對(duì)進(jìn)程的通信。4中運(yùn)輸層與上下層之間的關(guān)系

5中科院研究生院授課教師:魯士文2003.12.11運(yùn)輸層與上下層之間的關(guān)系5中科院研究生院授課教師:魯士第六章傳輸層在OSI參考模型中,傳輸層的職責(zé)是在兩個(gè)不同系統(tǒng)的進(jìn)程之間提供一種交換數(shù)據(jù)的可靠機(jī)制,由于傳輸層僅關(guān)心會(huì)話實(shí)體之間的數(shù)據(jù)傳輸,所有它的協(xié)議都具有端到端的意義。某些用戶應(yīng)用程序需要絕對(duì)保證所有的協(xié)議數(shù)據(jù)單元都被安全地投遞到目的地,而且一個(gè)會(huì)話實(shí)體可以請(qǐng)求一定質(zhì)量的服務(wù),一旦傳輸層提供具有這種質(zhì)量的傳輸連接,它就必須維持這種連接。在傳輸層不能再維持所提供質(zhì)量的情況下,它必須把這一事實(shí)明確地通知會(huì)話實(shí)體。也許,想像傳輸層的最好方法是把它看成一種安全保護(hù)罩,不管下面的基礎(chǔ)網(wǎng)絡(luò)發(fā)生什么事件,它都要負(fù)責(zé)照料傳輸?shù)臄?shù)據(jù)。

6中科院研究生院授課教師:魯士文2003.12.11第六章傳輸層在OSI參考模型中,傳輸層的職責(zé)是在兩個(gè)不同第六章傳輸層傳輸層還執(zhí)行許多其它功能。它的主要作用之一是為更高層協(xié)議屏蔽下層操作的細(xì)節(jié)。確實(shí),用戶可以完全不了解支持用戶活動(dòng)的物理網(wǎng)絡(luò),因?yàn)橛袀鬏攲釉谟脩艉途W(wǎng)絡(luò)之間提供透明的接口。傳輸層使得高層協(xié)議不用操心如何去獲得所需級(jí)別的網(wǎng)絡(luò)服務(wù)。傳輸層的目標(biāo)是在源端機(jī)和目的地機(jī)之間提供性能可靠、價(jià)格合理的數(shù)據(jù)傳輸,而與當(dāng)前實(shí)際使用的網(wǎng)絡(luò)無(wú)關(guān),任何用戶進(jìn)程或應(yīng)用程序可以直接訪問(wèn)傳輸服務(wù),而不必經(jīng)過(guò)會(huì)話層和表示層,實(shí)際上,Internet的傳輸層協(xié)議就是以這種方式工作的。7中科院研究生院授課教師:魯士文2003.12.11第六章傳輸層傳輸層還執(zhí)行許多其它功能。它的主要作用之一是第六章傳輸層傳輸服務(wù)有兩大類:面向連接的傳輸服務(wù)和無(wú)連接的傳輸服務(wù)。面向連接的傳輸服務(wù)與面向連接的網(wǎng)絡(luò)服務(wù)十分相似,兩者都向用戶提供連接的建立、維護(hù)和釋放。無(wú)連接的傳輸服務(wù)與無(wú)連接的網(wǎng)絡(luò)服務(wù)也十分相似。在這里,我們不禁要問(wèn):“既然傳輸服務(wù)與網(wǎng)絡(luò)服務(wù)如此相似,為什么還要把它們劃分為兩層呢?”這是一個(gè)微妙而又關(guān)鍵的問(wèn)題。事實(shí)上。網(wǎng)絡(luò)層是通信子網(wǎng)的一個(gè)組成部分,假如網(wǎng)絡(luò)服務(wù)質(zhì)量不可靠,頻繁地丟失分組,網(wǎng)絡(luò)層系統(tǒng)崩潰或不停地發(fā)出網(wǎng)絡(luò)重置,試想將會(huì)發(fā)生什么樣的情況呢?

8中科院研究生院授課教師:魯士文2003.12.11第六章傳輸層傳輸服務(wù)有兩大類:面向連接的傳輸服務(wù)和無(wú)連接第六章傳輸層因?yàn)橛脩舨荒軐?duì)通信子網(wǎng)加以控制,故無(wú)法采用更好的通信處理機(jī)來(lái)解決網(wǎng)絡(luò)層服務(wù)質(zhì)量低劣的問(wèn)題,更不可能通過(guò)改進(jìn)數(shù)據(jù)鏈路層糾錯(cuò)能力來(lái)改善低層的條件。解決這一問(wèn)題的唯一可行辦法就是在網(wǎng)絡(luò)層上面增加一層即傳輸層。傳輸層的存在使得傳輸服務(wù)比網(wǎng)絡(luò)服務(wù)更可靠,分組的丟失、殘缺甚至網(wǎng)絡(luò)重置都可以被傳輸層檢測(cè)到,并采取相應(yīng)的補(bǔ)救措施。而且,由于傳輸服務(wù)獨(dú)立于網(wǎng)絡(luò)服務(wù),故可以采用一個(gè)標(biāo)準(zhǔn)的原語(yǔ)集提供傳輸服務(wù)。而網(wǎng)絡(luò)服務(wù)則因不同的網(wǎng)絡(luò)可能有很大的差異。因?yàn)閭鬏敺?wù)是標(biāo)準(zhǔn)的,所以用傳輸服務(wù)原語(yǔ)編寫(xiě)的應(yīng)用程序就能廣泛地適用于各種網(wǎng)絡(luò)。9中科院研究生院授課教師:魯士文2003.12.11第六章傳輸層因?yàn)橛脩舨荒軐?duì)通信子網(wǎng)加以控制,故無(wú)法采用更6.1OSI傳輸協(xié)議如果下層的網(wǎng)絡(luò)很可靠,那么用于完成數(shù)據(jù)傳送的傳輸層協(xié)議就不需要做太多工作。如果下層的網(wǎng)絡(luò)是不可靠的,那么就要使用稍微復(fù)雜一點(diǎn)的傳輸協(xié)議機(jī)制。為提供面向連接的傳輸服務(wù),ISO定義了5類傳輸協(xié)議。它還定義了一個(gè)無(wú)連接的傳輸協(xié)議,盡管沒(méi)有一個(gè)OSI應(yīng)用協(xié)議使用無(wú)連接傳輸服務(wù)。我們首先考察面向連接的傳輸服務(wù)COTS(Connection-OrientedTransportService)。有意設(shè)計(jì)得很簡(jiǎn)單的COTS可使用戶得到一個(gè)易于使用的、可靠的傳輸服務(wù)。另一方面,用來(lái)提供COTS的傳輸協(xié)議都很復(fù)雜,因?yàn)樗鼈円軕?yīng)付不可靠的網(wǎng)絡(luò)。面向連接的傳輸服務(wù)僅含有4個(gè)服務(wù)元素:T-CONNECT,T-DATA,T-EXPEDITED-DATA和T-DISCONNECT。傳輸服務(wù)TS的用戶使用T-CONNECT與其對(duì)等實(shí)體建立全雙工的傳輸連接。在傳輸連接建立期間,兩個(gè)TS用戶和傳輸服務(wù)提供者可以協(xié)商服務(wù)質(zhì)量QOS參數(shù)和快速數(shù)據(jù)選項(xiàng)。10中科院研究生院授課教師:魯士文200OSI傳輸協(xié)議如果下層的網(wǎng)絡(luò)很可靠,那么用于完成6.1OSI傳輸協(xié)議有兩個(gè)數(shù)據(jù)傳輸服務(wù)元素:T_DATA和T_EXPEDITED_DATA。T_DATA服務(wù)元素為非證實(shí)型,但它們能在TS用戶間可靠地傳遞數(shù)據(jù)。如果發(fā)生傳輸故障,傳輸服務(wù)提供者將會(huì)向用戶通知故障。沒(méi)有證實(shí)肯定也就沒(méi)有同步,但不一定不可靠。從傳輸用戶的觀點(diǎn)來(lái)看,傳輸服務(wù)不會(huì)產(chǎn)生錯(cuò)誤。對(duì)實(shí)際的網(wǎng)絡(luò)來(lái)說(shuō),傳送數(shù)據(jù)時(shí)當(dāng)然會(huì)有錯(cuò)誤產(chǎn)生,但是,在不可靠的網(wǎng)絡(luò)之上為用戶提供一個(gè)可靠的服務(wù)正是傳輸層要達(dá)到的目標(biāo)。傳輸層實(shí)體接受從網(wǎng)絡(luò)層來(lái)的數(shù)據(jù)確認(rèn)和N_RESET服務(wù)原語(yǔ),并由傳輸層糾正產(chǎn)生的錯(cuò)誤。當(dāng)一個(gè)網(wǎng)絡(luò)連接重置時(shí),傳輸層可以再另建一個(gè)新的網(wǎng)絡(luò)連接,并從原網(wǎng)絡(luò)連接中斷處開(kāi)始繼續(xù)執(zhí)行。如果快速數(shù)據(jù)選項(xiàng)被選擇,那么T_EXPEDITED_DATA服務(wù)元素就用來(lái)傳遞快速數(shù)據(jù)。實(shí)現(xiàn)者常常約定一次最多可攜帶10個(gè)字節(jié)的快速數(shù)據(jù)。11中科院研究生院授課教師:魯士文200OSI傳輸協(xié)議有兩個(gè)數(shù)據(jù)傳輸服務(wù)元素:T_DAT6.1OSI傳輸協(xié)議在連接建立后,TS用戶或傳輸服務(wù)提供者都可以使用T_DISCONNECT服務(wù)元素釋放連接。一旦調(diào)用該服務(wù),傳遞中的任何TSDU(傳輸服務(wù)數(shù)據(jù)單元)或ETSDU(快速傳輸服務(wù)數(shù)據(jù)單元)都可能丟失。因此,T_DISCONNECT具有破壞性,它可由傳輸服務(wù)提供者或被呼用戶用于拒絕連接。COTS服務(wù)定義非常簡(jiǎn)單。COTS僅是一個(gè)抽象的定義,而不是一個(gè)接口規(guī)范。接口規(guī)范中含有本地的處理原語(yǔ)和通信原語(yǔ),例如,它可能包括TS用戶使用什么手段聯(lián)結(jié)到TSAP(傳輸服務(wù)訪問(wèn)點(diǎn)),TS用戶怎樣檢測(cè)從網(wǎng)絡(luò)層進(jìn)入事件的到來(lái)等原語(yǔ)。

12中科院研究生院授課教師:魯士文200OSI傳輸協(xié)議在連接建立后,TS用戶或傳輸服務(wù)提6.1OSI傳輸協(xié)議下面我們?cè)倏疾煲幌聼o(wú)連接傳輸服務(wù)CLTS(ConnectionlessTransportService)。CLTS僅提供一個(gè)服務(wù)元素T_UNIT_DATA。T_UNIT_DATA有4個(gè)參數(shù):源傳輸?shù)刂?,目的地傳輸?shù)刂?,TS用戶數(shù)據(jù)和QOS。因?yàn)闆](méi)有連接建立階段,TS用戶不可能和其服務(wù)提供者協(xié)商QOS。在這種服務(wù)方式中,無(wú)法保證可靠的數(shù)據(jù)傳輸,需要靠上層進(jìn)行適當(dāng)?shù)牟铄e(cuò)恢復(fù)。圖6-1(a)和(b)分別列出了OSI面向連接的傳輸服務(wù)原語(yǔ)和OSI無(wú)連接傳輸服務(wù)原語(yǔ)。其中的參數(shù)含義如下:callee:被呼方傳輸?shù)刂罚═SAP)caller:

呼方傳輸實(shí)體使用的傳輸?shù)刂罚═SAP)exp_wanted:

表明是否要發(fā)送加速數(shù)據(jù)的布爾標(biāo)志。QOS:希望的服務(wù)質(zhì)量。User_data:傳輸?shù)拇笥诘扔诹銈€(gè)字節(jié)的數(shù)據(jù),這些數(shù)據(jù)不受檢查。Reason:事件發(fā)生的原因。Responder:連接到的目標(biāo)方的傳輸?shù)刂贰?3中科院研究生院授課教師:魯士文200OSI傳輸協(xié)議下面我們?cè)倏疾煲幌聼o(wú)連接傳輸服務(wù)C6.1OSI傳輸協(xié)議

14中科院研究生院授課教師:魯士文200OSI傳輸協(xié)議14中科院研究生院授課教師6.1OSI傳輸協(xié)議網(wǎng)絡(luò)服務(wù)和傳輸服務(wù)一個(gè)重要的區(qū)別是它們的服務(wù)對(duì)象不同。網(wǎng)絡(luò)服務(wù)為傳輸層實(shí)體所用,這些傳輸層實(shí)體通常是操作系統(tǒng)的一部分,或者裝在一個(gè)特殊的硬件板或芯片上,幾乎沒(méi)有用戶自己書(shū)寫(xiě)傳輸層實(shí)體,因此很少有用戶或應(yīng)用程序能直接看到網(wǎng)絡(luò)服務(wù)。相反,很多用戶并不使用會(huì)話層和表示層,他們直接看到傳輸層原語(yǔ)。正如我們?cè)缦忍岬降哪菢?,Internet網(wǎng)甚至根本就沒(méi)有會(huì)話層和表示層,因此,所有使用網(wǎng)絡(luò)的應(yīng)用程序都與傳輸原語(yǔ)接口(這些傳輸原語(yǔ)雖然與OSI的傳輸原語(yǔ)不同,但大致相似)。為了說(shuō)明這一點(diǎn),可以考慮用UNIX的管道連接起來(lái)的進(jìn)程,這些進(jìn)程認(rèn)為它們之間的連接是完美的,它們并不想知道有關(guān)數(shù)據(jù)確認(rèn)、N_RESET服務(wù)原語(yǔ)、網(wǎng)絡(luò)擁塞或者任何類似的細(xì)節(jié)問(wèn)題。它們想要的僅是一個(gè)完美的連接。進(jìn)程A從管道的一端放入數(shù)據(jù),進(jìn)程B從另一端將數(shù)據(jù)取出,這就是面向連接的傳輸服務(wù)的全部意義——將不完善的網(wǎng)絡(luò)服務(wù)隱蔽起來(lái),使得用戶進(jìn)程能假定存在著一個(gè)可靠的無(wú)錯(cuò)的比特流傳送。15中科院研究生院授課教師:魯士文200OSI傳輸協(xié)議網(wǎng)絡(luò)服務(wù)和傳輸服務(wù)一個(gè)重要的區(qū)別是6.1OSI傳輸協(xié)議圖6-2示出了OSI各種傳輸層服務(wù)原語(yǔ)之間的關(guān)系。在該圖的8個(gè)分圖中,一個(gè)傳輸用戶在雙線的左邊,另一個(gè)在雙線的右邊,傳輸服務(wù)提供者(即傳輸層本身)則在雙線之間。時(shí)序是從上到下,頂上的事件要比底下的事件先發(fā)生。圖6-2(a)說(shuō)明正常的連接建立過(guò)程。圖中用了4個(gè)原語(yǔ)。一個(gè)傳輸實(shí)體執(zhí)行一個(gè)稱為T_CONNECT·request的原語(yǔ),表示它想和這個(gè)服務(wù)原語(yǔ)中指定的傳輸服務(wù)訪問(wèn)點(diǎn)(TSAP)地址相連的傳輸用戶建立連接。T_CONNECT·request服務(wù)原語(yǔ)導(dǎo)致在目的地端產(chǎn)生T_CONNECT.indication服務(wù)原語(yǔ)。與目的端的TSAP地址相連的傳送用戶收到這一indication原語(yǔ)后,如圖6-2(a)所示,既可以發(fā)出T_CONNECT.response服務(wù)原語(yǔ)來(lái)表示接受它,也可以如圖6-2(b)所示,發(fā)出T_DISCONNECT.request來(lái)拒絕它。接受的結(jié)果返回到連接發(fā)起端為T_CONNECT.confirm服務(wù)原語(yǔ)。拒絕的結(jié)果為T_DISCONNECT·indication服務(wù)原語(yǔ)。16中科院研究生院授課教師:魯士文200OSI傳輸協(xié)議圖6-2示出了OSI各種傳輸層服務(wù)6.1OSI傳輸協(xié)議

17中科院研究生院授課教師:魯士文200OSI傳輸協(xié)議17中科院研究生院授課教師6.1OSI傳輸協(xié)議當(dāng)試圖建立連接時(shí),另外一種情況也可能發(fā)生,如圖6-2(c)所示,這是在傳輸服務(wù)提供者本身拒絕建立連接的情況下發(fā)生的。這也許是由于傳輸層用戶的過(guò)錯(cuò)(如T_CONNECT.request原語(yǔ)中的無(wú)效參數(shù)),或者是由于傳輸提供者的原因(如,傳輸服務(wù)提供者的內(nèi)部表空間已使用完)。在這種情況下,網(wǎng)絡(luò)中并沒(méi)有傳送任何東西,所以遠(yuǎn)端實(shí)體對(duì)此失敗了的建立連接請(qǐng)求一無(wú)所知。18中科院研究生院授課教師:魯士文200OSI傳輸協(xié)議當(dāng)試圖建立連接時(shí),另外一種情況也可6.1OSI傳輸協(xié)議

19中科院研究生院授課教師:魯士文200OSI傳輸協(xié)議19中科院研究生院授課教師6.1OSI傳輸協(xié)議從圖6-2(d)至12-2(f)我們可以看到連接釋放的3種方式。正常的方式是連接的一方發(fā)出一個(gè)T_DISCONNECT.request原語(yǔ),而連接的另一方則收到T_DISCONNECT.indication。無(wú)論是連接的建立方或者響應(yīng)方都可以率先發(fā)起釋放連接。當(dāng)連接的雙方同時(shí)發(fā)出T_DISCONNECT.request原語(yǔ)時(shí),雙方無(wú)需收到斷連指示,連接即可釋放。20中科院研究生院授課教師:魯士文200OSI傳輸協(xié)議從圖6-2(d)至12-2(f)我6.1OSI傳輸協(xié)議

21中科院研究生院授課教師:魯士文200OSI傳輸協(xié)議21中科院研究生院授課教師6.1OSI傳輸協(xié)議最后,如圖6-2(f)所示,傳輸服務(wù)提供者可以通過(guò)向連接的雙方直接發(fā)送T_DISCONNECT.indication原語(yǔ)而終止連接。從某種程度上講,最后這種情況有點(diǎn)類似于網(wǎng)絡(luò)層發(fā)送N_RESET.indication原語(yǔ)的情況。顯然,一個(gè)設(shè)計(jì)良好的傳輸服務(wù)提供者不應(yīng)該輕易地發(fā)T_DISCONNECT.indication原語(yǔ),只有在沒(méi)有其它措施可用的情況下才這樣做。例如,在下層網(wǎng)絡(luò)崩潰而對(duì)不斷發(fā)出的通信請(qǐng)求置若罔聞時(shí),傳輸服務(wù)提供者除了斷開(kāi)所有連接外別無(wú)選擇。如果會(huì)話層對(duì)這一情況未采取任何預(yù)防措施,那么就必須將出錯(cuò)信息報(bào)告給最高層,并且可能要求人工干預(yù),以再次嘗試不成功的命令。

22中科院研究生院授課教師:魯士文200OSI傳輸協(xié)議最后,如圖6-2(f)所示,傳輸服6.1OSI傳輸協(xié)議圖6-2中的最后兩個(gè)圖顯示了普通數(shù)據(jù)和加速數(shù)據(jù)的傳輸過(guò)程。兩種情況下都沒(méi)有顯式的數(shù)據(jù)確認(rèn)或指示送回給數(shù)據(jù)發(fā)送者。傳輸層使用同網(wǎng)絡(luò)層一樣的隊(duì)列模型,數(shù)據(jù)通常按順序遞交。但是,傳輸層加速數(shù)據(jù)服務(wù)元素T_EXPEDITED_DATA都可以比已在隊(duì)列中的其它數(shù)據(jù)更先一步傳送。這一服務(wù)元素通常僅用于傳送BREAKDEL或中斷鍵等信息,這些信息是用戶為了中斷當(dāng)前程序的執(zhí)行而從終端上輸入的。假如沒(méi)有加速數(shù)據(jù),那么試想一下,如果一個(gè)用戶從遠(yuǎn)地通過(guò)傳輸連接與主機(jī)相連的遠(yuǎn)程終端上啟動(dòng)一個(gè)程序,然后在等待此程序終止之前輸入一行,這時(shí)會(huì)產(chǎn)生什么樣情況。如果程序進(jìn)入無(wú)限循環(huán)而用戶鍵入的是中斷字符BREAK,那么,此BREAK信息將被加到隊(duì)列的末尾,直到運(yùn)行的進(jìn)程終止,并且在此BREAK信息之前的隊(duì)列項(xiàng)被取走之后它才能遞交給主機(jī)。這就造成了死循環(huán)。而使用了加速數(shù)據(jù)請(qǐng)求之后,不管隊(duì)列中有什么數(shù)據(jù),此BREAK中斷信息均可立即遞交給主機(jī)。

23中科院研究生院授課教師:魯士文200OSI傳輸協(xié)議圖6-2中的最后兩個(gè)圖顯示了普通數(shù)6.1OSI傳輸協(xié)議

24中科院研究生院授課教師:魯士文200OSI傳輸協(xié)議24中科院研究生院授課教師6.1OSI傳輸協(xié)議ISO定義了5類面向連接的傳輸協(xié)議,從簡(jiǎn)單的到最復(fù)雜的都有。在連接建立時(shí),TE(傳輸實(shí)體)在主呼TS用戶請(qǐng)求的QOS基礎(chǔ)上,協(xié)商所使用的傳輸協(xié)議。當(dāng)用戶和一些簡(jiǎn)單的網(wǎng)絡(luò)實(shí)現(xiàn)打交道時(shí),就可以使用一些復(fù)雜的傳輸協(xié)議,以便能提供更優(yōu)質(zhì)的服務(wù)。5類傳輸協(xié)議的定義與網(wǎng)絡(luò)服務(wù)的類型有關(guān)。ISO定義了3種類型的網(wǎng)絡(luò)服務(wù)。

25中科院研究生院授課教師:魯士文200OSI傳輸協(xié)議ISO定義了5類面向連接的傳輸協(xié)議6.1OSI傳輸協(xié)議

-----3種類型的網(wǎng)絡(luò)服務(wù)(1)A型網(wǎng)絡(luò)服務(wù):A型網(wǎng)絡(luò)服務(wù)本質(zhì)上很完善,其分組丟失、重復(fù)或竄改的概率可以忽略不計(jì)。N_RESET很少使用,從而可以忽略。A型服務(wù)僅需要盡可能簡(jiǎn)單的傳輸協(xié)議,提供A型服務(wù)的公用廣域網(wǎng)幾乎沒(méi)有,但一些小范圍的局部網(wǎng)絡(luò)(如單位內(nèi)部的面向連接的SNA或DECnet網(wǎng)絡(luò)層)提供的服務(wù)卻相當(dāng)接近A型服務(wù)。(2)B型網(wǎng)絡(luò)服務(wù):B型網(wǎng)絡(luò)服務(wù)提供的網(wǎng)絡(luò)連接具有可接受的殘留差錯(cuò)率和不可接受的被告知的故障率。殘留差錯(cuò)是指未糾正的而且是網(wǎng)絡(luò)服務(wù)提供者沒(méi)有檢測(cè)到的差錯(cuò),被告知的故障是指網(wǎng)絡(luò)層檢測(cè)到的并通知TE予以糾正的故障??筛嬷墓收侠佑校簝?nèi)部擁擠,硬件問(wèn)題,軟件故障等。它需要傳輸協(xié)議建立新的網(wǎng)絡(luò)連接和重新同步。也就是說(shuō),B型網(wǎng)絡(luò)服務(wù)具有完美的分組遞交,但有N_RESET指示存在。公共X.25網(wǎng)提供的服務(wù)屬于B型網(wǎng)絡(luò)服務(wù)。26中科院研究生院授課教師:魯士文200OSI傳輸協(xié)議

-----3種類型的網(wǎng)絡(luò)服務(wù)(6.1OSI傳輸協(xié)議

-----3種類型的網(wǎng)絡(luò)服務(wù)(3)C型網(wǎng)絡(luò)服務(wù):C型網(wǎng)絡(luò)服務(wù)相當(dāng)不可靠,具有不可接受的殘留差錯(cuò)率和不可接受的被告知故障率的網(wǎng)絡(luò)連接。即使發(fā)生了數(shù)據(jù)丟失、重復(fù)、失序或被篡改等事件,這種網(wǎng)絡(luò)也不可能檢測(cè)到差錯(cuò)。因此,駐留在C型網(wǎng)絡(luò)服務(wù)之上的傳輸協(xié)議是最為復(fù)雜的。提供單純的無(wú)連接(數(shù)報(bào)報(bào))服務(wù)的廣域網(wǎng)、無(wú)線電分組交換網(wǎng)和很多互連網(wǎng)(如IP)均屬此類。

27中科院研究生院授課教師:魯士文200OSI傳輸協(xié)議

-----3種類型的網(wǎng)絡(luò)服務(wù)(6.1OSI傳輸協(xié)議

--5類傳輸協(xié)議基于3種類型的網(wǎng)絡(luò)服務(wù),ISO定義了5類運(yùn)輸協(xié)議:·0類:簡(jiǎn)單類·1類:基本差錯(cuò)恢復(fù)類·2類:多路復(fù)用類·3類:差錯(cuò)恢復(fù)與多路復(fù)用類·4類:差錯(cuò)檢測(cè)與恢復(fù)類

0類和2類用于A型網(wǎng)絡(luò),1類和3類用于B型網(wǎng)絡(luò),4類用于C型網(wǎng)絡(luò)。

28中科院研究生院授課教師:魯士文200OSI傳輸協(xié)議

--5類傳輸6.1OSI傳輸協(xié)議

--5類傳輸協(xié)議(1)TP0:由CCITT為智能用戶電報(bào)終端研制的0類協(xié)議,提供了最簡(jiǎn)單的協(xié)議機(jī)制,以支持A型網(wǎng)絡(luò)。它為一個(gè)傳輸連接建立一個(gè)網(wǎng)絡(luò)連接,要求并假定網(wǎng)絡(luò)連接不會(huì)出錯(cuò)。依靠下面網(wǎng)絡(luò)層對(duì)數(shù)據(jù)的正確傳送,傳輸協(xié)議不再進(jìn)行排序和流控。它只提供建立和釋放連接的機(jī)制。29中科院研究生院授課教師:魯士文200OSI傳輸協(xié)議

--5類傳6.1OSI傳輸協(xié)議

--5類傳輸協(xié)議(2)TP1:為能在X.25網(wǎng)絡(luò)(B類)高層上運(yùn)行設(shè)計(jì)的1類協(xié)議,提供了具有最小服務(wù)的連接,即從網(wǎng)絡(luò)可通告的故障中恢復(fù)的能力。1類除包括從N_RESET中恢復(fù)的功能外與0類相似。如果一個(gè)給定的傳輸連接使用的網(wǎng)絡(luò)連接受到N_RESET的影響,那么傳輸連接兩端的兩個(gè)傳輸實(shí)體就進(jìn)行一次重新同步,然后從中斷處開(kāi)始繼續(xù)運(yùn)行。為了進(jìn)行重新同步,它們必須跟蹤數(shù)據(jù)的順序號(hào),而這在0類中是不需要的。除了從N-RESET中恢復(fù)的能力以外,1類傳輸協(xié)議在網(wǎng)絡(luò)提供的功能之上不再提供任何錯(cuò)誤控制或流控制。

30中科院研究生院授課教師:魯士文200OSI傳輸協(xié)議

--5類傳6.1OSI傳輸協(xié)議

--5類傳輸協(xié)議(3)TP2:2類傳輸協(xié)議也是為使用可靠的網(wǎng)絡(luò)(A型)而設(shè)計(jì)的。它基本上是對(duì)0類的增強(qiáng),允許多路復(fù)用(幾個(gè)傳輸連接使用同一條網(wǎng)絡(luò)連接)。它與0類不同,在其協(xié)議中允許兩個(gè)或多個(gè)傳輸連接向同一個(gè)網(wǎng)絡(luò)連接發(fā)送數(shù)據(jù)。當(dāng)存在著許多個(gè)傳輸連接時(shí),每個(gè)連接的流量都相對(duì)較??;當(dāng)通信公司對(duì)每個(gè)打開(kāi)的網(wǎng)絡(luò)連接的連接時(shí)間收費(fèi)很高時(shí),這一特性很有用處。例如,3個(gè)全是飛機(jī)預(yù)售票終端的辦公室里,本地主機(jī)的每個(gè)終端都有一個(gè)獨(dú)立的傳輸層連接與遠(yuǎn)程計(jì)算機(jī)交互,這時(shí)可以把所有傳輸連接都復(fù)用到一條網(wǎng)絡(luò)連接上,以減少網(wǎng)絡(luò)開(kāi)銷。為實(shí)現(xiàn)復(fù)用,2類協(xié)議提供了直接的(顯式)流量控制手段。這是因?yàn)?,借助于網(wǎng)絡(luò)層的間接(隱式)流量控制不可能控制參與復(fù)用的多個(gè)傳輸連接中的每一個(gè)數(shù)據(jù)流。

31中科院研究生院授課教師:魯士文200OSI傳輸協(xié)議

--5類傳6.1OSI傳輸協(xié)議

--5類傳輸協(xié)議(4)TP3:3類傳輸協(xié)議基本上是1類和2類的組合。它允許多路復(fù)用,提供從N_RESET中恢復(fù)功能,也使用顯式流量控制。它用于支持B型網(wǎng)絡(luò)。

(5)TP4:4類傳輸協(xié)議是針對(duì)C型網(wǎng)絡(luò)服務(wù)設(shè)計(jì)的。它反映了對(duì)傳輸不可靠的擔(dān)心,并且相信莫爾非(Murphy)定律:如果什么事可能出錯(cuò)則一定會(huì)出錯(cuò)。為此,該協(xié)議必須能處理分組的丟失、重復(fù)、殘損分組、N-RESET和網(wǎng)絡(luò)拋給它的任何錯(cuò)誤。不用說(shuō),4類協(xié)議要比其它幾類協(xié)議復(fù)雜得多,它類似于Internet的TCP。

32中科院研究生院授課教師:魯士文200OSI傳輸協(xié)議

--5類傳6.2Internet傳輸協(xié)議Internet在IP層之上使用了兩個(gè)傳輸協(xié)議:一個(gè)是傳輸控制協(xié)議TCP,它是面向連接的;另一個(gè)是用戶數(shù)據(jù)報(bào)協(xié)議UDP,它是無(wú)連接的(參見(jiàn)圖6-3)33中科院研究生院授課教師:魯士文200Internet傳輸協(xié)議Internet在IP層之6.2.1 TCP的基本概念TCP并不對(duì)高層協(xié)議的數(shù)據(jù)產(chǎn)生影響。它對(duì)待來(lái)自高層的協(xié)議數(shù)據(jù)就像它們是不間斷的數(shù)據(jù)“流”一樣。因此,對(duì)這些數(shù)據(jù)的所有處理工作都是由高層協(xié)議進(jìn)行的。但是,TCP仍試圖將這些數(shù)據(jù)“流”分隔成一些不連續(xù)的單元,以便以獨(dú)立的報(bào)文段形式進(jìn)行發(fā)送和接收。TCP被用于在各種網(wǎng)絡(luò)上提供有序可靠數(shù)據(jù)傳輸能力的虛電路服務(wù)。TCP在不可靠的分組傳輸子網(wǎng)上(這種子網(wǎng)隨時(shí)都有可能出現(xiàn)數(shù)據(jù)丟失、損壞、重復(fù)傳送、延遲和錯(cuò)序)提供可靠的進(jìn)程間的通信機(jī)制。為取得可靠傳送,TCP必須檢測(cè)分組丟失,收不到確認(rèn)時(shí)自動(dòng)重傳,以及諸如處理延遲的重復(fù)數(shù)據(jù)報(bào)的問(wèn)題等許多操作。34中科院研究生院授課教師:魯士文200.1 TCP的基本概念TCP并不對(duì)高層協(xié)議的數(shù)據(jù)產(chǎn)生6.2.1TCP的基本概念由于TCP具有獨(dú)立于特定網(wǎng)絡(luò)的特性,故它有一個(gè)關(guān)于它的報(bào)文段長(zhǎng)度(65K字節(jié))的規(guī)定。TCP之間彼此能發(fā)送小于這一最大長(zhǎng)度的段。假如對(duì)等的兩個(gè)TCP實(shí)體之間交換的段長(zhǎng)度較大,大多數(shù)IP層都會(huì)將這些報(bào)文段劃分成小的分段,以滿足實(shí)際網(wǎng)絡(luò)對(duì)它的最大物理分組長(zhǎng)度的要求。實(shí)際上,大多數(shù)TCP軟件在處理它的段長(zhǎng)度時(shí),總是很好地進(jìn)行選擇,使得它恰好滿足實(shí)際網(wǎng)絡(luò)的要求。TCP是面向字節(jié)流的。當(dāng)兩個(gè)應(yīng)用程序轉(zhuǎn)移大量數(shù)據(jù)時(shí),我們把數(shù)據(jù)看成字節(jié)流。流投遞服務(wù)將源機(jī)器上發(fā)送方交給它的字節(jié)序列不加改變地在目的機(jī)器上傳給接收方。TCP為它的高層協(xié)議數(shù)據(jù)“流”中的每一字節(jié)都分配一個(gè)順序號(hào)。在與對(duì)等的TCP交換報(bào)文段時(shí),TCP給這些段附加的控制信息包括該段中第1個(gè)字節(jié)的順序號(hào)以及該段中所有數(shù)據(jù)字節(jié)的個(gè)數(shù)。這樣就使得接收端TCP能將這些段還原成一個(gè)不間斷的數(shù)據(jù)“流”送給它自己的高層協(xié)議。35中科院研究生院授課教師:魯士文200.1TCP的基本概念由于TCP具有獨(dú)立于特定網(wǎng)絡(luò)的特6.2.1TCP的基本概念當(dāng)需要重傳一系列報(bào)文段時(shí),TCP可以方便地對(duì)數(shù)據(jù)進(jìn)行重新封裝。例如,它能將傳送的兩個(gè)較小的段合并成一個(gè)較大的段。這種情況往往出現(xiàn)在廣域網(wǎng)中。為了提高線路通信效率,往往需要傳輸?shù)亩伪M可能大一些,從而降低報(bào)文段頭部信息相對(duì)于用戶數(shù)據(jù)的比例。這樣做的同時(shí)也增加了TCP協(xié)議的復(fù)雜性,因?yàn)榻邮辗奖仨毺幚硪恍┻@樣的段:在重復(fù)報(bào)文段的情況下既包含以前曾接收到的信息,也包含一些新的信息。36中科院研究生院授課教師:魯士文200.1TCP的基本概念當(dāng)需要重傳一系列報(bào)文段時(shí),TCP6.2.1TCP的基本概念圖6-4示出了從發(fā)送方的高層協(xié)議通過(guò)TCP到達(dá)接收方的高層協(xié)議數(shù)據(jù)傳輸?shù)耐暾^(guò)程。

37中科院研究生院授課教師:魯士文200.1TCP的基本概念圖6-4示出了從發(fā)送方的高層協(xié)6.2.1TCP的基本概念現(xiàn)將該圖說(shuō)明如下:(1)發(fā)送方的高層協(xié)議發(fā)出一個(gè)數(shù)據(jù)“流”給它的TCP實(shí)體進(jìn)行傳輸。(2)TCP將此數(shù)據(jù)流分成段??赡芴峁┑膫鬏敶胧┌ǎ喝p工的定時(shí)重傳,順序傳遞,安全性指定和優(yōu)先級(jí)指定,流量控制,錯(cuò)誤檢測(cè)等。然后將這段交給IP。(3)IP對(duì)這些報(bào)文段執(zhí)行它的服務(wù)過(guò)程,包括創(chuàng)建IP分組、數(shù)據(jù)報(bào)分割等,并在數(shù)據(jù)報(bào)通過(guò)數(shù)據(jù)鏈路層和物理層后經(jīng)過(guò)網(wǎng)絡(luò)傳給接收方的IP。(4)接收方的IP在可能采取檢驗(yàn)和重組分段的工作后,將數(shù)據(jù)報(bào)變成段的形式送給接收方的TCP。(5)接收方的TCP完成它自己的服務(wù),將報(bào)文段恢復(fù)成它原來(lái)的數(shù)據(jù)“流”形式,送給接收方的高層協(xié)議。38中科院研究生院授課教師:魯士文200.1TCP的基本概念現(xiàn)將該圖說(shuō)明如下:38中科院研究6.2.1TCP的基本概念

---TCP服務(wù)為了使你對(duì)TCP的功能可以有一個(gè)較為清晰的概念,下面我們先對(duì)過(guò)程(2)中敘述的TCP服務(wù)作簡(jiǎn)要說(shuō)明。*全雙工——一個(gè)TCP的連接支持兩個(gè)通信的高層協(xié)議之間同時(shí)的雙向數(shù)據(jù)傳遞。*定時(shí)——當(dāng)系統(tǒng)的條件不能按用戶定義的超時(shí)參數(shù)及時(shí)傳遞數(shù)據(jù)時(shí),TCP通知自己的高層協(xié)議,告訴它服務(wù)失敗。高層協(xié)議隨后可能會(huì)中止該連接或采取其它一些措施。*排序——TCP按照發(fā)送方高層協(xié)議提供的同樣的數(shù)據(jù)順序,將數(shù)據(jù)送給接收方的高層協(xié)議。39中科院研究生院授課教師:魯士文200.1TCP的基本概念

6.2.1TCP的基本概念*標(biāo)記——TCP在建立連接時(shí),相互之間協(xié)商由高層協(xié)議提出的安全性和優(yōu)先級(jí)要求。當(dāng)高層協(xié)議未對(duì)此作出規(guī)定時(shí),TCP按缺省值進(jìn)行處理。TCP建立連接的一個(gè)必要條件,就是由互相通信的高層協(xié)議所提供的安全性部分的信息能夠互相匹配起來(lái)。每個(gè)TCP段中都指定有經(jīng)協(xié)商后的安全性的值。假如在連接期間出現(xiàn)了安全性的值不匹配情況,TCP將中斷該連接。*流量控制——TCP在其連接的通信過(guò)程中,能夠調(diào)整流量,以防止內(nèi)部的TCP數(shù)據(jù)傳遞出現(xiàn)擁擠,從而導(dǎo)致服務(wù)質(zhì)量下降和出錯(cuò)。*錯(cuò)誤控制——TCP能在它的檢驗(yàn)和所允許的范圍內(nèi)保證數(shù)據(jù)的無(wú)差錯(cuò)傳遞。40中科院研究生院授課教師:魯士文200.1TCP的基本概念*標(biāo)記——TCP在建立連接時(shí),相6.2.1TCP的基本概念所有的網(wǎng)絡(luò)通信都可以看作是進(jìn)程之間的通信。進(jìn)程在調(diào)用TCP時(shí),通過(guò)作為參數(shù)的數(shù)據(jù)緩沖區(qū)將數(shù)據(jù)送出。TCP從該數(shù)據(jù)緩沖區(qū)取出數(shù)據(jù)并分成段,然后調(diào)用IP模塊,將這些段依次送往目標(biāo)站點(diǎn)的TCP。接收方TCP在收到的段中將數(shù)據(jù)取出,裝入供接收用的緩沖區(qū),并通知接收方的用戶。發(fā)送方TCP在段中插入了為保證可靠傳輸而必須的控制信息,所以接收方在收到段時(shí)要將這些控制信息除去,取出真正的數(shù)據(jù)。

41中科院研究生院授課教師:魯士文200.1TCP的基本概念所有的網(wǎng)絡(luò)通信都可以看作是進(jìn)程之6.2.1TCP的基本概念TCP一般是作為操作系統(tǒng)內(nèi)部的一個(gè)模塊安裝的。TCP的用戶接口,是通過(guò)對(duì)TCP連接的OPEN、CLOSE,數(shù)據(jù)的SEND、RECEIVE或調(diào)用連接的狀態(tài)信息來(lái)實(shí)現(xiàn)的。實(shí)際上,它們與文件的打開(kāi)、關(guān)閉、寫(xiě)入、讀出十分相似。在TCP的調(diào)用接口中,作為參數(shù)必須指定地址(端口號(hào))、服務(wù)類型、優(yōu)先級(jí)、安全性的值及其它控制信息等。TCP與實(shí)際網(wǎng)絡(luò)的接口亦與普通的設(shè)備驅(qū)動(dòng)模塊一樣。但是,TCP不能直接調(diào)用設(shè)備驅(qū)動(dòng)模塊,一般是通過(guò)IP模塊來(lái)調(diào)用設(shè)備驅(qū)動(dòng)模塊。42中科院研究生院授課教師:魯士文200.1TCP的基本概念TCP一般是作為操作系統(tǒng)內(nèi)部的一6.2.1TCP的基本概念在TCP的連接中,數(shù)據(jù)“流”必須以正確的順序送達(dá)對(duì)方。TCP的可靠性是通過(guò)順序編號(hào)和ACK來(lái)實(shí)現(xiàn)的。前面我們已經(jīng)提到過(guò),數(shù)據(jù)“流”上的各字節(jié)都有自己的編號(hào),各段第1個(gè)數(shù)據(jù)的順序編號(hào)和該段一起傳送,我們稱它為段順序編號(hào)。而且,在送回的ACK信息中,含有指示下一個(gè)應(yīng)該發(fā)送的順序編號(hào)。TCP在開(kāi)始傳送一個(gè)段時(shí),為準(zhǔn)備重傳而首先將該段插入到發(fā)送隊(duì)列之中,同時(shí)啟動(dòng)時(shí)鐘。其后,如果收到了該段的ACK信息,就將該段從隊(duì)列中刪去。如果在時(shí)鐘規(guī)定的時(shí)間內(nèi)ACK未返回,那么就再次送出這一個(gè)段。TCP中的ACK應(yīng)答并不保證數(shù)據(jù)已到達(dá)對(duì)方的用戶進(jìn)程,它僅僅是對(duì)TCP模塊收到信息的確認(rèn)。43中科院研究生院授課教師:魯士文200.1TCP的基本概念在TCP的連接中,數(shù)據(jù)“流”必須6.2.1TCP的基本概念為控制流量,TCP模塊間通信采用了窗口機(jī)制。這里,窗口是接收方接收字節(jié)數(shù)量能力的表示。在ACK應(yīng)答信息中,TCP把ACK加上接收方允許接收數(shù)據(jù)范圍的信息回送給發(fā)送方。發(fā)送方除非以后又收到來(lái)自接收方的最大數(shù)據(jù)允許接收范圍信息,否則總是使用由接收方提供的這一范圍發(fā)送數(shù)據(jù)。TCP為實(shí)現(xiàn)多路復(fù)用使用了端口號(hào)。因?yàn)槎丝谔?hào)是在各個(gè)TCP實(shí)體上獨(dú)立使用的,因此從網(wǎng)絡(luò)整體看來(lái),端口號(hào)并非具有唯一性的標(biāo)識(shí)符。構(gòu)造套接號(hào)后,網(wǎng)絡(luò)上具有唯一性的IP地址和端口號(hào)結(jié)合在一起,才構(gòu)成唯一能識(shí)別的標(biāo)識(shí)符。44中科院研究生院授課教師:魯士文200.1TCP的基本概念為控制流量,TCP模塊間通信采用6.2.1TCP的基本概念一個(gè)TCP連接由通信雙方的套接號(hào)確定。而且,套接號(hào)為通信雙方的輸入和輸出所用,因而是全雙工的。從TCP的規(guī)定來(lái)看,端口與任何進(jìn)程可自由進(jìn)行連接,這是實(shí)現(xiàn)TCP的各操作系統(tǒng)環(huán)境自己的事情。不過(guò)還是有一些基本的約定。例如,對(duì)一些公共的服務(wù)統(tǒng)一規(guī)定使用固定的端口號(hào),稱為周知口。規(guī)范指定,小于256的端口號(hào)用于周知口,其余的編號(hào)留給操作系統(tǒng)分配,用于其它任意程序。45中科院研究生院授課教師:魯士文200.1TCP的基本概念一個(gè)TCP連接由通信雙方的套接號(hào)6.2.1TCP的基本概念在調(diào)用TCP的OPEN來(lái)建立連接時(shí),應(yīng)將自己的端口號(hào)和對(duì)方的套接號(hào)作為參數(shù)指定。TCP模塊返回為標(biāo)識(shí)這條連接在本地使用的名字。為了使用已連接好的套接號(hào),必須保存一些相關(guān)的信息。為此,構(gòu)造一個(gè)稱之為傳輸控制塊(TCB)的數(shù)據(jù)區(qū),并將本地使用的標(biāo)識(shí)該連接的名字作為指向這個(gè)TCB數(shù)據(jù)區(qū)的指針。此外,在OPEN中還需指定連接是主動(dòng)進(jìn)行的還是被動(dòng)進(jìn)行的。在被動(dòng)的OPEN請(qǐng)求中,進(jìn)程不能從自己發(fā)起連接,只能接受外來(lái)的連接請(qǐng)求。對(duì)于被動(dòng)的OPEN而言,必須能接受來(lái)自任何進(jìn)程的連接請(qǐng)求。在這種情況下,由于不必指明對(duì)方的套接號(hào),故將目標(biāo)方套接號(hào)這一參數(shù)域全部置成0。這樣的用法只能在被動(dòng)的OPEN請(qǐng)求中使用。這種被動(dòng)OPEN請(qǐng)求,可以用于形成為接收來(lái)自各方用戶請(qǐng)求而提供服務(wù)的套接號(hào)。當(dāng)然,在采用被動(dòng)OPEN請(qǐng)求的情形下,即使指定了對(duì)方的套接號(hào),也沒(méi)有什么關(guān)系。46中科院研究生院授課教師:魯士文200.1TCP的基本概念在調(diào)用TCP的OPEN來(lái)建立連接6.2.1TCP的基本概念在網(wǎng)絡(luò)虛擬終端Telnet服務(wù)器和文件傳送、遠(yuǎn)程作業(yè)訪問(wèn)等般應(yīng)用服務(wù)的情況下,往往需要預(yù)先定義一些端口號(hào)。在UNIX4BSD中,服務(wù)和端口號(hào)的對(duì)應(yīng)關(guān)系可以從/etc/services文件中以對(duì)照表的形式查到。執(zhí)行被動(dòng)OPEN的進(jìn)程等待來(lái)自主動(dòng)OPEN的請(qǐng)求,而且即使雙方同時(shí)使用主動(dòng)的OPEN進(jìn)行連接,也能保證最終連接順利建成。這種連接的靈活性,在一些非同步的分布式環(huán)境中十分有用。

47中科院研究生院授課教師:魯士文200.1TCP的基本概念在網(wǎng)絡(luò)虛擬終端Telnet服務(wù)器6.2.1TCP的基本概念在已經(jīng)建立起來(lái)的連接上的數(shù)據(jù)傳輸,可以看成是字節(jié)“流”的運(yùn)動(dòng)。發(fā)送方用戶每當(dāng)用SEND函數(shù)發(fā)送數(shù)據(jù)時(shí),為了使它盡快到達(dá)接收方,可以使用PUSH標(biāo)志。對(duì)于發(fā)送方的TCP來(lái)說(shuō),當(dāng)它接收到PUSH標(biāo)志時(shí),就立即將其發(fā)送隊(duì)列中準(zhǔn)備發(fā)送的數(shù)據(jù)全部發(fā)出。對(duì)于接收方的TCP來(lái)說(shuō),一旦收到PUSH信號(hào),它就不再等待后續(xù)到來(lái)的數(shù)據(jù),而直接轉(zhuǎn)向接收數(shù)據(jù)的接收進(jìn)程。寫(xiě)入一個(gè)TCP報(bào)文段中的數(shù)據(jù)是一次或多次SEND調(diào)用的結(jié)果。PUSH的功能和TCP/用戶接口間交換數(shù)據(jù)的緩沖區(qū)的使用有關(guān)。假如收到了PUSH標(biāo)志,TCP模塊就不管該數(shù)據(jù)區(qū)是否裝滿,立即將數(shù)據(jù)發(fā)送出去。相反,未收到PUSH標(biāo)志時(shí),只有在用戶緩沖區(qū)已用完的情況下,才會(huì)向接收方發(fā)送數(shù)據(jù)。

48中科院研究生院授課教師:魯士文200.1TCP的基本概念在已經(jīng)建立起來(lái)的連接上的數(shù)據(jù)傳輸6.2.1TCP的基本概念PUSH標(biāo)志迫使TCP盡快將數(shù)據(jù)發(fā)送出去,而不必等待后續(xù)數(shù)據(jù)的到來(lái)。一個(gè)使用PUSH的典型例子是:假如有一臺(tái)虛終端,它以網(wǎng)絡(luò)上另一臺(tái)主機(jī)作為其服務(wù)器,則該終端一般會(huì)在每一行輸入回車換行時(shí)發(fā)送PUSH標(biāo)志。從而與服務(wù)器取得聯(lián)系。TCP還定義了通知接收方有緊急數(shù)據(jù)到達(dá)的服務(wù)。但是,對(duì)接收到的緊急數(shù)據(jù)如何進(jìn)行處理,在TCP中并沒(méi)有規(guī)定。一般推薦接收方盡快作出處理。

49中科院研究生院授課教師:魯士文200.1TCP的基本概念PUSH標(biāo)志迫使TCP盡快將數(shù)據(jù)6.2.2 TCP報(bào)文段的格式

TCP軟件在兩臺(tái)計(jì)算機(jī)之間傳輸?shù)臄?shù)據(jù)單元稱為報(bào)文段。報(bào)文段交換涉及到建立連接、傳輸數(shù)據(jù)、發(fā)送確認(rèn)、通知窗口尺寸,直到關(guān)閉連接。由于TCP使用捎帶技巧,一個(gè)從機(jī)器A傳往機(jī)器B的確認(rèn)可能跟從機(jī)器A發(fā)給機(jī)器B的數(shù)據(jù)在同一個(gè)報(bào)文段中傳輸,但這個(gè)確認(rèn)的對(duì)象是從機(jī)器B到機(jī)器A的數(shù)據(jù)。圖6-5示出TCP報(bào)文段(segment)的格式,前面是TCP頭,后面是數(shù)據(jù)。報(bào)文段既可以用來(lái)建立連接,也可以運(yùn)載數(shù)據(jù)和應(yīng)答。

50中科院研究生院授課教師:魯士文200.2 TCP報(bào)文段的格式TCP軟件在兩臺(tái)計(jì)算機(jī)之間6.2.2 TCP報(bào)文段的格式

51中科院研究生院授課教師:魯士文200.2 TCP報(bào)文段的格式51中科院研究生院6.2.2 TCP報(bào)文段的格式每個(gè)報(bào)文段分為兩部分,前面是TCP頭,后面是數(shù)據(jù)。在TCP頭中的SOURCEPORT(源端口)段和DESTINATIONPORT(目標(biāo)端口)段各包含一個(gè)TCP的端口號(hào),分別標(biāo)識(shí)連接兩端的兩個(gè)應(yīng)用程序。而SEQUENCENUMBER(序列號(hào))標(biāo)識(shí)本報(bào)文段中的數(shù)據(jù)在發(fā)送者字節(jié)流中的位置。ACKNOWLEDGEMENTNUMBER(確認(rèn)號(hào))標(biāo)識(shí)本報(bào)文段的源發(fā)方下一個(gè)期待接收的字節(jié)的編號(hào)。注意,序列號(hào)是指與本數(shù)據(jù)報(bào)文段同向流動(dòng)的數(shù)據(jù)流,而確認(rèn)號(hào)是指與本數(shù)據(jù)報(bào)文段反向流動(dòng)的數(shù)據(jù)流。

52中科院研究生院授課教師:魯士文200.2 TCP報(bào)文段的格式每個(gè)報(bào)文段分為兩部分,前面是6.2.2 TCP報(bào)文段的格式偏移(offset)段包含一個(gè)整數(shù),指明報(bào)文段頭的長(zhǎng)度,單位是32位。需要這個(gè)段是因?yàn)闉轭^中的任選項(xiàng)段長(zhǎng)度可變,視包括哪些選項(xiàng)而定。因此,這個(gè)TCP報(bào)頭的長(zhǎng)度隨所選的選項(xiàng)而變化。標(biāo)有保留(RESERVED)的段為6位,留給將來(lái)使用。有的報(bào)文段只載送應(yīng)答,而另外的報(bào)文段載送數(shù)據(jù)。還有的報(bào)文段請(qǐng)求建立或關(guān)斷一條連接。TCP軟件使用標(biāo)有編碼位的6位段確定報(bào)文段的目的與內(nèi)容。這6位解釋報(bào)文段頭中的其它段(見(jiàn)表6-1)53中科院研究生院授課教師:魯士文200.2 TCP報(bào)文段的格式偏移(offset)段包含一6.2.2 TCP報(bào)文段的格式

54中科院研究生院授課教師:魯士文200.2 TCP報(bào)文段的格式54中科院研究生院授6.2.2 TCP報(bào)文段的格式TCP軟件每次發(fā)送一個(gè)報(bào)文段時(shí),通過(guò)在窗口段中指定它的緩沖區(qū)大小通告它愿意接收多少數(shù)據(jù)。該段包含一個(gè)網(wǎng)絡(luò)標(biāo)準(zhǔn)字節(jié)順序表示的32位無(wú)符號(hào)整數(shù)。窗口通告給出了稍帶機(jī)制的又一個(gè)例子,因?yàn)樗鼈儼殡S所有的TCP報(bào)文段,既包括那些運(yùn)載數(shù)據(jù)的報(bào)文段,也包括那些僅運(yùn)載應(yīng)答確認(rèn)的報(bào)文段。

55中科院研究生院授課教師:魯士文200.2 TCP報(bào)文段的格式TCP軟件每次發(fā)送一個(gè)報(bào)文段6.2.2 TCP報(bào)文段的格式盡管TCP是面向流的協(xié)議,但有時(shí)候處在連接的一端的程序也需要立即發(fā)送帶外數(shù)據(jù),而不用等待連接的另一端上的程序消耗完數(shù)數(shù)據(jù)流中正傳輸?shù)臄?shù)據(jù)。例如,當(dāng)使用TCP進(jìn)行遠(yuǎn)程登錄會(huì)話時(shí),用戶可能決定發(fā)送一個(gè)鍵盤序列,去中斷或終止在另一端的程序。當(dāng)遠(yuǎn)方機(jī)器上的程序運(yùn)行不正確時(shí)常常需要這樣的信號(hào)。發(fā)送這樣的信號(hào)就不能等待另一端的程序讀取完已經(jīng)處在TCP流中的所有字節(jié),否則你就不可能中斷已經(jīng)停止讀取輸入的程序。

56中科院研究生院授課教師:魯士文200.2 TCP報(bào)文段的格式盡管TCP是面向流的協(xié)議,但6.2.2 TCP報(bào)文段的格式為了提供帶外信令,TCP允許發(fā)送者把數(shù)據(jù)指定成是緊急的,意味著接收程序應(yīng)被盡可能快地通知緊急數(shù)據(jù)到達(dá),而不管緊急數(shù)據(jù)處在流中什么位置。當(dāng)發(fā)現(xiàn)緊急數(shù)據(jù)時(shí),接收方的TCP便通知與連接相關(guān)的應(yīng)用程序進(jìn)入“緊急”方式。在所有緊急數(shù)據(jù)都被消耗完畢之后,TCP又告訴應(yīng)用程序返回正常運(yùn)行方式。當(dāng)在一個(gè)報(bào)文段中發(fā)送緊急數(shù)據(jù)時(shí)用以標(biāo)志緊急數(shù)據(jù)的機(jī)制由CODE段中的URG位和緊急指針段組成。當(dāng)URG位置1時(shí),緊急指針(URGENTPOINTER)指出窗口中緊急數(shù)據(jù)結(jié)束的位置。緊急指針的值是從序列號(hào)段值開(kāi)始算起的數(shù)據(jù)段中的正偏移。將緊急指針值與序列號(hào)相加就得到最后一個(gè)緊急數(shù)據(jù)字節(jié)的編號(hào)。

57中科院研究生院授課教師:魯士文200.2 TCP報(bào)文段的格式為了提供帶外信令,TCP允許6.2.2 TCP報(bào)文段的格式TCP頭中的任選項(xiàng)(OPTIONS)段用以處理其它各種情況。目前被正式使用的任選項(xiàng)可用于定義通信過(guò)程中最大報(bào)文段長(zhǎng),它只能在連接之時(shí)使用。任選項(xiàng)可分成兩種類型:①僅表示任選項(xiàng)類型的1個(gè)字節(jié)的任選項(xiàng)。②表示任選項(xiàng)類型的1個(gè)字節(jié)、表示任選項(xiàng)長(zhǎng)度的1個(gè)字節(jié)及實(shí)際的任選項(xiàng)內(nèi)容等三部分構(gòu)成的任選項(xiàng)。任選項(xiàng)的長(zhǎng)度指任選項(xiàng)真正內(nèi)容的字節(jié)數(shù),加上表示任選項(xiàng)種類的1個(gè)字節(jié)及表示任選項(xiàng)長(zhǎng)度的1個(gè)字節(jié)。任選項(xiàng)的長(zhǎng)度是可變的,我們只要求它以字節(jié)為單位,因此有可能不一定是32位的整數(shù)倍。在不是32位的整數(shù)倍的情況下,為使任選項(xiàng)長(zhǎng)度成為32位整數(shù)倍,可在表示任選項(xiàng)的結(jié)束的任選項(xiàng)后面填充一些位(PADDING)來(lái)滿足要求。

58中科院研究生院授課教師:魯士文200.2 TCP報(bào)文段的格式TCP頭中的任選項(xiàng)(OPTI6.2.2 TCP報(bào)文段的格式

----任選項(xiàng)在所有TCP軟件的實(shí)現(xiàn)中,都應(yīng)該支持所有的任選項(xiàng)。目前使用的任選項(xiàng)定義有:

(1)

任選項(xiàng)結(jié)束內(nèi)容:00000000類型:0表示任選項(xiàng)結(jié)束。在任選項(xiàng)結(jié)束位置與TCP包頭結(jié)束位置不一致時(shí)使用。

59中科院研究生院授課教師:魯士文200.2 TCP報(bào)文段的格式

----6.2.2 TCP報(bào)文段的格式

----任選項(xiàng)(2)

NOP內(nèi)容:00000001類型:1該任選項(xiàng)可出現(xiàn)在任選項(xiàng)域中的任何位置,為使任選項(xiàng)為32位的整數(shù)倍,可利用它來(lái)填充。(3)最大段長(zhǎng)度內(nèi)容:0000001000000100<2字節(jié)表示的最大 段長(zhǎng)度>類型:2;長(zhǎng)度:460中科院研究生院授課教師:魯士文200.2 TCP報(bào)文段的格式

----6.2.2 TCP報(bào)文段的格式TCP頭中的CHECKSUM(檢驗(yàn)和)用于頭和數(shù)據(jù)中的所有16位字。檢驗(yàn)和也覆蓋了在概念上附加在TCP包頭前的偽頭,該偽頭(參見(jiàn)圖6-6)含有源地址、目標(biāo)地址、協(xié)議標(biāo)識(shí)符和TCP段長(zhǎng)。61中科院研究生院授課教師:魯士文200.2 TCP報(bào)文段的格式TCP頭中的CHECKSUM6.2.2 TCP報(bào)文段的格式在偽頭內(nèi),標(biāo)有發(fā)送方IP地址和接收方IP地址的段分別包含報(bào)源互連網(wǎng)地址和報(bào)宿互連網(wǎng)地址。這兩個(gè)地址在發(fā)送TCP報(bào)文段時(shí)都要用到。協(xié)議標(biāo)識(shí)符段包含IP分組的協(xié)議類型碼,對(duì)于TCP是6(對(duì)于UDP應(yīng)該是17),標(biāo)明TCP長(zhǎng)度的段含有報(bào)文段長(zhǎng)度(不包括偽頭)。為了計(jì)算檢驗(yàn)和,TCP把偽頭加到TCP報(bào)文段上,再對(duì)全部?jī)?nèi)容(包括偽頭,TCP報(bào)文段頭及用戶數(shù)據(jù))求出16位的反碼之和,檢驗(yàn)和的初始值設(shè)成0,然后每?jī)蓚€(gè)字節(jié)為1個(gè)單位相加,若相加的結(jié)果有進(jìn)位,那么將和加1。如此反復(fù),直到全部?jī)?nèi)容都相加完為止。將最后的和值對(duì)1求補(bǔ),即取二進(jìn)制反碼,便得到16位的檢驗(yàn)和。62中科院研究生院授課教師:魯士文200.2 TCP報(bào)文段的格式在偽頭內(nèi),標(biāo)有發(fā)送方IP地址6.2.3 TCP連接的建立、拆除和重置要建立一條連接,TCP要使用3次握手動(dòng)作,如圖6-7所示,進(jìn)行連接建立的TCP雙方通過(guò)交換3個(gè)報(bào)文段來(lái)同步順序號(hào)。握手中的第1個(gè)報(bào)文段可以被識(shí)別,因?yàn)樗谄銫ODE段中有SYN位置1。第2個(gè)報(bào)文段將SYN位和ACK位都置成1,表明它應(yīng)答第1個(gè)SYN同時(shí)繼續(xù)握手過(guò)程,最后一個(gè)握手報(bào)文段僅僅是一個(gè)應(yīng)答,只是用以通知目的地雙方一致認(rèn)為連接已經(jīng)建立。通常,一臺(tái)機(jī)器上的TCP軟件被動(dòng)地等待握手,另一臺(tái)機(jī)器上的TCP軟件發(fā)起連接過(guò)程。握手過(guò)程設(shè)計(jì)得很周到,使得即使在雙方機(jī)器試圖同時(shí)啟動(dòng)連接的情況下也能正常工作。因此,連接的建立可以從任一端起始或者從兩端同時(shí)啟動(dòng)。一旦連接建成了,數(shù)據(jù)就可以同等地在兩個(gè)方向上流動(dòng)。這里沒(méi)有主或從的區(qū)別。63中科院研究生院授課教師:魯士文200.3 TCP連接的建立、拆除和重置要建立一條連接,TC6.2.3 TCP連接的建立、拆除和重置

64中科院研究生院授課教師:魯士文200.3 TCP連接的建立、拆除和重置64中科院研究生6.2.3 TCP連接的建立、拆除和重置3次握手對(duì)于在連接的兩端之間的正確同步既是必要的,也是充分的。由于TCP是建立在一種非可靠的分組投遞服務(wù)基礎(chǔ)上,因此信息可能被丟失、延遲、重復(fù)或投遞無(wú)序。TCP協(xié)議必須使用一種超時(shí)機(jī)制重發(fā)丟失的請(qǐng)求。如果重復(fù)的請(qǐng)求到達(dá)時(shí)連接仍在建立過(guò)程中,或者如果重傳的請(qǐng)求被延遲,直到連接被建立、使用和終止之后才到達(dá),那么都會(huì)引起故障。3次握手過(guò)程(再加上一條連接建立后TCP就忽略要求再建立這條連接的多余請(qǐng)求這一規(guī)則)正是為了解決這類問(wèn)題而建立的。

65中科院研究生院授課教師:魯士文200.3 TCP連接的建立、拆除和重置3次握手對(duì)于在連接的6.2.3 TCP連接的建立、拆除和重置3次握手完成兩個(gè)重要功能。既要雙方做好發(fā)送數(shù)據(jù)的準(zhǔn)備工作(雙方都知道彼此已準(zhǔn)備好),也要允許雙方就初始序列號(hào)進(jìn)行協(xié)商。這個(gè)序列號(hào)在握手過(guò)程中被發(fā)送與確認(rèn)。每個(gè)機(jī)器選擇一個(gè)初始順序編號(hào),這個(gè)編號(hào)在要發(fā)送的數(shù)據(jù)流中用來(lái)標(biāo)識(shí)字節(jié)。順序號(hào)不需要從1開(kāi)始。當(dāng)然雙方都同意一個(gè)初始號(hào)是重要的,這樣在確認(rèn)中所使用的字節(jié)編號(hào)與數(shù)據(jù)段中使用的字節(jié)編號(hào)就一致了。

66中科院研究生院授課教師:魯士文200.3 TCP連接的建立、拆除和重置3次握手完成兩個(gè)重要6.2.3 TCP連接的建立、拆除和重置為了弄明白機(jī)器怎樣在僅僅3個(gè)報(bào)文段之后就可商定2個(gè)數(shù)據(jù)流的順序編號(hào),我們不妨回想一下,每個(gè)數(shù)據(jù)段中既包含一個(gè)序列編號(hào)段,又包含一個(gè)確認(rèn)編號(hào)段。發(fā)起握手動(dòng)作的計(jì)算機(jī),比如A,把它的起始序號(hào)x放到3次握手中第1個(gè)SYN報(bào)文段的序列號(hào)域中,第2個(gè)計(jì)算機(jī),比如稱作B,收到這個(gè)SYN,記錄下這個(gè)順序號(hào)。B計(jì)算機(jī)還在回答中在序列號(hào)域內(nèi)給出自己的序列號(hào)以及一個(gè)確認(rèn),表明它期待字節(jié)號(hào)x+1。在握手的最后一個(gè)報(bào)文段中,A確認(rèn)從B收到了直接y的全部字節(jié)。在所有情況下,確認(rèn)都遵從使用所期望的下一個(gè)字節(jié)號(hào)這一約定(商定為x+1和y+1)

。67中科院研究生院授課教師:魯士文200.3 TCP連接的建立、拆除和重置為了弄明白機(jī)器怎樣在6.2.3 TCP連接的建立、拆除和重置我們已經(jīng)敘述了一般情況下TCP是如何通過(guò)交換含最少量信息的報(bào)文段來(lái)執(zhí)行3次握手的。正是因?yàn)檫@樣的協(xié)議設(shè)計(jì),握手報(bào)文段中隨同初始序列號(hào)發(fā)送數(shù)據(jù)是可能的。在這些情況下,TCP軟件一定要保持?jǐn)?shù)據(jù),直到握手完成。一旦建立了連接,TCP軟件就可以釋放所保持的數(shù)據(jù),并把這些數(shù)據(jù)迅速傳遞給正在等待的應(yīng)用程序。使用TCP進(jìn)行通信的兩個(gè)程序可以使用CLOSE(關(guān)斷)操作從容地終止對(duì)話。在內(nèi)部,TCP使用一種修改的3次握手關(guān)斷連接。

68中科院研究生院授課教師:魯士文200.3 TCP連接的建立、拆除和重置我們已經(jīng)敘述了一般情6.2.3 TCP連接的建立、拆除和重置TCP連接是全雙工的,因?yàn)槲覀儼逊N連接看成包含兩個(gè)獨(dú)立的流傳送,每個(gè)方向上一個(gè)。當(dāng)一個(gè)應(yīng)用程序告訴TCP它沒(méi)有更多的數(shù)據(jù)要發(fā)送時(shí),TCP將關(guān)閉在一個(gè)方向上的連接。正在發(fā)送的TCP為了關(guān)掉一條連接上的方向的那一半,把剩余數(shù)據(jù)發(fā)送完畢,等待接收方對(duì)它應(yīng)答,然后發(fā)送一個(gè)FIN位置1的報(bào)文段,接收方TCP確認(rèn)這個(gè)FIN報(bào)文段,并通知自己這一邊的應(yīng)用程序沒(méi)有更多的數(shù)據(jù)可提供(例如,使用操作系統(tǒng)的文件結(jié)束機(jī)制)。一旦一條連接關(guān)掉一個(gè)方向,TCP便拒絕再接受這個(gè)方向上的數(shù)據(jù)。同時(shí),數(shù)據(jù)可以繼續(xù)在相反方向上流動(dòng),直到發(fā)送方關(guān)掉那個(gè)方向的連接為止。當(dāng)然,即便是連接已經(jīng)關(guān)斷了,確認(rèn)還是繼續(xù)流回到發(fā)送端。當(dāng)兩個(gè)方向都已關(guān)斷時(shí),在每一端點(diǎn)上的TCP軟件便刪除各自的連接記錄。69中科院研究生院授課教師:魯士文200.3 TCP連接的建立、拆除和重置TCP連接是全雙工的6.2.3 TCP連接的建立、拆除和重置關(guān)斷連接的詳細(xì)情況比上面敘述的還要復(fù)雜一些,因?yàn)門CP是使用一種修改的3次握手去關(guān)斷連接,圖6-8示出了這個(gè)關(guān)斷過(guò)程。

70中科院研究生院授課教師:魯士文200.3 TCP連接的建立、拆除和重置關(guān)斷連接的詳細(xì)情況比6.2.3 TCP連接的建立、拆除和重置用以建立和關(guān)斷連接的3次握手之間的差別發(fā)生在機(jī)器接收到初始的FIN報(bào)文段之后,TCP不是立即產(chǎn)生第2個(gè)FIN報(bào)文段,而是發(fā)送一個(gè)應(yīng)答(ACK),然后關(guān)斷連接的請(qǐng)求通知應(yīng)用程序。將請(qǐng)求通知應(yīng)用程序并獲得響應(yīng)可能需要相當(dāng)長(zhǎng)的時(shí)間(例如,可能涉及到與人的交互作用)。上述確認(rèn)防止在等待期間重發(fā)初始的FIN報(bào)文段。最后,當(dāng)應(yīng)用程序指示TCP完全關(guān)斷連接時(shí),TCP發(fā)送第二個(gè)FIN報(bào)文段,并且源場(chǎng)點(diǎn)以第二個(gè)報(bào)文段即ACK應(yīng)答。通常,應(yīng)用程序在用完一條連接時(shí)就使用關(guān)斷操作把連接關(guān)掉。因此,關(guān)斷連接可以看成是正常使用的一部分,就像關(guān)閉文件那樣。71中科院研究生院授課教師:魯士文200.3 TCP連接的建立、拆除和重置用以建立和關(guān)斷連接的6.2.3 TCP連接的建立、拆除和重置有時(shí)候,非正常條件的出現(xiàn)會(huì)迫使應(yīng)用程序或網(wǎng)絡(luò)軟件斷開(kāi)一條連接。TCP為這樣的非正常斷連提供了一個(gè)重置設(shè)施。為重置一條連接,一側(cè)發(fā)送一個(gè)報(bào)文段,將其CODE段中的RST位置1,以此來(lái)啟動(dòng)一次終止過(guò)程。另一側(cè)立即使連接非正常中止,以此來(lái)響應(yīng)重置報(bào)文段。TCP還通知應(yīng)用程序發(fā)生了重置。重置是一種立即的非正常中止,這就意味著在兩方向上的傳遞都立即停止,像緩沖區(qū)這樣的資源也被釋放。72中科院研究生院授課教師:魯士文200.3 TCP連接的建立、拆除和重置有時(shí)候,非正常條件的6.2.4 TCP擁塞控制TCP使用滑動(dòng)窗口協(xié)議做端到端的流控制。該協(xié)議的實(shí)現(xiàn)是讓接收方在它的應(yīng)答中指定它在未來(lái)愿意接收的字節(jié)數(shù)量。通告的窗口保證接收方緩沖區(qū)將永遠(yuǎn)不會(huì)溢出,因?yàn)榘l(fā)送方發(fā)送的數(shù)據(jù)不會(huì)超過(guò)在其通告窗口中指定的數(shù)量。然而,通告窗口不能防止在中間路由器上的緩沖區(qū)產(chǎn)生溢出,也就是說(shuō)不能防止擁塞的發(fā)生。當(dāng)路由器在其緩沖區(qū)中必須處理太多的分組時(shí),路由器就會(huì)變得過(guò)載。因?yàn)镮P不提供任何控制擁塞的機(jī)制,所以它依靠高層檢測(cè)擁塞和采取應(yīng)對(duì)措施。也可以使用TCP窗口機(jī)制來(lái)控制在網(wǎng)絡(luò)中的擁塞。73中科院研究生院授課教師:魯士文200.4 TCP擁塞控制TCP使用滑動(dòng)窗口協(xié)議做端到端的6.2.4 TCP擁塞控制TCP擁塞控制的基本思想是讓每個(gè)發(fā)送方僅發(fā)送正確數(shù)量的數(shù)據(jù),保持網(wǎng)絡(luò)資源被利用但又不會(huì)被過(guò)載。如果發(fā)送方搶占資源,發(fā)送太多的分組,網(wǎng)絡(luò)將經(jīng)歷擁塞。在另一方面,如果TCP發(fā)送方太保守,網(wǎng)絡(luò)又會(huì)得不到充分利用。TCP在不會(huì)引起網(wǎng)絡(luò)擁塞的條件下,其發(fā)送方可以發(fā)送的最大字節(jié)數(shù)量是用另一個(gè)稱作擁塞窗口的窗口指定的。為了避免網(wǎng)絡(luò)擁塞和接收方緩沖區(qū)溢出,TCP發(fā)送方在任一時(shí)間可以發(fā)送的最大數(shù)據(jù)量是通告窗口和擁塞窗口中的最小值。74中科院研究生院授課教師:魯士文200.4 TCP擁塞控制TCP擁塞控制的基本思想是讓每個(gè)6.2.4 TCP擁塞控制TCP擁塞控制算法根據(jù)網(wǎng)絡(luò)狀態(tài)動(dòng)態(tài)地調(diào)節(jié)擁塞窗口。TCP擁塞控制算法的操作可以劃分成三個(gè)階段。第一階段在算法啟動(dòng)或重啟動(dòng)時(shí)運(yùn)行,并且假定管道是空的。該技術(shù)被稱作慢啟動(dòng),其執(zhí)行是首先把擁塞窗口設(shè)置成一個(gè)最大尺寸的段。每當(dāng)發(fā)送方接收到來(lái)自接收方的一個(gè)應(yīng)答時(shí),發(fā)送方把擁塞窗口增加一個(gè)段。在發(fā)出第一個(gè)段之后,如果發(fā)送方在超時(shí)之前接收到應(yīng)答,發(fā)送方就把擁塞窗口增加到兩個(gè)段。如果這兩個(gè)段被應(yīng)答,擁塞窗口增加到四個(gè)段,等等。在這一階段擁塞窗口呈指數(shù)增長(zhǎng)。指數(shù)增長(zhǎng)的原因是慢啟動(dòng)需要盡快充滿空的管道。名字“慢啟動(dòng)”也許是一個(gè)誤稱,因?yàn)樵撍惴ū┨煤芸臁?5中科院研究生院授課教師:魯士文200.4 TCP擁塞控制TCP擁塞控制算法根據(jù)網(wǎng)絡(luò)狀態(tài)動(dòng)6.2.4 TCP擁塞控制慢啟動(dòng)不會(huì)長(zhǎng)久地增加擁塞窗口,因?yàn)楣艿雷罱K將被充滿。特別地,當(dāng)擁塞窗口達(dá)到一個(gè)稱作擁塞門檻的指定值時(shí),慢啟動(dòng)停止。擁塞門檻起初被設(shè)置成65535字節(jié)。在這一點(diǎn)上擁塞避免階段取而代之。這一階段假定管道的運(yùn)行接近被充分利用。該算法減少增長(zhǎng)速率是明智的,因?yàn)檫@樣做將不會(huì)過(guò)量超出。特別地,在擁塞避免期間線性地,而不是指數(shù)地,增加擁塞窗口。其實(shí)現(xiàn)是對(duì)于每一往返時(shí)間增加擁塞窗口一個(gè)段。76中科院研究生院授課教師:魯士文200.4 TCP擁塞控制慢啟動(dòng)不會(huì)長(zhǎng)久地增加擁塞窗口,因6.2.4 TCP擁塞控制顯然,擁塞窗口不可以無(wú)限制地增加。當(dāng)TCP檢測(cè)到網(wǎng)絡(luò)擁塞的時(shí)候擁塞窗口停止增加。該算法現(xiàn)在進(jìn)入第三階段。在這一點(diǎn)上,首先把擁塞門檻設(shè)置成當(dāng)前窗口尺寸(擁塞窗口和通告窗口中的最小值,但至少兩個(gè)段)的一半。接著把擁塞窗口設(shè)置成一個(gè)最大尺寸的段。然后再使用這種慢啟動(dòng)技術(shù)重新啟動(dòng)。77中科院研究生院授課教師:魯士文200.4 TCP擁塞控制顯然,擁塞窗口不可以無(wú)限制地增加6.2.4 TCP擁塞控制TCP如何檢測(cè)網(wǎng)絡(luò)擁塞呢?當(dāng)由于段丟失在超時(shí)期滿之前應(yīng)答沒(méi)有到達(dá)時(shí),TCP就假定在網(wǎng)絡(luò)中發(fā)生了擁塞。該算法所做的基本假定是由于擁塞而不是由于差錯(cuò)引起丟失。這一假定在有線網(wǎng)絡(luò)中相當(dāng)有效,在這里傳輸錯(cuò)誤引起的段丟失百分比一般較低(小于1%)。TCP在接到重復(fù)ACK時(shí)也認(rèn)為發(fā)生了擁塞,重復(fù)ACK由段的重新排序或段丟失引起。TCP對(duì)重復(fù)ACK的反應(yīng)跟前述一樣把擁塞門檻減少到當(dāng)前窗口大小的一半。然而,此時(shí)不把擁塞窗口置成1。如果擁塞窗口小于新的擁塞門檻,那么擁塞窗口按照慢啟動(dòng)的公式增加。否則擁塞窗口按照擁塞避免的方式增加。78中科院研究生院授課教師:魯士文200.4 TCP擁塞控制TCP如何檢測(cè)網(wǎng)絡(luò)擁塞呢?當(dāng)由于6.2.4 TCP擁塞控制總之,TCP的擁塞窗口隨時(shí)間進(jìn)展呈動(dòng)態(tài)特性。作為示例,起初,慢啟動(dòng)急劇上升,直至到達(dá)擁塞門檻(比如說(shuō),16個(gè)段)。然后擁塞避免階段線性地增加窗口,直至發(fā)生超時(shí)時(shí),表明網(wǎng)絡(luò)擁塞了。此時(shí),把擁塞門檻置成10段,把擁塞窗口置成1段。然后算法再次慢啟動(dòng)。79中科院研究生院授課教師:魯士文200.4 TCP擁塞控制總之,TCP的擁塞窗口隨時(shí)間進(jìn)展6.2.5Internet傳輸協(xié)議UDPUDP(UserDatagramProtocol)采取無(wú)連接的方式提供高層協(xié)議間的事務(wù)處理服務(wù),允許它們互相發(fā)送數(shù)據(jù)報(bào)。也就是說(shuō),UDP是在計(jì)算機(jī)上規(guī)定用戶以數(shù)據(jù)報(bào)方式進(jìn)行通信的協(xié)議。UDP與IP的差別在于,IP對(duì)于系統(tǒng)管理的網(wǎng)絡(luò)軟件可以使用,一般用戶無(wú)法直接使用,而UDP是普通用戶可直接使用的,故稱為用戶數(shù)據(jù)報(bào)協(xié)議。UDP必須在IP上運(yùn)行,即它的下層協(xié)議是以IP作為前提的。既然UDP是一種無(wú)連接的數(shù)據(jù)報(bào)投遞服務(wù),它就不保證可靠投遞。它跟遠(yuǎn)方的UDP實(shí)體不建立端到端的連接。而只是將數(shù)據(jù)報(bào)送上網(wǎng)絡(luò),或者從網(wǎng)上接收數(shù)據(jù)報(bào)。UDP根據(jù)端口(Port)號(hào)對(duì)若干個(gè)應(yīng)用程序進(jìn)行多路復(fù)用,并能利用檢驗(yàn)和檢查數(shù)據(jù)的完整性。

80中科院研究生院授課教師:魯士文200.5Internet傳輸協(xié)議UDPUDP(User6.2.5Internet傳輸協(xié)議UDP與傳輸控制協(xié)議TCP類似,一臺(tái)計(jì)算機(jī)上的應(yīng)用程序和UDP的接口是UDP端口。這些端口用從0開(kāi)始的數(shù)字編號(hào),每種應(yīng)用程序都在屬于它的固定端口上等待來(lái)自其它計(jì)算機(jī)的客戶的服務(wù)請(qǐng)求。例如SNMP(簡(jiǎn)單網(wǎng)絡(luò)管理協(xié)議)服務(wù)方(又稱代理)總是在161號(hào)端口上等待遠(yuǎn)方客戶的服務(wù)請(qǐng)求。一臺(tái)計(jì)算機(jī)只能有一個(gè)SNMP代理程序,因?yàn)镾NMP服務(wù)方只能使用161這一個(gè)端口號(hào)。這個(gè)端口號(hào)是人們約定好的,它只能為SNMP服務(wù)方利用。當(dāng)某臺(tái)計(jì)算機(jī)的客戶請(qǐng)求SNMP服務(wù)時(shí),它就把請(qǐng)求發(fā)到備有這一服務(wù)的目標(biāo)計(jì)算機(jī)的161號(hào)UDP端口。81中科院研究生院授課教師:魯士文200.5Internet傳輸協(xié)議UDP與傳輸控制協(xié)議T6.2.5Internet傳輸協(xié)議UDPUDP保留應(yīng)用程序定義的報(bào)文邊界,它從不把兩個(gè)應(yīng)用報(bào)文組合在一起,也不把單個(gè)應(yīng)用報(bào)文劃分成幾個(gè)部分。也就是說(shuō),當(dāng)應(yīng)用程序把一塊數(shù)據(jù)交給UDP發(fā)送時(shí),這塊數(shù)據(jù)將作為獨(dú)立的的單元到達(dá)對(duì)方的應(yīng)用程序。例如,如果應(yīng)用程序把5個(gè)報(bào)文交給本地UDP端口發(fā)送,那么接收方的應(yīng)用程序就需要從接收方的UDP端口讀5次,而且接收方收到的每個(gè)報(bào)文的大小都和發(fā)出的大小完全一樣。

82中科院研究生院授課教師:魯士文200.5Internet傳輸協(xié)議UDPUDP保留應(yīng)用程6.2.5Internet傳輸協(xié)議UDP一個(gè)TCP/IP主機(jī)的UDP模塊必須具備產(chǎn)生和驗(yàn)證UDP檢驗(yàn)和的功能。一個(gè)應(yīng)用程序使用服務(wù)時(shí)可以選擇是否產(chǎn)生UDP檢驗(yàn)和,缺省值是需要產(chǎn)生。當(dāng)IP模塊收到一個(gè)IP分組并且發(fā)現(xiàn)該分組的頭部類型(type)段標(biāo)明為UDP時(shí),它就將其中的UDP數(shù)據(jù)報(bào)傳給UDP模塊。UDP模塊接收由IP模塊傳來(lái)的UDP數(shù)據(jù)報(bào),并檢查UDP檢驗(yàn)和。如果檢驗(yàn)和是0,就表明發(fā)送方?jīng)]有計(jì)算UDP檢驗(yàn)和。如果檢驗(yàn)和非0,并且檢證的結(jié)果不正確,則UDP模塊必須拋棄該數(shù)據(jù)報(bào)。如果檢驗(yàn)和有效(或0),UDP模塊就檢查該數(shù)據(jù)報(bào)的目標(biāo)端口號(hào),如果其端口號(hào)與本地的一個(gè)應(yīng)用程序被指定的端口號(hào)符合,就將數(shù)據(jù)報(bào)中的應(yīng)用報(bào)文放入隊(duì)列,讓那個(gè)應(yīng)用程序來(lái)讀取。83中科院研究生院授課教師:魯士文200.5Internet傳輸協(xié)議UDP一個(gè)TCP/IP6.2.5Internet傳輸協(xié)議UDP對(duì)UDP來(lái)說(shuō),不具備諸如接收保證和避免重復(fù)等有序投遞功能,故對(duì)那些要求數(shù)據(jù)必須按順序到達(dá)的應(yīng)用程序,最好采用TCP;或者用戶自己想辦法解決順序到達(dá)的問(wèn)題。例如,TFTP(TrivialFileTransferProtocol)作為文件傳送協(xié)議之一就在應(yīng)用層做這方面的工作。UDP數(shù)據(jù)報(bào)的格式如圖6-9所示。下面對(duì)各個(gè)域分別加以說(shuō)明。

84中科院研究生院授課教師:魯士文200.5Internet傳輸協(xié)議UDP對(duì)UDP來(lái)說(shuō),不6.2.5Internet傳輸協(xié)議UDP85中科院研究生院授課教師:魯士文200.5Internet傳輸協(xié)議UDP85中科院研究生6.2.5Internet傳輸協(xié)議UDP(1)UDP源端口號(hào)發(fā)送端端口號(hào)是任選項(xiàng)。該端口號(hào)若被指定,當(dāng)接收進(jìn)程返回?cái)?shù)據(jù)時(shí),這些應(yīng)用數(shù)據(jù)就不會(huì)被別人得到。不指定這個(gè)域時(shí),將其值設(shè)置為0。(2)UDP目標(biāo)端口號(hào)該端口號(hào)用以在等待數(shù)據(jù)報(bào)的進(jìn)程之間進(jìn)行多路分離,也就是具有作為接收主機(jī)內(nèi)與特定應(yīng)用進(jìn)程相關(guān)聯(lián)的地址的意義。(3)UDP報(bào)文長(zhǎng)度表示數(shù)據(jù)報(bào)頭及其后面數(shù)據(jù)的總長(zhǎng)度。最小值是8字節(jié),即UDP數(shù)據(jù)報(bào)頭長(zhǎng)度。86中科院研究生院授課教師:魯士文200.5Internet傳輸協(xié)議UDP(1)UDP源6.2.5Internet傳輸協(xié)議UDP(4)檢驗(yàn)和根據(jù)IP分組頭中的信息作出偽數(shù)據(jù)報(bào)頭,跟UDP數(shù)據(jù)報(bào)頭和數(shù)據(jù)一起進(jìn)行16位的檢驗(yàn)和計(jì)算。對(duì)數(shù)據(jù)為奇數(shù)字節(jié)的情況,增加全0字節(jié)使其成為偶數(shù)字節(jié)后再行計(jì)算。檢驗(yàn)和計(jì)算的方法與IP中所使用的相同。當(dāng)檢驗(yàn)和的結(jié)果為0時(shí),將它的所有位都置成1(對(duì)1求補(bǔ))。當(dāng)檢驗(yàn)和域的所有位都是0時(shí),對(duì)接收方而言就不再具有檢驗(yàn)和的意義,這在debug和高層協(xié)議認(rèn)為檢驗(yàn)和沒(méi)有問(wèn)題的情況下使用。偽報(bào)頭假想是放在UDP報(bào)頭前邊的,其格式如圖6-10所示(生成時(shí)間段置0)。

87中科院研究生院授課教師:魯士文200.5Internet傳輸協(xié)議UDP(4)檢驗(yàn)和876.2.5Internet傳輸協(xié)議UDP88中科院研究生院授課教師:魯士文200.5Internet傳輸協(xié)議UDP88中科院研究生6.2.5Internet傳輸協(xié)議UDP使用偽報(bào)頭的目的在于驗(yàn)證UDP數(shù)據(jù)報(bào)是否已到達(dá)它的正確報(bào)宿。領(lǐng)悟這個(gè)偽報(bào)頭的關(guān)鍵是,要認(rèn)識(shí)到正確報(bào)宿的組成包括互連網(wǎng)中一個(gè)唯一的計(jì)算機(jī)和這個(gè)計(jì)算機(jī)上唯一的協(xié)議端口。UDP報(bào)頭本身只是確定了協(xié)議端口的編號(hào)。因而,為驗(yàn)證報(bào)宿,發(fā)送計(jì)算機(jī)的UDP要計(jì)算一個(gè)檢驗(yàn)和,這個(gè)檢驗(yàn)和包括了報(bào)宿主機(jī)的IP地址,也包括了UDP數(shù)據(jù)報(bào)。在最終目的地,UDP軟件使用從運(yùn)載UDP報(bào)文的IP分組頭中得到的目標(biāo)IP地址驗(yàn)證檢驗(yàn)和。如果檢驗(yàn)和一致,那么數(shù)據(jù)報(bào)確實(shí)到達(dá)所希望的報(bào)宿主機(jī)和這個(gè)主機(jī)內(nèi)的正確協(xié)議口。89中科院研究生院授課教師:魯士文200.5Internet傳輸協(xié)議UDP使用偽報(bào)頭的目的6.2.5Internet傳輸協(xié)議UDP在偽報(bào)頭內(nèi)標(biāo)有發(fā)送方IP地址和接收方IP地址的段內(nèi),分別包含報(bào)源

溫馨提示

  • 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ì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論