(傳輸層)TCP協(xié)議
本文關(guān)鍵詞:tcp協(xié)議,由筆耕文化傳播整理發(fā)布。
(傳輸層)tcp協(xié)議
目錄
圖釋:
各個(gè)段位說(shuō)明:
數(shù)據(jù)單位
TCP 傳送的數(shù)據(jù)單位協(xié)議是 TCP 報(bào)文段(segment)
特點(diǎn)
TCP 是面向連接的傳輸層協(xié)議
每一條 TCP 連接只能有兩個(gè)端點(diǎn)(endpoint),每一條 TCP 連接只能是點(diǎn)對(duì)點(diǎn)的(一對(duì)一)
TCP 提供可靠交付的服務(wù)
TCP 提供全雙工通信
面向字節(jié)流
注意
TCP 對(duì)應(yīng)用進(jìn)程一次把多長(zhǎng)的報(bào)文發(fā)送到TCP 的緩存中是不關(guān)心的
TCP 根據(jù)對(duì)方給出的窗口值和當(dāng)前網(wǎng)絡(luò)擁塞的程度來(lái)決定一個(gè)報(bào)文段應(yīng)包含多少個(gè)字節(jié)(UDP 發(fā)送的報(bào)文長(zhǎng)度是應(yīng)用進(jìn)程給出的)
TCP 可把太長(zhǎng)的數(shù)據(jù)塊劃分短一些再傳送.TCP 也可等待積累有足夠多的字節(jié)后再構(gòu)成報(bào)文段發(fā)送出去
每一條 TCP 連接有兩個(gè)端點(diǎn)
TCP 連接的端點(diǎn)不是主機(jī),不是主機(jī)的IP 地址,不是應(yīng)用進(jìn)程,也不是傳輸層的協(xié)議端口.TCP 連接的端點(diǎn)叫做套接字(socket)或插口
自動(dòng)重傳請(qǐng)求ARQ
定義:
可靠傳輸協(xié)議常稱為自動(dòng)重傳請(qǐng)求ARQ (Automatic Repeat reQuest)
累積確認(rèn):
Go-back-N(回退N):
如果發(fā)送方發(fā)送了前 5 個(gè)分組,而中間的第 3 個(gè)分組丟失了.這時(shí)接收方只能對(duì)前兩個(gè)分組發(fā)出確認(rèn).發(fā)送方無(wú)法知道后面三個(gè)分組的下落,而只好把后面的三個(gè)分組都再重傳一次
具體實(shí)現(xiàn)
說(shuō)明:
圖釋:
發(fā)送緩存
發(fā)送緩存用來(lái)暫時(shí)存放:
圖釋:
接收緩存
接收緩存用來(lái)暫時(shí)存放:
圖釋:
滑動(dòng)窗口
圖釋:
特點(diǎn):
要求:
具體實(shí)現(xiàn):
確認(rèn)丟失和確認(rèn)遲到
超時(shí)重傳時(shí)間選擇
具體實(shí)現(xiàn):
TCP 每發(fā)送一個(gè)報(bào)文段,就對(duì)這個(gè)報(bào)文段設(shè)置一次計(jì)時(shí)器.只要計(jì)時(shí)器設(shè)置的重傳時(shí)間到但還沒(méi)有收到確認(rèn),就要重傳這一報(bào)文段
加權(quán)平均往返時(shí)間:
做法:
TCP 保留了 RTT 的一個(gè)加權(quán)平均往返時(shí)間 RTTS(這又稱為平滑的往返時(shí)間),第一次測(cè)量到 RTT 樣本時(shí),RTTS 值就取為所測(cè)量到的 RTT 樣本值.以后每測(cè)量到一個(gè)新的 RTT 樣本,就按下式重新計(jì)算一次 RTTS:
公式:
新的 RTTS = ( 1 - α)×(舊的 RTTS)+α(新的 RTT 樣本)說(shuō)明:
式中,0 ≤ α< 1.若α很接近于零,表示 RTT 值更新較慢若選擇 α 接近于1,則表示 RTT 值更新較快
RFC 2988 推薦的 α 值為 1/8,即 0.125
超時(shí)重傳時(shí)間RTO:
RTO 應(yīng)略大于上面得出的加權(quán)平均往返時(shí)間 RTTS.
RFC 2988 建議使用下式計(jì)算 RTO:
RTTD 是 RTT 的偏差的加權(quán)平均值
RFC 2988 建議這樣計(jì)算 RTTD.第一次測(cè)量時(shí),RTTD 值取為測(cè)量到的 RTT 樣本值的一半.在以后的測(cè)量中,則使用下式計(jì)算加權(quán)平均的 RTTD:
β是個(gè)小于 1 的系數(shù),其推薦值是 1/4,即 0.25
在計(jì)算平均往返時(shí)間 RTT 時(shí),只要報(bào)文段重傳了,就不采用其往返時(shí)間樣本
修正的Karn算法:
報(bào)文段每重傳一次,就把 RTO 增大一些:
新的 RTO= γ×(舊的 RTO)系數(shù)γ 的典型值是 2
當(dāng)不再發(fā)生報(bào)文段的重傳時(shí),才根據(jù)報(bào)文段的往返時(shí)延更新平均往返時(shí)延 RTT 和超時(shí)重傳時(shí)間 RTO 的數(shù)值
持續(xù)計(jì)時(shí)器
報(bào)文段的發(fā)送時(shí)機(jī)
TCP 維持一個(gè)變量,它等于最大報(bào)文段長(zhǎng)度 MSS.只要緩存中存放的數(shù)據(jù)達(dá)到 MSS 字節(jié)時(shí),就組裝成一個(gè) TCP 報(bào)文段發(fā)送出去
由發(fā)送方的應(yīng)用進(jìn)程指明要求發(fā)送報(bào)文段,即 TCP 支持的推送(push)操作
發(fā)送方的一個(gè)計(jì)時(shí)器期限到了,這時(shí)就把當(dāng)前已有的緩存數(shù)據(jù)裝入報(bào)文段(但長(zhǎng)度不能超過(guò) MSS)發(fā)送出去
運(yùn)輸連接
三個(gè)階段:
TCP 連接必須經(jīng)過(guò)時(shí)間 2MSL 后才真正釋放掉(2MSL 的時(shí)間的用意 --- 為了保證 A 發(fā)送的最后一個(gè) ACK 報(bào)文段能夠到達(dá) B.防止 “已失效的連接請(qǐng)求報(bào)文段”出現(xiàn)在本連接中.A 在發(fā)送完最后一個(gè) ACK 報(bào)文段后,再經(jīng)過(guò)時(shí)間 2MSL,就可以使本連接持續(xù)的時(shí)間內(nèi)所產(chǎn)生的所有報(bào)文段,都從網(wǎng)絡(luò)中消失.這樣就可以使下一個(gè)新的連接中不會(huì)出現(xiàn)這種舊的連接請(qǐng)求報(bào)文段)
三個(gè)問(wèn)題:
發(fā)送TCP請(qǐng)求客戶端
擁塞處理相關(guān)概念
擁塞窗口:
含義:
擁塞窗口的大小取決于網(wǎng)絡(luò)的擁塞程度,并且動(dòng)態(tài)地在變化.發(fā)送方讓自己的發(fā)送窗口等于擁塞窗口.如再考慮到接收方的接收能力,則發(fā)送窗口還可能小于擁塞窗口
發(fā)送方控制擁塞窗口的原則:
只要網(wǎng)絡(luò)沒(méi)有出現(xiàn)擁塞,擁塞窗口就再增大一些,以便把更多的分組發(fā)送出去.但只要網(wǎng)絡(luò)出現(xiàn)擁塞,擁塞窗口就減小一些,以減少注入到網(wǎng)絡(luò)中的分組數(shù)
乘法減小:
是指不論在慢開(kāi)始階段還是擁塞避免階段,只要出現(xiàn)一次超時(shí)(即出現(xiàn)一次網(wǎng)絡(luò)擁塞),就把慢開(kāi)始門限值 ssthresh 設(shè)置為當(dāng)前的擁塞窗口值乘以 0.5
加法增大:
是指執(zhí)行擁塞避免算法后,在收到對(duì)所有報(bào)文段的確認(rèn)后(即經(jīng)過(guò)一個(gè)往返時(shí)間),就把擁塞窗口 cwnd增加一個(gè) MSS 大小,使擁塞窗口緩慢增大,以防止網(wǎng)絡(luò)過(guò)早出現(xiàn)擁塞
快重傳:
快重傳算法首先要求接收方每收到一個(gè)失序的報(bào)文段后就立即發(fā)出重復(fù)確認(rèn).這樣做可以讓發(fā)送方及早知道有報(bào)文段沒(méi)有到達(dá)接收方,發(fā)送方只要一連收到三個(gè)重復(fù)確認(rèn)就應(yīng)當(dāng)立即重傳對(duì)方尚未收到的報(bào)文段
快恢復(fù):
當(dāng)發(fā)送端收到連續(xù)三個(gè)重復(fù)的確認(rèn)時(shí),就執(zhí)行“乘法減小”算法,把慢開(kāi)始門限 ssthresh 減半.但接下去不執(zhí)行慢開(kāi)始算法
發(fā)送窗口的上限值:
發(fā)送方的發(fā)送窗口的上限值應(yīng)當(dāng)取為接收方窗口 rwnd 和擁塞窗口 cwnd 這兩個(gè)變量中較小的一個(gè),即應(yīng)按以下公式確定:
發(fā)送窗口的上限值 Min [rwnd, cwnd]
慢開(kāi)始算法:
擁塞避免算法:
擁塞窗口 cwnd 緩慢地增大,即每經(jīng)過(guò)一個(gè)往返時(shí)間 RTT 就把發(fā)送方的擁塞窗口 cwnd 加 1,使擁塞窗口 cwnd 按線性規(guī)律緩慢增長(zhǎng)
慢開(kāi)始門限 ssthresh 的用法:
網(wǎng)絡(luò)出現(xiàn)擁塞時(shí)(其根據(jù)就是沒(méi)有按時(shí)收到確認(rèn)):
TCP 的有限狀態(tài)機(jī)
說(shuō)明:
posted @
本文關(guān)鍵詞:tcp協(xié)議,,由筆耕文化傳播整理發(fā)布。
本文編號(hào):159031
本文鏈接:http://sikaile.net/wenshubaike/xxkj/159031.html