固定窗口
● TCP 還提供了流量控制機制。流量控制能夠調整給定會話中源和目的之間的 數據流速,有助於保持 TCP 傳輸的可靠性。流量控制的實施方法包括限制 一次能夠轉發的數據段數量,並要求在發送更多數據段以前確認接收。 網絡
● 要實施流量控制,TCP 要肯定的第一件事是目的設備能夠接受的數據段數量。 spa
TCP 報頭包括一個稱爲「窗口大小」的 16 位字段。這是 TCP 會話的目的設 備一次能夠接受和處理的字節數。 code
經過源和目標之間的三次握手,會話開始 時便可肯定初始窗口大小。blog
一旦贊成,源設備必須根據窗口大小限制發送到 目的設備的數據段數量。只有源設備收到數據段已接收的確認以後,才能繼 續發送更多會話數據。內存
● 在接收確認的延遲過程當中,發送方丌會發送任何額外數據段。若是網絡擁堵, 或者接收主機資源緊張,延遲時間可能就更長。延遲時間越長,該會話過程 的有效傳輸速率越低, 當運行多個會話時,減緩每一個會話的數據傳輸有助於 減小網絡和目的設備上的資源衝突。資源
請參看上圖中對窗口大小和確認消息的簡易展現。在本例中,TCP 會話的初 始窗口大小爲 3000 字節。此會話的發送方在傳輸 3000 字節後等待這些數 據的確認消息,以便繼續傳輸更多數據段。一旦發送方收到接收方發送的確 認消息,它就能夠傳輸另外 3000 字節的數據段。rem
● TCP 使用窗口大小嚐試管理傳輸速率,將其調整爲網絡和目的設備能夠支持 的最大速度,同時最大限度減小損失和從新傳輸。get
TCP滑動窗口
● 咱們也能夠經過動態窗口大小來控制數據流量。當網絡資源受到限制時,TCP 能夠減少窗口的大小,這樣,目的主機就須要更加頻繁地確認所接收的數據段。因爲源主機須要更加頻繁地等待數據確認,這即可以大大下降傳輸的速率。it
● 接收主機將窗口大小值發送到發送主機,表示其準備接收的字節數。若是目 的主機因爲緩衝內存受限須要下降通訊速率,那麼它向源主機發送的確認信息 中能夠包含一個較小的窗口大小值。class
● 如圖所示,若是接收主機發生擁堵,它能夠向發送主機發送指定了較小窗口大 小的數據段。圖中顯示,其中一個數據段丟失了。接收方將返回數據段的 TCP 報頭中的窗口字段值由 3,000 減爲 1,500,即將窗口大小改成 1,500。
● 在沒有數據丟失或資源限制的狀況下傳輸一段時間後,接收方開始增長窗口字 段,這樣能夠減小網絡開銷,由於必須發送的確認減小。窗口大小持續增長, 直至出現數據丟失,而後窗口大小隨之減小。
● 窗口大小的這種動態增減是 TCP 中的一個持續丌斷的過程。在高效網絡中, 因爲丟失數據,窗口可能會至關大。在基層基礎設施面臨壓力的網絡中,窗口可能會很小。
文章轉自:微思網絡
原文地址:https://mp.weixin.qq.com/s/We...