傳輸層

傳輸層

傳輸層(Transport Layer)是ISO OSI協(xié)議的第四層協(xié)議,實現(xiàn)端到端的數(shù)據(jù)傳輸询一。該層是兩臺計算機經(jīng)過網(wǎng)絡(luò)進行數(shù)據(jù)通信時,第一個端到端的層次,具有緩沖作用朽褪。當網(wǎng)絡(luò)層服務(wù)質(zhì)量不能滿足要求時,它將服務(wù)加以提高无虚,以滿足高層的要求缔赠;當網(wǎng)絡(luò)層服務(wù)質(zhì)量較好時,它只用很少的工作友题。傳輸層還可進行復(fù)用嗤堰,即在一個網(wǎng)絡(luò)連接上創(chuàng)建多個邏輯連接。

傳輸層在終端用戶之間提供透明的數(shù)據(jù)傳輸度宦,向上層提供可靠的數(shù)據(jù)傳輸服務(wù)踢匣。傳輸層在給定的鏈路上通過流量控、分段/重組和差錯控制斗埂。一些協(xié)議是面向鏈接的符糊。這就意味著傳輸層能保持對分段的跟蹤,并且重傳那些失敗的分段呛凶。

1.傳輸層作用

  • 傳輸層實現(xiàn)應(yīng)用進程間的端到端(end-to-end)通信

  • 向應(yīng)用層提供通信服務(wù)

2.多路分解與復(fù)用

  • 多路復(fù)用:所有應(yīng)用進程的數(shù)據(jù)通過傳輸層傳輸?shù)絀P層男娄;

  • 多路分解:傳輸層收到的數(shù)據(jù)交付給相應(yīng)的應(yīng)用進程。

3.用戶數(shù)據(jù)報協(xié)議UDP

端到端的漾稀、盡力而為的模闲、無連接的數(shù)據(jù)報傳輸服務(wù) 1.無連接的 2.盡最大努力交付,即不保證可靠交付 3.面向報文的(在IP的功能上簡單擴展了端到端) 4.沒有擁塞控制 5.支持一對一崭捍、一對多尸折、多對一和多對多的交互通信(需要組播的通信都是建立在UDP之上)

2019-06-08_210153.png

4.傳輸控制協(xié)議TCP

端到端的、可靠的殷蛇、面向連接的字節(jié)流服務(wù) a).面向連接:先建立邏輯連接实夹,進行雙向數(shù)據(jù)流傳輸橄浓,通信結(jié)束后撤銷連接 b).面向字節(jié)流 c).點對點的全雙工通信 d).可靠傳輸:對一個連接上傳輸?shù)拿總€字節(jié)編號,通過接收確認和重傳來保證可靠傳輸 c).流量控制:防止發(fā)送方發(fā)出的數(shù)據(jù)超出接收方的接收能力

2019-06-08_210420.png

多路復(fù)用:源亮航、目的端口 連接管理:序號荸实、確認號、SYN缴淋、FIN 可靠傳輸:序號准给、確認號 流量控制:接收窗口 擁塞控制:未在TCP首部中體現(xiàn)(序號、確認號重抖、接收窗口)

4.1.連接管理

  • 每條TCP連接是一對點到點的字節(jié)流

  • 每條TCP連接者兩個端點露氮,即套接字(sokect)={IP : port}

  • 每條TCP連接由兩個端點唯一標識,TCP連接={socket1, socket2} = {{IP1 : port1}, {IP2 : port2}}

  • TCP連接有3個階段:連接建立钟沛、數(shù)據(jù)傳輸畔规、連接釋放

1)TCP連接建立的目的

①使通信雙方確知對方的存在 ? ②雙方確定自己的初始序列號,并通知對方 ? ③允許雙方協(xié)商一些參數(shù)(最大報文長度讹剔、窗口大小等) ? ④對傳輸實體資源進行分配

2)TCP連接建立的方式

采用客戶端服務(wù)器方式(C/S)油讯,主動發(fā)起連接建立的應(yīng)用進程叫做客戶端,被動等待連接建立的叫服務(wù)器端延欠。

3)連接建立(三次握手)

①服務(wù)器進程B被動打開連接陌兑,進入LISTEN(收聽)狀態(tài),等待客戶端發(fā)出請求 ? ②客戶進程A主動打開連接由捎,向B發(fā)送連接請求報文段(報文段不挾帶數(shù)據(jù))兔综,SYN=1,序號=x狞玛,進入SYN-SENT(同步已發(fā)送)狀態(tài) ? ③服務(wù)器進程B收到請求后软驰,向A發(fā)送確認報文段(報文段不挾帶數(shù)據(jù)),SYN=1心肪,ACK=1锭亏,確認號=x+1,序號=y硬鞍,進入SYN-RCVD(同步收到)狀態(tài) ? ④客戶進程A收到確認后慧瘤,向B發(fā)送確認報文段(報文段可以攜帶數(shù)據(jù),不攜帶數(shù)據(jù)時不消耗序號固该,下一個序號依然是x+1)锅减,ACK=1,確認號=y+1伐坏,序號=x+1怔匣,進入ESTABLISHED(已建立連接)狀態(tài),B收到確認后桦沉,也進入ESTABLISHED狀態(tài)

2019-06-08_211004.png

為什么A需要向B發(fā)送最后一個確認報文段:為了防止“已失效的連接請求報文段”突然又傳到B發(fā)生錯誤每瞒,以至于B一直等待A發(fā)送數(shù)據(jù)金闽,B的資源被浪費。

4)連接釋放(四次揮手)

①A剿骨,B都處于ESTABLISHED狀態(tài)呐矾; ? ②客戶進程A主動關(guān)閉連接,向B發(fā)送連接釋放請求報文段(報文段不挾帶數(shù)據(jù))懦砂,F(xiàn)IN=1,序列號=u组橄,進入FIN-WAIT-1(終止等待1)狀態(tài)荞膘; ? ③B收到A的連接釋放報文段后,應(yīng)答確認玉工,ACK=1羽资,確認號=u+1,序號=v遵班,進入CLOSE-WAIT (關(guān)閉等待)狀態(tài)屠升,B仍然可以向A發(fā)送數(shù)據(jù),A進入FIN-WAIT-2(終止等待2)狀態(tài)狭郑; ? ④若B已經(jīng)沒有向A的數(shù)據(jù)腹暖,其應(yīng)用進程通知TCP連接釋放,B向A發(fā)送連接釋放報文段翰萨,F(xiàn)IN=1脏答,ACK=1,確認號=u+1亩鬼,序號=w殖告,進入LAST-ACK(最后確認)狀態(tài); ? ⑤A收到B的鏈接釋放報文段后雳锋,應(yīng)答確認黄绩,ACK=1,確認號=w+1玷过,序號=u+1爽丹,進入TIME-TIME-WAIT(時間等待)狀態(tài),B收到A的確認后冶匹,進入CLOSED狀態(tài)

2019-06-08_211029.png

A必須經(jīng)過時間等待計時器設(shè)置的時間2MSL(默認2分鐘)后习劫,進入CLOSED狀態(tài):確保A發(fā)送的最后一個ACK報文段能夠到達B;防止“已失效的連接請求報文段”出現(xiàn)在本連接中嚼隘。

4.2可靠傳輸

  • 發(fā)送方的TCP:維護一個發(fā)送緩沖區(qū)

  • 維護3個指針:LastByteAcked诽里、LastByteSent、LastByteWritten

  • 發(fā)送窗口=min(通知窗口飞蛹,擁塞窗口)

  • 累積確認(Cumulative ACK) :對按序到達的最后一個報文段進行確認

  • 選擇確認(Selective ACK) :確認接收到的不連續(xù)的數(shù)據(jù)塊的邊界(使用首部的SACK選項谤狡,不影響確認號字段的使用)

2019-06-08_211136.png

4.3.流量控制

目的:為了防止發(fā)送方給慢接收方發(fā)數(shù)據(jù)造成接受崩潰灸眼,緩沖區(qū)溢出 原理:接收方通知發(fā)送方自己的接受窗口大小,發(fā)送方的發(fā)送窗口≤接收方的接受窗口

問題:

B向A發(fā)送了零窗口報文段后墓懂,B的接受緩存有了一些存儲空間焰宣,于是B向A發(fā)送了rwnd=400的報文段,然而報文段在傳送過程中丟失捕仔,這樣A一直等待B發(fā)送的非零窗口通知匕积,B一直等待A發(fā)送數(shù)據(jù),從而形成死鎖局面榜跌。

解決:

TCP為每一個連接設(shè)置一個持續(xù)計時器闪唆,只要TCP鏈接一方收到零窗口通知,就啟動持續(xù)計時器钓葫,計時器到期悄蕾,發(fā)送零窗口探測報文段,而對方就在確認這個探測報文段時給出現(xiàn)在的窗口值础浮,①如果窗口仍然是零帆调,那么重新設(shè)置持續(xù)計時器;②否則死鎖的僵局就可以打破豆同。

4.自適應(yīng)重傳

1)超時重傳

報文段的往返時間:RTT 加權(quán)平均往返時間:RTTS RTT的偏差加權(quán)平均值:RTTD 超時重傳時間:RTO RTTS = (1 - α) * RTTS + α * 新的RTT樣本值 (α一般為1/8) RTTD = (1 - β) * RTTD + β * | RTTS - 新的RTT樣本值 | (β一般為1/4) RTO = RTTS + 4 * RTTD

Karn算法: ①每次超時重傳一個報文段時番刊,停止計算新RTT樣本值 ②每次超時重傳一個報文段時,就把超時重傳時間RTO增大y倍(一般為2倍) ③當不發(fā)生報文段重傳時影锈,才計算RTTS和超時重傳時間RTO

2)快速重傳

原因:超時重傳作為TCP最基本的重傳機制撵枢,效率較低。

2019-06-08_212845.png

超時的粗粒度實現(xiàn)方法導(dǎo)致連接在等待一個定時器超時時精居,很長一段時間連接無效锄禽。

基本思想: ①接收方:當報文段到達,立刻回復(fù)ACK靴姿,即使該序號已被確認過 ②發(fā)送方:收到一個重復(fù)ACK(同一個確認的再一次重傳稱為重復(fù)確認)沃但,就知道接收方必定收到亂序到達的報文段,表明其前面的分組可能丟失佛吓。收到3個重復(fù)ACK時宵晚,立刻觸發(fā)重傳。


2019-06-08_212923.png

5.擁塞控制

1)窗口大小

MaxWindow = min (cwnd, AdvertisedWindow) 擁塞窗口cwnd (Congestion Windows):擁塞控制算法決定维雇,可以同時發(fā)出的最大字節(jié)數(shù)以防止造成網(wǎng)絡(luò)擁塞 通知窗口 (AdvertisedWindow):接收方?jīng)Q定淤刃,可以同時發(fā)出的最大字節(jié)數(shù)以防止超出接收方的接收能力

2)擁塞控制算法

①慢啟動 把初始擁塞窗口 cwnd 設(shè)置為不超過2至4個SMSS(最大報文段長度),在每收到一個對新的報文段的確認后吱型,把cwnd增加1個 SMSS 的數(shù)值數(shù)(每經(jīng)過一個傳輸輪次逸贾,cwnd就加倍) 設(shè)置一個慢開始門限ssthresh 當cwnd < ssthresh時,使用慢開始算法 當cwnd ≥ ssthresh時,使用擁塞避免算法

2019-06-08_213007.png

②擁塞避免(加法增大):每經(jīng)過一個往返時間RTT把發(fā)送方的cwnd加1铝侵,使得cwnd慢性增加 ③快重傳(乘法減凶粕恕):收到3個重復(fù)ACK立即觸發(fā)重傳 ④快恢復(fù)(在快重傳之后)

  1. ssthresh減小為當前cwnd的一半:ssthresh = cwnd / 2

  2. 新?lián)砣翱?cwnd = 新的 ssthresh

  3. 執(zhí)行擁塞避免 (AIMD),使cwnd緩慢線性增大

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末咪鲜,一起剝皮案震驚了整個濱河市狐赡,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌疟丙,老刑警劉巖颖侄,帶你破解...
    沈念sama閱讀 218,122評論 6 505
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異享郊,居然都是意外死亡发皿,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,070評論 3 395
  • 文/潘曉璐 我一進店門拂蝎,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人惶室,你說我怎么就攤上這事温自。” “怎么了皇钞?”我有些...
    開封第一講書人閱讀 164,491評論 0 354
  • 文/不壞的土叔 我叫張陵悼泌,是天一觀的道長。 經(jīng)常有香客問我夹界,道長馆里,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,636評論 1 293
  • 正文 為了忘掉前任可柿,我火速辦了婚禮鸠踪,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘复斥。我一直安慰自己营密,他們只是感情好,可當我...
    茶點故事閱讀 67,676評論 6 392
  • 文/花漫 我一把揭開白布目锭。 她就那樣靜靜地躺著评汰,像睡著了一般。 火紅的嫁衣襯著肌膚如雪痢虹。 梳的紋絲不亂的頭發(fā)上被去,一...
    開封第一講書人閱讀 51,541評論 1 305
  • 那天,我揣著相機與錄音奖唯,去河邊找鬼惨缆。 笑死,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的踪央。 我是一名探鬼主播臀玄,決...
    沈念sama閱讀 40,292評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼畅蹂!你這毒婦竟也來了健无?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,211評論 0 276
  • 序言:老撾萬榮一對情侶失蹤液斜,失蹤者是張志新(化名)和其女友劉穎累贤,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體少漆,經(jīng)...
    沈念sama閱讀 45,655評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡臼膏,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,846評論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了示损。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片渗磅。...
    茶點故事閱讀 39,965評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖检访,靈堂內(nèi)的尸體忽然破棺而出始鱼,到底是詐尸還是另有隱情,我是刑警寧澤脆贵,帶...
    沈念sama閱讀 35,684評論 5 347
  • 正文 年R本政府宣布烫映,位于F島的核電站兽间,受9級特大地震影響茫叭,放射性物質(zhì)發(fā)生泄漏残炮。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,295評論 3 329
  • 文/蒙蒙 一筒捺、第九天 我趴在偏房一處隱蔽的房頂上張望柏腻。 院中可真熱鬧,春花似錦系吭、人聲如沸葫盼。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,894評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽贫导。三九已至,卻和暖如春蟆盹,著一層夾襖步出監(jiān)牢的瞬間孩灯,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,012評論 1 269
  • 我被黑心中介騙來泰國打工逾滥, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留峰档,地道東北人败匹。 一個月前我還...
    沈念sama閱讀 48,126評論 3 370
  • 正文 我出身青樓,卻偏偏與公主長得像讥巡,于是被迫代替她去往敵國和親掀亩。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 44,914評論 2 355

推薦閱讀更多精彩內(nèi)容