所謂流量控制就是讓傳送傳送速率不要過快,讓接收方來得及接收。利用滑動視窗機制就可以實施流量控制。通過運用tcp報文段中的視窗大小欄位來控制,傳送方的傳送視窗不可以大於接收方發回的視窗大小。
流量控制引發的死鎖
當傳送者收到了乙個視窗為0的應答,傳送者便停止傳送,等待接收者的下乙個應答。但是如果這個視窗不為0的應答在傳輸過程丟失,傳送者一直等待下去,而接收者以為傳送者已經收到該應答,等待接收新資料,這樣雙方就相互等待,從而產生死鎖。
持續計時器
為了避免流量控制引發的死鎖,tcp使用了持續計時器。每當傳送者收到乙個零視窗的應答後就啟動該計時器。時間一到便主動傳送報文詢問接收者的視窗大小。若接收者仍然返回零視窗,則重置該計時器繼續等待;若視窗不為0,則表示應答報文丟失了,此時重置傳送視窗後開始傳送,這樣就避免了死鎖的產生。
tcp的資料傳輸分為互動資料流和成塊資料流,互動資料流一般是一些互動式應用程式的命令,所以這些資料很小,而考慮到tcp報頭和ip報頭的總和就有40位元組,如果資料量很小的話,那麼網路的利用效率就較低。
資料傳輸使用nagle演算法,nagle演算法很簡單,就是規定乙個tcp連線最多只能有乙個未被確認的未完成的小分組。在該分組的確認到達之前不能傳送其他的小分組。
但是也要考慮另乙個問題,叫做糊塗視窗綜合症。當接收方的快取已滿的時候,互動應用程式一次只從快取中讀取乙個位元組(這時候快取中騰出乙個位元組),然後向傳送方傳送確認資訊,此時傳送方再傳送乙個位元組(收到的視窗大小為1),這樣網路的效率很低。
素以要解決這個問題,可以讓接收方等待一段時間,使得接收快取已有最夠的空間容納乙個最長報文段,或者等到接收快取已有一半的空間。只要這兩種情況出現一種,就傳送確認報文,同時傳送方可以把資料積累成大的報文段傳送。
**
計算機網路 傳輸層
為什麼要劃分傳輸層?既然網路層已經能把源主機上發出的資料傳送給目的主機,那麼為什麼還需要加上乙個傳輸層呢?這就需要我們理解主機使用者應用層通訊的主體,位於兩台網路主機中真正的資料通訊主體並不是這兩台主機,而是兩台主機中的各種網路應用程序.同一時間一台主機上可能有多個程序同時執行,這時候就需要為應用程...
計算機網路(傳輸層)
網路層提供了主機之間的邏輯通訊,運輸層為運輸在不同主機上的程序之間提供了邏輯通訊。運輸層協議是在端系統中而不是在路由器中實現的。運輸協議能夠提供的服務常常受制於底層網路層協議的服務模型。底層無法提供時延或頻寬保證,運輸層協議也無法提供。但是即使底層網路協議不可靠,運輸協議也可以提供可靠的資料傳輸服務...
計算機網路 傳輸層
運輸層最重要的兩種協議 tcp協議,udp協議 真正的通訊 兩個主機之間應用程序的通訊 運輸層的重要功能 1 復用 傳送方的不同應用程序使用同乙個運輸層協議傳輸資料 應用層 運輸層 2 分用 接收方的運輸層在剝去報文首部後把資料真正交付到目的應用程序 運輸層 應用層 網路層和運輸層的區別 網路層說明...