TCP
TCP特點
TCP (Transmission Control Protocol,傳輸控制協(xié)議) 是一種面向連接的協(xié)議,即數(shù)據(jù)傳輸之前要經(jīng)過三次握手建立一條全雙工連接吁朦,然后才能進行真正的數(shù)據(jù)傳輸搓蚪。
TCP除了是一種面向連接的協(xié)議外婿斥,還提供可靠的、按需到達的字節(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進程發(fā)起、服務(wù)器確認(rèn)哟冬、客戶再確認(rèn)楼熄,其中前兩次segment中沒有數(shù)據(jù),而第三次中可以攜帶數(shù)據(jù)浩峡。TCP的連接建立過程也叫三次握手可岂。
TCP的四次揮手
TCP的連接拆除過程是:首先由Client進程發(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)
擴展
TCP的RTT評估
TCP只進行兩次握手會產(chǎn)生什么問題
考題預(yù)測
可靠數(shù)據(jù)傳輸至少會考一道大題
TCP三次握手與四次揮手荆责、TCP和UDP的特點、擁塞控制的幾個階段都很重要亚脆,可能會出現(xiàn)在簡答題填空題等各種題型中做院。