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