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

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

計算機網絡1中科院研究生院授課教師:魯士文2003.12.11計算機網絡1中科院研究生

第六章傳輸層學習要點傳輸層的功能TCP/IP體系中的傳輸層協(xié)議2中科院研究生院授課教師:魯士文2003.12.11第六章傳輸層學習要點2中科院研究生院授課教師:魯第六章傳輸層6.1OSI傳輸協(xié)議6.2Internet傳輸協(xié)議 6.2.1 TCP的基本概念6.2.2 TCP報文段的格式

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

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

6.2.6Internet關于端口號的約定

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

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

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

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

12中科院研究生院授課教師:魯士文200OSI傳輸協(xié)議在連接建立后,TS用戶或傳輸服務提6.1OSI傳輸協(xié)議下面我們再考察一下無連接傳輸服務CLTS(ConnectionlessTransportService)。CLTS僅提供一個服務元素T_UNIT_DATA。T_UNIT_DATA有4個參數:源傳輸地址,目的地傳輸地址,TS用戶數據和QOS。因為沒有連接建立階段,TS用戶不可能和其服務提供者協(xié)商QOS。在這種服務方式中,無法保證可靠的數據傳輸,需要靠上層進行適當的差錯恢復。圖6-1(a)和(b)分別列出了OSI面向連接的傳輸服務原語和OSI無連接傳輸服務原語。其中的參數含義如下:callee:被呼方傳輸地址(TSAP)caller:

呼方傳輸實體使用的傳輸地址(TSAP)exp_wanted:

表明是否要發(fā)送加速數據的布爾標志。QOS:希望的服務質量。User_data:傳輸的大于等于零個字節(jié)的數據,這些數據不受檢查。Reason:事件發(fā)生的原因。Responder:連接到的目標方的傳輸地址。13中科院研究生院授課教師:魯士文200OSI傳輸協(xié)議下面我們再考察一下無連接傳輸服務C6.1OSI傳輸協(xié)議

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

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

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

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

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

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

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

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

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

-----3種類型的網絡服務(6.1OSI傳輸協(xié)議

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

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

-----3種類型的網絡服務(6.1OSI傳輸協(xié)議

--5類傳輸協(xié)議基于3種類型的網絡服務,ISO定義了5類運輸協(xié)議:·0類:簡單類·1類:基本差錯恢復類·2類:多路復用類·3類:差錯恢復與多路復用類·4類:差錯檢測與恢復類

0類和2類用于A型網絡,1類和3類用于B型網絡,4類用于C型網絡。

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

49中科院研究生院授課教師:魯士文200.1TCP的基本概念PUSH標志迫使TCP盡快將數據6.2.2 TCP報文段的格式

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

50中科院研究生院授課教師:魯士文200.2 TCP報文段的格式TCP軟件在兩臺計算機之間6.2.2 TCP報文段的格式

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

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

54中科院研究生院授課教師:魯士文200.2 TCP報文段的格式54中科院研究生院授6.2.2 TCP報文段的格式TCP軟件每次發(fā)送一個報文段時,通過在窗口段中指定它的緩沖區(qū)大小通告它愿意接收多少數據。該段包含一個網絡標準字節(jié)順序表示的32位無符號整數。窗口通告給出了稍帶機制的又一個例子,因為它們伴隨所有的TCP報文段,既包括那些運載數據的報文段,也包括那些僅運載應答確認的報文段。

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

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

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

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

----任選項在所有TCP軟件的實現中,都應該支持所有的任選項。目前使用的任選項定義有:

(1)

任選項結束內容:00000000類型:0表示任選項結束。在任選項結束位置與TCP包頭結束位置不一致時使用。

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

----6.2.2 TCP報文段的格式

----任選項(2)

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

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

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

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

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

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

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

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

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

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

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

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

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論