2012年4月16日 星期一

【電腦網路】滑動視窗silding windows

首先先說明可靠性傳送
依上圖所示,簡要說明就是接收方確認發送方傳送封包後,會回傳ACK;等發送方收到ACK後才會再一次傳送封包。
上述為概念性說明,詳細資料請查【可靠性傳送的確認機制】。




有了可靠性傳送知識的概念我們可以推測:假如每一個單一封包都需要等待前面的封包確認之後才進行傳送的話﹐將會導致整個連線過程時間的增加﹐同時也會造成頻寬的浪費

因此滑動視窗誕生了
滑動視窗理解為多重發送多重確認的技術。它允許發送端在接收到確認信息之前同時傳送多個封包﹐因而能夠更充份的利用網路頻寬加速資料傳送速度

利用 Sliding Window 在收發兩端各劃分出一個緩衝範圍(buffer)﹐定義了多大的資料量可被打包傳送。(定義可傳送封包大小,基本上設定皆為4096 bytes16384 bytes)
在連線建立起來之初﹐兩端都會將 window 的設定值還原到初始值

舉例說明:(以下僅為例子非實際狀況)

 定義三個封包。發送端一次過發送三個封包出去﹐如果接收端夠順利﹐也能一次處理接收下來的三個封包的話﹐就會向發送端確認全部三個封包,並告知接收端 window 值為 3 。然後,發送端視窗則會往後移動三個封包﹐填補發送出去之封包的空缺。但如果接收端太忙﹐或是其它因素影響﹐暫時只能處理兩個封包﹐那麼﹐在視窗裡面就剩下一個封包﹐然後就會告訴發送端 window 值為 2。這個時候﹐發送端就只送出兩個封包﹐而視窗就會往後移動兩個封包﹐填補發送出去的空缺。因此,視窗的大小是不固定,這就是為什麼在視窗前面加上“滑動”的原因。

滑動視窗會記住哪些封包已經被確認﹐並且為每一個未被確認的封包保留各自的計時器。如果在逾時後還沒得到該封包的確認﹐則重發該封包。發送端在移動視窗的時候﹐它會移過所有已確認的封包。在視窗中﹐編號最低的封包﹐往往是序列中的第一個未被確認的封包。




CWR(Congestion Windows Reduce )阻塞視窗減少
當CWR欄位值為“1”時,其功能在於通知目的端所對應的資料發送端已減少其發送的資料量

參考:
1.滿詳細的
http://www.study-area.org/network/network_ip_tcp.htm
2.Blogger資訊,裡面有稍微提一下滑動視窗
http://stishsun.blogspot.com/2009/06/tcp-sliding-window.html



沒有留言:

張貼留言

如果久久沒有反應,請直接寄信
應該是我不太會用google blogger 導致有留言過久未處理><
實在深感抱歉..