Tcp協議細節(三次握手,四次握手)


利用滑動窗口實現流量控制(讓發送方的發送速率不要太快,讓接收方來得及接收)

(發送窗口的發送窗口不能超過接收方給出的接收窗口的數值)

擁塞控制

擁塞:在某段時間,對網絡中某一資源的需求超過了該資源所能提供的可用部分

首先發送方維持一個叫做擁塞窗口cwnd的狀態變量,擁塞窗口的大小取決於網絡的擁塞程度,並且動態的變化,發送方讓自的發送窗口等於擁塞窗口。如果考慮到接收方的接受能力,那么發送窗口還可能小於擁塞窗口。

發送方控制擁塞窗口的原則:只要網絡沒有出現擁塞,擁塞窗口就再增大一些,以便把更多的分組發送出去,制葯網絡出現擁塞,擁塞窗口就減小一些,以減小注入到網絡中的分組數。

 

幾種解決擁塞控制的方法:慢開始,擁塞避免,快重傳,快恢復

慢開始:

當主機開始發送數據時,如果立即把大量數據字節注入到網絡中,可能引起網絡的負荷情況,經驗證明,較好的方式是先探測一下,由小到大逐漸增大發送窗口

舉一個例子:

在一開始,發送方先設置cwnd=1,發送第一個報文段M1,接收方收到后確認M1。發送方收到對M1的確認后,把cwnd從1增大到2,於是發送方接着發送M2和M3兩個報文段,接收方接收到后發回對M2和M3的確認。此時cwnd從2變化到4,然后發送M4到M7,以后每次都是呈倍數增長。

擁塞避免算法:

讓擁塞窗口cwnd緩慢增大,每經過一個往返時間RTT就把發送方的擁塞窗口cwnd加1,擁塞窗口cwnd是按線性規律緩慢增長,比慢開始算法的擁塞窗口增長速率慢很多。

 

快重傳:

要求接收方每收到一個失序報文立即發送重復確認。以圖為例:

解釋:

1.當發送方發送M3給接收方,在傳送過程中發生丟包,

2.發送方維持的擁塞窗口中的數據包還在傳送,而每一次傳送到接收方,接收方都發送一個重復確認M2給發送方

3.只要發送方接收到3個重復確認時,不用等到M3設置的超時重傳計時器到期,就自動重傳M3

 

快恢復:

1.當發送方連續接收到3個重復確認時,就執行“乘法減小”算法,把慢開始門限減小,為了預防網絡發生擁塞,但接下去不執行慢開始算法

2.由於發送方現在認為網絡很可能沒有發生擁塞(如果網絡發生了嚴重的擁塞,就不會一連有好幾個報文段連續到達接收方,也就不會導致接收方連續發送重復確認),故與慢開始不同之處在於現在不執行滿開始算法,而是把cwnd值設置為慢開始門限ssthresh減半后的數值,然后開始執行擁塞避免算法,使擁塞窗口緩慢的線性增大

 

首先tcp的運輸連接有3個階段:連接建立,數據傳送,連接釋放

三次握手:

主要用於tcp的連接建立階段,引用《計算機網絡第6版》中的圖加以說明:

 

首先,發起請求的一方成為客戶端,故上圖客戶端是A,被動等待連接的一方是服務器端,故為B

分析三次握手過程:

  • A首先向B發起請求,此時的SYN(同步,在連接建立時用來同步序號)。當SYN=1,而ACK=0,這是一個連接請求報文段,此時A設置一個隨機序列號,向B發起請求
  • B收到請求后,向A回復一個SYN=1,ACK=1(確認號為1),表示這是一個同意建立連接的報文段。此時ack必須為seq+1,同時也為自己設置一個seq=y,
  • A收到B的確認后,向B發送一個ACK=1,並且將ack設置為y+1,seq(字節編號),Tcp的標准規定,ACK報文可以攜帶數據,但是如果不攜帶數據則不消耗序號。

為何A還要發送一次確認,主要是為了防止已經失效的鏈接請求報文段突然又傳到了B,因而產生錯誤

TCP的連接釋放:(4次握手)

  • A的應用進程先向其TCP發出連接釋放報文段,並停止再發送數據,主動關閉TCP連接,A把連接釋放報文段首部的終止控制位FIN置為1(FIN字段用來釋放一個連接),其序號seq=u,它等於前面已傳送過的數據的最后一個字節的序號加1
  • b收到連接后,發出ACK=1,並ack=u+1,且設置自己的seq=v,此時的tcp處於半關閉狀態,a收到確認后,進入等待狀態,等待b發出的連接釋放報文段
  • 若b沒有要向a發送的數據,其應用進程就通知TCP釋放連接,這是b發出的連接釋放報文段必須使FIN=1,並設置自己的seq=w,且b必須重復上次已發送過的確認號ack=u+1,並且設置ACK=1
  • a收到b的連接釋放報文段后,必須對此發出確認,在確認報文中把ACK置為1,確認號ack=w+1,而自己的序號是seq=u+1

為何A在time-wait狀態必須等待2MSL的時間呢?

1,確保a發送的最后一個ack報文段能夠到達b

2,防止之前提到的“已失效的連接請求報文段”出現在本連接中


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM