TCP的固定視窗和滑動視窗

2021-10-23 22:47:21 字數 1292 閱讀 3903

tcp 提供了流量控制機制。 流量控制可以調整給定會話中源和目的之間的資料流速,有助於保持 tcp 傳輸的可靠性。

tcp 還提供了流量控制機制。 流量控制可以調整給定會話中源和目的之間的資料流速,有助於保持 tcp 傳輸的可靠性。 流量控制的實施方法包括限制一次可以**的資料段數量,並要求在傳送更多資料段之前確認接收。

要實施流量控制,tcp 要確定的第一件事是目的裝置可以接受的資料段數量。 tcp 報頭包括乙個稱為「視窗大小」的 16 位欄位。 這是 tcp 會話的目的裝置一次可以接受和處理的位元組數。 通過源和目標之間的三次握手,會話開始時即可確定初始視窗大小。 一旦同意,源裝置必須根據視窗大小限制傳送到目的裝置的資料段數量。 只有源裝置收到資料段已接收的確認之後,才能繼續傳送更多會話資料。

在接收確認的延遲過程中,傳送方不會傳送任何額外資料段。 如果網路擁堵,或者接收主機資源緊張,延遲時間可能就更長。 延遲時間越長,該會話過程的有效傳輸速率越低, 當執行多個會話時,減緩每個會話的資料傳輸有助於減少網路和目的裝置上的資源衝突。

請參看上圖中對視窗大小和確認訊息的簡易展示。 在本例中,tcp 會話的初始視窗大小為 3000 位元組。 此會話的傳送方在傳輸 3000 位元組後等待這些資料的確認訊息,以便繼續傳輸更多資料段。 一旦傳送方收到接收方傳送的確認訊息,它就可以傳輸另外 3000 位元組的資料段。

tcp 使用視窗大小嘗試管理傳輸速率,將其調整為網路和目的裝置可以支援的最大速度,同時最大限度減少損失和重新傳輸。

我們也可以通過動態視窗大小來控制資料流量。 當網路資源受到限制時,tcp 可以減小視窗的大小,這樣,目的主機就需要更加頻繁地確認所接收的資料段。 由於源主機需要更加頻繁地等待資料確認,這便可以大大降低傳輸的速率。

接收主機將視窗大小值傳送到傳送主機,表示其準備接收的位元組數。 如果目的主機由於緩衝記憶體受限需要降低通訊速率,那麼它向源主機傳送的確認資訊中可以包含乙個較小的視窗大小值。

如圖所示,如果接收主機發生擁堵,它可以向傳送主機傳送指定了較小視窗大小的資料段。 圖中顯示,其中乙個資料段丟失了。 接收方將返回資料段的 tcp 報頭中的視窗字段值由 3,000 減為 1,500,即將視窗大小改為 1,500。

在沒有資料丟失或資源限制的情況下傳輸一段時間後,接收方開始增加視窗字段,這樣可以減少網路開銷,因為必須傳送的確認減少。 視窗大小持續增加,直至出現資料丟失,然後視窗大小隨之減少。

視窗大小的這種動態增減是 tcp 中的乙個持續不斷的過程。 在高效網路中,由於不丟失資料,視窗可能會相當大。 在基層基礎設施面臨壓力的網路中,視窗可能會很小。

SWT固定視窗大小

通過設定shell的style來控制,兩種方法 一 預設情況下,shell的style是 swt.close swt.min swt.max 為使shell不再改變窗體的大小,可以設定shell為 shell shell new shell display,swt.close swt.min 這樣s...

c WinForm固定視窗大小

c winform固定視窗大小 1.不顯示最大化和最小化 this.maximizebox false this.minimizebox false 2.設定formborderstyle 窗體的邊框樣式 預設可調整大小的邊框模式 this.formborderstyle system.window...

Qt固定視窗大小

qtcreator裡面設定 第一步 設定sizepolicy 裡的水平策略和垂直策略為 fixed,然後再設定想要的大小。第二步 設定maximumsize和minimumsize的寬度和高度分別相等。相應的 如下,dialog resize 400,300 qsizepolicy sizepoli...