TCP 時延確認

《HTTP 權威指南》閱讀隨筆

爲什麼要有 TCP 時延確認
因特網由於自身原因無法保證可靠的分組傳輸,比如路由器超負荷的情況下可以隨意丟棄分組。因此 TCP 實現了自己的確認機制來確保數據的成功傳輸。

TCP 如何保證發送數據的完整性
每個 TCP 段都有一個序列號和數據完整性校驗和,每個段的接收者收到完好的段時,都會像發送者送回小的確認分組,如果發送者沒有在指定時間內收到確認信息,那麼發送者會認爲分組已被破壞,並重新發送數據。

延遲確認算法
由於確認報文很小,所以 TCP 允許在發往同方向的輸出數據分組中對其進行“捎帶”。TCP 將返回的確認消息和輸出的數據分組結合在一起,可以更有效的利用網絡。爲了增加確認報文找到同向傳輸數據分組的可能性,很多 TCP 棧都實現了一種“延遲確認”算法。延遲算法會在一個特性的窗口時間內,比如 100~200 毫秒,將輸出確認放在緩衝區中,以尋找能夠“捎帶”它們的輸出數據分組。如果在這個特定的窗口時間內沒有輸出分組數據,那麼確認信息將會單獨發送。

適當使用算法
對於具有雙峯特徵(請求 - 應答)的 HTTP 行爲,則降低了“捎帶”確認信息的可能,當希望有相反方向的回傳分組時,往往沒有那麼多,這時延遲確認算法的引入反而會帶來相當大的時延。因此,需要根據實際情況來選擇是否使用延遲確認算法。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章