計算機(jī)網(wǎng)絡(luò)體系結(jié)構(gòu)及協(xié)議之流量控制

字號:

3.3.3流量控制
    流量控制涉及鏈路上字符或幀的發(fā)送速率的控制,以使接收方在接收前有足夠的緩沖存儲空間來接受每一個字符或幀。例如,在面向字符的終端一一計算機(jī)鏈路中,若遠(yuǎn)程計算機(jī)為許多臺終端服務(wù),它就有可能因不能在高峰時按預(yù)定速率傳輸全部字符而暫時過載。同樣,在面向幀的自動重發(fā)請求系統(tǒng)中,當(dāng)待確認(rèn)幀數(shù)量增加時,有可能超出緩沖器存儲空間,也會造成過載。下面介紹兩種最常用的流量控制方案:XON/XOFF方案和窗口機(jī)制。
    1.XON/XOW方案
    增加緩沖存儲空間在某種程度上可以緩解收、發(fā)雙方在傳輸速率上的差異,但這是一種被動、消極的方法。因為,一方面系統(tǒng)不允許開設(shè)過大的緩沖空間,另一方面對于速率顯著失配并且又傳送大量數(shù)據(jù)的場合,仍會出現(xiàn)緩沖存儲空間不夠的現(xiàn)象。XONA〈OFF方案則是一種相比之下更主動、更積極的流量控制方法。
     XON/XOFF方案中使用一對控制字符來實現(xiàn)流量控制,其中XON采用ASCII字符集中的控制字符DC1,XOFF采用ASCII字符集中的控制字符DC3。當(dāng)通信鏈路上的接收方發(fā)生過載時,便向發(fā)送方發(fā)送一個XOFF字符,發(fā)送方接收到XOFF字符后便暫停發(fā)送數(shù)據(jù);等接收方處理完緩沖存儲器中的數(shù)據(jù),過載恢復(fù)后,再向發(fā)送方發(fā)送一個XON字符,以通知發(fā)送方恢復(fù)數(shù)據(jù)發(fā)送。在一次數(shù)據(jù)傳輸過程中,XOFRXON的周期可重復(fù)多次,但這些操作對用戶來說是透明的。
    許多異步數(shù)據(jù)通信軟件包均支持XON/XOFF協(xié)議。這種方案也可用于計算機(jī)向打印機(jī)或其它終端設(shè)備發(fā)送字符,在這種情況下,打印機(jī)或終端設(shè)備中的控制部件用以控制字符流量。
    2.窗口機(jī)制
    為了提高信道的有效利用率,如前所述采用了發(fā)送方不等待確認(rèn)幀返回就連續(xù)發(fā)送若干幀的方案。由于允許連續(xù)發(fā)送多個未被確認(rèn)的幀,幀號就需采用多位二進(jìn)制數(shù)才能加以區(qū)分。因為凡被發(fā)送出去但尚未被確認(rèn)的幀都可能出錯或丟失而要求重發(fā),因而這些幀都要保留下來。這就要求發(fā)送方有較大的發(fā)送緩沖區(qū)保留可能要求重發(fā)的未被確認(rèn)的幀。
     但是緩沖區(qū)容量總是有限的,如果接收方不能以發(fā)送方的發(fā)送速率處理接收到的幀,則還是可能用完緩沖容量而暫時過載。為此,可引人類似于空閑RQ控制方案的調(diào)整措施,其本質(zhì)是在收到一確定幀之前,對發(fā)送方可發(fā)送的幀的數(shù)目加以限制。這是由發(fā)送方調(diào)整保留在重發(fā)表中的待確認(rèn)幀的數(shù)目來實現(xiàn)的。如果接收方來不及對收到的幀進(jìn)行處理,則接收方便停發(fā)確認(rèn)信息,此時發(fā)送方的重發(fā)表就會增長,當(dāng)達(dá)到重發(fā)表限度時,發(fā)送方就不再發(fā)送新幀,直至再次收到確認(rèn)信息為止。
    為了實現(xiàn)此方案,發(fā)送方存放待確認(rèn)幀的重發(fā)表中,應(yīng)設(shè)置待確認(rèn)幀數(shù)目的限度,這一限度被稱為鏈路的發(fā)送窗口。顯然,如果窗口設(shè)置為1,即發(fā)送方緩沖能力僅為一個幀,則傳輸控制方案就回到了空閑RQ方案,此時傳輸效率很低。故窗口限度應(yīng)選為使接收方盡量能處理或接受收到的所有幀。當(dāng)然選擇時還必須考慮諸如幀的長度、可使用的緩沖存儲空間以及傳輸速率等因素。
    重發(fā)表是一個連續(xù)序號的列表,對應(yīng)發(fā)送方已發(fā)送但尚未確認(rèn)的那些幀。這些幀的序號有一個值,這個值即發(fā)送窗口的限度。所謂發(fā)送窗口就是指示發(fā)送方已發(fā)送但尚未確認(rèn)的幀序號隊列的界,其上、下界分別稱為發(fā)送窗口的上、下沿,上、下沿的間距稱為窗口尺寸。接收方類似地也有接收窗口,它指示允許接收的幀的序號。
     發(fā)送方每次發(fā)送一幀后,待確認(rèn)幀的數(shù)目便增1,每收到一個確認(rèn)信息后,待確認(rèn)幀的數(shù)目便減1。當(dāng)重發(fā)表長度計數(shù)值,即待確認(rèn)幀的數(shù)目等于發(fā)送窗口尺寸時,便停止發(fā)送新的幀。
    一般幀號只取有限位二進(jìn)制數(shù),到一定時間后就又反復(fù)循環(huán)。若幀號配3位二進(jìn)制數(shù),則幀號在O~7間循環(huán)。如果發(fā)送窗口尺寸取值為2,則發(fā)送過程如圖3.15所示。圖中發(fā)送方陰影部分表示打開的發(fā)送窗口,接收方陰影部分則表示打開的接收窗口。當(dāng)傳送過程進(jìn)行時,打開的窗口位置一直在滑動,所以也稱為滑動窗口(Slidding Window),或簡稱為滑窗。