TCP互動資料流 成塊資料流

2021-09-08 20:31:47 字數 2103 閱讀 4213

tcp資料流分類

基於tcp的各類解決方案,可以根據資料吞吐量來大致分成兩大類:

(1)互動資料型別,例如telnet,ssh,這種型別的協議在大多數情況下只是做小流量的資料交換,比如說按一下鍵盤,回顯一些文字等等。

(2)資料成塊型別,例如ftp,這種型別的協議要求tcp能盡量的運載資料,把資料的吞吐量做到最大,並盡可能的提高效率。

針對這兩種情況,tcp給出了兩種不同的策略來進行資料傳輸。

tcp的互動資料流

通常,在網路速度很快的情況下,比如用lo介面進行telnet通訊,當按下字母鍵並要求回顯的時候,客戶端和伺服器將經歷 傳送按鍵資料->伺服器傳送按鍵資料的ack -> 伺服器端傳送回顯資料->客戶端傳送回顯資料的ack的過程,而其中的資料流量將是40bit + 41bit+41bit+40bit = 162bit,如果在廣域網裡面,這種小分組的tcp流量將會造成很大的網路負擔。

對於互動性要求比較高的應用,tcp給出兩個策略來提高傳送效率和減低網路負擔:

(1).捎帶ack。

(2).nagle演算法(一次盡量多的發資料)。

(1).捎帶ack的傳送方式

這個策略是說,當主機收到遠端主機的tcp資料報之後,通常不馬上傳送ack資料報,而是等上乙個短暫的時間,如果這段時間裡面主機還有傳送到遠端主機的tcp資料報,那麼就把這個ack資料報「捎帶」著傳送出去,把本來兩個tcp資料報整合成乙個傳送。一般的,這個時間是200ms。這裡的計時器是以核心為基礎的,和在什麼時候接收到資料沒有對應關係。

(2).nagle演算法

上過bbs的人應該都會有感受,就是在網路慢的時候發貼,有時鍵入一串字串以後,經過一段時間,客戶端「發瘋」一樣突然回顯出很多內容,就好像資料一下子傳過來了一樣,這就是nagle演算法的作用。

nagle演算法是說,當主機a給主機b傳送了乙個tcp資料報並進入等待主機b的ack資料報的狀態 時,tcp的輸出緩衝區裡面只能有乙個tcp資料報,並且,這個資料報不斷地收集後來的資料,整合成乙個大的資料報,等到b主機的ack包一到,就把這些 資料「一股腦」的傳送出去。雖然這樣的描述有些不準確,但還算形象和易於理解,我們同樣可以體會到這個策略對於低減網路負擔的好處。

在編寫插口程式的時候,可以通過tcp_nodelay來關閉這個演算法。並且,使用這個演算法看情況的,比如基於tcp的x視窗協議,如果處理滑鼠事件時還是用這個演算法,那麼「延遲」可就非常大了。

tcp的成塊資料流

對於ftp這樣對於資料吞吐量有較高要求的要求,將總是希望每次盡量多的傳送資料到對方主機,就算是有點「延遲」也無所謂。tcp也提供了一整套的策略來支援這樣的需求。tcp協議中有16個bit表示「視窗」的大小,這是這些策略的核心。

(1).傳輸資料時ack的問題

在解釋滑動視窗前,需要看看ack的應答策略,一般來說,傳送端傳送乙個tcp資料報,那麼接收端就應該傳送乙個ack資料報。但是事實上卻不是這樣,傳送端將會連續傳送資料盡量填滿接受方的緩衝區,而接受方對這些資料只要傳送乙個ack報文來回應就可以了,這就是ack的累積特性,這個特性大大減少了傳送端和接收端的負擔。

(2).滑動視窗

滑動視窗本質上是描述接受方的tcp資料報緩衝區大小的資料,傳送方根據這個資料來計算自己最多能傳送多長的資料。如果傳送方收到接受方的視窗大小為0的tcp資料報,那麼傳送方將停止傳送資料,等到接受方傳送視窗大小不為0的資料報的到來。

關於滑動視窗協議,書上還介紹了三個術語,分別是:

視窗合攏:當視窗從左邊向右邊靠近的時候,這種現象發生在資料被傳送和確認的時候。

視窗張開:當視窗的右邊沿向右邊移動的時候,這種現象發生在接受端處理了資料以後。

視窗收縮:當視窗的右邊沿向左邊移動的時候,這種現象不常發生。

(2).資料擁塞

上面的策略用於區域網內傳輸還可以,但是用在廣域網中就可能會出現問題,最大的問題就是當傳輸時出現了瓶頸(比如說一定要經過乙個slip 低速鏈路)所產生的大量資料堵塞問題(擁塞),為了解決這個問題,tcp傳送方需要確認連線雙方的線路的資料最大吞吐量是多少。這,就是所謂的擁塞視窗。

擁塞視窗的原理很簡單:

1.tcp傳送方首先傳送乙個資料報,然後等待對方的回應;

2.得到回應後就把這個視窗的大小加倍,然後連續傳送兩個資料報;

3.等到對方回應以後,再把這個視窗加倍,傳送更多的資料報;

4.直到出現超時錯誤。

**:

tcp成塊資料流互動

滑動視窗 滑動視窗協議是允許傳送方傳送多個未被確認的資料分組,每個分組不必等待確認後進行傳送下乙個分組,且接受方通過視窗協議可以對多個分組進行確認,可以加快資料的傳輸。在滑動視窗協議中,ack的確認是可以累積的,可以一次確認多個分組。當接收方確認資料後,這個滑動視窗不時地向右移動。視窗兩個邊沿的相對...

TCP互動資料流與成塊資料流 筆記

tcp互動資料流 對與互動性要求較高的應用採用互動性輸入,一次傳送較少的位元組,當tcp在接受資料時並不急著立即傳送ack 相反,它推遲傳送,以便將ack與需要沿該方向傳送的資料一起傳送 捎帶ack 絕大多數實現採用的時延為200ms,也就是說,tcp將以最大200ms的時延等待是否有資料一起傳送。...

網路協議 TCP互動資料流和資料流成塊

建立在tcp協議上的應用層協議有非常多,如ftp http telnet等,這些協議依據資料傳輸的多少能夠分為兩類 互動資料型別和成塊資料型別。互動資料型別,如 telnet,這類協議一般僅僅做小流量的資料交換。比方每按下乙個鍵,要回顯一些字元。成塊資料型別。如 ftp,這類協議須要傳輸的資料比較多...