傳輸層的定義、功能和應(yīng)用_第1頁
傳輸層的定義、功能和應(yīng)用_第2頁
傳輸層的定義、功能和應(yīng)用_第3頁
傳輸層的定義、功能和應(yīng)用_第4頁
傳輸層的定義、功能和應(yīng)用_第5頁
已閱讀5頁,還剩64頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、傳輸層的定義、功能和應(yīng)用傳輸層是整個協(xié)議層次的核心,其任務(wù)是在源機器和目標(biāo)機器之間提供可靠的、性價比合理的數(shù)據(jù)傳輸功能,并與當(dāng)前所使用的物理網(wǎng)絡(luò)完全獨立 目錄傳輸服務(wù)傳輸協(xié)議的要素傳輸層協(xié)議 傳輸層的位置介于通信子網(wǎng)和資源子網(wǎng)之間,對高層用戶屏蔽了通信的細(xì)節(jié)彌補了通信子網(wǎng)所提供服務(wù)的差異和不足,提供端到端之間的無差錯保證傳輸層工作的簡繁取決于通信子網(wǎng)提供服務(wù)的程度圖8-1 傳輸層在OSI模型中的位置傳輸實體在傳輸層內(nèi)部,完成該項工作的硬件和(或)軟件稱為傳輸實體(Transport Entity)。傳輸實體可能在下列軟、硬件環(huán)境中:(1)操作系統(tǒng)的內(nèi)核中;(2)一個單獨的用戶進程中;(3)網(wǎng)絡(luò)

2、應(yīng)用的程序庫中;(4)網(wǎng)絡(luò)接口卡上。傳輸實體要為很多應(yīng)用程序服務(wù),所以對每一個應(yīng)用程序在傳輸層都有一個標(biāo)識,這個標(biāo)識就叫做傳輸?shù)刂贰?傳輸層提供的傳輸服務(wù)圖8-2 網(wǎng)絡(luò)層、傳輸層和應(yīng)用層 傳輸層提供的傳輸服務(wù)面向連接的服務(wù):通信可靠對數(shù)據(jù)有校驗和重發(fā)面向非連接的服務(wù):對數(shù)據(jù)無校驗和重發(fā),通信速率高傳輸服務(wù)原語傳輸服務(wù)原語是應(yīng)用程序和傳輸服務(wù)之間的接口TPDU 傳輸協(xié)議數(shù)據(jù)單元TPDU的發(fā)送過程 圖8-3 TPDU、分組和幀的嵌套關(guān)系 伯克利套接字(Berkeley Socket) Socket Programming Example:Internet Client code using soc

3、kets.6-6-1Socket Programming Example:Internet (2)Server code using sockets.典型的套接字應(yīng)用過程圖8-4 典型的套接字應(yīng)用過程 傳輸協(xié)議的要素尋址連接建立釋放連接流量控制和緩沖策略多路復(fù)用崩潰的恢復(fù)尋址兩個程序要建立連接時必須指明對方是哪一個應(yīng)用程序,這個標(biāo)記稱為傳輸層地址,也稱為傳輸服務(wù)訪問點TSAP 在TCP協(xié)議中即TCP的端口號 網(wǎng)絡(luò)層地址稱為網(wǎng)絡(luò)服務(wù)訪問點NSAP(Network Service Access Point)在IP協(xié)議中即IP地址TSAP & NSAP圖8-5 TSAP、NSAP和連接 如何知道對方

4、的TSAP 初始連接協(xié)議,由進程服務(wù)器代理轉(zhuǎn)接多種不同的服務(wù)請求圖8-6 主機1的用戶進程如何與主機2的時間服務(wù)器建立連接 連接建立連接的建立:需要解決網(wǎng)絡(luò)上的延遲與丟失引起的重復(fù)分組常用的方法:三次握手三次握手 CR=CONNECTION REQUEST. (a) 正常的連接建立過程 (b)由于延遲而重復(fù)的TPDU的連接過程 (c) 過期的CONNECTION REQUEST 和過期的 ACK都出現(xiàn)釋放連接非對稱釋放一方中止連接則連接即告中斷對稱釋放A提出中止請求,B同意即中止非對稱釋放突然釋放連接將造成數(shù)據(jù)丟失對稱釋放a) 三次握手釋放連接b) 最后的確認(rèn)丟失,定時器超時自動放棄連接對稱釋

5、放(2)c) 應(yīng)答丟失,發(fā)送端重發(fā)DRd) 應(yīng)答丟失,重發(fā)的DR也丟失消除半接通連接的方法當(dāng)?shù)谝粋€DR和所有N次重發(fā)都丟失的情況下,協(xié)議失敗解決方法:如果在一段時間內(nèi)沒有收到任何TPDU,連接便自動釋放。需要設(shè)定時器,定時發(fā)送偽TPDU以保持連接如連續(xù)丟失很多偽TPDU,釋放連接流量控制和緩沖策略流量控制是發(fā)送方和接收方之間的傳輸速率上的匹配為使沒有得到確認(rèn)的TPDU在超時后的重發(fā),通常必須在緩沖區(qū)中暫存流量控制和緩沖策略舉例 圖8-10 利用滑動窗口機制進行流量控制舉例 必須考慮傳輸速率 應(yīng)用進程把數(shù)據(jù)傳送到TCP的發(fā)送緩存后,就由TCP來控制發(fā)送任務(wù)。可以用不同的機制來控制TCP報文段的發(fā)

6、送時機。例如:1)TCP維持一個變量,它等于最大報文段長度MSS。只要緩存中存放的數(shù)據(jù)達到MSS字節(jié)時,就組裝成一個TCP報文段發(fā)送出去。2)由發(fā)送方的應(yīng)用進程指明要求發(fā)送報文段,即TCP支持的推送( push )操作。3)發(fā)送方的一個計時器期限到了,這時就把已有的緩存數(shù)據(jù)裝入報文段(但長度不能超過MSS)發(fā)送出去。 Nagle算法描述如下:若發(fā)送應(yīng)用進程把要發(fā)送的數(shù)據(jù)逐個字節(jié)地送到TCP的發(fā)送緩存,則發(fā)送方就把第一個數(shù)據(jù)字節(jié)先發(fā)送出去,把后面到達的數(shù)據(jù)字節(jié)都緩存起來。當(dāng)發(fā)送方接收對第一個數(shù)據(jù)字符的確認(rèn)后,再把發(fā)送緩存中的所有數(shù)據(jù)組裝成一個報文段再發(fā)送出去,同時繼續(xù)對隨后到達的數(shù)據(jù)進行緩存。只

7、有在收到對前一個報文段的確認(rèn)后才繼續(xù)發(fā)送下一個報文段。當(dāng)數(shù)據(jù)到達較快而網(wǎng)絡(luò)速率較慢時,用這樣的方法可明顯地減少所用的網(wǎng)絡(luò)帶寬。Nagle算法還規(guī)定:當(dāng)?shù)竭_的數(shù)據(jù)已達到發(fā)送窗口大小的一半或已達到報文段的最大長度時,就立即發(fā)送一個報文段。 糊涂窗口綜合癥如:TCP接收方的緩存已滿,而交互式的應(yīng)用進程一次只從接收緩存中讀取1字節(jié)(這樣就使接收緩存空間僅騰出1字節(jié)),然后向發(fā)送方發(fā)送確認(rèn),并把窗口設(shè)置為1個字節(jié)(但發(fā)送的數(shù)據(jù)報為40字節(jié))。接著,發(fā)送方又發(fā)來1個字節(jié)的數(shù)據(jù)(發(fā)送方的IP數(shù)據(jù)報是41字節(jié))。接收方發(fā)回確認(rèn),仍然將窗口設(shè)置為1個字節(jié)。這樣,網(wǎng)絡(luò)的效率很低。 糊涂窗口綜合癥要解決這個問題,可

8、讓接收方等待一段時間,使得或者接收緩存已有足夠空間容納一個最長的報文段,或者等到接收方緩存已有一半空閑的空間。只要出現(xiàn)這兩種情況之一,接收方就發(fā)回確認(rèn)報文,并向發(fā)送方通知當(dāng)前的窗口大小。此外,發(fā)送方也不要發(fā)送太小的報文段,而是把數(shù)據(jù)報積累成足夠大的報文段,或達到接收方緩存的空間的一半大小。 多路復(fù)用向上多路復(fù)用:多個傳輸層的連接公用一個網(wǎng)絡(luò)層的連接,將提高網(wǎng)絡(luò)層連接的利用率向下多路復(fù)用:一個傳輸層的連接通過多個網(wǎng)絡(luò)層連接來發(fā)送,可增加其有效帶寬傳送,速率將得到提高崩潰的恢復(fù)(1)網(wǎng)絡(luò)崩潰的恢復(fù)1)數(shù)據(jù)報子網(wǎng)數(shù)據(jù)報子網(wǎng)是不可靠的,在傳輸層有一個緩沖區(qū)用來保存所有已發(fā)送的但還沒收到確認(rèn)的數(shù)據(jù)。如果

9、傳輸層對丟失的TPDU留有副本,可以通過重發(fā)來解決。2)虛電路子網(wǎng)虛電路子網(wǎng)不保存發(fā)送數(shù)據(jù)的副本,在網(wǎng)絡(luò)恢復(fù)后重新建立連接,并詢問遠(yuǎn)端的傳輸實體哪些TPDU已經(jīng)收到(只需知道最后收到的數(shù)據(jù)的序號就可以知道接收方哪些數(shù)據(jù)收到了,哪些沒有收到),沒有收到的則必須重發(fā)。主機崩潰的恢復(fù)服務(wù)器崩潰然后很快重新起動,所有連接登記表都已經(jīng)初始化重新連接后客戶端可能處于兩種狀態(tài)之一S1有一個未被確認(rèn)的TPDUS0沒有未被確認(rèn)的TPDU 在一般情況下,遠(yuǎn)端服務(wù)器的傳輸實體在接收到一個客戶端的TPDU后先發(fā)送一個確認(rèn),當(dāng)確認(rèn)發(fā)生后又對應(yīng)用進程執(zhí)行一個寫操作,如存盤或交上層,向輸出流寫一個TPDU和發(fā)送一個確認(rèn)是兩

10、個不同的而又不可分的事件,但兩者不能同時進行確認(rèn)和寫操作的問題發(fā)送確認(rèn)然后再進行寫操作,中間發(fā)生崩潰此時客戶端將收到這個確認(rèn),當(dāng)崩潰恢復(fù)聲明到達時,它處于狀態(tài)S0,客戶端將因此不再重發(fā),因為它錯以為那個TPDU已經(jīng)到達服務(wù)器端,客戶端的這種決定會導(dǎo)致丟失一個TPDU先進行寫操作然后再發(fā)送確認(rèn),中間發(fā)生崩潰設(shè)想已經(jīng)完成了寫操作,但在確認(rèn)發(fā)出前系統(tǒng)發(fā)生了崩潰,此時客戶端將處于狀態(tài)S1,并因此重傳數(shù)據(jù),從而會導(dǎo)致在服務(wù)器應(yīng)用進程的輸出流上出現(xiàn)一個無法檢測的重復(fù)的TPDU無論怎樣對發(fā)送方和接收方的協(xié)議進行編程,總是存在協(xié)議不能正確地從故障中恢復(fù)的情況傳輸層無法徹底解決該問題將由高一層協(xié)議處理傳輸層協(xié)議

11、TCP和UDP都是Internet提供的傳輸層協(xié)議TCP(RFC 793)是面向連接的UDP(RFC 768)是面向非連接的TCP協(xié)議是面向連接的傳輸層協(xié)議,其數(shù)據(jù)段的傳輸不會發(fā)生丟失、重復(fù)、亂序等情況,是提供可靠性傳輸?shù)膮f(xié)議,所以其協(xié)議開銷也較大UDP協(xié)議是無連接的數(shù)據(jù)報協(xié)議,它不提供可靠性服務(wù),但其相應(yīng)的協(xié)議開銷也較小,效率較高UDP的主要特點 1)UDP是無連接的傳輸層協(xié)議 2)UDP是面向報文的 3)UDP沒有擁塞控制4)UDP使用盡最大努力交付5)UDP支持一對一、一對多、多對一和多對多的交互通信 6)UDP的首部開銷小,只有8個字節(jié),比TCP的20個字節(jié)的首部要短 UDP報文格式U

12、DP源端口:UDP端口號,當(dāng)不需要返回數(shù)據(jù)時源端口域置0UDP目的端口:UDP端口號UDP長度:整個數(shù)據(jù)段的長度包括頭部和數(shù)據(jù)部分,以字節(jié)計,最小值為8,僅頭部長度UDP校驗和:可選域全0為未選,全1表示校驗和為0UDP 的封裝與協(xié)議的分層 應(yīng)用層UDPTCPIP與各種網(wǎng)絡(luò)接口圖8-12 分層模型中的 UDP 層 UDP 的封裝與協(xié)議的分層 圖8-13 UDP 的封裝UDP頭部UDP數(shù)據(jù)區(qū)IP頭部IP數(shù)據(jù)區(qū)UDP 的復(fù)用、分解與端口 圖8-14 UDP的分解操作 RPC(Remote Procedure Call,遠(yuǎn)過程調(diào)用) RPC是UDP的一個重要應(yīng)用,它對程序員屏蔽了網(wǎng)絡(luò)運作的細(xì)節(jié)。RP

13、C的思想是盡可能地使一個遠(yuǎn)過程調(diào)用看起來像本地過程調(diào)用一樣。將網(wǎng)絡(luò)中的請求-應(yīng)答交互表示成過程調(diào)用形式,例如:調(diào)用get-IP-address(主機名)將發(fā)送一個UDP包給DNS服務(wù)器,并等待回答。 RTP(Real-Time Transport Protocol,實時傳輸協(xié)議) UDP的另一個重要應(yīng)用是多媒體數(shù)據(jù)的傳輸,RTP是專門用于多媒體傳輸?shù)囊粋€協(xié)議,它基于UDP協(xié)議。RTP被放在用戶空間中,并且通常運行在UDP之上。它的操作方式如下:多媒體應(yīng)用通常包含多個音頻、視頻、文字流、可能還包括其他的流。這些流被送入到RTP庫中,而RTP庫位于多媒體應(yīng)用的用戶空間中。然后,這些RTP分組被填充

14、到一個套接字中。在套接字的另一端生成UDP分組,這些UDP分組被嵌入到IP分組中。如果當(dāng)前計算機是在以太網(wǎng)上,則這些IP分組被放到以太網(wǎng)幀中以便傳輸出去。 RTP(Real-Time Transport Protocol,實時傳輸協(xié)議) 圖8-15 RTP在協(xié)議棧中的位置 RTP(Real-Time Transport Protocol,實時傳輸協(xié)議) 圖8-16 分組的嵌套情況 RTP凈荷UDP凈荷IP凈荷以太網(wǎng)凈荷以太網(wǎng)頭 IP頭 UDP頭 RTP頭RTP頭的結(jié)構(gòu) TCP提供的服務(wù)面向連接(Connection Orientation)端到端的服務(wù)(End-to-End Communica

15、tion)完全可靠性服務(wù)(Complete Reliability)全雙工服務(wù)(Full Duplex Communication)流接口(Stream Interface)可靠的連接建立(Reliable Connection Startup)完美的連接終止(Graceful Connection Shutdown)TCP 提供的可靠傳輸服務(wù)有如下五個特征1)面向字節(jié)流 2)虛電路連接3)有緩沖的傳輸 4)全雙工連接5)點對點的傳輸滑動窗口概念 圖8-18 帶重傳功能的肯定確認(rèn)協(xié)議 圖8-19 分組丟失引起超時和重傳 滑動窗口概念 圖 8-20 (a) 窗口內(nèi)包括 8 個分組的滑動窗口協(xié)議

16、(b) 收到對 1 號分組的確認(rèn)信息后,窗口滑動,使得 9 號分組也能被發(fā)送 滑動窗口概念 圖 8-21 使用窗口大小為 3 的滑動窗口協(xié)議傳輸分組示例 TCP 報文格式 0 1516 31源端口( source port )號 目的端口( destination port )號 順序號( sequence number ) 確認(rèn)號( acknowledgement number ) TCP報頭長度 保留 URGACK PSHRSTSYN FIN窗口大小( window size ) 校驗和( checksum ) 緊急指針( urgent pointer ) 可選項( 0 或多個 32 位字

17、) 數(shù)據(jù)( 0 或多個字節(jié)) TCP 連接建立與關(guān)閉 圖8-23 TCP建立連接的三次握手報文序列 TCP 連接建立與關(guān)閉 圖8-24 用于TCP關(guān)閉連接的修改的三次握手報文序列 TCP 連接建立與關(guān)閉從一方的 TCP 來說,連接的關(guān)閉有三種情況: 1)本方啟動關(guān)閉 2)對方啟動關(guān)閉 3)雙方同時啟動關(guān)閉 TCP狀態(tài)機TCP 狀態(tài)表 狀 態(tài) 描 述 CLOSED 關(guān)閉狀態(tài),沒有連接活動或正在進行 LISTEN 監(jiān)聽狀態(tài),服務(wù)器正在等待連接進入 SYN RCVD 收到一個連接請求,尚未確認(rèn) SYN SENT 已經(jīng)發(fā)出連接請求,等待確認(rèn) ESTABLISHED 連接建立,正常數(shù)據(jù)傳輸狀態(tài) FIN

18、WAIT 1 (主動關(guān)閉)已經(jīng)發(fā)送關(guān)閉請求,等待確認(rèn) FIN WAIT 2 (主動關(guān)閉)收到對方關(guān)閉確認(rèn),等待對方關(guān)閉請求 TIMED WAIT 完成雙向關(guān)閉,等待所有分組死掉 CLOSING 雙方同時嘗試關(guān)閉,等待對方確認(rèn) CLOSE WAIT (被動關(guān)閉)收到對方關(guān)閉請求,已經(jīng)確認(rèn) LAST ACK (被動關(guān)閉)等待最后一個關(guān)閉確認(rèn),并等待所有分組死掉 (1)正常狀態(tài)轉(zhuǎn)換 圖8-26 TCP正常連接建立和終止所對應(yīng)的狀態(tài) (2)同時打開 圖 8-27 同時打開期間報文段的交換 (3)同時關(guān)閉 圖 8-28 同時關(guān)閉期間的報文段交換 (4)其它情況 1)服務(wù)方打開:從 LISTEN 到 SY

19、N_SENT 的變遷是正確的,它由服務(wù)器端主動發(fā)出 SYN 報文段,但 Berkeley 版的 TCP 軟件并不支持它。 2)重置連接(復(fù)位):只有當(dāng) SYN_RCVD 狀態(tài)是從 LISTEN 狀態(tài)(正常情況)進入,而不是從 SYN_SENT 狀態(tài)(同時打開)進入時,從 SYN_RCVD 回到 LISTEN 的狀態(tài)變遷才是有效的。這意味著如果我們執(zhí)行被動打開(進入 LISTEN ),收到一個 SYN ,發(fā)送一個帶 ACK 的 SYN (進入 SYN_RCVD ),然后收到一個 RST ,而不是一個 ACK ,便又回到 LISTEN 狀態(tài)并等待另一個連接請求的到來。 3)快速關(guān)閉:在主動關(guān)閉后的

20、 FIN_WAIT_1 狀態(tài),如果收到的報文段不僅是 ACK ,而且還包括對方的 FIN 信號,則直接進入 TIME_WAIT 狀態(tài),給對方發(fā)送 ACK 報文段,然后等待超時。TCP重傳策略 TCP協(xié)議用于控制數(shù)據(jù)段是否需要重傳的依據(jù)是設(shè)立重發(fā)定時器。在發(fā)送一個數(shù)據(jù)段的同時啟動一個重發(fā)定時器,如果在定時器超時前收到確認(rèn),就關(guān)閉此定時器;如果定時器超時前未收到確認(rèn),則重傳該數(shù)據(jù)段。 TCP重傳策略 這種重傳策略的關(guān)鍵是對定時器初值的設(shè)定。TCP采用了一種自適應(yīng)算法,它記錄一個報文段發(fā)出的時間,以及收到相應(yīng)確認(rèn)的時間。這兩個時間之差就是報文段的往返時間RTT。TCP保留了RTT的一個加權(quán)平均往返時

21、間RTTs(又稱為平滑的往返時間,S表示Smoothed。因為進行的是加權(quán)平均,所以得出的結(jié)果更加平滑)。每當(dāng)?shù)谝淮螠y量到RTT樣本時,RTTs值就取為所測量到的RTT樣本值。但以后每測量到一個新的RTT樣本,就按下式重新計算一次RTTs:新的RTTs = (1-)(舊的RTTs)+ (新的RTT樣本) (8-1) TCP重傳策略 在上式中,0 1。若很接近于零,表示新的RTTs值和舊的RTTs值相比變化不大,而對新的RTT樣本影響不大(RTT值更新較慢)。若接近于1,則表示新的RTTs值受新的RTT樣本的影響較大(RTT值更新較快)。RFC 2988推薦的值為1/8,即。用這種方法得出的加權(quán)平均往返時間RTTs就比測量出的RTT值更加平滑。顯然,超時計時器設(shè)置的超時重傳時間RTO (RetransmissionTime-Out)應(yīng)略大于上面得出的加權(quán)平均往返時間RTTs。RFC 2988建議使用下式計算RTO: RTO = RTTs + 4RTTd (8-2) TCP重傳策略 而RTTd是RTT的偏差的加權(quán)平均值,它與RTTs和新的RTT樣本之差有關(guān)。RFC 2988建議這樣計算RTTd。當(dāng)?shù)谝淮螠y量時,RTTd值取為測量到的RTT樣本值的1/2。在以后的測量中,則使用下式計算加權(quán)平均的RTTd:新的RTTd = (1-) (舊

溫馨提示

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

最新文檔

評論

0/150

提交評論