對於tcp/ip一書中tcp部分,我認為關鍵要掌握3點
1.建鏈和拆鏈過程
2. 資料互動規則
3.流量控制原則
針對這幾點,我進行了簡要概括,希望有助於初學者理解
流量控制原則
個人對於流量控制的理解,就是平衡一系列的矛盾,使資料
傳輸各方面的綜合成本最低。
某個時間點,
網路的容量或是某個連線的容量總是有限的。容量由頻寬,環路時延,接收快取等一系列因素共同決定。如果傳送端資料傳送的太慢,遠低於連線容量,首先便是資料互動等待時間加長(想象下,如果等下乙個檔案要幾個小時……),再次就是造成
網路的利用率低,投資不能充分利用(好比使用8m的adsl,只看普通網頁)。相反,如果某段時間
網路上傳輸的包過多,超過了容量,那造成的結果就是
網路擁塞(有點幾年前忙時上網的感覺),大量的資料報被丟棄,重發,如果不加控制,則會進一步造成重發資料報氾濫,不斷吞噬
網路頻寬,使有效
網路頻寬不斷降低,流量控制很多時候就是為了擁塞控制和擁塞恢復
tcp的各種流量控制的原則,總得來說就是使流量總是能接近但不超過網路或連線的容量,即最大化的利用網路頻寬,但又不至於造成擁塞,或是一但出現擁塞,能夠快速的恢復到乙個最佳的流量值,下面再列舉一些tcp的措施
儘量減少包數:
每個包都有包頭的開銷,因而相同資料使用越少的包,便能夠提高有網路傳送有效負荷的比例;同時,包數的減少,也能夠降低網路裝置的處理負荷。
tcp允許乙個包含有多個功能,乙個資料報不但包含本次傳送的資料,同時還攜帶對於對端資料的確認、拆鏈資訊等資訊,這樣可以最大化地利用tcp包頭的字段,並減少確認包和命令包
tcp允許接收端不對每個接收到的資料報立即進行確認,如上圖所示,接收端可以在傳送資料時,或是等待一段時間後,對收到的,編號最大的包進行確認。傳送端可以知道,接收端確認包號之前的包都已經正確收到,這樣可以減少確認包。
tcp會盡量避免資料報分片。資料報分片一是會造成包數增加,二是會增加重傳的風險(任乙個分片丟失,原資料報就需要重發)。tcp在建鏈過程中,雙方會相互知會各端最大可以接收的包長,並協商出乙個最大的傳送包長,後續的包長都以小於這個最大傳送包長的大小傳送,避免分片。(可以參見mtu
原理tcp的各種重傳間隔都不是等長的,而是以指數級增長的。即第一次重傳和第二次重傳的間隔會比第三次與第四次的間隔小很多,這種重傳控制方法,可以在相同時間內,大量減少的重傳次數,如下圖所示
傳送速度控制:
tcp雙方互動資料時,都會攜帶各自目前的快取大小,這樣,各端都能根據目前對端快取的變化,控制傳送速度。
此外,tcp有很多控制傳送資料,避免擁塞的演算法,要研究具體演算法,那就要啃書了,但基本原則還是與本文開頭一致,使傳送速率總是控制在恰好低於網路或通道飽和容量之下,即要高效地利用網路,又不至於使網路陷入擁塞。
ok, 以上便是對於tcp理解的一些總結,不足之處請各位多指教。
mysql流量控制 UDP流量控制之分析
關健字 udpudx udttcp 吞吐量流量 代寬擁塞控制 大都知道,udp是不可靠傳輸協議與tcp剛好相反.不過因為udp的特性適合傳輸不需要確認的資料,在應用層如果設計好的傳輸協議一樣可以進行很好的可靠傳輸.比如rudp協議.但是光可靠傳輸還不夠,流量控制是很重要的.我們從簡單的情況說起來說明...
TCP流量控制
一般來說,我們總是希望資料傳輸的更快一些,但如果傳送方把資料傳送的很快,而接收方來不及接收,這就可能造成資料的丟失。流量控制就是讓傳送方的傳送速率不要太快,讓接收方來得及接收。對於成塊資料流,tcp利用滑動視窗機制來實現流量的控制,對於互動資料流,tcp利用捎帶ack和nagle演算法來實現流量的控...
TCP流量控制
如果傳送端傳送的速度較快,接收端接收到資料後處理的速度較慢,而接收緩衝區的大小是固定的,就會丟失資料。tcp協議通過 滑動視窗 sliding window 機制解決這一問題。滑動視窗 傳送端發起連線,宣告最大段尺寸是1460,初始序號是0,視窗大小是4k,表示 我的接收緩衝區還有4k位元組空閒,你...