網(wǎng)站開發(fā)項目合同長沙網(wǎng)站推廣和優(yōu)化
目錄
TCP的通信機制的核心特性
四、滑動窗口
1)什么是滑動窗口?
2)滑動窗口的作用是什么?
3)批量傳輸出現(xiàn)丟包如何處理?
1> 接收端ACK丟包
2> 發(fā)送端數(shù)據(jù)包丟包
4)適用性
TCP的通信機制的核心特性
TCP的通信機制最核心的特性是可靠傳輸。 | |
TCP至少通過以下機制來保證傳輸?shù)目煽啃?/span>,在保證可靠性的同時也采取一些機制來提升傳輸效率: | |
<1> 確認應答 | <6> 阻塞控制 |
<2> 超時重傳 | <7> 延時應答 |
<3> 連接管理 | <8> 捎帶應答 |
<4> 滑動窗口 | <9> 面向字節(jié)流 |
<5> 流量控制 | <10> 異常情況處理 |
閱讀指針 -> 《 TCP 的通信機制?-- 連接管理(三次握手和四次揮手 》<JavaEE> TCP 的通信機制(二) -- 連接管理(三次握手和四次揮手)-CSDN博客介紹了TCP協(xié)議中的“連接管理”機制,即“三次握手”建立連接和“四次揮手”斷開連接https://blog.csdn.net/zzy734437202/article/details/135231067
四、滑動窗口
1)什么是滑動窗口?
無需等待確認應答,可以繼續(xù)發(fā)送數(shù)據(jù)的最大值稱為窗口大小,窗口越大,網(wǎng)絡吞吐率就越高。 |
在傳輸數(shù)據(jù)時,批量進行數(shù)據(jù)傳輸,達到批量傳輸上限后,再等待ACK。 |
此后每返回一個ACK,則可以發(fā)送出一個后續(xù)數(shù)據(jù)。類似于窗口滑動的效果。 |
為了維護滑動窗口,操作系統(tǒng)內(nèi)核開辟了發(fā)送緩沖區(qū),用于記錄已發(fā)送的數(shù)據(jù)還有哪些尚未接收到ACK。接收到ACK的數(shù)據(jù),才能從緩沖區(qū)刪除。 |
2)滑動窗口的作用是什么?
作用是批量傳輸數(shù)據(jù),縮短確認應答的等待時間,提高傳輸效率。 |
3)批量傳輸出現(xiàn)丟包如何處理?
有兩種丟包情況:接收端ACK丟包 和 發(fā)送端數(shù)據(jù)包丟包。 |
1> 接收端ACK丟包
傳輸過程中,ACK丟包并不需要重傳數(shù)據(jù)。 |
TCP的數(shù)據(jù)報格式中存在序號和確認序號兩個屬性。發(fā)送端接收到后續(xù)的ACK,就意味著這個ACK記錄的確認序號之前的數(shù)據(jù)包都已經(jīng)正常接收。 |
2> 發(fā)送端數(shù)據(jù)包丟包
還是通過TCP的數(shù)據(jù)報格式中的序號和確認序號兩個屬性進行判斷和處理。 |
傳輸過程中,發(fā)送端數(shù)據(jù)包丟包,則接收端接收不到對應的數(shù)據(jù)包的序號。 |
此時接收端會重復向發(fā)送端發(fā)送包含同一確認序號的ACK,當發(fā)送端接收到三次這個同一確認序號的ACK時,就會重新發(fā)送這個確認序號的數(shù)據(jù)包。 |
中間數(shù)據(jù)包的丟包,并不影響后續(xù)數(shù)據(jù)包的傳輸,這些數(shù)據(jù)包會保存在接收端的接收緩存區(qū)中。當接收端正常接收到重發(fā)的丟包數(shù)據(jù)后,就會按序號順序從接收緩存區(qū)中讀取數(shù)據(jù)。 |
上述重傳過程中,只會重傳丟包的數(shù)據(jù)包,沒有其他冗余的傳輸操作。這種機制被稱為“高速重發(fā)機制”,也稱為“快重傳”。 |
4)適用性
在數(shù)據(jù)量小的場景下,使用普通的確認應答和超時重傳即可。 |
在數(shù)據(jù)量大的場景下,使用活動窗口更合適。 |
閱讀指針 -> 《?TCP 的通信機制(四) -- 流量控制 和 擁塞控制?》
<JavaEE> TCP 的通信機制(四) -- 流量控制 和 擁塞控制-CSDN博客介紹了 TCP 的通信機制 -- 流量控制 和 擁塞控制https://blog.csdn.net/zzy734437202/article/details/135257678