當前位置:首頁 » 文件管理 » tcp緩存

tcp緩存

發布時間: 2022-12-22 03:55:56

㈠ 傳輸層Transport layer TCP, since 2020-08-05

(2020.08.07)
TCP被稱為面向連接的(connection-oriented),這是因為一個進程可以向另一個進程發送數據之前,兩個進程需要先握手,即他們開始互相發送預備報文段,以確保建立數據連接的參數。

TCP是邏輯連接,其共同狀態僅保存在兩個通信端系統的TCP程序中。而端系統之間的網路元素不會維持TCP的連接狀態。中間路由器對TCP完全視而不見,他們只看到數據報,而非連接。

通信特點
全雙工(full-plex service),處在不同主機的進程A和進程B之間存在一條連接,數據可以同時從A流向B和從B流向A。
點對點(point-to-point),在單個發送方和單個接收方之間的連接。

伺服器進程和客戶進程
發起連接的進程稱為客戶進程,另一個稱為伺服器進程。
(2020.08.08)
數據一旦被送進socket,就由客戶TCP控制了,TCP將數據放在一個數據緩存(send buffer)里(C/S兩端都有),該緩存也是三次握手時數據存放處。TCP會從緩存中取出一塊數據,傳遞給網路層。

TCP首部+客戶數據=TCP報文段(TCP segment)

TCP從send buffer中取出並放入報文段中數據的數據量受限於 最大報文段長度(maximum segment size, MSS) ,其根據最初確定的由本地主機發送的最大鏈路層幀長度(即最大傳輸單元Maximum transmission unit, MTU)來設置。乙太網和PPP鏈路都有1500位元組的MTU,考慮到TCP/IP首部一般是40位元組(TCP首部20位元組),TCP報文段中數據長度典型值是1460位元組。注意到這里的MSS指的是TCP報文段中來自應用層的數據的最大長度。

TCP連接的組成
一台主機上的緩存、變數和連接進程的socket,以及另一台主機上的緩存、變數、socket。

首部+數據欄位。當TCP發送一個大文件,比如圖片,TCP通常將該文件劃分成長度為MSS的若干,除最後一塊,其他的都是MSS長度。而Telnet這樣的應用,數據欄位只有一個位元組長,也就是其TCP一般只有21個位元組的長度。

典型長度:20位元組/160bits (選項欄位為空時)
源埠號:16bits
目的埠號:16bits
序號(seq num):32bits
確認號(acknowledgment num):32bits
接收窗口(receive window field):16bits ,用於流量控制,指示接收方願意接收的位元組數量
首部長度(header length field):4bits ,以32bits的字為長度的TCP首部長度
選項欄位(options):可選和變長
標志欄位(flag field):6bits ,ACK/RST/SYN/FIN/PSH/URG

序號建立在傳送的位元組流之上而非報文段的序列值上,the sequence number for a segment是報文段首位元組的位元組流編號。比如一個待發送的文件共10,000個位元組,每個TCP的報文段發送1,000個,則第一個報文段的序號是0,第二個序號是1,000,以此類推。該序號是位元組的編號,並用於給報文段編號。
上面的例子中假設初始序號是0,在實際應用中收發兩方隨機選擇初始序號。
確認號略復雜。主機A和B之間建立TCP通信, 主機A填充進報文段的確認號是A期望從B收到的下一個位元組的序號

報文段的樣本RTT(SampleRTT)是報文段被發出(交給IP)到對該報文段的確認被收到之間的時間量。僅為一個已經發送的但目前尚未被確認的報文段估計SRTT,從而產生一個接近每個RTT的新SRTT值;不為已經被重傳的報文段計算SRTT;僅為傳輸一次的報文段測量SRTT。

由於網路環境變化,比如路由器的擁塞和端負載的變化,SRTT並不都是典型的。TCP會維持一個SRTT的均值(EstimatedRTT),並根據下面公式計算ERTT

其中的推薦值 。該指數加權移動平均值(Exponential Weighted Moving Average, EWMA)賦予最近樣本的權值要高於舊樣本的權值,因越近的樣本能更好的反應網路的擁塞狀態。

此外,RTT的標准差DevRTT用於估算SRTT偏離ERTT的程度:

推薦值 。

超時間隔應該大於等於ERTT,否則造成不必要的重傳。但也不該比ERTT大很多,導致數據傳輸時延大。當SRTT波動大時,間隔大些,波動小時,間隔小些。

初始推薦值 ,當出現超時候翻倍。只要收到報文就更新ERTT,並根據公式重算TimeoutInterval。
(2020.08.09 Sat)
定時器
定時器的管理需要相當大的開銷,因此[RFC 6298]推薦僅使用單一的重傳定時器,即便有多個已發送但未被確認的報文段。

(2020.08.09 Sat)
TCP中發送方相關的三個主要動作

發送方對這些主要動作的反饋參考可靠數據傳輸的部分。

超時間隔的選取
每當超時事件發生,TCP重傳具有最小序號的未被確認的報文段。只是每次TCP重傳是都會將下一次的超時間隔設為先前值的兩倍,而不是用從EstimatedRTT和DevRTT推算的值。然而每當定時器遇到另外兩個事件,即ACK和上層數據,定時器的啟動TimeoutInterval由最近的ERTT和DRTT推算得到。

TCP兩側的主機都有接收緩存。流量控制服務用於消除sndr使rcvr緩存溢出的可能性。fcs因此是一個速度匹配服務,即sndr的發送速率和rcvr應用程序的讀取速率相匹配。
TCP讓sndr維護一個接收窗口(receive window)的變數來提供流量控制,即rw用於給sndr一個指示-該sndr還有多少可用的緩存空間。TCP是全雙工通信,兩端的發送方都維護一個rw。分析一種情況,主機A通過TCP向B發送一個大文件,B為該連接分配一個接收緩存,用RcvBuffer來表示。B的應用進程從該緩存中讀取數據。有如下變數

緩存不許溢出,故有 接收窗口用rwnd表示,緩存可用空間數量(即空閑的空間數量)表示為
主機A需要跟蹤另外兩個變數,LastByteSent和LastByteAcked,對A來說有
一個特例,當B的接收緩存滿,rwnd=0,假設此時B沒有任何數據要發送給A。考慮到TCP並不向A發送帶有rwnd的新報文段, 而事實上TCP僅當有數據或去人要發時才會發送報文段給A。導致A不知道B的接收緩存有新空間,A被阻塞不能在發送數據。解決方案,TCP規范要求,B的接收窗口為0時,A繼續發送只有一個位元組數據的報文段,這些報文段將會被接收方確認,最終緩存開始清空,且確認報文段將包含一個非0的rwnd值。

(2020.08.05)
TCP建立過程中三個握手(three-way handshake)的作用

三次發送,sndr/rcvr雙方各自確認了自身和對方的接收能力和發送能力。握手完成便可建立連接。
(2020.08.07)
前兩次握手的報文段不承載"有效載荷",也就是不包含應用層數據,第三個握手可以承載應用層數據。

(2020.08.09 Sat)

完成這三步,C-S可通信,以後每一個報文段的SYN都設置為0。
結束連接
客戶打算結束連接,發出一個特殊的報文段,設置其中的FIN=1。伺服器接收到回復一個確認報文段,其中的FIN=1。伺服器再次發送一個結束連接報文段,FIN=1。客戶收到後發送ACK並釋放佔用的資源。

IP層不會向兩個端系統提供有關網路擁塞的反饋信息。略。

發送方sndr設定一個變數,擁塞窗口congestion windown,cwnd,它對TCP發送方能向網路中發送流量的速率進行了限制,並且和前面提到的接收窗口rwnd聯合決定了發送速率,即
TCP如何感知它和目的地之間的擁塞
定義丟包事件:出現超時,或者受到來自接收方的3個冗餘ACK。
一個丟失的報文段意味著擁塞,當報文丟失應該降低TCP sndr的發送速率。 即減小cwnd。
一個確認報文段指示該網路正在向rcvr交付sndr的報文段,因此,當對先前未確認報文段的確認到達時,能夠增加發送方的速率。
貸款檢測。

演算法分為三部分,1)慢啟動,2)擁塞避免,3)快速恢復。其中的1和2是TCP強制部分。在收到ACK時,慢啟動比擁塞避免更快的增加cwnd的長度。

當一個TCP連接開始時,cwnd的值通常設為一個MSS的較小值。這使得發送速率大約為MSS/RTT。如MSS=500Bytes,RTT=200ms,則初始發送速率是20kbps。注意到此時帶寬可能比初始速率快的多。慢啟動(slow-start)狀態,cwnd的值以一個MSS開始並且每當傳輸的報文段首次被確認就增加一個MSS。這一過程使得每過一個RTT,發送速率就翻番。初始速度慢,但ss階段以指數增長。

結束ss的情況

熱點內容
vc6編譯操作 發布:2025-08-20 23:16:14 瀏覽:869
時統伺服器搭建 發布:2025-08-20 23:15:58 瀏覽:907
c語言單字元 發布:2025-08-20 23:15:12 瀏覽:70
outlook發送伺服器地址在哪裡 發布:2025-08-20 23:06:13 瀏覽:1000
c語言培訓心得 發布:2025-08-20 23:02:20 瀏覽:46
如何打開raw伺服器鏡像 發布:2025-08-20 22:48:13 瀏覽:76
1分鍾造解壓神器 發布:2025-08-20 22:46:28 瀏覽:378
雲伺服器搭建spark 發布:2025-08-20 22:41:19 瀏覽:36
好用免費雲伺服器 發布:2025-08-20 22:16:44 瀏覽:609
傲慢與偏見ftp 發布:2025-08-20 22:11:15 瀏覽:904