找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 1967|回復(fù): 0
打印 上一主題 下一主題
收起左側(cè)

TCP數(shù)據(jù)流穩(wěn)定性--TCP分片,重組及亂序

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:107189 發(fā)表于 2016-3-6 02:14 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
1、IP分片的情況。IP軟件包有一個[分片]和[重組]模塊,一個IP數(shù)據(jù)報在傳輸中可以被ip軟件包的[分片]模塊分片,在目的接收端B的IP軟件包 的[重組]模塊重新組合。接收端B的IP軟件包如果收到亂序的IP報文,是不會把這個包交付到高層TCP協(xié)議的,直到收到同一個IP報文的全部分片。所 以,如果發(fā)送端的FIN被分片,接收端B在收到完整的此IP數(shù)據(jù)報之前,TCP模塊不會收到這個包的任何分片。

2、發(fā)送端A發(fā)送了一個FIN,這僅代表發(fā)送端A想終止傳輸,并不代表另一端B想終止。這就是說,終止雙向鏈接需要4次握手?jǐn)嚅_(也有3次握手?jǐn)嚅_,類似 3次握手鏈接),比如,發(fā)送端A向發(fā)送端B發(fā)一個查詢請求,發(fā)送端A已經(jīng)沒有更多的數(shù)據(jù)要發(fā)送了,因此可以發(fā)送FIN請求一端斷開,也稱為半斷開,然后, 另一端B則需要時間處理請求,再把查詢結(jié)果返回給A,最后B發(fā)送FIN。
1)首先是A發(fā)送FIN,然后收到來自B的對這個FIN的確認(rèn),此時,發(fā)送端A將不能發(fā)送任何數(shù)據(jù)包,但可以接受B發(fā)來的數(shù)據(jù)包(這是非常常見的傳輸模式,客戶端發(fā)完,終止鏈接)。
2)發(fā)送端B仍舊可以繼續(xù)發(fā)送數(shù)據(jù)包,直到高層沒有更多的數(shù)據(jù),發(fā)送端B發(fā)送FIN,A收到后發(fā)送對這個FIN的確認(rèn)。此時,雙方都不能再傳輸任何數(shù)據(jù)了。

3、TCP協(xié)議規(guī)定,對于收到的亂序報文并不丟棄,而是緩存下來(這樣做是為了減少更多的重傳),立即發(fā)送希望接受的報文確認(rèn)。例如:發(fā)送端A發(fā)送了以下幾個包:第一個:1001-1100,第二個1101-1200,第三個FIN包(序列號是1201,一個虛字節(jié))。
1)第二個包在傳輸?shù)倪^程中丟失了,接收端收到第三個包后并不丟棄,而是緩存下來,然后,立即發(fā)送一個ACK,確認(rèn)號是1101(這樣做的目的是不必等到發(fā)送端A的第二個包超時后重傳,發(fā)送端A收到3個同樣的ACK后立即重傳,這是快速重傳的概念)。
2)當(dāng)發(fā)送端A收到3個確認(rèn)號都是1101或者第二個包的超時計時器到時間后,立即重新發(fā)送第二個包(之所以可以重傳,是因為TCP協(xié)議在接收端和發(fā)送端都各自建立了兩個發(fā)送、接收緩存)。
3)這樣,當(dāng)接收端B收到來自A的第二個包后,緩存中的數(shù)據(jù)都是按序的了。
4)對于按序包,接收端B對序列號的最后一個字節(jié)+1,也就是發(fā)送確認(rèn)號是1202的ACK包。
5)發(fā)送端A收到確認(rèn)號是1202后,便不能再發(fā)送任何數(shù)據(jù)了。

TCP 的傳輸機構(gòu)有多個定時器。當(dāng)一個包發(fā)送時,重發(fā)定時器開始計數(shù);當(dāng)收到確認(rèn)信號后,重發(fā)定時器停止計數(shù)。如果超過設(shè)定時間段還沒有收到確認(rèn)信號,就 重發(fā)該包。一個比較棘手的問題是如何設(shè)置該時間段。如果太長,當(dāng)網(wǎng)絡(luò)傳輸錯誤增加時將導(dǎo)致不必要的等待時間;如果太短,就會產(chǎn)生過多的重復(fù)包從而降低網(wǎng)絡(luò) 的反應(yīng)時間。現(xiàn)代TCP協(xié)議根據(jù)實際情況對重發(fā)定時器進(jìn)行動態(tài)設(shè)定。
     不 管重發(fā)過程執(zhí)行得多么有效,很少的丟失包就能嚴(yán)重地降低TCP連接的流量。每個未收到的包或包的片段只會在重發(fā)定時器超時的時候才會丟失。在數(shù)據(jù)重發(fā) 時,接收過程一直在遞送這些重發(fā)的數(shù)據(jù),這樣就使總體的數(shù)據(jù)傳輸陷于停頓,直到丟失的數(shù)據(jù)被取代為止。這些重發(fā)過程導(dǎo)致基于TCP的連接有時處于不穩(wěn)定狀 態(tài)。

IP丟包:
1。接受方:在以太網(wǎng)上,服務(wù)端有可能響應(yīng)不過來(大量客戶端有讀寫需求),服務(wù)端訪問密集,丟棄包在所難免
2。 發(fā)送方:大量客戶端同時請求服務(wù)器發(fā)送數(shù)據(jù),并且通告窗口很大,那么服務(wù)器會很快的把分組送到網(wǎng)卡上,考慮一種比較極端的情況,網(wǎng)絡(luò)中還有大量流量占用帶寬,致使 服務(wù)器不能迅速將數(shù)據(jù)發(fā)送出去,而網(wǎng)卡可以緩存的分組數(shù)是有一定限制的,那么肯定會有數(shù)據(jù)在未發(fā)送前就被丟棄了!而接收方對這種情況毫無所知,不會更改通 告窗口的大小,即流量控制不會起作用

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機教程網(wǎng)

快速回復(fù) 返回頂部 返回列表