TCP協(xié)議的傳輸控制和管理
對于TCP協(xié)議,它的主要作用就是傳輸和控制。但是具體的操作流程并非說說那么簡單。現(xiàn)在我們就來了解一下這方面的知識。首先我們來說一下傳輸策略的相關(guān)內(nèi)容。希望從中能為大家做個(gè)參考。
傳輸策略
TCP協(xié)議中采用滑動窗口來進(jìn)行傳輸控制,滑動窗口的大小意味著接收方還有多大的緩沖區(qū)可以用于接收數(shù)據(jù)。
發(fā)送方可以通過滑動窗口的大小來確定應(yīng)該發(fā)送多少字節(jié)的數(shù)據(jù)。
當(dāng)滑動窗口為0時(shí),發(fā)送方一般不能再發(fā)送數(shù)據(jù)報(bào),但有兩種情況除外,一種情況是可以發(fā)送緊急數(shù)據(jù),例如,允許用戶終止在遠(yuǎn)端機(jī)上的運(yùn)行進(jìn)程。
另一種情況是發(fā)送方可以發(fā)送一個(gè)1字節(jié)的數(shù)據(jù)報(bào)來通知接收方重新聲明它希望接收的下一字節(jié)及發(fā)送方的滑動窗口大小。
擁塞控制
當(dāng)加載到某個(gè)網(wǎng)絡(luò)上的載荷能力超過其處理能力時(shí),便會出現(xiàn)擁塞現(xiàn)象。
對于因特網(wǎng)來說有兩個(gè)潛在的問題--網(wǎng)絡(luò)的容量和接收方的容量,應(yīng)該分別進(jìn)行處理。發(fā)送方始終保持兩個(gè)窗口:接收方承認(rèn)的窗口和擁塞窗口。
取兩個(gè)窗口的最小值作為可以發(fā)送的字節(jié)數(shù)。
當(dāng)建TCP協(xié)議立連接時(shí),發(fā)送方將擁塞窗口大小初始化為該連接所用的最大數(shù)據(jù)報(bào)的長度值,并隨后發(fā)送一個(gè)最大長度的數(shù)據(jù)報(bào)。
如果該數(shù)據(jù)報(bào)在定時(shí)器超時(shí)之前得到了確認(rèn),那么發(fā)送方會在原擁塞窗口的基礎(chǔ)上再增加一個(gè)數(shù)據(jù)報(bào)的字節(jié)值,使其為兩倍最大數(shù)據(jù)報(bào)的大小,然后發(fā)送兩個(gè)數(shù)據(jù)報(bào)。
當(dāng)這些數(shù)據(jù)報(bào)中的每一個(gè)都被確認(rèn)后,擁塞窗口大小就再增加一個(gè)最大數(shù)據(jù)報(bào)的長度。
當(dāng)擁塞窗口是N個(gè)數(shù)據(jù)報(bào)的大小時(shí),如果發(fā)送的所有N個(gè)數(shù)據(jù)報(bào)都被及時(shí)確認(rèn),那么將擁塞窗口大小增加N個(gè)數(shù)據(jù)報(bào)對應(yīng)的字節(jié)數(shù)目。
擁塞窗口保持指數(shù)規(guī)律增大,直到數(shù)據(jù)傳輸超時(shí)或者達(dá)到接收方設(shè)定的窗口大小。
擁塞窗口便設(shè)置為恰好不造成超時(shí)或達(dá)到接收方的窗口大小的字節(jié)數(shù)。
定時(shí)器管理
TCP協(xié)議使用多個(gè)定時(shí)器,如重發(fā)定時(shí)器、持續(xù)定時(shí)器、"keep alive"定時(shí)器等。
最重要的是重發(fā)定時(shí)器。在發(fā)送一個(gè)數(shù)據(jù)報(bào)的同時(shí),啟動一個(gè)數(shù)據(jù)重發(fā)定時(shí)器。
如果在定時(shí)器超時(shí)前該數(shù)據(jù)報(bào)被確認(rèn),則關(guān)閉該定時(shí)器;相反,如果在確認(rèn)到達(dá)之前定時(shí)器超時(shí),則需要重發(fā)該數(shù)據(jù)報(bào)。
持續(xù)定時(shí)器用于防止出現(xiàn)死鎖情況。當(dāng)一個(gè)連接長時(shí)間閑置時(shí),"keep alive"定時(shí)器會超時(shí)而使一方去檢測另一方是否仍然存在。如果它未得到響應(yīng),便終止該連接。