第七章節(jié)傳輸層協(xié)議_第1頁
第七章節(jié)傳輸層協(xié)議_第2頁
第七章節(jié)傳輸層協(xié)議_第3頁
第七章節(jié)傳輸層協(xié)議_第4頁
第七章節(jié)傳輸層協(xié)議_第5頁
已閱讀5頁,還剩59頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

第七章節(jié)傳輸層協(xié)議7.1進程通信與端口網(wǎng)絡層或互聯(lián)網(wǎng)層提供主機通信服務傳輸層提供程通信服務為了提供進程通信功能,TCP/IP協(xié)議族提出了端口(port)的概念,用于標識進程。傳輸層與網(wǎng)絡層或互聯(lián)網(wǎng)層的關(guān)系網(wǎng)絡層與互聯(lián)網(wǎng)層功能:主機通信協(xié)議:IP、CLNP(ISO/OSI)特點:hop-by-hop傳輸層功能:進程通信協(xié)議:UDP和TCP、TP0~4(ISO/OSI)特點:end-to-endIP地址和端口端口分配方法第一種叫全局分配這是一種集中控制方式,由IANA進行統(tǒng)一分配,并將結(jié)果公布于眾。眾所周知端口就是屬于這一類。第二種是本地分配注冊端口動態(tài)分配動態(tài)綁定TCP/UDP眾所周知端口號7.2UDP協(xié)議提供主機通信IP服務特性報文可能丟失報文可能出錯報文可能亂序到達報文在網(wǎng)絡上可能被延遲任意長時間支持多路復用提供進程通信UDP服務特性報文可能丟失報文可能出錯報文可能亂序到達報文在網(wǎng)絡上可能被延遲任意長時間支持多路復用IP與UDP關(guān)系IP提供主機通信通信對象命名是IP地址IP地址定位到主機UDP提供進程通信通信對象命名是Port號Port號定位到進程1、報文格式2、多路復用3、偽頭部7.3TCP協(xié)議7.3.1服務特性7.3.2報文格式7.3.3連接建立和終止7.3.4差錯控制7.3.5重傳定時器7.3.6流量控制7.3.7擁塞控制7.3.8TCP擴展7.3.9觸發(fā)傳輸7.3.10記錄邊界7.3.1服務特性(1)面向連接全雙工點到點可靠字節(jié)流服務多路復用服務特性(2)流量控制保證發(fā)送方不要“淹沒”接收方擁塞控制保證發(fā)送方不要“淹沒”網(wǎng)絡字節(jié)流(1)字節(jié)流(2)1)發(fā)送和接受,TCP都使用緩存2)應用進程發(fā)送的數(shù)據(jù)首先保留在TCP發(fā)送緩存中,當數(shù)據(jù)量達到一個報文段大小時,TCP就向外發(fā)送數(shù)據(jù)。3)應用進程的多個發(fā)送請求,可能對應一個TCP數(shù)據(jù)發(fā)送;字節(jié)流(3)4)可以使用PUSH機制使應用進程的每個發(fā)送請求都對應一個TCP數(shù)據(jù)發(fā)送;5)TCP收到保文后存放在接收緩存中,等待應用進程讀取;6)一個TCP發(fā)送可以對應多個TCP讀操作;多個TCP發(fā)送可以對應一個讀操作。7.3.2報文格式字段含義(1)(1)源端口和目的端口各2個字節(jié),表示源和目的端口號。(2)發(fā)送序號4字節(jié),指出報文中數(shù)據(jù)在發(fā)送方的數(shù)據(jù)流中的位置(以字節(jié)編號)。(3)確認序號4字節(jié),指接收方希望下一次接收的字節(jié)序號。(4)TCP頭長4比特,指出以32比特為單位的報文頭部長度。該域是針對變長的“選項”域設計的。字段含義(2)(5)同步標志位SYN,當SYN=1而ACK=0時,表明這是一個建立連接請求報文,若對方同意建立該連接,則應在發(fā)回的報文中使將SYN和ACK標志位同時置1。(6)確認標志位ACK只有當ACK=1時確認序號字段才有意義。當ACK=0時,確認序號沒有意義。(7)終止標志位FIN(FINal) 當FIN=1時,表明數(shù)據(jù)已經(jīng)發(fā)送完畢,并請求釋放連接。字段含義(3)(8)重建標志位RST(ReSeT)當RST=1時,表明出現(xiàn)嚴重差錯,必須釋放連接,然后重新建立連接。(9)緊急標志位URG(URGent)當URG=1時,表明此報文是緊急數(shù)據(jù),應盡快傳送出去。(10)急迫標志位PSH(PuSH)當PSH=1時,請求接收方TCP協(xié)議將該報文立即交給應用程序。字段含義(4)(11)通告窗口2字節(jié)。該字段實際上是接收方告訴發(fā)送方它的接收窗口大小,其單位為字節(jié)。通告窗口字段主要是用于流量控制。(12)校驗和2字節(jié)。校驗和字段檢驗的范圍包括TCP報文的頭部和數(shù)據(jù)區(qū)這兩部分。(13)可選項長度可變。最常用的選項,即最大報文長度MSS(MaximumSegmentSize)。7.3.3連接建立和終止TCP狀態(tài)變換圖7.3.4差錯控制字節(jié)編號字節(jié)確認超時重傳1、字節(jié)編號每個TCP連接傳輸?shù)淖止?jié)數(shù)據(jù)由TCP進行隨機編號,即每個TCP連接開始時第一個TCP報文段第一字節(jié)數(shù)據(jù)的編號是隨機選取的(避免初始序列號ISN攻擊)。舉例假設某條TCP連接要傳送5000字節(jié)的文件,TCP對第一個字節(jié)的編號從10001(隨機選取的)開始。假設這個文件分為5個TCP報文段進行傳送,每個TCP報文段攜帶1000字節(jié),那么每個TCP報文段的字節(jié)編號如下所示:報文段1?順序號:10,001(范圍:10,001到11,000)報文段2?順序號:11,001(范圍:11,001到12,000)報文段3?順序號:12,001(范圍:12,001到13,000)報文段4?順序號:13,001(范圍:13,001到14,000)報文段5?順序號:14,001(范圍:14,001到15,000)2、字節(jié)確認TCP采用的是字節(jié)確認,一般情況下,接收方確認已收到的最長的、連續(xù)的字節(jié)計數(shù),TCP報文的每個確認序號字段指出下一個希望接收的字節(jié),實際上就是對已經(jīng)收到的所有字節(jié)的確認。字節(jié)確認的優(yōu)點是即使確認丟失也不一定導致發(fā)送方重傳。3、超時重傳發(fā)送方TCP為了恢復丟失或者損壞的報文段,必須對丟失或者損壞的報文段進行重傳。事實上,發(fā)送方TCP每發(fā)送一個TCP報文段,就啟動一個重傳定時器,如果在規(guī)定的時間之內(nèi)沒有收到接收方TCP返回的確認報文,重傳定時器超時,與于是發(fā)送重傳該TCP報文。7.3.5重傳定時器1、原始算法2、Karn/Partridge算法1、原始算法EstimatedRTT=α×EstimatedRTT+(1-α)×SampleRTTα因子決定了EstimatedRTT對延遲變化的反應速度;當α接近1時,短暫的延遲變化對EstimatedRTT幾乎不起作用;而當α接近0時,EstimatedRTT緊隨延遲的變化而變化。原始的TCP協(xié)議規(guī)范建議α值在0.8到0.9之間。超時定時器計算TimeOut=β×EstimatedRTT當β接近1時,TCP能迅速檢測到報文丟失并及時重傳,從而減少等待時間,但可能引起不必要的重傳。當β太大時,重傳報文的數(shù)目減少,但等待確認的時間太長。作為折衷,原始的TCP協(xié)議規(guī)范一般推薦β取2。2、Karn/Partridge算法產(chǎn)生超時后當重傳一個報文時,TCP停止計算機RTT采樣值;TCP只為沒有重傳的報文測量RTT采樣值。即每當TCP有超時重傳時,它下次的超時定時器的值設置成上次的兩倍,而并不以上次的EstimatedRTT為基礎。7.3.6流量控制1、滑動窗口機制2、堅持定時器3、保持定時器1、滑動窗口機制與數(shù)據(jù)鏈路層不同的是:TCP不是使用一個固定大小的滑動窗口,而是由接收方通過TCP報文頭部的通告窗口AdvertisedWindow字段向發(fā)送方通告它的窗口大小。發(fā)送方在任意時刻沒有確認的字節(jié)數(shù)不能超過通告窗口AdvertisedWindow的值。接收方根據(jù)分配的緩沖區(qū)的大小來為通告窗口AdvertisedWindow選擇一個合適的值。發(fā)送和接收緩沖區(qū)(1)發(fā)送方的TCP維護一個發(fā)送緩沖區(qū)。發(fā)送緩沖區(qū)用來保存那些已經(jīng)發(fā)送出去但是還沒有收到對方確認的數(shù)據(jù)以及發(fā)送方應用進程寫入但尚未發(fā)送的數(shù)據(jù)。而接收方的TCP也同樣維護著一個接收緩沖區(qū)。接收緩沖區(qū)保存那些保留那些亂序到達接收方的數(shù)據(jù)以及那些按順序到達接收方(即該字節(jié)流前面的字節(jié)都沒有丟失)但接收進程來不及讀出的數(shù)據(jù)。發(fā)送和接收緩沖區(qū)(2)發(fā)送方TCP維持著3個指針,分別是:LastByteAcked、LastByteSent和LastByteWritten。LastByteAcked表示已經(jīng)應答的字節(jié)編號LastByteSent表示已經(jīng)發(fā)送但尚未收到確認的字節(jié)編號LastByteWritten表示發(fā)送方應用進程寫到發(fā)送方TCP但還沒有發(fā)送的字節(jié)編號在LastByteAcked左邊的緩沖區(qū)可以釋放了,因為這些字節(jié)是已經(jīng)發(fā)送出去而且已經(jīng)收到確認了。接收方TCP維持著3個指針,分別是LastByteRead、NextByteExpexcted和LastByteRcvd。LastByteRead表示接收方應用進程一定讀走的字節(jié)編號NextByteExpexcted表示接收方TCP期望接收的字節(jié)編號LastByteRcvd表示到目前已經(jīng)接收到最大字節(jié)編號。在LastByteRead左邊的緩沖區(qū)可以釋放了,因為這些字節(jié)是已經(jīng)被接收方應用進程讀出了。流量控制機制發(fā)送方TCP和接收方TCP的緩沖區(qū)大小是有限的,我們分別用MaxSendBuffer和MaxRcvBuffer表示。接收方的通告窗口接收方的通告窗口AdvertisedWindow=MaxRcvBuffer–(LastByteRcvd–LastByteRead)這個值就代表接收方TCP緩沖區(qū)剩下的可用緩沖區(qū)的大小發(fā)送方的發(fā)送窗口發(fā)送方的發(fā)送窗口EffectiveWindow=AdvertisedWindow-(LastByteSend–LastByteAcked)發(fā)送方計算只有EffectiveWindow大于0,發(fā)送方才能發(fā)送數(shù)據(jù)。發(fā)送方的動作首先,由于接收方應用進程處理速度慢,最終導致接收方TCP緩沖區(qū)滿,這就意味著接收方發(fā)給發(fā)送方的通告窗口為0。發(fā)送方TCP一看到通告窗口為0,就立即停止發(fā)送數(shù)據(jù)。但是,發(fā)送方應用進程會一直往發(fā)送方TCP緩沖區(qū)里填入數(shù)據(jù),最終會將發(fā)送方TCP緩沖區(qū)填滿,從而導致發(fā)送方TCP將發(fā)送方應用進程阻塞。接收方的動作而在接收方,一旦接收方應用進程開始從接收方TCP的接收方緩沖區(qū)讀取數(shù)據(jù),那么接收方TCP就可以打開它的窗口,亦即接收方TCP緩沖區(qū)可用空間不再為0,從而允許發(fā)送方TCP把數(shù)據(jù)從它的發(fā)送緩沖區(qū)發(fā)送出去。而當發(fā)送方收到返回的確認后,就可以釋放部分發(fā)送緩沖區(qū)的空間,從而發(fā)送方TCP不再阻塞發(fā)送方應用進程并允許發(fā)送方應用進程繼續(xù)往發(fā)送緩沖區(qū)里寫入數(shù)據(jù)。2、堅持定時器(1)因為,一旦接收方的通告窗口變?yōu)?,就不允許發(fā)送方發(fā)送任何數(shù)據(jù),直到接收到接收方TCP的確認,并宣告非零窗口值。但是這個確認可能丟失。需要引起注意的是,在TCP中,對確認是不需要確認的。假如確認丟失了,接收方TCP仍然認為這個確認已經(jīng)正確到達發(fā)送方,因此接收方就等待發(fā)送方TCP發(fā)送更多的報文段。發(fā)送方TCP由于沒有收到確認,就一直等待接收方TCP發(fā)送確認以及非零通告窗口值,雙方進入死鎖狀態(tài)。堅持定時器(2)要打開這種死鎖,TCP為每一個連接使用堅持定時器。當發(fā)送方TCP接收到通告窗口值為0的確認時,就啟動堅持定時器。當堅持定時器超時,發(fā)送方TCP就發(fā)送一個特殊的報文段,叫探測報文。探測報文只有1字節(jié)數(shù)據(jù),它有序號,但它的序號永遠不需要確認。探測報文的目的是提醒接收方TCP,確認已經(jīng)丟失,必須重傳。堅持定時器(3)堅持定時器的定時寬度通常設置為重傳定時器的寬度。如果在堅持定時器超時后還沒有收到對方的應答,則將定時寬度加倍,重新發(fā)送1個新的探測報文,直到增加到門限值(通常是60s)為止。以后,發(fā)送方每隔60s就發(fā)送一個探測報文,直到接收窗口重新打開。3、?;疃〞r器(1)在某些TCP實現(xiàn)中要使用?;睿╧eepalive)定時器來防止TCP連接的長時間空閑。假定客戶建立了到服務器的TCP連接,并且發(fā)送了一些數(shù)據(jù),然后就出故障了。在這種情況下,這個TCP連接就永遠地處于打開狀態(tài)。?;疃〞r器(2)要解決這個問題,就必須在服務器使用?;疃〞r器。每當服務器收到客戶的信息,就將保活定時器復位。?;疃〞r器通常設置為2小時,若服務器超過了2小時還沒有收到客戶的信息,服務器就不斷地(每隔75s)發(fā)送探測報文,若服務器發(fā)送了10個探測報文還沒有收到客戶的響應,服務器就終止TCP連接。7.3.7擁塞和擁塞控制從擁塞的表現(xiàn)形式定義,擁塞是指由于路由器中排隊的報文足夠多,導致緩沖區(qū)溢出,路由器開始丟棄報文的現(xiàn)象;從擁塞對網(wǎng)絡的影響來定義,擁塞是指網(wǎng)絡中存在過多的報文時,導致網(wǎng)絡性能下降的現(xiàn)象;從擁塞產(chǎn)生的根本原因來定義,擁塞是指當報文到達速率大于路由器的轉(zhuǎn)發(fā)速率時發(fā)生的一種現(xiàn)象。TCP擁塞控制擁塞控制的源算法中使用最廣泛的是TCP擁塞控制機制。與TCP類似的、主要依靠端節(jié)點執(zhí)行擁塞控制的機制統(tǒng)稱為端到端擁塞控制。1、慢啟動2、擁塞避免TCP為每個連接維持一個新的狀態(tài)變量,成為擁塞窗口cwnd(CongestionWindow)。MaxWindow=MIN(cwnd,AdvertisedWindow)EffectiveWindow=MaxWindow-(LastByteSent-LastByteAcked)擁塞避免階段3、快速重傳4、快速恢復在快速重傳期間發(fā)送方接收到重復ACK后

溫馨提示

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

評論

0/150

提交評論