TCP的流量控制

2021-07-14 22:26:45 字數 2475 閱讀 8818

1.

理解:視窗和滑動視窗

tcp的流量控制
tcp使用視窗機制進行流量控制

什麼是視窗?

連線建立時,各端分配一塊緩衝區用來儲存接收的資料,並將緩衝區的尺寸傳送給另一端

接收方傳送的確認資訊中包含了自己剩餘的緩衝區尺寸

剩餘緩衝區空間的數量叫做視窗

2. tcp的流控過程(滑動視窗)

2.tcp 與udp的區別

很多文章都說tcp協議可靠,udp協議不可靠!為什麼前者可靠,後者不可靠呢?既然udp協議不可靠,為什麼還要使用它呢?所謂的tcp協議是面向連線的協議,面向連線是什麼呢?   

tcp和udp都是傳輸層的協議!從程式設計的角度看,就是兩個模組(模組就是**的集合,一系列**的組合提供相應的功能!模組化最終目的就是:分工協作!模組化好處:便於擴充套件開發以及維護!)。   

先說tcp協議:   

這個協議,是面向的連線!面向連線這個概念,我們要從物理層看起。大家都知道,因為「通道復用技術」的迅猛發展,才促使了計算機網路的發展!如果沒有「通道復用技術」,那麼單條線路上(這裡的線路指物理傳輸介質,例如:雙絞線、光纖、**線)單位時間內只能供一台計算機使用!還是舉例說明:就拿你自己的計算機來說,你跟同學「小明」聊天的時候,就不能跟另外一位同學「小強」聊天,如果你想同時跟兩位同學聊天,那麼你就得裝兩條線路!那麼同時與第三位、第四位同學。。。第n位同學聊天的時候,你需要裝幾根線路?全世界人民聊天的時候,又需要裝幾根線路?   

「通道復用技術」實現了,在同一條線路上,單位時間內可供x臺計算機同時通訊!toad知道以下幾種復用技術:   

1、頻分復用    2、時分復用    3、波分復用    4、碼分復用    5、空分復用    6、統計復用    7、極化波復用   

關於「通道復用技術」更深層次的問題,需要你自己去研究!   

上面我們提到了「通道復用技術」!知道了這一點,我們就很容易明白「物理通道」上的「虛擬通道」概念了!不同的通道復用技術,使用不同的復用技術,目的就是建立「虛擬通道」。   

乙個tcp協議連線其實就是在物理線路上建立的一條「虛擬通道」。這條「虛擬通道」建立後,在tcp協議發出fin包之前(兩個終端都會向對方傳送乙個fin包),是不會釋放的。正因為這一點,tcp協議被稱為面向連線的協議!   

udp協議,一樣會在物理線路上建立一條「虛擬通道」,否則udp協議無法傳輸資料!但是,當udp協議傳完資料後,這條「虛擬通道」就被立即登出了!因此,稱udp是不面向連線的協議! 

tcp協議和udp協議為什麼會共存?

1. 大家要知道,一種物理線路,單位時間內,能夠建立的「虛擬通道」是有限的!

2. 使用tcp協議傳輸資料,當資料從a端傳到b端後,b端會傳送乙個確認包(ack包)給a端,告知a端資料我已收到!udp協議就沒有這種確認機制!這就是為什麼說tcp協議可靠,udp協議不可靠. 

qq普通會員就是使用的udp協議進行傳輸資料!既然udp協議自身沒有確認機制,這個工作可以交給應用層的程序來完成(qq)!大家使用qq的時候,感覺出錯的機率還是非常小吧!當然,把這個確認工作完全交給qq自身來做,就直接導致了,qq軟體體積增大!   

有些應用,對資料傳輸可靠性要求非常高,例如大家瀏覽網頁,通過網頁註冊帳號、轉帳等服務,這是不容許出錯的,使用tcp協議能把出錯的可能性降到最低(當然,網路自身很糟糕,tcp協議也沒辦法)。但是,提供這種可靠服務,會加大網路頻寬的開銷,因為「虛擬通道」是持續存在的,同時網路中還會出現大量的ack和fin包!  

因此,魚和熊掌不可兼得,需根據實際情況選擇傳輸協議.tcp協議提供了可靠的資料傳輸,但是其擁塞控制、資料校驗、重傳機制的網路開銷很大,不適合實時通訊,所以選擇開銷很小的udp協議來傳輸資料。   

非面向連線的傳輸協議在資料傳輸之前不建立連線,而是在每個中間節點對非面向連線的包和資料報進行路由。沒有點到點的連線,非面向連線的協議,如udp,是不可靠的連線。當乙個udp資料報在網路中移動時,傳送過程並不知道它是否到達了目的地,除非應用層已經確認了它已到達的事實。非面向連線的協議也不能探測重複的和亂序的包。標準的專業術語用「不可靠」來描述udp。在現代網路中,udp並不易於導致傳輸失敗,但是你也不能肯定地說它是可靠的

tcp和udp都是傳輸層的協議!

應用層 (qq)

物理連線層

各自協議使用的常用埠:如http, https, tcp, udp, ftp等等

TCP流量控制

一般來說,我們總是希望資料傳輸的更快一些,但如果傳送方把資料傳送的很快,而接收方來不及接收,這就可能造成資料的丟失。流量控制就是讓傳送方的傳送速率不要太快,讓接收方來得及接收。對於成塊資料流,tcp利用滑動視窗機制來實現流量的控制,對於互動資料流,tcp利用捎帶ack和nagle演算法來實現流量的控...

TCP流量控制

如果傳送端傳送的速度較快,接收端接收到資料後處理的速度較慢,而接收緩衝區的大小是固定的,就會丟失資料。tcp協議通過 滑動視窗 sliding window 機制解決這一問題。滑動視窗 傳送端發起連線,宣告最大段尺寸是1460,初始序號是0,視窗大小是4k,表示 我的接收緩衝區還有4k位元組空閒,你...

TCP流量控制

流量控制 一般來說,我們總是希望資料傳輸的更快一些,但如果傳送方把資料傳送的很快,而接收方來不及接收,這就可能造成資料的丟失。流量控制就是讓傳送方的傳送速率不要太快,讓接收方來得及接收。對於成塊資料流,tcp利用滑動視窗機制來實現流量的控制,對於互動資料流,tcp利用捎帶ack和nagle演算法 來...