版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、要求:要求:1. 掌握掌握TCP的可靠性機(jī)制:確認(rèn)、重傳、序號;的可靠性機(jī)制:確認(rèn)、重傳、序號;2. 掌握掌握TCP的流控和提高傳輸效率策略:滑動窗口的流控和提高傳輸效率策略:滑動窗口機(jī)制;機(jī)制;3. 掌握掌握TCP連接的建立與關(guān)閉協(xié)議:三次握手;連接的建立與關(guān)閉協(xié)議:三次握手;4. 掌握掌握TCP的報(bào)文段格式;的報(bào)文段格式;5. 掌握掌握TCP的擁塞控制技術(shù);的擁塞控制技術(shù);6. 掌握掌握TCP避免糊涂窗口綜合癥的技術(shù);避免糊涂窗口綜合癥的技術(shù); 7. 了解緊急數(shù)據(jù)發(fā)送和強(qiáng)迫數(shù)據(jù)發(fā)送。了解緊急數(shù)據(jù)發(fā)送和強(qiáng)迫數(shù)據(jù)發(fā)送。l IP協(xié)議的特點(diǎn)是什么?協(xié)議的特點(diǎn)是什么? 無連接無連接 不保證可靠性不保
2、證可靠性 盡最大努力傳輸盡最大努力傳輸l 應(yīng)用程序如果要得到高可靠性服務(wù),有哪些途徑?應(yīng)用程序如果要得到高可靠性服務(wù),有哪些途徑? 在在IP層上增加一層功能模塊層上增加一層功能模塊 由應(yīng)用程序自身完成可靠性功能由應(yīng)用程序自身完成可靠性功能l UDP能否滿足應(yīng)用程序的需求?能否滿足應(yīng)用程序的需求? 1.可靠性:可靠性: 防丟失:確認(rèn)與重傳;防丟失:確認(rèn)與重傳; 防重復(fù):報(bào)文段序號;防重復(fù):報(bào)文段序號; 2.傳輸效率、流量控制:傳輸效率、流量控制:滑動窗口機(jī)制;滑動窗口機(jī)制; 3.擁塞控制:擁塞控制:加速遞減與慢啟動技術(shù);加速遞減與慢啟動技術(shù); 4.建立連接:建立連接:三次握手協(xié)議;三次握手協(xié)議;
3、 5.關(guān)閉連接:關(guān)閉連接:改進(jìn)的三次握手協(xié)議。改進(jìn)的三次握手協(xié)議。要實(shí)現(xiàn)可靠的數(shù)據(jù)流傳輸服務(wù),要實(shí)現(xiàn)可靠的數(shù)據(jù)流傳輸服務(wù),必須解決哪幾個問題?必須解決哪幾個問題? 面向數(shù)據(jù)流;面向數(shù)據(jù)流; 虛電路連接;虛電路連接; 有緩沖的傳輸;有緩沖的傳輸; 無結(jié)構(gòu)的數(shù)據(jù)流;無結(jié)構(gòu)的數(shù)據(jù)流; 全雙工連接。全雙工連接。 可靠傳輸服務(wù)有哪些特點(diǎn)可靠傳輸服務(wù)有哪些特點(diǎn)?7.3 TCP連接連接1.建立連接建立連接 :三次握手:三次握手功能功能:1. 同意連接協(xié)商,做同意連接協(xié)商,做好傳輸數(shù)據(jù)的準(zhǔn)備;好傳輸數(shù)據(jù)的準(zhǔn)備;2.協(xié)商各自報(bào)文段協(xié)商各自報(bào)文段ISN(初始序列號,不初始序列號,不能為能為1);3. 協(xié)商協(xié)商MS
4、S(只有(只有SYN報(bào)文段能協(xié)商報(bào)文段能協(xié)商MSS)。)。說明:說明: SYN報(bào)文段占用初始報(bào)文段占用初始序號序號,發(fā)送數(shù)據(jù)的第一發(fā)送數(shù)據(jù)的第一字節(jié)序號為字節(jié)序號為ISN+1。 接收接收ACK客戶端客戶端服務(wù)器服務(wù)器報(bào)文段報(bào)文段發(fā)送發(fā)送SYNseq=xREQUEST接收接收SYN發(fā)送發(fā)送SYN seq=y,ACK x+1ACCEPTED接收接收SYN+ACK發(fā)送發(fā)送ACK y+1CONFIRMl ISN 不能取不能取1,為什么?,為什么? ISN的設(shè)置方法是有一定規(guī)律的。的設(shè)置方法是有一定規(guī)律的。l MSS 為什么要選擇為什么要選擇MSS? 如果連接的兩端在同一個物理網(wǎng)絡(luò)中,如果連接的兩端在同
5、一個物理網(wǎng)絡(luò)中,TCP協(xié)議軟件協(xié)議軟件能計(jì)算出合適的能計(jì)算出合適的MSS; 如果連接的兩端不在同一個物理網(wǎng)絡(luò)中,則把路徑上如果連接的兩端不在同一個物理網(wǎng)絡(luò)中,則把路徑上最小的最小的MTU除去首部后的數(shù)據(jù)大小作為除去首部后的數(shù)據(jù)大小作為MSS. 選擇合適的選擇合適的MSS非常困難:太小,網(wǎng)絡(luò)利用率低;太非常困難:太小,網(wǎng)絡(luò)利用率低;太大,會降低網(wǎng)絡(luò)性能。大,會降低網(wǎng)絡(luò)性能。2.關(guān)閉連接:關(guān)閉連接:改進(jìn)的三次握手改進(jìn)的三次握手說明:說明: FIN報(bào)文段占用一報(bào)文段占用一個序號;單純的個序號;單純的ACK報(bào)文段不占用序號。報(bào)文段不占用序號。 TCP提供了半關(guān)閉提供了半關(guān)閉能力:連接的一端在結(jié)能力:連
6、接的一端在結(jié)束它的發(fā)送后還能接收束它的發(fā)送后還能接收來自另一端數(shù)據(jù)。來自另一端數(shù)據(jù)。 有些編程接口提供有些編程接口提供close來關(guān)閉來關(guān)閉TCP連接,連接,提供提供shutdown加特殊參加特殊參數(shù)來實(shí)現(xiàn)半關(guān)閉。數(shù)來實(shí)現(xiàn)半關(guān)閉。網(wǎng)點(diǎn)網(wǎng)點(diǎn)1網(wǎng)點(diǎn)網(wǎng)點(diǎn)2接收接收ACK接收接收ACK發(fā)送發(fā)送FINseq=x接收接收FINACK x+1發(fā)送發(fā)送FIN seq=yACK x+1接收接收FIN +ACK發(fā)送發(fā)送ACK y+13. TCP連接異常關(guān)閉連接異常關(guān)閉 異常關(guān)閉:異常關(guān)閉:出現(xiàn)異常情況使得應(yīng)用程序或網(wǎng)絡(luò)軟件出現(xiàn)異常情況使得應(yīng)用程序或網(wǎng)絡(luò)軟件 中斷連接。中斷連接。 連接復(fù)位連接復(fù)位 RST:發(fā)起端發(fā)
7、:發(fā)起端發(fā)RST報(bào)文段,雙方立即報(bào)文段,雙方立即停停 止傳輸,并退出連接。止傳輸,并退出連接。 4. 端口、端點(diǎn)和連接端口、端點(diǎn)和連接 (1) 端口端口(21、23、25、53、79、80、88、139、161)(2) 端點(diǎn)端點(diǎn) 一對整數(shù)一對整數(shù):(:(host IP,port)標(biāo)識通信一方的一個)標(biāo)識通信一方的一個應(yīng)用程序。應(yīng)用程序。(3) 連接連接 一對端點(diǎn)一對端點(diǎn):表示通信雙方應(yīng)用程序間的一條虛電路。表示通信雙方應(yīng)用程序間的一條虛電路。 主動打開主動打開 去請求去請求 被動打開被動打開 等待來等待來(4)說明)說明 一臺機(jī)器上的一個一臺機(jī)器上的一個TCP端口可被多個連接共享;端口可被多個
8、連接共享; TCP、UDP可用相同的端口號,但不會沖突??捎孟嗤亩丝谔?,但不會沖突。 一個一個DOS命令:命令:NetstatActive Connections Proto Local Address Foreign Address StateTCP koukou:1056 40:https ESTABLISHEDNetstat o:列出與每個端口相關(guān)的進(jìn)程列出與每個端口相關(guān)的進(jìn)程N(yùn)etstat r: 顯示路由表顯示路由表 7.4 提供可靠性提供可靠性1. 防丟失防丟失 帶重傳的肯定確認(rèn)技術(shù)帶重傳的肯定確認(rèn)技術(shù) 接收方收到接收方收到數(shù)據(jù)后向源站發(fā)數(shù)據(jù)后向源站發(fā)確認(rèn)(
9、確認(rèn)(ACKACK);); 設(shè)置定時器,設(shè)置定時器,源站在限定時間源站在限定時間內(nèi)未收到內(nèi)未收到ACKACK,則重發(fā)。則重發(fā)。 數(shù)據(jù)發(fā)送方數(shù)據(jù)發(fā)送方數(shù)據(jù)接收方數(shù)據(jù)接收方接收確認(rèn)接收確認(rèn)發(fā)送分組發(fā)送分組接收分組接收分組 發(fā)送確認(rèn)發(fā)送確認(rèn)接收確認(rèn)接收確認(rèn) 發(fā)送分組發(fā)送分組接收分組接收分組 發(fā)送確認(rèn)發(fā)送確認(rèn)超時重傳超時重傳l如何識別和處理重復(fù)的數(shù)據(jù)?如何識別和處理重復(fù)的數(shù)據(jù)?序號序號拋棄拋棄l定時器時限設(shè)置多長?定時器時限設(shè)置多長? v報(bào)文段重復(fù)產(chǎn)生的原因?報(bào)文段重復(fù)產(chǎn)生的原因? “假假“丟失丟失:確認(rèn)丟失或確認(rèn)延遲(超時)到達(dá),:確認(rèn)丟失或確認(rèn)延遲(超時)到達(dá),致使發(fā)送方重傳造成的。致使發(fā)送方重傳
10、造成的。v解決方法:解決方法: 為每一分組賦予一個為每一分組賦予一個序號序號,用以檢測重復(fù)。,用以檢測重復(fù)。 序號同時保證了分組間的正確順序。序號同時保證了分組間的正確順序。 確認(rèn)時通過確認(rèn)時通過確認(rèn)號確認(rèn)號指明哪些分組已經(jīng)收到。(累指明哪些分組已經(jīng)收到。(累計(jì)確認(rèn))計(jì)確認(rèn))序號序號 (seq)lseq1=ISNlseqn+1= seqn+第第n個報(bào)文段的長度(以字節(jié)計(jì))個報(bào)文段的長度(以字節(jié)計(jì))確認(rèn)號(確認(rèn)號(ACK)l確認(rèn)號確認(rèn)號 = 期望接收的下一個報(bào)文段的序號期望接收的下一個報(bào)文段的序號l 什么是累計(jì)確認(rèn)?什么是累計(jì)確認(rèn)? 只確認(rèn)前面連續(xù)收到的報(bào)文只確認(rèn)前面連續(xù)收到的報(bào)文l 什么是捎帶
11、確認(rèn)?什么是捎帶確認(rèn)? 把對上一個報(bào)文的確認(rèn)信息放到發(fā)給發(fā)送方把對上一個報(bào)文的確認(rèn)信息放到發(fā)給發(fā)送方的數(shù)據(jù)報(bào)文中捎帶回去。的數(shù)據(jù)報(bào)文中捎帶回去。對于超時重傳的情況,如何設(shè)置重傳定時器的時限?對于超時重傳的情況,如何設(shè)置重傳定時器的時限?時限設(shè)置的過大過小會出現(xiàn)什么問題?時限設(shè)置的過大過小會出現(xiàn)什么問題?網(wǎng)絡(luò)性能不斷變化,定時時限應(yīng)動態(tài)調(diào)整網(wǎng)絡(luò)性能不斷變化,定時時限應(yīng)動態(tài)調(diào)整兩個概念:兩個概念: RTT:往返時間,報(bào)文段發(fā)出到收到確認(rèn)信息間的:往返時間,報(bào)文段發(fā)出到收到確認(rèn)信息間的時間段。時間段。 自適應(yīng)重傳算法自適應(yīng)重傳算法:監(jiān)視每個連接的性能,由此推算:監(jiān)視每個連接的性能,由此推算出合適的定
12、時時限。當(dāng)連接的性能變化時,隨時修改定出合適的定時時限。當(dāng)連接的性能變化時,隨時修改定時時限。時時限。重傳定時時限的計(jì)算方法:重傳定時時限的計(jì)算方法: 早期的方法早期的方法 改進(jìn)的方法改進(jìn)的方法 Karn算法和定時器補(bǔ)償算法和定時器補(bǔ)償(1) 早期的方法早期的方法R:RTT的估計(jì)值的估計(jì)值 (之前之前RTT的加權(quán)平均值的加權(quán)平均值)M:本次測量的本次測量的RTT值值RTO:定時時限定時時限修改估計(jì)值修改估計(jì)值: R R + (1-)M(01,通常取,通常取=0.9) 計(jì)算時限計(jì)算時限: RTO = R(早期取早期取2,后改為,后改為4) 缺陷缺陷:在在RTT變化較大的場合,說明網(wǎng)絡(luò)某處處于擁塞
13、變化較大的場合,說明網(wǎng)絡(luò)某處處于擁塞狀態(tài),但上述方法對此反映不敏感,從而造成不必要狀態(tài),但上述方法對此反映不敏感,從而造成不必要的重傳,進(jìn)一步加重網(wǎng)絡(luò)負(fù)擔(dān)。的重傳,進(jìn)一步加重網(wǎng)絡(luò)負(fù)擔(dān)。(2) 改進(jìn)的方法改進(jìn)的方法 R:RTT的估計(jì)值的估計(jì)值 M:本次測量的本次測量的RTT值值 RTO:定時時限定時時限 Diff:本次測量結(jié)果與上次本次測量結(jié)果與上次RTT估計(jì)值的偏差估計(jì)值的偏差 Dev :平均偏差的估計(jì)值平均偏差的估計(jì)值 Diff M - R R R + *Diff Dev Dev +*(|Diff| - Dev) (Dev的估計(jì)值)的估計(jì)值) RTO R +*Dev 、在在01之間,通常取:
14、之間,通常?。?= 1/8, = 1/4,= 8 (3) Karn算法和定時器補(bǔ)償算法和定時器補(bǔ)償 確認(rèn)二義性:確認(rèn)二義性:對于重傳的報(bào)文段,收到確認(rèn)后是對對于重傳的報(bào)文段,收到確認(rèn)后是對哪一次傳輸?shù)拇_認(rèn)無法確定。哪一次傳輸?shù)拇_認(rèn)無法確定。結(jié)果:結(jié)果:RTT樣本值無法使用樣本值無法使用 ;Karn算法:算法:思想:思想:當(dāng)超時重傳發(fā)生時,不再更新當(dāng)超時重傳發(fā)生時,不再更新RTT估計(jì)值,估計(jì)值,忽略重傳樣本。忽略重傳樣本。 定時器補(bǔ)償:定時器補(bǔ)償: 超時重傳發(fā)生,加大定時時限:超時重傳發(fā)生,加大定時時限: RTO *RTO(通常取通常取2,即指數(shù)避退)。,即指數(shù)避退)。 對重傳分組的后續(xù)分組,定
15、時時限不變,直到獲得對重傳分組的后續(xù)分組,定時時限不變,直到獲得一個新的有效樣本時再更改時限值。一個新的有效樣本時再更改時限值。 7.5 傳輸效率和流量控制傳輸效率和流量控制 - 滑動窗口機(jī)制滑動窗口機(jī)制停停- -等機(jī)制:等機(jī)制:等前一個報(bào)文的確認(rèn)到來后才能發(fā)送下一個等前一個報(bào)文的確認(rèn)到來后才能發(fā)送下一個報(bào)文,效率太低。報(bào)文,效率太低。1.一般的滑動窗口機(jī)制一般的滑動窗口機(jī)制 思想:思想:允許發(fā)送方不必等確認(rèn)到來就可繼續(xù)發(fā)送下面的分允許發(fā)送方不必等確認(rèn)到來就可繼續(xù)發(fā)送下面的分組,但規(guī)定一個上限。若多個分組的確認(rèn)未到時,則暫停組,但規(guī)定一個上限。若多個分組的確認(rèn)未到時,則暫停發(fā)送。發(fā)送。 1 2
16、 3 4 5 6 7 8 9 10 11 12 13分組流分組流WindowSize=8已發(fā)并已發(fā)并得到確認(rèn)得到確認(rèn)不能發(fā)送不能發(fā)送已發(fā)未已發(fā)未得到確認(rèn)得到確認(rèn)未發(fā)但未發(fā)但可以發(fā)可以發(fā)l TCP的滑動窗口按字節(jié)操作而不是按報(bào)文段或的滑動窗口按字節(jié)操作而不是按報(bào)文段或 分組操作。分組操作。 l TCP窗口大小為字節(jié)數(shù)。最大為窗口大小為字節(jié)數(shù)。最大為65535字節(jié)。字節(jié)。發(fā)送方為每個連接設(shè)置發(fā)送方為每個連接設(shè)置3個指針,定義了滑動窗個指針,定義了滑動窗口三要素:口三要素:(1) 左邊界指針左邊界指針:區(qū)分已發(fā)送字節(jié)流中已確認(rèn)部:區(qū)分已發(fā)送字節(jié)流中已確認(rèn)部分與未確認(rèn)部分。分與未確認(rèn)部分。(2) 右邊
17、界指針右邊界指針:序列中未得到確認(rèn)情況下可以:序列中未得到確認(rèn)情況下可以發(fā)送的最高字節(jié)的序號。發(fā)送的最高字節(jié)的序號。(3) 已發(fā)與未發(fā)邊界指針已發(fā)與未發(fā)邊界指針:窗口中已發(fā)送和未發(fā):窗口中已發(fā)送和未發(fā)送字節(jié)的界限。送字節(jié)的界限。2. TCP的滑動窗口技術(shù)的滑動窗口技術(shù)1 2 .100 101 102 4100 4101 4102分組流分組流WindowSize=4000右邊界指針右邊界指針左邊界指針左邊界指針已發(fā)與未發(fā)已發(fā)與未發(fā)邊界指針邊界指針n通信雙方都設(shè)有發(fā)送和接收緩沖區(qū)(相當(dāng)于發(fā)送窗口通信雙方都設(shè)有發(fā)送和接收緩沖區(qū)(相當(dāng)于發(fā)送窗口和接收窗口)。默認(rèn)大小各系統(tǒng)有差異,如和接收窗口)。默認(rèn)大
18、小各系統(tǒng)有差異,如4096、8192、16384等。發(fā)送緩沖區(qū)大小為默認(rèn)窗口大小。等。發(fā)送緩沖區(qū)大小為默認(rèn)窗口大小。nTCP連接兩端各有兩個窗口(發(fā)送窗口和接收窗口)連接兩端各有兩個窗口(發(fā)送窗口和接收窗口) 3. TCP端到端流量控制端到端流量控制 - 窗口大小可變技術(shù)窗口大小可變技術(shù) 時機(jī):時機(jī):目的主機(jī)緩沖區(qū)變小而不能接收源主機(jī)更多的目的主機(jī)緩沖區(qū)變小而不能接收源主機(jī)更多的數(shù)據(jù)時,就要進(jìn)行流量控制。數(shù)據(jù)時,就要進(jìn)行流量控制。 TCP技術(shù):技術(shù):可隨時改變窗口大小。目的主機(jī)在確認(rèn)時,可隨時改變窗口大小。目的主機(jī)在確認(rèn)時,向源主機(jī)告知目的主機(jī)接收緩沖區(qū)的大小。向源主機(jī)告知目的主機(jī)接收緩沖區(qū)的
19、大小。說明:說明:接收方使用接收方使用0窗口通告來停止所有的傳輸。此窗口通告來停止所有的傳輸。此時,除了緊急數(shù)據(jù)和窗口試探報(bào)文外,不發(fā)其它數(shù)據(jù)時,除了緊急數(shù)據(jù)和窗口試探報(bào)文外,不發(fā)其它數(shù)據(jù) 。101 200 201 320 321399 發(fā)送窗口,初發(fā)送窗口,初始時始時400確認(rèn)(確認(rèn)(200)窗口通告(窗口通告(120)發(fā)送窗口,變發(fā)送窗口,變?yōu)闉?20v當(dāng)接收方緩存有了空間時,如何讓對方繼續(xù)發(fā)送數(shù)當(dāng)接收方緩存有了空間時,如何讓對方繼續(xù)發(fā)送數(shù)據(jù)給自己?據(jù)給自己?v如果窗口如果窗口變?yōu)榉亲優(yōu)榉? 0時,則接收方會向發(fā)送方發(fā)非時,則接收方會向發(fā)送方發(fā)非0 0窗口的通告;窗口的通告;v但是,若該但
20、是,若該確認(rèn)丟失確認(rèn)丟失,則會造成,則會造成死鎖死鎖。如何防止。如何防止死鎖?死鎖?v堅(jiān)持定時器堅(jiān)持定時器:發(fā)送方接收到:發(fā)送方接收到0 0窗口通告時進(jìn)行設(shè)置。窗口通告時進(jìn)行設(shè)置。用于周期性地向?qū)Ψ皆儐柎翱诖笮?。用于周期性地向?qū)Ψ皆儐柎翱诖笮?。v窗口試探報(bào)文窗口試探報(bào)文:在堅(jiān)持定時器時間到、但仍沒收到:在堅(jiān)持定時器時間到、但仍沒收到接收方非接收方非0 0窗口的通知時發(fā)送。防止非窗口的通知時發(fā)送。防止非0 0窗口通告丟窗口通告丟失造成死鎖。失造成死鎖。收到確認(rèn)即可前移收到確認(rèn)即可前移1002003004005006007008009001012013014015016017018011發(fā)送窗口發(fā)
21、送窗口可發(fā)送可發(fā)送不可發(fā)送不可發(fā)送指針l發(fā)送端要發(fā)送發(fā)送端要發(fā)送 900 字節(jié)長的數(shù)據(jù),劃分為字節(jié)長的數(shù)據(jù),劃分為 9 個個 100 字節(jié)長的報(bào)文段,而發(fā)送窗口確定為字節(jié)長的報(bào)文段,而發(fā)送窗口確定為 500 字節(jié)。字節(jié)。l發(fā)送端只要收到了對方的確認(rèn),發(fā)送窗口就可前發(fā)送端只要收到了對方的確認(rèn),發(fā)送窗口就可前移。移。l發(fā)送發(fā)送 TCP 要維護(hù)一個指針。每發(fā)送一個報(bào)文段,要維護(hù)一個指針。每發(fā)送一個報(bào)文段,指針就向前移動一個報(bào)文段的距離。指針就向前移動一個報(bào)文段的距離。l發(fā)送端已發(fā)送了發(fā)送端已發(fā)送了 400 400 字節(jié)的數(shù)據(jù),但只收到對前字節(jié)的數(shù)據(jù),但只收到對前 200 200 字節(jié)數(shù)據(jù)的確認(rèn),同時
22、窗口大小不變。字節(jié)數(shù)據(jù)的確認(rèn),同時窗口大小不變。l現(xiàn)在發(fā)送端還可發(fā)送現(xiàn)在發(fā)送端還可發(fā)送 300 300 字節(jié)。字節(jié)。 1002003004005006007008009001012013014015016017018011可發(fā)送可發(fā)送不可發(fā)送不可發(fā)送指針指針發(fā)送窗口前移發(fā)送窗口前移已發(fā)送已發(fā)送并被確認(rèn)并被確認(rèn)已發(fā)送但已發(fā)送但未被確認(rèn)未被確認(rèn)收到確認(rèn)即可前移收到確認(rèn)即可前移1002003004005006007008009001012013014015016017018011發(fā)送窗口發(fā)送窗口可發(fā)送可發(fā)送不可發(fā)送不可發(fā)送指針l發(fā)送端收到了對方對前發(fā)送端收到了對方對前 400 400 字節(jié)數(shù)據(jù)的確認(rèn)
23、,但對方字節(jié)數(shù)據(jù)的確認(rèn),但對方通知發(fā)送端必須把窗口減小到通知發(fā)送端必須把窗口減小到 400 400 字節(jié)。字節(jié)。l現(xiàn)在發(fā)送端最多還可發(fā)送現(xiàn)在發(fā)送端最多還可發(fā)送 400 400 字節(jié)的數(shù)據(jù)。字節(jié)的數(shù)據(jù)。 1002003004005006007008009001012013014015016017018011已發(fā)送已發(fā)送并被確認(rèn)并被確認(rèn)可發(fā)送可發(fā)送不可不可發(fā)送發(fā)送指針指針發(fā)送窗口縮小發(fā)送窗口縮小1002003004005006007008009001012013014015016017018011可發(fā)送可發(fā)送不可發(fā)送不可發(fā)送指針指針發(fā)送窗口前移發(fā)送窗口前移已發(fā)送已發(fā)送并被確認(rèn)并被確認(rèn)已發(fā)送但已發(fā)送
24、但未被確認(rèn)未被確認(rèn)SEQ = 1SEQ = 201SEQ = 401SEQ = 301SEQ = 101SEQ = 501ACK = 201, WIN = 300ACK = 601, WIN = 0ACK = 501, WIN = 200主機(jī)主機(jī) A主機(jī)主機(jī) B允許允許 A 再發(fā)送再發(fā)送 300 字節(jié)字節(jié)A 還能發(fā)送還能發(fā)送 200 字節(jié)字節(jié)A 還能發(fā)送還能發(fā)送 200 字節(jié)字節(jié)A 還能發(fā)送還能發(fā)送 300 字節(jié)字節(jié)A 還能發(fā)送還能發(fā)送 100 字節(jié)字節(jié)A 超時重發(fā),但不能發(fā)送序號超時重發(fā),但不能發(fā)送序號 500 以后的數(shù)據(jù)以后的數(shù)據(jù)允許允許 A 再發(fā)送再發(fā)送 200 字節(jié)(序號字節(jié)(序號 5
25、01 至至 700)A 還能發(fā)送還能發(fā)送 100 字節(jié)(序號字節(jié)(序號 601 至至 700)不允許不允許 A 再發(fā)送(到序號再發(fā)送(到序號 600 的數(shù)據(jù)都已收到)的數(shù)據(jù)都已收到)SEQ = 201丟失!丟失!1.什么是什么是SWS? 接收方的小窗口通告造成發(fā)送方發(fā)送一系列小的接收方的小窗口通告造成發(fā)送方發(fā)送一系列小的報(bào)文段,嚴(yán)重浪費(fèi)網(wǎng)絡(luò)帶寬。報(bào)文段,嚴(yán)重浪費(fèi)網(wǎng)絡(luò)帶寬。2.啟發(fā)式的避免策略:啟發(fā)式的避免策略: 接收方:接收方: (1)避免小窗口通告)避免小窗口通告 ,在零窗口通告之后,只在在零窗口通告之后,只在可用緩沖區(qū)顯著增加(緩沖區(qū)空間的一半或一個可用緩沖區(qū)顯著增加(緩沖區(qū)空間的一半或一
26、個MSS)后才發(fā)送新的窗口通告)后才發(fā)送新的窗口通告 (2)推遲確認(rèn))推遲確認(rèn)(最多最多500ms),),窗口大小不到避窗口大小不到避免免SWSSWS策略所需的尺寸時,不確認(rèn)。策略所需的尺寸時,不確認(rèn)。 為了使發(fā)送方正確估計(jì)為了使發(fā)送方正確估計(jì)RTT,至少每隔一個報(bào)文,至少每隔一個報(bào)文段要進(jìn)行正常的確認(rèn)。段要進(jìn)行正常的確認(rèn)。 4. 糊涂窗口綜合癥糊涂窗口綜合癥SWS發(fā)送方:發(fā)送方:避免小報(bào)文段發(fā)送避免小報(bào)文段發(fā)送Nagle算法算法:自適應(yīng)推遲傳輸以便將數(shù)據(jù)組塊自適應(yīng)推遲傳輸以便將數(shù)據(jù)組塊(1)連接建立后,最初的數(shù)據(jù)會立即發(fā)送。)連接建立后,最初的數(shù)據(jù)會立即發(fā)送。 (2)當(dāng)緩沖區(qū)中數(shù)據(jù)不足一個報(bào)
27、文段,則推遲發(fā)送。)當(dāng)緩沖區(qū)中數(shù)據(jù)不足一個報(bào)文段,則推遲發(fā)送。等到一個確認(rèn)來到(確認(rèn)觸發(fā))時,發(fā)送緩沖區(qū)中等到一個確認(rèn)來到(確認(rèn)觸發(fā))時,發(fā)送緩沖區(qū)中的小報(bào)文段。的小報(bào)文段。 3.說明說明 Nagle算法的兩個優(yōu)點(diǎn):算法的兩個優(yōu)點(diǎn): 自適應(yīng):自適應(yīng):確認(rèn)到達(dá)得越快,數(shù)據(jù)也就發(fā)送得越快確認(rèn)到達(dá)得越快,數(shù)據(jù)也就發(fā)送得越快 ; 計(jì)算簡單:計(jì)算簡單:不需要定時器。不需要定時器。 可關(guān)閉可關(guān)閉Nagle算法,應(yīng)用程序接口一般提供選項(xiàng)算法,應(yīng)用程序接口一般提供選項(xiàng)TCP-NODELAY來關(guān)閉來關(guān)閉Nagle算法。算法。 擁塞:擁塞:交換節(jié)點(diǎn)(如路由器)數(shù)據(jù)報(bào)負(fù)載過重的現(xiàn)象交換節(jié)點(diǎn)(如路由器)數(shù)據(jù)報(bào)負(fù)載過重
28、的現(xiàn)象 ?;仡櫍夯仡櫍篒P層的擁塞控制技術(shù):層的擁塞控制技術(shù):(ICMP源站抑制報(bào)文),是一種被動機(jī)制。源站抑制報(bào)文),是一種被動機(jī)制。TCP擁塞控制的必要性:擁塞控制的必要性:在在TCP層,擁塞造成時延增層,擁塞造成時延增加,這又會造成超時重傳,控制不當(dāng)會進(jìn)一步加重?fù)砑?,這又會造成超時重傳,控制不當(dāng)會進(jìn)一步加重?fù)砣?。塞?7.6 TCP擁塞控制技術(shù)擁塞控制技術(shù)l每一個每一個TCPTCP連接需要有以下兩個狀態(tài)變量:連接需要有以下兩個狀態(tài)變量:接收端窗口接收端窗口 (receiver window) (receiver window) ,又稱為,又稱為通知窗通知窗口口(advertised wi
29、ndow)(advertised window)。l接收端根據(jù)其目前的接收緩存大小向發(fā)送方所接收端根據(jù)其目前的接收緩存大小向發(fā)送方所許諾的最新的窗口值許諾的最新的窗口值l來自來自接收端接收端的流量控制的流量控制擁塞窗口擁塞窗口 (congestion window)(congestion window)。l發(fā)送端根據(jù)自己估計(jì)的網(wǎng)絡(luò)擁塞程度而設(shè)置的發(fā)送端根據(jù)自己估計(jì)的網(wǎng)絡(luò)擁塞程度而設(shè)置的窗口值窗口值l它對一個發(fā)送方能向網(wǎng)絡(luò)中發(fā)送流量的速率進(jìn)它對一個發(fā)送方能向網(wǎng)絡(luò)中發(fā)送流量的速率進(jìn)行限制行限制l來自來自發(fā)送端發(fā)送端的流量控制。的流量控制。l發(fā)送窗口的上限值取決于接收端窗口發(fā)送窗口的上限值取決于接收
30、端窗口rwnd和擁塞窗和擁塞窗口口cwnd這兩個變量中較小的一個,即應(yīng)按以下公式這兩個變量中較小的一個,即應(yīng)按以下公式確定:確定: 發(fā)送窗口的上限值發(fā)送窗口的上限值 min rwnd, cwnd 慢啟動門限(ssthresh)用于確定是采用慢啟動還是擁塞避免算法來控制數(shù)據(jù)傳送:l當(dāng)cwndssthresh時,使用擁塞避免算法;l當(dāng)cwnd=ssthresh時,既可以使用慢啟動算法,也可以使用擁塞避免算法。 擁塞窗口擁塞窗口cwnd每個連接都有一個擁塞窗口,該窗口大小以字節(jié)為單位,但是每個連接都有一個擁塞窗口,該窗口大小以字節(jié)為單位,但是增加和減少以增加和減少以MSS為單位;為單位;初始大小:初
31、始大?。?個個MSS; 慢啟動算法慢啟動算法思想:新連接開始或擁塞解除后,都僅以一個最大報(bào)文段長度思想:新連接開始或擁塞解除后,都僅以一個最大報(bào)文段長度作為擁塞窗口作為擁塞窗口cwnd的初始值。此后,每收到一個確認(rèn),的初始值。此后,每收到一個確認(rèn),cwnd增加一個增加一個MSS。 擁塞擁塞 避免算法避免算法當(dāng)當(dāng)cwnd增加到增加到ssthresh的一半時,進(jìn)入的一半時,進(jìn)入“擁塞避免擁塞避免”狀態(tài)。狀態(tài)。思想:思想:窗口中的所有報(bào)文段都被確認(rèn)后,才將窗口中的所有報(bào)文段都被確認(rèn)后,才將cnwd增加一個增加一個MSS。 加速遞減技術(shù)加速遞減技術(shù)指數(shù)級遞減:指數(shù)級遞減:出現(xiàn)超時重傳時,將出現(xiàn)超時重傳
32、時,將ssthresh值設(shè)為當(dāng)前擁塞窗口值設(shè)為當(dāng)前擁塞窗口的的1/2,擁塞窗口恢復(fù)為,擁塞窗口恢復(fù)為1個個MSS大小大小; 指數(shù)退避:指數(shù)退避:對保留在發(fā)送窗口中的報(bào)文段,將重傳時限加倍對保留在發(fā)送窗口中的報(bào)文段,將重傳時限加倍 。TCP擁塞控制技術(shù)擁塞控制技術(shù)慢開始和擁塞避免算法的實(shí)現(xiàn)舉例慢開始和擁塞避免算法的實(shí)現(xiàn)舉例-1 當(dāng)當(dāng) TCP 連接進(jìn)行初始化時,將擁塞窗口置為連接進(jìn)行初始化時,將擁塞窗口置為 1。圖中的窗口單位不使用。圖中的窗口單位不使用字節(jié)而使用字節(jié)而使用報(bào)文段報(bào)文段。慢慢開始門限的初始值設(shè)置為開始門限的初始值設(shè)置為 16 個報(bào)文段,即個報(bào)文段,即 ssthresh = 16。2
33、46810121416182022004812162024傳輸次數(shù)傳輸次數(shù)擁塞窗口擁塞窗口進(jìn)入擁塞避免進(jìn)入擁塞避免發(fā)生超時發(fā)生超時指數(shù)規(guī)律增長指數(shù)規(guī)律增長線性規(guī)律增長線性規(guī)律增長ssthresh = 16慢開始慢開始慢開始慢開始擁塞避免擁塞避免擁塞避免擁塞避免更新后的更新后的 ssthresh = 12進(jìn)入擁塞避免進(jìn)入擁塞避免 發(fā)送端的發(fā)送窗口不能超過擁塞窗口和接收端窗口中的最小值。我們假定發(fā)送端的發(fā)送窗口不能超過擁塞窗口和接收端窗口中的最小值。我們假定接收端窗口足夠大,因此現(xiàn)在發(fā)送窗口的數(shù)值等于擁塞窗口的數(shù)值。接收端窗口足夠大,因此現(xiàn)在發(fā)送窗口的數(shù)值等于擁塞窗口的數(shù)值。慢開始和擁塞避免算法的
34、實(shí)現(xiàn)舉例慢開始和擁塞避免算法的實(shí)現(xiàn)舉例-2 在執(zhí)行慢開始算法時,擁塞窗口的初始值為在執(zhí)行慢開始算法時,擁塞窗口的初始值為 1,發(fā)送,發(fā)送第一個報(bào)文段第一個報(bào)文段 M0。 246810121416182022004812162024傳輸次數(shù)傳輸次數(shù)擁塞窗口擁塞窗口進(jìn)入擁塞避免進(jìn)入擁塞避免發(fā)生超時發(fā)生超時指數(shù)規(guī)律增長指數(shù)規(guī)律增長線性規(guī)律增長線性規(guī)律增長ssthresh = 16慢開始慢開始慢開始慢開始擁塞避免擁塞避免擁塞避免擁塞避免更新后的更新后的 ssthresh = 12進(jìn)入擁塞避免進(jìn)入擁塞避免慢開始和擁塞避免算法的實(shí)現(xiàn)舉例慢開始和擁塞避免算法的實(shí)現(xiàn)舉例-3246810121416182022
35、004812162024傳輸次數(shù)傳輸次數(shù)擁塞窗口擁塞窗口進(jìn)入擁塞避免進(jìn)入擁塞避免發(fā)生超時發(fā)生超時指數(shù)規(guī)律增長指數(shù)規(guī)律增長線性規(guī)律增長線性規(guī)律增長ssthresh = 16慢開始慢開始慢開始慢開始擁塞避免擁塞避免擁塞避免擁塞避免更新后的更新后的 ssthresh = 12進(jìn)入擁塞避免進(jìn)入擁塞避免發(fā)送端收到發(fā)送端收到 ACK1 (確認(rèn)(確認(rèn) M0,期望收到,期望收到 M1)后,將)后,將擁塞窗口擁塞窗口從從 1 增大到增大到 2,于是發(fā)送端可以接著發(fā)送,于是發(fā)送端可以接著發(fā)送 M1 和和 M2 兩個報(bào)文段。兩個報(bào)文段。 慢開始和擁塞避免算法的實(shí)現(xiàn)舉例慢開始和擁塞避免算法的實(shí)現(xiàn)舉例-4 接收端發(fā)回接
36、收端發(fā)回 ACK2 和和 ACK3。發(fā)送端每收到一個對新。發(fā)送端每收到一個對新報(bào)文段的確認(rèn)報(bào)文段的確認(rèn) ACK,就把發(fā)送端的擁塞窗口加,就把發(fā)送端的擁塞窗口加 1?,F(xiàn)?,F(xiàn)在發(fā)送端的在發(fā)送端的擁塞窗口擁塞窗口從從 2 增大到增大到 4,并可發(fā)送,并可發(fā)送 M4 M6共共 4個報(bào)文段。個報(bào)文段。 246810121416182022004812162024傳輸次數(shù)傳輸次數(shù)擁塞窗口擁塞窗口進(jìn)入擁塞避免進(jìn)入擁塞避免發(fā)生超時發(fā)生超時指數(shù)規(guī)律增長指數(shù)規(guī)律增長線性規(guī)律增長線性規(guī)律增長ssthresh = 16慢開始慢開始慢開始慢開始擁塞避免擁塞避免擁塞避免擁塞避免更新后的更新后的 ssthresh = 12
37、進(jìn)入擁塞避免進(jìn)入擁塞避免慢開始和擁塞避免算法的實(shí)現(xiàn)舉例慢開始和擁塞避免算法的實(shí)現(xiàn)舉例-5 發(fā)送端每收到一個對新報(bào)文段的確認(rèn)發(fā)送端每收到一個對新報(bào)文段的確認(rèn) ACK,就把發(fā)送,就把發(fā)送端的擁塞窗口加端的擁塞窗口加 1,因此擁塞窗口,因此擁塞窗口 隨著傳輸次數(shù)按指隨著傳輸次數(shù)按指數(shù)規(guī)律增長。數(shù)規(guī)律增長。 246810121416182022004812162024傳輸次數(shù)傳輸次數(shù)擁塞窗口擁塞窗口進(jìn)入擁塞避免進(jìn)入擁塞避免發(fā)生超時發(fā)生超時指數(shù)規(guī)律增長指數(shù)規(guī)律增長線性規(guī)律增長線性規(guī)律增長ssthresh = 16慢開始慢開始慢開始慢開始擁塞避免擁塞避免擁塞避免擁塞避免更新后的更新后的 ssthresh
38、= 12進(jìn)入擁塞避免進(jìn)入擁塞避免慢開始和擁塞避免算法的實(shí)現(xiàn)舉例慢開始和擁塞避免算法的實(shí)現(xiàn)舉例-6 當(dāng)擁塞窗口增長到慢開始門限值當(dāng)擁塞窗口增長到慢開始門限值 ssthresh 時(即當(dāng)時(即當(dāng) CongWin = 16 時),就改為執(zhí)行擁塞避免算法,擁時),就改為執(zhí)行擁塞避免算法,擁塞窗口按線性規(guī)律增長。塞窗口按線性規(guī)律增長。 246810121416182022004812162024傳輸次數(shù)傳輸次數(shù)擁塞窗口擁塞窗口進(jìn)入擁塞避免進(jìn)入擁塞避免發(fā)生超時發(fā)生超時指數(shù)規(guī)律增長指數(shù)規(guī)律增長ssthresh = 16慢開始慢開始慢開始慢開始線性規(guī)律增長線性規(guī)律增長擁塞避免擁塞避免擁塞避免擁塞避免更新后的更
39、新后的 ssthresh = 12進(jìn)入擁塞避免進(jìn)入擁塞避免慢開始和擁塞避免算法的實(shí)現(xiàn)舉例慢開始和擁塞避免算法的實(shí)現(xiàn)舉例-7 假定擁塞窗口的數(shù)值增長到假定擁塞窗口的數(shù)值增長到 24 時,網(wǎng)絡(luò)出現(xiàn)超時(表時,網(wǎng)絡(luò)出現(xiàn)超時(表明網(wǎng)絡(luò)擁塞了)。明網(wǎng)絡(luò)擁塞了)。 246810121416182022004812162024傳輸次數(shù)傳輸次數(shù)擁塞窗口擁塞窗口進(jìn)入擁塞避免進(jìn)入擁塞避免發(fā)生超時發(fā)生超時指數(shù)規(guī)律增長指數(shù)規(guī)律增長線性規(guī)律增長線性規(guī)律增長ssthresh = 16慢開始慢開始慢開始慢開始擁塞避免擁塞避免擁塞避免擁塞避免更新后的更新后的 ssthresh = 12進(jìn)入擁塞避免進(jìn)入擁塞避免慢開始和擁塞避免
40、算法的實(shí)現(xiàn)舉例慢開始和擁塞避免算法的實(shí)現(xiàn)舉例-8 更新后的更新后的 ssthresh 值變?yōu)橹底優(yōu)?12(即發(fā)送窗口數(shù)值(即發(fā)送窗口數(shù)值 24 的一半),的一半),擁塞窗口再重新設(shè)置為擁塞窗口再重新設(shè)置為 1,并執(zhí)行慢開始算法。,并執(zhí)行慢開始算法。 246810121416182022004812162024傳輸次數(shù)傳輸次數(shù)擁塞窗口擁塞窗口進(jìn)入擁塞避免進(jìn)入擁塞避免發(fā)生超時發(fā)生超時指數(shù)規(guī)律增長指數(shù)規(guī)律增長線性規(guī)律增長線性規(guī)律增長ssthresh = 16慢開始慢開始慢開始慢開始擁塞避免擁塞避免擁塞避免擁塞避免更新后的更新后的 ssthresh = 12進(jìn)入擁塞避免進(jìn)入擁塞避免慢開始和擁塞避免算法
41、的實(shí)現(xiàn)舉例慢開始和擁塞避免算法的實(shí)現(xiàn)舉例-9 當(dāng)當(dāng) CongWin = 12 時改為執(zhí)行擁塞避免算法,擁塞窗口按線時改為執(zhí)行擁塞避免算法,擁塞窗口按線性規(guī)律增長,每經(jīng)過一個往返時延就增加一個性規(guī)律增長,每經(jīng)過一個往返時延就增加一個 MSS 的大小。的大小。 246810121416182022004812162024傳輸次數(shù)傳輸次數(shù)擁塞窗口擁塞窗口進(jìn)入擁塞避免進(jìn)入擁塞避免發(fā)生超時發(fā)生超時指數(shù)規(guī)律增長指數(shù)規(guī)律增長線性規(guī)律增長線性規(guī)律增長ssthresh = 16慢開始慢開始慢開始慢開始擁塞避免擁塞避免擁塞避免擁塞避免更新后的更新后的 ssthresh = 12進(jìn)入擁塞避免進(jìn)入擁塞避免80KB超時
42、超時64KBssthresh40KBssthresh7.7 TCP報(bào)文報(bào)文1. 報(bào)文段和序號報(bào)文段和序號:報(bào)文段是:報(bào)文段是TCP軟件間傳輸數(shù)據(jù)的基軟件間傳輸數(shù)據(jù)的基本單元,每個報(bào)文段都有一個序號。本單元,每個報(bào)文段都有一個序號。(1)選取初始序號選取初始序號(2)第第n+1段的序號段的序號 = 第第n段序號段序號 + 第第n段數(shù)據(jù)區(qū)字節(jié)數(shù)段數(shù)據(jù)區(qū)字節(jié)數(shù)(相當(dāng)于每個字節(jié)都有一個序號相當(dāng)于每個字節(jié)都有一個序號)源端口源端口目標(biāo)端口目標(biāo)端口序號序號確認(rèn)號確認(rèn)號首部長度首部長度保留保留碼元比特碼元比特窗口窗口校驗(yàn)和校驗(yàn)和緊急指針緊急指針選項(xiàng)(若有)選項(xiàng)(若有)填充填充數(shù)據(jù)數(shù)據(jù)首部長度:首部長度:4字
43、節(jié)計(jì)數(shù),最大字節(jié)計(jì)數(shù),最大15,TCP首部長度首部長度20-60序號:序號:當(dāng)前報(bào)文的序號當(dāng)前報(bào)文的序號確認(rèn)號:確認(rèn)號:希望接收的對方下一報(bào)文段序號希望接收的對方下一報(bào)文段序號(已成功接收已成功接收到的數(shù)據(jù)字節(jié)序到的數(shù)據(jù)字節(jié)序+1)說明:說明:(1)序號和確認(rèn)序號在一起使得確認(rèn)可捎帶進(jìn)行。序號和確認(rèn)序號在一起使得確認(rèn)可捎帶進(jìn)行。 (2)TCP采用累計(jì)確認(rèn)策略。采用累計(jì)確認(rèn)策略。 (3) TCP采用經(jīng)受時延的確認(rèn)(時延一般為采用經(jīng)受時延的確認(rèn)(時延一般為200ms)。)。缺點(diǎn):缺點(diǎn):發(fā)送方無法收到所有成功傳輸?shù)膱?bào)文段的確認(rèn)發(fā)送方無法收到所有成功傳輸?shù)膱?bào)文段的確認(rèn)信息,對往返時間樣本的精確測量帶來
44、影響。信息,對往返時間樣本的精確測量帶來影響。窗口:窗口:通告對等端緩沖區(qū)大小,使發(fā)送方修改窗口的通告對等端緩沖區(qū)大小,使發(fā)送方修改窗口的大小,以便進(jìn)行收發(fā)雙方的流量控制。大小,以便進(jìn)行收發(fā)雙方的流量控制。 問題:問題:初始窗口大小如何確定?初始窗口大小如何確定? 默認(rèn)值,在建立連接時互相通告默認(rèn)值,在建立連接時互相通告校驗(yàn)和計(jì)算:校驗(yàn)和計(jì)算:加入偽首部,必須(加入偽首部,必須(UDP可選)可選) 源源IP目標(biāo)目標(biāo)IP0協(xié)議協(xié)議TCP長度長度碼元比特(標(biāo)識報(bào)文段的目的與內(nèi)容):碼元比特(標(biāo)識報(bào)文段的目的與內(nèi)容):URG緊急緊急ACK確認(rèn)確認(rèn)PSH強(qiáng)迫強(qiáng)迫RST連接連接復(fù)位復(fù)位SYN序號序號同步
45、同步FIN字節(jié)流字節(jié)流同步同步帶有確認(rèn)帶有確認(rèn)建立連接建立連接異常關(guān)閉連接異常關(guān)閉連接正常關(guān)閉連接正常關(guān)閉連接選項(xiàng):選項(xiàng):第一版第一版TCP:定義了選項(xiàng)表結(jié)束、無操作、:定義了選項(xiàng)表結(jié)束、無操作、MSS(最(最大報(bào)文段長度。大報(bào)文段長度。選項(xiàng)表結(jié)束選項(xiàng)表結(jié)束Kind=0(1byte)MSSKind=2(1byte) len=4(1byte)MSS(2byte)MSS過小:效率低過?。盒实蚆SS過大:考慮分片,丟失可能性增大過大:考慮分片,丟失可能性增大MSS接近路徑接近路徑MTU時為最佳(由于路徑改變,很難)。時為最佳(由于路徑改變,很難)。說明:說明:只有只有SYN報(bào)文能協(xié)商報(bào)文能協(xié)商MS
46、S,默認(rèn),默認(rèn)536字節(jié)字節(jié) 無操作無操作Kind=1(1byte)功能:使得選項(xiàng)達(dá)到功能:使得選項(xiàng)達(dá)到4字節(jié)的整數(shù)倍字節(jié)的整數(shù)倍選項(xiàng):選項(xiàng):第二版第二版TCP(rfc1323):增加了窗口擴(kuò)大因子和時間戳。:增加了窗口擴(kuò)大因子和時間戳。窗口擴(kuò)大因子窗口擴(kuò)大因子Kind=3 len=4 移位數(shù)移位數(shù)功能:將功能:將TCP窗口定義從窗口定義從16bit擴(kuò)大到擴(kuò)大到32bit。 移位數(shù)移位數(shù) = R:窗口大?。捍翱诖笮?= 65535 2R說明:說明: 只能出現(xiàn)在一個只能出現(xiàn)在一個SYN報(bào)文段中;報(bào)文段中; 主動建立連接的一方發(fā)送這個選項(xiàng),被動方收到該主動建立連接的一方發(fā)送這個選項(xiàng),被動方收到該選
47、項(xiàng)后才能發(fā)此選項(xiàng);選項(xiàng)后才能發(fā)此選項(xiàng); 每個方向上的擴(kuò)大因子可以不同;每個方向上的擴(kuò)大因子可以不同;時間戳選項(xiàng):時間戳選項(xiàng):kind=8len=10時間戳值時間戳值(4 byte)時間戳回顯應(yīng)答時間戳回顯應(yīng)答(4 byte)時間戳:時間戳:發(fā)送方填發(fā)送方填時間戳回顯應(yīng)答:時間戳回顯應(yīng)答:接收方確認(rèn)復(fù)制發(fā)回接收方確認(rèn)復(fù)制發(fā)回功能:功能:更好地估算更好地估算RTT 防止回繞的序號防止回繞的序號問題:問題:如果接收方發(fā)送了一個對兩個報(bào)文段的如果接收方發(fā)送了一個對兩個報(bào)文段的確認(rèn),那么應(yīng)該復(fù)制哪一個報(bào)文的時間戳字段確認(rèn),那么應(yīng)該復(fù)制哪一個報(bào)文的時間戳字段呢?呢?解決:解決:TCP為每個連接保留一個時間
48、戳數(shù)值。為每個連接保留一個時間戳數(shù)值。1. TCP設(shè)置兩個變量:設(shè)置兩個變量:(1)tsrecent:每個連接的時間戳數(shù)值;每個連接的時間戳數(shù)值;(2)lastack: 最后發(fā)送的最后發(fā)送的ACK的確認(rèn)序號;的確認(rèn)序號;2. 當(dāng)包含當(dāng)包含lastack的報(bào)文段到達(dá)時,其中的時間的報(bào)文段到達(dá)時,其中的時間戳被保存至戳被保存至tsrecent;3. 無論何時發(fā)送確認(rèn),無論何時發(fā)送確認(rèn),tsrecent將被寫入時間將被寫入時間戳回顯應(yīng)答字段,確認(rèn)序號則被保存到戳回顯應(yīng)答字段,確認(rèn)序號則被保存到lastack。分析:分析:1. 若若ACK被接收方延遲,則回顯的是第一個報(bào)文段。被接收方延遲,則回顯的是第
49、一個報(bào)文段。例:例:若包含若包含11024和和10252048字節(jié)的兩個報(bào)文段到達(dá),字節(jié)的兩個報(bào)文段到達(dá),則:則: lastack為為1025,回顯時間戳為,回顯時間戳為11024的時戳。的時戳。原因:原因:發(fā)送方在進(jìn)行重傳超時時間的計(jì)算時,必須將延發(fā)送方在進(jìn)行重傳超時時間的計(jì)算時,必須將延遲的遲的ACK也考慮在內(nèi)。也考慮在內(nèi)。2. 若收到的報(bào)文失序,則丟失的報(bào)文段到達(dá)時,它的時若收到的報(bào)文失序,則丟失的報(bào)文段到達(dá)時,它的時間戳被回顯。間戳被回顯。例:例:收到報(bào)文的順序?yàn)槭盏綀?bào)文的順序?yàn)?1024-20494072-10252048,則處理情況如下:則處理情況如下:(1)確認(rèn)號為)確認(rèn)號為10
50、25,回顯時間戳為,回顯時間戳為11024的時戳;的時戳;(2)確認(rèn)號為)確認(rèn)號為1025,回顯時間戳為,回顯時間戳為11024的時戳;的時戳;(3)確認(rèn)號為)確認(rèn)號為4073,回顯時間戳為,回顯時間戳為10252048的時戳;的時戳;結(jié)果:造成結(jié)果:造成RTT估計(jì)過高,比過低好估計(jì)過高,比過低好1. 緊急數(shù)據(jù)發(fā)送和帶外數(shù)據(jù)緊急數(shù)據(jù)發(fā)送和帶外數(shù)據(jù) 帶外數(shù)據(jù)帶外數(shù)據(jù):源站不能按字節(jié)流的順序而需要立即發(fā)給:源站不能按字節(jié)流的順序而需要立即發(fā)給接收方并及時處理的數(shù)據(jù)接收方并及時處理的數(shù)據(jù)(普通數(shù)據(jù)流中的緊急數(shù)據(jù)普通數(shù)據(jù)流中的緊急數(shù)據(jù))。1URG位位數(shù)據(jù)區(qū)數(shù)據(jù)區(qū)緊急數(shù)據(jù)緊急數(shù)據(jù)緊急指針緊急指針接收方收
51、到接收方收到URG報(bào)文段,立即把緊急數(shù)據(jù)交應(yīng)用程序報(bào)文段,立即把緊急數(shù)據(jù)交應(yīng)用程序處理,然后再處理普通數(shù)據(jù)流。處理,然后再處理普通數(shù)據(jù)流。通常,緊急數(shù)據(jù)從數(shù)據(jù)區(qū)最前端開始。但有些系統(tǒng)只通常,緊急數(shù)據(jù)從數(shù)據(jù)區(qū)最前端開始。但有些系統(tǒng)只傳送傳送1字節(jié)緊急數(shù)據(jù),可位于數(shù)據(jù)區(qū)任意地方。字節(jié)緊急數(shù)據(jù),可位于數(shù)據(jù)區(qū)任意地方。2. 強(qiáng)迫數(shù)據(jù)發(fā)送強(qiáng)迫數(shù)據(jù)發(fā)送應(yīng)用背景:應(yīng)用背景:通常,通常,TCP為提高網(wǎng)絡(luò)利用率,在緩沖區(qū)中為提高網(wǎng)絡(luò)利用率,在緩沖區(qū)中積累夠一個最大報(bào)文段容量的數(shù)據(jù)后才發(fā)送。積累夠一個最大報(bào)文段容量的數(shù)據(jù)后才發(fā)送。在交互環(huán)境或?qū)崟r性要求高的場合,每條命在交互環(huán)境或?qū)崟r性要求高的場合,每條命令(甚至
52、每個字符)希望及時傳送。令(甚至每個字符)希望及時傳送。TCP提提供推(供推(PUSH)操作,以強(qiáng)迫發(fā)送當(dāng)前數(shù)據(jù)流)操作,以強(qiáng)迫發(fā)送當(dāng)前數(shù)據(jù)流中的數(shù)據(jù)而不必等待緩沖區(qū)滿。中的數(shù)據(jù)而不必等待緩沖區(qū)滿。應(yīng)用方式:應(yīng)用方式: 發(fā)送方將發(fā)送方將PSH置置“1”,以通知接收方盡快把,以通知接收方盡快把該報(bào)文段數(shù)據(jù)交應(yīng)用程序。該報(bào)文段數(shù)據(jù)交應(yīng)用程序。 1. 重傳定時器:重傳定時器: 設(shè)定丟失重傳的時間間隔設(shè)定丟失重傳的時間間隔 。 2. 堅(jiān)持定時器堅(jiān)持定時器 在接收方發(fā)出在接收方發(fā)出0窗口通告后,發(fā)送方為了防止死鎖窗口通告后,發(fā)送方為了防止死鎖發(fā)生,用一個堅(jiān)持定時器周期性地向接收方發(fā)送窗口發(fā)生,用一個堅(jiān)持
53、定時器周期性地向接收方發(fā)送窗口探察報(bào)文,探察報(bào)文, 防止防止“0”窗口通告后窗口恢復(fù)通告丟失后窗口通告后窗口恢復(fù)通告丟失后造成死鎖。造成死鎖。3. ?;疃〞r器(間隔:保活定時器(間隔:2小時)小時) 在服務(wù)器端檢測半開放的連接。在服務(wù)器端檢測半開放的連接。 如果一個給定的連接在兩個小時內(nèi)沒有任何動作,如果一個給定的連接在兩個小時內(nèi)沒有任何動作,則服務(wù)器會向客戶端發(fā)送一個探察報(bào)文段,根據(jù)響應(yīng)則服務(wù)器會向客戶端發(fā)送一個探察報(bào)文段,根據(jù)響應(yīng)情況進(jìn)行處理。情況進(jìn)行處理。 客戶機(jī)可能的四種狀態(tài):客戶機(jī)可能的四種狀態(tài):客戶機(jī)正常工作,并從服務(wù)器可達(dá):客戶機(jī)正常工作,并從服務(wù)器可達(dá):2小時后?;钚r后保活定時器復(fù)位;若期間有通信,通信后定時器復(fù)位;若期間有通信,通信后2小時再復(fù)位;小時再復(fù)位;客戶機(jī)崩潰:客戶機(jī)崩潰:服務(wù)器連續(xù)發(fā)服務(wù)器連續(xù)發(fā)10個探察報(bào)文,回應(yīng)超個
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024年P(guān)ET改性及合金材料合作協(xié)議書
- 小學(xué)二年級描寫公園的作文(10篇)
- 二年級小學(xué)生日記250字(20篇)
- Tetramisole-hydrochloride-Standard-生命科學(xué)試劑-MCE
- Unit 4 單元提分綜合鞏固 人教版八年級英語上冊
- Tenacissoside-A-生命科學(xué)試劑-MCE
- TachypleginA-2-生命科學(xué)試劑-MCE
- Sulfo-CY5-5-hydrazide-生命科學(xué)試劑-MCE
- 2024-2025學(xué)年高中英語Unit4Publictransport單元素養(yǎng)評價(jià)含解析牛津譯林版選修7
- 2024-2025學(xué)年高中語文第7單元韓非子蚜2子圉見孔子于商太宰作業(yè)含解析新人教版選修先秦諸子蚜
- 鐵路邊坡水害分析報(bào)告
- 手術(shù)中獲得性壓力性損傷護(hù)理課件
- 初中八年級語文課件-五種表達(dá)方式及區(qū)分
- 你畫我猜題目
- 醫(yī)療器械設(shè)計(jì)更改評估報(bào)告
- 醫(yī)保藥品目錄培訓(xùn)課件
- 通信工程的職業(yè)生涯規(guī)劃
- 2024初一半期家長會
- 安全之門學(xué)校安全教育打開幸福未來
- (完整版)年產(chǎn)30萬噸甲醇工藝設(shè)計(jì)畢業(yè)設(shè)計(jì)
- 小學(xué)生電子產(chǎn)品安全教育:如何正確使用電腦和手機(jī)
評論
0/150
提交評論