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