tcp滑動視窗大小設定 TCP 協議 滑動視窗

2021-10-11 23:29:49 字數 1240 閱讀 3121

第3部分是表示對方的接收視窗大小;第4部分是應用程式已呼叫write方法明確告知需要傳送的 位元組大小,但超過了接收方的可處理範圍。

其他第3部分大小稱為可用視窗,第2部分+第3部分和稱為傳送視窗

傳送視窗移動:32到36位元組已確認後,視窗右移;

傳送視窗:

snd.wnd:傳送視窗,如上圖,為20位元組大小

snd.una:為乙個指標,指向已傳送未確認的位元組,如上圖snd.una=32位元組位置

snd.nxt:可用視窗的第乙個位元組,可用視窗大小=snd.una+snd.wnd-snd.nxt

接收視窗:通常約等於對端傳送視窗大小,視窗大小的通知通過報文中的windows欄位;

rcv.wnd:接收視窗大小,如20位元組

視窗和快取:應用層沒有及時讀取快取,會導致接收視窗收縮,同時server通過tcp報文通知傳送方也減少傳送視窗大小;若快取被佔滿,則視窗大小為0,即視窗關閉

收縮視窗導致的丟包:伺服器突然傳送緩衝收縮行為,突然降低每個tcp連線的緩衝大小,同時為及時通知到傳送方,導致客戶端為及時收縮傳送視窗,傳送了過量的資料,超過快取可處理的大小,導致丟包。

但實際伺服器會先收縮視窗,讓傳送方可及時調整傳送視窗,再減少快取,避免丟包。

視窗關閉後,客戶端會定時探測視窗大小

最佳視窗大小:

假設頻寬為100bps,時延為1s,最佳視窗為100bps*1s(bps*rtt),即頻寬時延積(bdp),但作業系統的快取還要分配給應用使用,可用如下配置控制接收視窗和應用快取所佔的比例:

TCP滑動視窗

目前建立在tcp協議上的網路協議特別多,有telnet,ssh,有ftp,有http等等。這些協議又可以根據資料吞吐量來大致分成兩大類 1 互動資料型別,例如telet,ssh,這種型別的協議在大多數情況下只是做小流量的資料交換,比如說按一下鍵盤,回顯一些文字等等。2 資料成塊型別,例如ftp,這種...

TCP滑動視窗

假設a和b之間新建立了一條tcp連線。裝置a需要傳送一長串資料流,但裝置b無法一次全部接收,所以它限制裝置a每次傳送分段指定數量的位元組數,直到分段中已傳送的位元組數得到確認。之後,裝置a可以繼續傳送更多位元組。每乙個裝置都對傳送,接收及確認資料進行追蹤。tcpbuffer中資料可以分為以下四類 1...

TCP滑動視窗

tcp滑動視窗是用來控制流量的,避免擁塞的發生。滑動視窗又包括接收端滑動視窗和傳送端滑動視窗,下面我們簡單分析一下。上圖顯示的是接收緩衝區,其中接收視窗也在其中。接收視窗的大小是8,即4 12,此時由a可知,接收端下乙個預計接收序列號4,當接收端接收到4 7之後,滑動視窗就會右移,此時接收端預計接收...