售前電話
135-3656-7657
售前電話 : 135-3656-7657
1、重傳控制
前已述及,TCP采用超時(shí)重傳機(jī)制,其關(guān)鍵問(wèn)題是如何確定重傳定時(shí)器的值0從理論上來(lái)說(shuō),應(yīng)該取為報(bào)文往返傳輸時(shí)間(RTF-Round-TripTime)。在點(diǎn)到點(diǎn)數(shù)據(jù)鏈路中,RTF基本上是固定值;而在Internet中,RTT隨網(wǎng)絡(luò)負(fù)荷狀態(tài)會(huì)有很大的變化。通常按下式進(jìn)行動(dòng)態(tài)調(diào)整:
RTF=aRTI'+(l-a)M式中,M為實(shí)測(cè)環(huán)回時(shí)間,就是收到段確認(rèn)時(shí)間和段發(fā)出時(shí)間之差。a為平滑因子,典型值為a=7/8。重傳定時(shí)值可按下述兩種方法確定:
·定時(shí)值=/J*R訂,/3=2。
.定時(shí)值=RTF+4*D,D=aD+(l-a)IRIT-MI。
其中,第二種方法更為靈活,為目前大多數(shù)TCP實(shí)現(xiàn)所采用。
進(jìn)一步要考慮的一個(gè)問(wèn)題是,當(dāng)重傳后收到確認(rèn)時(shí)如何動(dòng)態(tài)估算R竹,其難點(diǎn)是無(wú)法判知該確認(rèn)段是對(duì)原始報(bào)文段的確認(rèn)還是對(duì)重發(fā)報(bào)文段的確認(rèn),也就是無(wú)法確定M。為此,目前采用的算法是:每重傳一次,RTF增加一倍。
2.滑動(dòng)窗口控制
在TCP中,滑動(dòng)窗口大小是動(dòng)態(tài)變化的,由接收方控制,其值等于接收方緩沖區(qū)的可用空間,藉以保證報(bào)文段到達(dá)接收方后不會(huì)溢出。其機(jī)理可由圖2.38說(shuō)明:
設(shè)接收方TCP實(shí)體分配有4KB緩沖區(qū)。發(fā)送方首次發(fā)送2KB報(bào)文段,接收方回送確認(rèn)時(shí)就將窗口大小設(shè)定為2KB,告訴發(fā)送方緩沖區(qū)只剩2KB空間了。發(fā)送方第二次再送2KB報(bào)文段,接收方緩沖區(qū)全部占滿,于是回送確認(rèn)并置窗口大小為零,即閉塞發(fā)送方。當(dāng)應(yīng)用進(jìn)程讀走2KB數(shù)據(jù)層,接收方再主動(dòng)發(fā)送一個(gè)控制段,告之窗口大小已開(kāi)至2KB。
當(dāng)窗口為零時(shí),發(fā)送方允許發(fā)送兩種報(bào)文段。一是緊急數(shù)據(jù),其目的是中斷遠(yuǎn)端進(jìn)程。二是發(fā)送1字節(jié)的測(cè)試段,其目的是讓對(duì)端再回送一次窗口大小,以防對(duì)方發(fā)送的窗口已打開(kāi)的通告段丟失造成連接永久性的關(guān)閉。
3.傳輸控制的改進(jìn)算法
TCP傳輸?shù)囊粋€(gè)重要性能是帶寬利用率。由于IP報(bào)頭和TCP段頭要占40個(gè)字節(jié)(不計(jì)任選部分),因此一次傳送的數(shù)據(jù)雖越大,傳輸資源的利用率就越高。但是TCP協(xié)議本身并沒(méi)有考慮這個(gè)問(wèn)題,它允許逐個(gè)字節(jié)的傳送以加快傳送速度,在某些情況下就會(huì)產(chǎn)生嚴(yán)重的問(wèn)題?,F(xiàn)以圖2.39為例予以說(shuō)明。
圖(a)表示一個(gè)至遠(yuǎn)程交互式編輯器的TE1NEf連接。本地用戶每輸入一個(gè)字符,TCP就將其送出(1字節(jié)數(shù)據(jù))。編輯器側(cè)TCP立即回送確認(rèn)段(無(wú)數(shù)據(jù))。當(dāng)編輯器讀入該字節(jié)后又回送窗口更新段(尤數(shù)據(jù)),最后編輯器處理完后將字符交TCP送回(1字節(jié)數(shù)據(jù))。這樣,為了送1個(gè)字符耗用了162字節(jié)的帶寬。此問(wèn)題出在發(fā)送方發(fā)送l字節(jié)的報(bào)文段。
圖(b)假設(shè)發(fā)送方TCP一次發(fā)送大量數(shù)據(jù),使接收方緩沖區(qū)滿,窗口關(guān)閉。但是接收方進(jìn)程處理時(shí)一次只讀入1個(gè)字節(jié)。每讀入1個(gè)字節(jié),接收方TCP發(fā)現(xiàn)緩沖區(qū)有1個(gè)字節(jié)的空間,就立即發(fā)送窗口更新通告,于是發(fā)送方再送1個(gè)字節(jié),窗口又關(guān)閉。如此,又造成逐個(gè)字節(jié)發(fā)送的情況。此問(wèn)題出在接收方不動(dòng)腦子,一發(fā)現(xiàn)有1個(gè)字節(jié)的緩存空間就迫不急待地發(fā)送窗口更新通告,故稱為傻瓜窗口綜合癥(sillywindowsyndrome)。
現(xiàn)已對(duì)上述兩類問(wèn)題提出解決方案:
(1)發(fā)送方策略:奈格爾(NaG1e)算法
當(dāng)發(fā)送方進(jìn)程每次一個(gè)字節(jié)地向TCP寫入數(shù)據(jù)時(shí),TCP只發(fā)送第1個(gè)字節(jié),將后續(xù)字節(jié)緩存。待收到第1字節(jié)的確認(rèn)后,再將緩沖區(qū)中的所有字節(jié)裝成一個(gè)報(bào)文段發(fā)出,然后繼續(xù)緩存。如果接收方處理太慢,致使發(fā)送方緩存數(shù)據(jù)量已達(dá)窗口的一半或已為一個(gè)最大長(zhǎng)度報(bào)文段,則可發(fā)送--個(gè)新的數(shù)據(jù)報(bào)。此算法已在TCP實(shí)現(xiàn)中廣為使用Q(2)接收方策略:克拉克(Clark)方案接收方須待緩沖區(qū)可用空間達(dá)最大報(bào)文段長(zhǎng)度或達(dá)緩沖區(qū)容量半時(shí)才向發(fā)送方通告窗口更新。
(2)接收方策略:克拉克(Clark)方案
接收方須待緩沖區(qū)可用空間達(dá)最大報(bào)文段長(zhǎng)度或達(dá)緩沖區(qū)容量-半時(shí)才向發(fā)送方通告窗口更新。