計(jì)算機(jī)網(wǎng)絡(luò)技術(shù)-56-TCP-可靠傳輸?shù)膶?shí)現(xiàn)課件_第1頁
計(jì)算機(jī)網(wǎng)絡(luò)技術(shù)-56-TCP-可靠傳輸?shù)膶?shí)現(xiàn)課件_第2頁
計(jì)算機(jī)網(wǎng)絡(luò)技術(shù)-56-TCP-可靠傳輸?shù)膶?shí)現(xiàn)課件_第3頁
計(jì)算機(jī)網(wǎng)絡(luò)技術(shù)-56-TCP-可靠傳輸?shù)膶?shí)現(xiàn)課件_第4頁
計(jì)算機(jī)網(wǎng)絡(luò)技術(shù)-56-TCP-可靠傳輸?shù)膶?shí)現(xiàn)課件_第5頁
已閱讀5頁,還剩13頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

5.6TCP可靠傳輸?shù)膶?shí)現(xiàn)

5.6.1以字節(jié)為單位的滑動(dòng)窗口前移不允許發(fā)送已發(fā)送并收到確認(rèn)A的發(fā)送窗口=20允許發(fā)送的序號(hào)26272829303132333435363738394041424344454647484950515253545556B期望收到的序號(hào)前沿后沿前移收縮根據(jù)B給出的窗口值A(chǔ)構(gòu)造出自己的發(fā)送窗口TCP標(biāo)準(zhǔn)強(qiáng)烈不贊成發(fā)送窗口前沿向后收縮不允許發(fā)送已發(fā)送并收到確認(rèn)A的發(fā)送窗口位置不變允許發(fā)送但尚未發(fā)送262728293031323334353637383940414243444546474849505152535455已發(fā)送但未收到確認(rèn)56P1P2P3不允許接收已發(fā)送確認(rèn)并交付主機(jī)B的接收窗口允許接收26272829303132333435363738394041424344454647484950515253545556未按序收到可用窗口A發(fā)送了11個(gè)字節(jié)的數(shù)據(jù)P3–P1=A的發(fā)送窗口(又稱為通知窗口)P2–P1=已發(fā)送但尚未收到確認(rèn)的字節(jié)數(shù)P3–P2=允許發(fā)送但尚未發(fā)送的字節(jié)數(shù)(又稱為可用窗口)允許發(fā)送但尚未發(fā)送A的發(fā)送窗口向前滑動(dòng)262728293031323334353637383940414243444546474849505152535455已發(fā)送并收到確認(rèn)不允許發(fā)送已發(fā)送但未收到確認(rèn)56P1P2P3允許接收B的接收窗口向前滑動(dòng)262728293031323334353637383940414243444546474849505152535455已發(fā)送確認(rèn)并交付主機(jī)不允許接收56未按序收到A收到新的確認(rèn)號(hào),發(fā)送窗口向前滑動(dòng)先存下,等待缺少的數(shù)據(jù)的到達(dá)不允許發(fā)送已發(fā)送并收到確認(rèn)A的發(fā)送窗口已滿,有效窗口為零262728293031323334353637383940414243444546474849505152535455已發(fā)送但未收到確認(rèn)56P1P2P3A的發(fā)送窗口內(nèi)的序號(hào)都已用完,但還沒有再收到確認(rèn),必須停止發(fā)送。發(fā)送緩存最后被確認(rèn)的字節(jié)發(fā)送應(yīng)用程序發(fā)送緩存最后發(fā)送的字節(jié)發(fā)送窗口已發(fā)送TCP序號(hào)增大接收緩存接收應(yīng)用程序已收到接收窗口TCP接收緩存下一個(gè)讀取的字節(jié)序號(hào)增大下一個(gè)期望收到的字節(jié)(確認(rèn)號(hào))發(fā)送緩存與接收緩存的作用發(fā)送緩存用來暫時(shí)存放:

發(fā)送應(yīng)用程序傳送給發(fā)送方TCP準(zhǔn)備發(fā)送的數(shù)據(jù);

TCP已發(fā)送出但尚未收到確認(rèn)的數(shù)據(jù)。接收緩存用來暫時(shí)存放:

按序到達(dá)的、但尚未被接收應(yīng)用程序讀取的數(shù)據(jù);不按序到達(dá)的數(shù)據(jù)。

需要強(qiáng)調(diào)三點(diǎn)A的發(fā)送窗口并不總是和B的接收窗口一樣大(因?yàn)橛幸欢ǖ臅r(shí)間滯后)。TCP標(biāo)準(zhǔn)沒有規(guī)定對(duì)不按序到達(dá)的數(shù)據(jù)應(yīng)如何處理。通常是先臨時(shí)存放在接收窗口中,等到字節(jié)流中所缺少的字節(jié)收到后,再按序交付上層的應(yīng)用進(jìn)程。TCP要求接收方必須有累積確認(rèn)的功能,這樣可以減小傳輸開銷。5.6.2超時(shí)重傳時(shí)間的選擇重傳機(jī)制是TCP中最重要和最復(fù)雜的問題之一。TCP每發(fā)送一個(gè)報(bào)文段,就對(duì)這個(gè)報(bào)文段設(shè)置一次計(jì)時(shí)器。只要計(jì)時(shí)器設(shè)置的重傳時(shí)間到但還沒有收到確認(rèn),就要重傳這一報(bào)文段。往返時(shí)延的方差很大由于TCP的下層是一個(gè)互聯(lián)網(wǎng)環(huán)境,IP數(shù)據(jù)報(bào)所選擇的路由變化很大。因而運(yùn)輸層的往返時(shí)間的方差也很大。時(shí)間數(shù)據(jù)鏈路層運(yùn)輸層T1T2T3往返時(shí)間的概率分布加權(quán)平均往返時(shí)間TCP保留了RTT的一個(gè)加權(quán)平均往返時(shí)間

RTTS(這又稱為平滑的往返時(shí)間)。第一次測量到RTT樣本時(shí),RTTS值就取為所測量到的RTT樣本值。以后每測量到一個(gè)新的RTT樣本,就按下式重新計(jì)算一次RTTS:

新的RTTS

(1

)(舊的RTTS)

(新的RTT樣本)(5-4)式中,0

1。若很接近于零,表示RTT值更新較慢。若選擇接近于1,則表示RTT值更新較快。RFC2988推薦的值為1/8,即0.125。超時(shí)重傳時(shí)間RTO(RetransmissionTime-Out)

RTO應(yīng)略大于上面得出的加權(quán)平均往返時(shí)間RTTS。RFC2988建議使用下式計(jì)算RTO:

RTORTTS+4RTTD(5-5)RTTD是RTT的偏差的加權(quán)平均值。RFC2988建議這樣計(jì)算RTTD。第一次測量時(shí),RTTD值取為測量到的RTT樣本值的一半。在以后的測量中,則使用下式計(jì)算加權(quán)平均的RTTD:新的RTTD=(1

)(舊的RTTD)+

RTTS

新的RTT樣本

(5-6)是個(gè)小于1的系數(shù),其推薦值是1/4,即0.25。往返時(shí)間RTT?往返時(shí)間的測量相當(dāng)復(fù)雜TCP報(bào)文段1沒有收到確認(rèn)。重傳(即報(bào)文段2)后,收到了確認(rèn)報(bào)文段ACK。如何判定此確認(rèn)報(bào)文段是對(duì)原來的報(bào)文段1的確認(rèn),還是對(duì)重傳的報(bào)文段2的確認(rèn)?發(fā)送一個(gè)TCP報(bào)文段超時(shí)重傳TCP報(bào)文段收到ACK時(shí)間12往返時(shí)間RTT?是對(duì)哪一個(gè)報(bào)文段的確認(rèn)?Karn算法在計(jì)算平均往返時(shí)間RTT時(shí),只要報(bào)文段重傳了,就不采用其往返時(shí)間樣本。這樣得出的加權(quán)平均平均往返時(shí)間RTTS

和超時(shí)重傳時(shí)間RTO就較準(zhǔn)確。報(bào)文段每重傳一次,就把RTO增大一些:新的RTO

(舊的RTO)系數(shù)的典型值是2。當(dāng)不再發(fā)生報(bào)文段的重傳時(shí),才根據(jù)報(bào)文段的往返時(shí)延更新平均往返時(shí)延RTT和超時(shí)重傳時(shí)間RTO的數(shù)值。實(shí)踐證明,這種策略較為合理。修正的Karn算法5.6.3選擇確認(rèn)SACK

(SelectiveACK)

接收方收到了和前面的字節(jié)流不連續(xù)的兩個(gè)字節(jié)塊。如果這些字節(jié)的序號(hào)都在接收窗口之內(nèi),那么接收方就先收下這些數(shù)據(jù),但要把這些信息準(zhǔn)確地告訴發(fā)送方,使發(fā)送方不要再重復(fù)發(fā)送這些已收到的數(shù)據(jù)。110001501300035014500確認(rèn)號(hào)=1001L1=1501L2=3501R1=3001R1=4501接收到的字節(jié)流序號(hào)不連續(xù)……連續(xù)的字節(jié)流………第一個(gè)字節(jié)塊第二個(gè)字節(jié)塊

和前后字節(jié)不連續(xù)的每一個(gè)字節(jié)塊都有兩個(gè)邊界:左邊界和右邊界。圖中用四個(gè)指針標(biāo)記這些邊界。第一個(gè)字節(jié)塊的左邊界L1=1501,但右邊界R1=3001。左邊界指出字節(jié)塊的第一個(gè)字節(jié)的序號(hào),但右邊界減1才是字節(jié)塊中的最后一個(gè)序號(hào)。第二個(gè)字節(jié)塊的左邊界L2=3501,而右邊界R2=4501。RFC2018的規(guī)定如果要使用選擇確認(rèn),那么在建立TCP連接時(shí),就要在T

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論