3傳輸層

3.1傳輸層服務(wù)

3.1.1傳輸層服務(wù)概述

傳輸層服務(wù)和協(xié)議

■傳輸層協(xié)議為運(yùn)行在不同Host上的進(jìn)程提供了一種邏輯通信機(jī)制

■端系統(tǒng)運(yùn)行傳輸層協(xié)議§ 發(fā)送方:將應(yīng)用遞交的消息分成一個(gè)或多個(gè)的Segment,并向下傳給網(wǎng)絡(luò)層。

§ 接收方:將接收到的segment組裝成消息,并向上交給應(yīng)用層。

■傳輸層可以為應(yīng)用提供多種協(xié)議§Internet上的TCP§Internet上的UD

傳輸層vs.網(wǎng)絡(luò)層

v■網(wǎng)絡(luò)層:提供主機(jī)之間的邏輯通信機(jī)制v■傳輸層:提供應(yīng)用進(jìn)程之間的邏輯通信機(jī)制§ 位于網(wǎng)絡(luò)層之上

§ 依賴于網(wǎng)絡(luò)層服務(wù)§ 對網(wǎng)絡(luò)層服務(wù)進(jìn)行(可能的)增強(qiáng)

Internet傳輸層協(xié)議

v■可靠、按序的交付服務(wù)(TCP)§ 擁塞控制§ 流量控制§ 連接建立v■不可靠的交付服務(wù)(UDP)§ 基于“盡力而為(Best-effort)”的網(wǎng)絡(luò)層,沒有做(可靠性方面的)擴(kuò)展■v兩種服務(wù)均不保證§ 延遲§ 帶寬

3.2多路復(fù)用和多路分用

Why?v 如果某層的一個(gè)協(xié)議對應(yīng)直接上層的多個(gè)協(xié)議/實(shí)體,則需要復(fù)用/分用



分用如何工作?

v■主機(jī)接收到IP數(shù)據(jù)報(bào)(datagram)

§ 每個(gè)數(shù)據(jù)報(bào)攜帶源IP地址、目的IP地址?!?每個(gè)數(shù)據(jù)報(bào)攜帶一個(gè)傳輸層的段(Segment)。

§ 每個(gè)段攜帶源端口號和目的端口號

v■主機(jī)收到Segment之后,傳輸層協(xié)議提取IP地址和端口號信息,將Segment導(dǎo)向相應(yīng)的Socket

`TCP做更多處理



無連接分用

■利用端口號創(chuàng)建

SocketDatagramSocket mySocket1 = new DatagramSocket(99111);

DatagramSocket mySocket2 = new DatagramSocket(99222);

■UDP的Socket用二元組標(biāo)識§(目的IP地址,目的端口號)

■主機(jī)收到UDP段后§ 檢查段中的目的端口號§ 將UDP段導(dǎo)向綁定在該端口號的Socket

■來自不同源IP地址和/或源端口號的IP數(shù)據(jù)包被導(dǎo)向同一個(gè)Socket (源端口號提供返回地址)



面向連接的分用

■TCP的Socket用四元組標(biāo)識

§ 源IP地址

§ 源端口號

§ 目的IP地址

§ 目的端口號

■接收端利用所有的四個(gè)值將Segment導(dǎo)向合適的Socketv

■服務(wù)器可能同時(shí)支持多個(gè)TCP Socket

§ 每個(gè)Socket用自己的四元組標(biāo)識

■Web服務(wù)器為每個(gè)客戶端開不同的Socket



面向連接的分用:多線程Web服務(wù)器



3.3無連接傳輸協(xié)議-UDP

UDP: User Datagram Protocol [RFC 768]

v ■基于Internet IP協(xié)議§ 復(fù)用/分用§ 簡單的錯(cuò)誤校驗(yàn)

(端到端的原則:不能保證下面各層都有錯(cuò)誤檢測機(jī)制,也不能保證在各層傳輸過程中不會(huì)出錯(cuò),所以需要在靠近應(yīng)用層做一個(gè)錯(cuò)誤校驗(yàn)。)

■“Best effort”服務(wù),UDP段可能

§ 丟失

§ 非按序到達(dá)

■無連接

§UDP發(fā)送方和接收方之間不需要握手

§ 每個(gè)UDP段的處理獨(dú)立于其他段

UDP為什么存在?

無需建立連接(減少延遲)

實(shí)現(xiàn)簡單:無需維護(hù)連接狀態(tài)

?頭部開銷少

沒有擁塞控制:應(yīng)用可更好地控制發(fā)送時(shí)間和速率

v■常用于流媒體應(yīng)用

§ 容忍丟失

§ 速率敏感

v■UDP還用于

§DNS

§SNMP

v■在UDP上實(shí)現(xiàn)可靠數(shù)據(jù)傳輸?

§ 在應(yīng)用層增加可靠性機(jī)制§ 應(yīng)用特定的錯(cuò)誤恢復(fù)機(jī)制



UDP校驗(yàn)和(checksum)

目的:檢測UDP段在傳輸中是否發(fā)生錯(cuò)誤(如位翻轉(zhuǎn))

v■發(fā)送方

§ 將段的內(nèi)容視為16-bit整數(shù)

§ 校驗(yàn)和計(jì)算:計(jì)算所有整數(shù)的和,進(jìn)位加在和的后面,將得到的值按位求反,得到校驗(yàn)和

§ 發(fā)送方將校驗(yàn)和放入校驗(yàn)和字段

v■接收方§ 計(jì)算所收到段的校驗(yàn)和

§ 將其與校驗(yàn)和字段進(jìn)行對比

? 不相等:檢測出錯(cuò)誤

? 相等:沒有檢測出錯(cuò)誤(但可能有錯(cuò)誤)



3.4可靠數(shù)據(jù)傳輸?shù)脑?/b>

■什么是可靠?

§ 不錯(cuò)、不丟、不亂

■可靠數(shù)據(jù)傳輸協(xié)議

§ 可靠數(shù)據(jù)傳輸對應(yīng)用層、傳輸層、鏈路層都很重要

§ 網(wǎng)絡(luò)Top-10問題

§ 信道的不可靠特性決定了可靠數(shù)據(jù)傳輸協(xié)議(rdt)的復(fù)雜性

可靠數(shù)據(jù)傳輸協(xié)議基本結(jié)構(gòu):接口



可靠數(shù)據(jù)傳輸協(xié)議

v■漸進(jìn)地設(shè)計(jì)可靠數(shù)據(jù)傳輸協(xié)議的發(fā)送方和接收方

v■只考慮單向數(shù)據(jù)傳輸

§ 但控制信息雙向流動(dòng)

v■利用狀態(tài)機(jī)(Finite State Machine, FSM)刻畫傳輸協(xié)議



Rdt 1.0:可靠信道上的可靠數(shù)據(jù)傳輸

v■底層信道完全可靠

?不會(huì)發(fā)生錯(cuò)誤(bit error)

?不會(huì)丟棄分組

v■發(fā)送方和接收方的FSM獨(dú)立



Rdt 2.0:產(chǎn)生位錯(cuò)誤的信道(會(huì)有位錯(cuò)誤)

v ■底層信道可能翻轉(zhuǎn)分組中的位(bit)§ 利用校驗(yàn)和檢測位錯(cuò)誤

v■如何從錯(cuò)誤中恢復(fù)?

§ 確認(rèn)機(jī)制(Acknowledgements, ACK):接收方顯式地告知發(fā)送方分組已正確接收

§NAK:接收方顯式地告知發(fā)送方分組有錯(cuò)誤§ 發(fā)送方收到NAK后,重傳分組

v ■基于這種重傳機(jī)制的rdt協(xié)議稱為ARQ(Automatic Repeat reQuest)協(xié)議

v ■Rdt 2.0中引入的新機(jī)制

§ 差錯(cuò)檢測

§ 接收方反饋控制消息: ACK/NAK

§ 重傳



停等協(xié)議:發(fā)送方?jīng)]有收到接收方的確認(rèn)ACK不會(huì)發(fā)送下一個(gè)分組。

Rdt 2.0有什么缺陷?

v ■如果ACK/NAK消息發(fā)生錯(cuò)誤/被破壞(corrupted)會(huì)怎么樣?? 為ACK/NAK增加校驗(yàn)和,檢錯(cuò)并糾錯(cuò)(花銷較大)

? 發(fā)送方收到被破壞ACK/NAK時(shí)不知道接收方發(fā)生了什么,添加額外的控制消息(額外消息任然可能會(huì)壞掉)

? 如果ACK/NAK壞掉,發(fā)送方重傳

? 不能簡單的重傳:產(chǎn)生重復(fù)分組

v ■如何解決重復(fù)分組問題?

§序列號(Sequence number):發(fā)送方給每個(gè)分組增加序列號§ 接收方丟棄重復(fù)分組





Rdt 2.1 vs. Rdt 2.0

v■發(fā)送方:·p為每個(gè)分組增加了序列號·p兩個(gè)序列號(0, 1)就夠用,為什么?(因?yàn)槭褂昧送5葏f(xié)議)·p需校驗(yàn)ACK/NAK消息是否發(fā)生錯(cuò)誤·p狀態(tài)數(shù)量翻倍p狀態(tài)必須“記住”“當(dāng)前”的分組序列號v■接收方p·需判斷分組是否是重復(fù)p當(dāng)前所處狀態(tài)提供了期望收到分組的序列號p·注意:接收方無法知道ACK/NAK是否被發(fā)送方正確收到

Rdt 2.2:無NAK消息協(xié)議

v ■與rdt 2.1功能相同,但是只使用ACK

v ■如何實(shí)現(xiàn)?

? 接收方通過ACK告知最后一個(gè)被正確接收的分組? 在ACK消息中顯式地加入被確認(rèn)分組的序列號(發(fā)送確定收到最后一個(gè)分組的序列號)

v ■發(fā)送方收到重復(fù)ACK之后,采取與收到NAK消息相同的動(dòng)作? 重傳當(dāng)前分組



Rdt 3.0

■如果信道既可能發(fā)生錯(cuò)誤,也可能丟失分組,怎么辦?

§ “校驗(yàn)和+序列號+ ACK +重傳”夠用嗎?加定時(shí)器

v■方法:發(fā)送方等待“合理”時(shí)間§ ·如果沒收到ACK,重傳

§ ·如果分組或ACK只是延遲而不是丟了

?重傳會(huì)產(chǎn)生重復(fù),序列號機(jī)制能夠處理

?接收方需在ACK中顯式告知所確認(rèn)的分組

§ ·需要定時(shí)器



Rdt 3.0性能分析

v■Rdt 3.0能夠正確工作,但性能很差

v■示例:1Gbps鏈路,15ms端到端傳播延遲,1KB分組



§ 發(fā)送方利用率:發(fā)送方發(fā)送時(shí)間百分比



§ 在1Gbps鏈路上每30毫秒才發(fā)送一個(gè)分組è33KB/sec§ 網(wǎng)絡(luò)協(xié)議限制了物理資源的利用

3.5流水線機(jī)制與滑動(dòng)窗口協(xié)議





流水線協(xié)議

■允許發(fā)送方在收到ACK之前連續(xù)發(fā)送多個(gè)分組§ 更大的序列號范圍§ 發(fā)送方和/或接收方需要更大的存儲(chǔ)空間以緩存分組



滑動(dòng)窗口協(xié)議



v■滑動(dòng)窗口協(xié)議: Sliding-window protocol

v■窗口§ 允許使用的序列號范圍§ 窗口尺寸為N:最多有N個(gè)等待確認(rèn)的消息

v■滑動(dòng)窗口

§ 隨著協(xié)議的運(yùn)行,窗口在序列號空間內(nèi)向前滑動(dòng)

v■滑動(dòng)窗口協(xié)議:GBN, SR

Go-Back-N(GBN)協(xié)議:發(fā)送方

■分組頭部包含k-bit序列號

v■窗口尺寸為N,最多允許N個(gè)分組未確認(rèn)(累積N確認(rèn),N之前的全部都確認(rèn)收到了)



v■ACK(n):確認(rèn)到序列號n(包含n)的分組均已被正確接收§ 可能收到重復(fù)ACK

■為空中的分組設(shè)置計(jì)時(shí)器(timer)

v■超時(shí)Timeout(n)事件:重傳序列號大于等于n,還未收到ACK的所有分組





■ACK機(jī)制:發(fā)送擁有最高序列號的、已被正確接收的分組的ACK§ 可能產(chǎn)生重復(fù)ACK

§ 只需要記住唯一的expectedseqnum

v■亂序到達(dá)的分組:

§ 直接丟棄

è接收方?jīng)]有緩存

§ 重新確認(rèn)序列號最大的、按序到達(dá)的分組



Selective Repeat協(xié)議

v■GBN有什么缺陷?

v■接收方對每個(gè)分組單獨(dú)進(jìn)行確認(rèn)

§ 設(shè)置緩存機(jī)制,緩存亂序到達(dá)的分組

v■發(fā)送方只重傳那些沒收到ACK的分組

§ 為每個(gè)分組設(shè)置定時(shí)器

v■發(fā)送方窗口

§N個(gè)連續(xù)的序列號

§ 限制已發(fā)送且未確認(rèn)的分組



SR協(xié)議

■發(fā)送方的時(shí)間和動(dòng)作

從上層收到數(shù)據(jù):檢查下一個(gè)可用分組的序號,如果序號是在窗口內(nèi)則打包發(fā)送,

超時(shí):重發(fā)分組,重新定時(shí)

收到ACK(n),在窗口內(nèi),就會(huì)將已確認(rèn)的分組標(biāo)記為已接收。如果這個(gè)分組是該窗內(nèi)最小分組即send_base就挪動(dòng)窗口,發(fā)送窗口內(nèi)為發(fā)送的分組。

■接收方的時(shí)間和動(dòng)作

分組序號在[rcvbase, rcvbase+N-1]:發(fā)送ACK(n),超過則緩沖,在序號內(nèi),滑動(dòng)窗口,并且將已經(jīng)確認(rèn)有序的分組交付給上層。

序號在[rcvbase-N,rcvbase-1]:發(fā)送ACK(n)。

■其他情況:忽略



問題:序列號空間大小與窗口尺寸需滿足什么關(guān)系?§N_send+N_recv<=2k

3.6面向連接傳輸協(xié)議-TCP

TCP概述: RFCs-793, 1122, 1323, 2018, 2581

v■點(diǎn)對點(diǎn)§ 一個(gè)發(fā)送方,一個(gè)接收方

v■可靠的、按序的字節(jié)流v■流水線機(jī)制

§TCP擁塞控制和流量控制機(jī)制設(shè)置窗口尺寸

v■發(fā)送方/接收方緩存

v■全雙工(full-duplex)§ 同一連接中能夠傳輸雙向數(shù)據(jù)流

v■面向連接§ 通信雙方在發(fā)送數(shù)據(jù)之前必須建立連接。

§ 連接狀態(tài)只在連接的兩端中維護(hù),在沿途節(jié)點(diǎn)中并不維護(hù)狀態(tài)。

§TCP連接包括:兩臺(tái)主機(jī)上的緩存、連接狀態(tài)變量、socket等

v■流量控制機(jī)制

TCP段結(jié)構(gòu)



TCP:序列號和ACK

序列號:§ 序列號指的是segment中第一個(gè)字節(jié)的編號,而不是segment的編號

§ 建立TCP連接時(shí),雙方隨機(jī)選擇序列號ACKs:

§ 希望接收到的下一個(gè)字節(jié)的序列號

§ 累計(jì)確認(rèn):該序列號之前的所有字節(jié)均已被正確接收到Q:接收方如何處理亂序到達(dá)的Segment?

§A: TCP規(guī)范中沒有規(guī)定,由TCP的實(shí)現(xiàn)者做出決策

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

v■TCP在IP層提供的不可靠服務(wù)基礎(chǔ)上實(shí)現(xiàn)可靠數(shù)據(jù)傳輸服務(wù)

v■流水線機(jī)制

v■累積確認(rèn)

v■TCP使用單一重傳定時(shí)器

v■觸發(fā)重傳的事件

§ 超時(shí)

§ 收到重復(fù)ACK

v■漸進(jìn)式

§ 暫不考慮重復(fù)ACK

§ 暫不考慮流量控制

§ 暫不考慮擁塞控制

TCP RTT和超時(shí)

v■問題:如何設(shè)置定時(shí)器的超時(shí)時(shí)間?

v■大于RTT§ 但是RTT是變化的

v■過短:

§ 不必要的重傳

v■過長:

§ 對段丟失時(shí)間反應(yīng)慢

v■問題:如何估計(jì)RTT?

v■SampleRTT:測量從段發(fā)出去到收到ACK的時(shí)間

§ 忽略重傳

v■SampleRTT變化

§ 測量多個(gè)SampleRTT,求平均值,形成RTT的估計(jì)值EstimatedRTT





TCP發(fā)送方事件

v■從應(yīng)用層收到數(shù)據(jù)§ 創(chuàng)建Segment§ 序列號是Segment第一個(gè)字節(jié)的編號

§ 開啟計(jì)時(shí)器§ 設(shè)置超時(shí)時(shí)間:TimeOutInterval

v■超時(shí)

§ 重傳引起超時(shí)的Segment

§ 重啟定時(shí)器(只重傳一個(gè)超時(shí)的那個(gè))

v■收到ACK

§ 如果確認(rèn)此前未確認(rèn)的Segment

? 更新SendBase

? 如果窗口中還有未被確認(rèn)的分組,重新啟動(dòng)定時(shí)器

TCP發(fā)送端程序 (偽碼)









快速重傳機(jī)制

v■TCP的實(shí)現(xiàn)中,如果發(fā)生超時(shí),超時(shí)時(shí)間間隔將重新設(shè)置,即將超時(shí)時(shí)間間隔加倍,導(dǎo)致其很大

§ 重發(fā)丟失的分組之前要等待很長時(shí)間

v■通過重復(fù)ACK檢測分組丟失

§Sender會(huì)背靠背地發(fā)送多個(gè)分組

§ 如果某個(gè)分組丟失,可能會(huì)引發(fā)多個(gè)重復(fù)的ACK

v■如果sender收到對同一數(shù)據(jù)的3個(gè)ACK,則假定該數(shù)據(jù)之后的段已經(jīng)丟失

§ 快速重傳:在定時(shí)器超時(shí)之前即進(jìn)行重傳



TCP流量控制





TCP連接管理

v■TCP sender和receiver在傳輸數(shù)據(jù)前需要建立連接

v■初始化TCP變量

§Seq. #

§Buffer和流量控制信息

v■Client:連接發(fā)起者Socket clientSocket = new Socket("hostname","port number");

v■Server:等待客戶連接請求Socket connectionSocket = welcomeSocket.accept();

三次握手協(xié)議:


(1)[endif]第一次握手:Client將標(biāo)志位SYN置為1,隨機(jī)產(chǎn)生一個(gè)值seq=client_isn,并將該數(shù)據(jù)包發(fā)送給Server,Client進(jìn)入SYN_SENT狀態(tài),等待Server確認(rèn)。

(2)第二次握手:Server收到數(shù)據(jù)包后由標(biāo)志位SYN=1知道Client請求建立連接,Server將標(biāo)志位SYN和ACK都置為1,ack=client_isn+1,隨機(jī)產(chǎn)生一個(gè)值seq=server_isn,并將該數(shù)據(jù)包發(fā)送給Client以確認(rèn)連接請求,Server進(jìn)入SYN_RCVD狀態(tài)。(3)第三次握手:Client收到確認(rèn)后,檢查ack是否為client_isn+1,ACK是否為1,如果正確則將標(biāo)志位ACK置為1,ack=server_isn+1,并將該數(shù)據(jù)包發(fā)送給Server,Server檢查ack是否為server_isn+1,ACK是否為1,如果正確則連接建立成功,Client和Server進(jìn)入ESTABLISHED狀態(tài),完成三次握手,隨后Client與Server之間可以開始傳輸數(shù)據(jù)了。

TCP為什么是三次握手,為什么不是兩次或四次?

如果兩次握手的話,客戶端有可能因?yàn)榫W(wǎng)絡(luò)阻塞等原因會(huì)發(fā)送多個(gè)請求報(bào)文,這時(shí)服務(wù)器就會(huì)建立連接,浪費(fèi)掉許多服務(wù)器的資源.如果四次握手:三次已經(jīng)互相確認(rèn)了可以進(jìn)行連接了,在來一次確認(rèn)浪費(fèi)資源



TCP連接管理:關(guān)閉

Step 1: client向server發(fā)送TCP FIN控制segment

Step 2: server收到FIN,回復(fù)ACK.關(guān)閉連接,發(fā)送FIN.

Step 3: client收到FIN,回復(fù)ACK.

§ 進(jìn)入“等待” –如果收到FIN,會(huì)重新發(fā)送ACK

Step 4: server收到ACK.連接關(guān)閉







3.7擁塞控制原理

擁塞(Congestion)

v■非正式定義:“太多發(fā)送主機(jī)發(fā)送了太多數(shù)據(jù)或者發(fā)送速度太快,以至于網(wǎng)絡(luò)無法處理”

v■表現(xiàn):§ 分組丟失(路由器緩存溢出)

§ 分組延遲過大(在路由器緩存中排隊(duì))

v■擁塞控制vs.流量控制











擁塞控制的方法

v■端到端擁塞控制:

§ 網(wǎng)絡(luò)層不需要顯式的提供支持

§ 端系統(tǒng)通過觀察loss,delay等網(wǎng)絡(luò)行為判斷是否發(fā)生擁塞

§TCP采取這種方法

v■網(wǎng)絡(luò)輔助的擁塞控制:

§ 路由器向發(fā)送方顯式地反饋網(wǎng)絡(luò)擁塞信息§ 簡單的擁塞指示(1bit):SNA,DECbit, TCP/IP ECN, ATM)

§ 指示發(fā)送方應(yīng)該采取何種速率

案例:ATM ABR擁塞控制

v■ABR:available bit rate

§ ·“彈性服務(wù)”

§· 如果發(fā)送方路徑“underloaded”?使用可用帶寬

§ ·如果發(fā)送方路徑擁塞?將發(fā)送速率降到最低保障速率

v■資源管理單元RM(resource management cells)

§ 發(fā)送方發(fā)送§ 交換機(jī)設(shè)置RM cell位(網(wǎng)絡(luò)輔助)

?NI bit: rate不許增長

?CI bit:擁塞指示§RM cell由接收方返回給發(fā)送方



v ■在RM cell中有顯式的速率(ER)字段:兩個(gè)字節(jié)

§ 擁塞的交換機(jī)可以將ER置為更低的值

§ 發(fā)送方獲知路徑所能支持的最小速率

v ■數(shù)據(jù)cell中的EFCI位:擁塞的交換機(jī)將其設(shè)為1

§ 如果RM cell前面的data cell的EFCI位被設(shè)為1,那么發(fā)送方在返回的RM cell中置CI位

3.8TCP擁塞控制

TCP擁塞控制的基本原理

v■Sender限制發(fā)送速率LastByteSent-LastByteAcked<= CongWin.



v■CongWin:§ 動(dòng)態(tài)調(diào)整以改變發(fā)送速率§ 反映所感知到的網(wǎng)絡(luò)擁塞

■問題:如何感知網(wǎng)絡(luò)擁塞?

Loss事件=timeout或3個(gè)重復(fù)ACKv發(fā)生loss事件后,發(fā)送方降低速率

■如何合理地調(diào)整發(fā)送速率?

加性增—乘性減:?

AIMDv慢啟動(dòng): SS

加性增—乘性減: AIMD

v■原理:逐漸增加發(fā)送速率,謹(jǐn)慎探測可用帶寬,直到發(fā)生lossv

■方法: AIMD§Additive Increase:每個(gè)RTT將CongWin增大一個(gè)MSS——擁塞避免

§Multiplicative Decrease:發(fā)生loss后將CongWin減半



TCP慢啟動(dòng): SS

v■TCP連接建立時(shí),CongWin=1

§ 例:MSS=500 byte,RTT=200msec

§ 初始速率=20k bps

■可用帶寬可能遠(yuǎn)遠(yuǎn)高于初始速率:

§ 希望快速增長

v■原理:

§ 當(dāng)連接開始時(shí),指數(shù)性增長



v■指數(shù)性增長§ 每個(gè)RTT將CongWin翻倍

§ 收到每個(gè)ACK進(jìn)行操作v

■初始速率很慢,但是快速攀升



Threshold變量

■Q:何時(shí)應(yīng)該指數(shù)性增長切換為線性增長(擁塞避免)?

A:當(dāng)CongWin達(dá)到Loss事件前值的1/2時(shí).

■實(shí)現(xiàn)方法:v 變量ThresholdvLoss事件發(fā)生時(shí), Threshold被設(shè)為Loss事件前CongWin值的1/2。



Loss事件的處理

v ■3個(gè)重復(fù)ACKs:

§CongWin切到一半

§ 然后線性增長v

?■Timeout事件:

§CongWin直接設(shè)為1個(gè)MSS

§ 然后指數(shù)增長

§ 達(dá)到threshold后,再線性增長

注:3個(gè)重復(fù)ACKs表示網(wǎng)絡(luò)還能夠傳輸一些segments,timeout事件表明擁塞為嚴(yán)重

TCP擁塞控制:總結(jié)

■當(dāng)congwin小于Threadhold,發(fā)送方處于滿啟動(dòng)狀態(tài),congwin以指數(shù)增長。

■當(dāng)congwin在Threadhold以上,發(fā)送方處于擁塞避免階段,congwin以線性增長

■當(dāng)出現(xiàn)擁塞事件的時(shí)候,Threadhold更新為congwin/2,congwin為Threadhold大小

■當(dāng)出現(xiàn)超時(shí)事件時(shí),Threadhold更新為congwin/2,congwin設(shè)置為1





TCP性能分析

TCP throughput:吞吐率

v■給定擁塞窗口大小和RTT,TCP的平均吞吐率是多少?

§ 忽略掉Slow start

■假定發(fā)生超時(shí)時(shí)CongWin的大小為W,吞吐率是W/RTT

v■超時(shí)后,CongWin=W/2,吞吐率是W/2RTT

v■平均吞吐率為:0.75W/RTT





TCP的公平性



TCP是公平的


連接1,2的速率增加到擁塞時(shí)同時(shí)減半,然后有增加,最終會(huì)收斂于45°斜線

v■公平性與UDP

§ 多媒體應(yīng)用通常不使用TCP,以免被擁塞控制機(jī)制限制速率

§ 使用UDP:以恒定速率發(fā)送,能夠容忍丟失

§ 產(chǎn)生了不公平

v■公平性與并發(fā)TCP連接

§ 某些應(yīng)用會(huì)打開多個(gè)并發(fā)連接§Web瀏覽器§ 產(chǎn)生公平性問題v

■例子:鏈路速率為R,已有9個(gè)連接

§ 新來的應(yīng)用請求1個(gè)TCP,獲得R/10的速率

§ 新來的應(yīng)用請求11個(gè)TCP,獲得R/2的速率

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 傳輸層-TCP, TCP頭部結(jié)構(gòu) ,TCP序列號和確認(rèn)號詳解 TCP主要解決下面的三個(gè)問題 1.數(shù)據(jù)的可靠傳輸...
    抓兔子的貓閱讀 4,640評論 1 46
  • 【計(jì)算機(jī)網(wǎng)絡(luò)】傳輸層 傳輸層協(xié)議概述 傳輸層協(xié)議為運(yùn)行在不同host上的進(jìn)程提供了一種邏輯通信機(jī)制。使得端到端不需...
    666真666閱讀 2,284評論 0 4
  • 本書結(jié)構(gòu)是自頂向下的,所以請按下列順序閱讀: 1.計(jì)算機(jī)網(wǎng)絡(luò)自頂向下--應(yīng)用層2.計(jì)算機(jī)網(wǎng)絡(luò)自頂向下--運(yùn)輸層3....
    牛富貴兒閱讀 3,218評論 0 3
  • 個(gè)人認(rèn)為,Goodboy1881先生的TCP /IP 協(xié)議詳解學(xué)習(xí)博客系列博客是一部非常精彩的學(xué)習(xí)筆記,這雖然只是...
    貳零壹柒_fc10閱讀 5,215評論 0 8
  • 1.這篇文章不是本人原創(chuàng)的,只是個(gè)人為了對這部分知識做一個(gè)整理和系統(tǒng)的輸出而編輯成的,在此鄭重地向本文所引用文章的...
    SOMCENT閱讀 13,390評論 6 174

友情鏈接更多精彩內(nèi)容