久久国产成人av_抖音国产毛片_a片网站免费观看_A片无码播放手机在线观看,色五月在线观看,亚洲精品m在线观看,女人自慰的免费网址,悠悠在线观看精品视频,一级日本片免费的,亚洲精品久,国产精品成人久久久久久久

分享

TCP/IP詳解學(xué)習(xí)筆記(12)

 zcxuexi 2015-03-04

超時(shí)重傳是TCP協(xié)議保證數(shù)據(jù)可靠性的另一個(gè)重要機(jī)制,,其原理是在發(fā)送某一個(gè)數(shù)據(jù)以后就開啟一個(gè)計(jì)時(shí)器,在一定時(shí)間內(nèi)如果沒有得到發(fā)送的數(shù)據(jù)報(bào)的ACK報(bào)文,,那么就重新發(fā)送數(shù)據(jù),,直到發(fā)送成功為止。

1.超時(shí)

超時(shí)時(shí)間的計(jì)算是超時(shí)的核心部分,,TCP要求這個(gè)算法能大致估計(jì)出當(dāng)前的網(wǎng)絡(luò)狀況,,雖然這確實(shí)很困難。要求精確的原因有兩個(gè):(1)定時(shí)長(zhǎng)久會(huì)造成網(wǎng)絡(luò)利用率不高,。(2)定時(shí)太短會(huì)造成多次重傳,,使得網(wǎng)絡(luò)阻塞。所以,,書中給出了一套經(jīng)驗(yàn)公式,,和其他的保證計(jì)時(shí)器準(zhǔn)確的措施。

1.1.遞推公式概說(shuō)

最早的TCP曾經(jīng)用了一個(gè)非常簡(jiǎn)單的公式來(lái)估計(jì)當(dāng)前網(wǎng)絡(luò)的狀況,,如下

R<-aR+(1-a)M
RTP=Rb

其中a是一個(gè)經(jīng)驗(yàn)系數(shù)為0.1,,b通常為2。注意,,這是經(jīng)驗(yàn),,沒有推導(dǎo)過程,這個(gè)數(shù)值是可以被修改的,。這個(gè)公式是說(shuō)用舊的RTT(R)和新的RTT(M)綜合到一起來(lái)考慮新的RTT(R)的大小,。但是,我們又看到,,這種估計(jì)在網(wǎng)絡(luò)變化很大的情況下完全不能做出“靈敏的反應(yīng)”(Jacoboson說(shuō)的,,不是偶說(shuō)的,呵呵),,于是就有下面的修正公式:

Err=M-A
A<-A+gErr
D<-D+h(|Err|-D)
RTO=A+4D

具體的解釋請(qǐng)看書的228頁(yè),,這個(gè)遞推公式甚至把方差這種統(tǒng)計(jì)概念也使用了進(jìn)來(lái),使得偏差更加的小,。而且,,必須要指出的是,這兩組公式更新,都是在數(shù)據(jù)成功傳輸?shù)那闆r下才進(jìn)行,,在發(fā)生數(shù)據(jù)重新傳輸?shù)那闆r下,,并不使用上面的公式進(jìn)行網(wǎng)絡(luò)估計(jì),理由很簡(jiǎn)單,,因?yàn)槌绦蛞呀?jīng)不在正常狀態(tài)下了,,估計(jì)出來(lái)的數(shù)據(jù)也是沒有意義的。

1.2.RTO的初始化

RTO的初始化是由公式?jīng)Q定的,,例如最初的公式,,初始的值應(yīng)該是1。而修正公式,,初始RTO應(yīng)該是A+4D,。

1.3.RTO的更新

當(dāng)數(shù)據(jù)正常傳輸?shù)那闆r下,我們就會(huì)用上面的公式來(lái)更新各個(gè)數(shù)據(jù),,并重開定時(shí)器,,來(lái)保證下一個(gè)數(shù)據(jù)被順利傳輸。要注意的是:重傳的情況下,,RTO不用上面的公式計(jì)算,而采用一種叫做“指數(shù)退避”的方式,。例如:當(dāng)RTO為1S的情況下,,發(fā)生了數(shù)據(jù)重傳,我們就用RTO=2S的定時(shí)器來(lái)重新傳輸數(shù)據(jù),,下一次用4S,。一直增加到64S為止。

1.4.估計(jì)器的初始化

在這里,,SYN用的估計(jì)器初始化似乎和傳輸用的估計(jì)器不一樣(我也沒有把握)造我的理解,,在修正公式中,SYN的情況下,,A初始化為0,D初始化為3S,。

而在得到傳輸?shù)谝粋€(gè)數(shù)據(jù)的ACK的時(shí)候,應(yīng)該按照下面的公式進(jìn)行初始化:

A=M+0.5
D=A/2

1.5.估計(jì)器的更新

和上面的討論差不多,,就是在正常情況下,,用上面的公式計(jì)算,在重傳的情況下,,不更新估計(jì)器的各種參數(shù),。原因還是因?yàn)楣烙?jì)不準(zhǔn)確。

1.6.Karn算法

這不算是一個(gè)算法,,這應(yīng)該是一個(gè)策略,,說(shuō)的就是更新RTO和估計(jì)器的值的時(shí)機(jī)選擇問題,1.3.和1.5.所說(shuō)得更新時(shí)機(jī)就是Karn算法。

1.7.計(jì)時(shí)器的使用

兩句話:

  1. 一個(gè)連接中,,有且僅有一個(gè)測(cè)量定時(shí)器被使用,。也就是說(shuō),如果TCP連續(xù)發(fā)出3組數(shù)據(jù),,只有一組數(shù)據(jù)會(huì)被測(cè)量,。
  2. ACK數(shù)據(jù)報(bào)不會(huì)被測(cè)量,原因很簡(jiǎn)單,,沒有ACK的ACK回應(yīng)可以供結(jié)束定時(shí)器測(cè)量,。

2.重傳

有了超時(shí)就要有重傳,但是就算是重傳也是有策略的,,而不是將數(shù)據(jù)簡(jiǎn)單的發(fā)送,。

2.1.重傳時(shí)發(fā)送數(shù)據(jù)的大小

前面曾經(jīng)提到過,數(shù)據(jù)在傳輸?shù)臅r(shí)候不能只使用一個(gè)窗口協(xié)議,,我們還需要有一個(gè)擁塞窗口來(lái)控制數(shù)據(jù)的流量,,使得數(shù)據(jù)不會(huì)一下子都跑到網(wǎng)路中引起“擁塞”。也曾經(jīng)提到過,,擁塞窗口最初使用指數(shù)增長(zhǎng)的速度來(lái)增加自身的窗口,,直到發(fā)生超時(shí)重傳,再進(jìn)行一次微調(diào),。但是沒有提到,,如何進(jìn)行微調(diào),擁塞避免算法和慢啟動(dòng)門限就是為此而生,。

所謂的慢啟動(dòng)門限就是說(shuō),,當(dāng)擁塞窗口超過這個(gè)門限的時(shí)候,就使用擁塞避免算法,,而在門限以內(nèi)就采用慢啟動(dòng)算法,。所以這個(gè)標(biāo)準(zhǔn)才叫做門限,通常,,擁塞窗口記做cwnd,,慢啟動(dòng)門限記做ssthresh。下面我們來(lái)看看擁塞避免和慢啟動(dòng)是怎么一起工作的

算法概要(直接從書中拷貝)

  1. 對(duì)一個(gè)給定的連接,,初始化cwnd為1個(gè)報(bào)文段,,ssthresh為65535個(gè)字節(jié)。
  2. TCP輸出例程的輸出不能超過cwnd和接收方通告窗口的大小,。擁塞避免是發(fā)送方使用 的流量控制,,而通告窗口則是接收方進(jìn)行的流量控制。前者是發(fā)送方感受到的網(wǎng)絡(luò)擁塞的估 計(jì),,而后者則與接收方在該連接上的可用緩存大小有關(guān),。
  3. 當(dāng)擁塞發(fā)生時(shí)(超時(shí)或收到重復(fù)確認(rèn)),,ssthresh被設(shè)置為當(dāng)前窗口大小的一半(cwnd 和接收方通告窗口大小的最小值,但最少為2個(gè)報(bào)文段),。此外,,如果是超時(shí)引起了擁塞,則 cwnd被設(shè)置為1個(gè)報(bào)文段(這就是慢啟動(dòng)),。
  4. 當(dāng)新的數(shù)據(jù)被對(duì)方確認(rèn)時(shí),,就增加cwnd,但增加的方法依賴于我們是否正在進(jìn)行慢啟 動(dòng)或擁塞避免,。如果cwnd小于或等于ssthresh,,則正在進(jìn)行慢啟動(dòng),否則正在進(jìn)行擁塞避免,。 慢啟動(dòng)一直持續(xù)到我們回到當(dāng)擁塞發(fā)生時(shí)所處位置的半時(shí)候才停止(因?yàn)槲覀冇涗浟嗽诓襟E2 中給我們制造麻煩的窗口大小的一半),,然后轉(zhuǎn)為執(zhí)行擁塞避免。

補(bǔ)充上面的擁塞避免公式在P238頁(yè),。這整個(gè)的流程讓我聯(lián)想到開車換檔的過程,。

2.2.快速重傳和快速恢復(fù)算法

這是數(shù)據(jù)丟包的情況下給出的一種修補(bǔ)機(jī)制。一般來(lái)說(shuō),,重傳發(fā)生在超時(shí)之后,,但是如果發(fā)送端接受到3個(gè)以上的重復(fù)ACK的情況下,就應(yīng)該意識(shí)到,,數(shù)據(jù)丟了,,需要重新傳遞。這個(gè)機(jī)制是不需要等到重傳定時(shí)器溢出的,,所以叫做快速重傳,,而重新傳遞以后,,因?yàn)樽叩牟皇?strong>慢啟動(dòng)而是擁塞避免算法,,所以這又叫做快速恢復(fù)算法。流程如下:

  1. 當(dāng)收到第3個(gè)重復(fù)的ACK時(shí),,將ssthresh設(shè)置為當(dāng)前擁塞窗口cwnd的一半,。重傳丟失的 報(bào)文段。設(shè)置cwnd為ssthresh加上3倍的報(bào)文段大小,。
  2. 每次收到另一個(gè)重復(fù)的ACK時(shí),, cwnd增加1個(gè)報(bào)文段大小并發(fā)送1個(gè)分組(如果新的 cwnd允許發(fā)送)。
  3. 當(dāng)下一個(gè)確認(rèn)新數(shù)據(jù)的ACK到達(dá)時(shí),,設(shè)置cwnd為ssthresh(在第1步中設(shè)置的值),。這個(gè) ACK應(yīng)該是在進(jìn)行重傳后的一個(gè)往返時(shí)間內(nèi)對(duì)步驟1中重傳的確認(rèn)。另外,,這個(gè)ACK也應(yīng)該 是對(duì)丟失的分組和收到的第1個(gè)重復(fù)的ACK之間的所有中間報(bào)文段的確認(rèn),。這一步采用的是擁 塞避免,,因?yàn)楫?dāng)分組丟失時(shí)我們將當(dāng)前的速率減半。

2.3.ICMP會(huì)引起重新傳遞么,?

答案是:不會(huì),,TCP會(huì)堅(jiān)持用自己的定時(shí)器,但是TCP會(huì)保留下ICMP的錯(cuò)誤并且通知用戶,。

2.4.重新分組

TCP為了提高自己的效率,,允許再重新傳輸?shù)臅r(shí)候,只要傳輸包含重傳數(shù)據(jù)報(bào)文的報(bào)文就可以,,而不用只重傳需要傳輸?shù)膱?bào)文,。

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,,不代表本站觀點(diǎn),。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買等信息,,謹(jǐn)防詐騙,。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào),。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多