TCP
TCP特點
TCP (Transmission Control Protocol,傳輸控制協(xié)議) 是一種面向連接的協(xié)議,即數(shù)據(jù)傳輸之前要經(jīng)過三次握手建立一條全雙工連接,然后才能進(jìn)行真正的數(shù)據(jù)傳輸。
TCP除了是一種面向連接的協(xié)議外,還提供可靠的、按需到達(dá)的字節(jié)流數(shù)據(jù)傳輸、流控和擁塞控制。無頭無尾,連續(xù)不斷。
面向字節(jié)流。(TCP不采用停等式的傳輸,而用流水線的方式,且序列號是根據(jù)數(shù)據(jù)段的第一個字節(jié)填寫的)
TCP報文格式

源端口和目的端口字段——各占 2 字節(jié)。端口是運輸層與應(yīng)用層的服務(wù)接口。運輸層的復(fù)用和分用功能都要通過端口才能實現(xiàn)。
序號字段——占 4 字節(jié)。TCP 連接中傳送的數(shù)據(jù)流中的每一個字節(jié)都編上一個序號。序號字段的值則指的是本報文段所發(fā)送的數(shù)據(jù)的第一個字節(jié)的序號。
確認(rèn)號字段——占 4 字節(jié),是期望收到對方的下一個報文段的數(shù)據(jù)的第一個字節(jié)的序號。
窗口字段 —— 占 2 字節(jié),用來讓對方設(shè)置發(fā)送窗口的依據(jù),單位為字節(jié)。
TCP的三次握手
TCP的連接建立過程是:首先由Client進(jìn)程發(fā)起、服務(wù)器確認(rèn)、客戶再確認(rèn),其中前兩次segment中沒有數(shù)據(jù),而第三次中可以攜帶數(shù)據(jù)。TCP的連接建立過程也叫三次握手。


TCP的四次揮手
TCP的連接拆除過程是:首先由Client進(jìn)程發(fā)FIN給服務(wù)器、服務(wù)器確認(rèn)、服務(wù)器再發(fā)FIN給Client,Client確認(rèn)。四次握手。
在發(fā)送完最后的ACK后,發(fā)起連接拆除方需要等待一段時間,以便在ACK丟失時,拆除方可以重新發(fā)送ACK。一般等待30s。

TCP的可靠數(shù)據(jù)傳輸

TCP數(shù)據(jù)傳輸特點:累積確認(rèn)、選擇重傳(只重傳最早未確認(rèn)的數(shù)據(jù)包)、快速重傳(收到三個重復(fù)的ACK)
流控制
接收方通過發(fā)送消息給發(fā)送方控制其速度。避免發(fā)送速度太快導(dǎo)致其接收緩沖區(qū)溢出。
receiver “advertises” free buffer space by including rwnd value in TCP header of receiver-to-sender.
sender limits amount ofunacked (“in-flight”) data toreceiver’s rwnd value
擁塞控制 幾個階段 數(shù)值變化
網(wǎng)絡(luò)擁塞導(dǎo)致延時增加、丟包。
MSS(最大報文長度)

AIMD(加法增,乘法減)

慢啟動:
初始窗口大小為1,每收到一個ACK,窗口大小*2
初始速率低,但以指數(shù)增長快。
TCP 對丟包的反應(yīng)和措施:
超時引起的事件:
cwnd set to 1 MSS;
window then grows exponentially (as in slow start) to threshold, then grows linearly
三個重復(fù)ACK引發(fā)的事件
TCP RENO
cwnd is cut in half window then grows linearly
TCP Tahoe always sets cwnd to 1 (timeout or 3
duplicate acks)

擴(kuò)展
TCP的RTT評估
TCP只進(jìn)行兩次握手會產(chǎn)生什么問題

考題預(yù)測
可靠數(shù)據(jù)傳輸至少會考一道大題
TCP三次握手與四次揮手、TCP和UDP的特點、擁塞控制的幾個階段都很重要,可能會出現(xiàn)在簡答題填空題等各種題型中。