學(xué)習(xí)TCP可靠傳輸之前映挂,學(xué)習(xí)幾個(gè)重要的概念
-
停止等待協(xié)議
把計(jì)算機(jī)分為發(fā)送方和接收方
發(fā)送的消息在路上丟失 確認(rèn)的消息在路上丟失 確認(rèn)的消息很久才到 這三種情況都會(huì)超時(shí)重傳
每發(fā)送一個(gè)消息盗尸,都需要設(shè)置一個(gè)定時(shí)器
停止等待協(xié)議是最簡(jiǎn)單的可靠傳輸協(xié)議
停止等待協(xié)議對(duì)信道的利用效率不高 -
連續(xù)ARQ協(xié)議 (Automatic Repeat ReQuest:自動(dòng)重傳請(qǐng)求)
在停止等待協(xié)議的基礎(chǔ)上進(jìn)行改造的泼各,能不能批量發(fā)送?
連續(xù)ARQ協(xié)議采用累計(jì)確認(rèn)的方式逆巍,假如說同時(shí)發(fā)送了六個(gè)報(bào)文,那么在某一個(gè)時(shí)刻笙僚,發(fā)送方收到了第5個(gè)報(bào)文確認(rèn)消息灵再,那么表示1到5都已經(jīng)收到了,所以把窗口往后推動(dòng)五格,窗口就可以發(fā)送7-11這五個(gè)消息责嚷,這就是累計(jì)確認(rèn)。只要收到某個(gè)確認(rèn)消息揍异,就表示這個(gè)消息之前的消息都收到了爆班,可以大大減少確認(rèn)報(bào)文的數(shù)量,來提升網(wǎng)絡(luò)效率戚嗅。TCP協(xié)議就是基于連續(xù)ARQ協(xié)議來開發(fā)的枢舶。
TCP的可靠傳輸基于連續(xù)ARQ協(xié)議 ARQ協(xié)議有兩個(gè)重要的概念,滑動(dòng)窗口和累計(jì)確認(rèn)
-
TCP的滑動(dòng)窗口以字節(jié)為單位
假設(shè)有一段的字節(jié)流需要進(jìn)行傳輸躏尉,假設(shè)滑動(dòng)窗口的大小為7(現(xiàn)實(shí)上很大)后众,有一個(gè)場(chǎng)景蒂誉,前4個(gè)字節(jié)已發(fā)送沒有確認(rèn),后三個(gè)字節(jié)可以發(fā)送拗盒,窗口不能往前滑動(dòng)
重新傳輸導(dǎo)致效率低下陡蝇,那么有沒有提高效率的方式哮肚?答案是有的广匙,那就是選擇重傳深碱!
TCP協(xié)議的選擇重傳
- 選擇重傳需要指定需要重傳的字節(jié)(實(shí)際上是選擇重傳的字節(jié)邊界)
- 每一個(gè)字節(jié)都有一個(gè)唯一的32序號(hào)