tcp滑動視窗的傳送視窗和接收視窗的說法正確嗎?

時間 2021-06-02 03:45:04

1樓:

The congestion window (cwnd)

is a sender-side limit on the amount of data the sender can transmit

into the network before receiving an acknowledgment (ACK), while the

receiver's advertised window (rwnd) is a receiver-side limit on the

amount of outstanding data. The minimum of cwnd and rwnd governs

data transmission.

rfc5681,應該可以回答這個問題了吧。很明確,傳送端的視窗和接收端是分開的。這篇就是規定傳送端視窗是怎麼動的。

2樓:車小胖

我們提到滑動視窗(slide window ) 指的是傳送方維護的視窗:

視窗的左側是:「成功傳送、並已經被接收方確認的位元組序列號」

視窗的右側是:「 我方(傳送方)目前可以傳送的最大位元組序列號」

Window size = 視窗右側 - 視窗左側

這個window size 就是接收方告訴我方(傳送方)的大小,我們一般稱之為advertised window size 。

由於視窗的左側會一直向右移動(因為成功傳送的資料位元組序列號一直在變大),相應的視窗右側也會向右移動(水漲船高),所以稱這種動態的視窗為滑動視窗。

當滑動視窗的左側與右側完全重合,則意味著接收方通告我方(傳送方)的 window size = 0 ,我方就要暫時停止資料的傳送。直到對方TCP buffer有空餘的空間,告訴我方新的 window size,或者我方主動去查詢是否可以傳送資料。

我們以上談的都是傳送視窗,有沒有接收視窗呢?

乙個TCP接收方接收到乙個TCP segment,如何知道這個segment 是屬於哪個session ? 這個segment 是否合法?

第乙個問題很簡單,根據五元組,很容易區分屬於哪個session,然後就不分青紅皂白接受了嗎?不是!需要檢查其合法性,checksum 校驗、長度檢查、狀態位檢查等,我們稱這些校驗為sanity check。

還需要校驗segment 的sequence number (序列號)以及 acknowledge number是否合法,至少sequence number 應該位於乙個框架內,大了越界非法,小了越界也非法,都會被丟棄。只有這個框架內segment才會接收(同時考慮 acknowledge number 合法)這個框架就是接收方用於檢查segment 是否合法的乙個重要手段!

同理對於 acknowledge number 也界內檢查合法性,越界丟棄,界內接收(同時考慮 sequence number 合法)。

試想如果不進行這兩者的檢查,任何第三方都可以偽造乙個segment,用於Reset 這個工作正常的 TCP session,這顯然很不安全。而有了這兩項檢查,偽造工作難度大大提高,因為 Initial sequence number 是動態隨機的,偽造乙個能騙過接收方的segment 需要的是運氣!

3樓:炑炑炑

我來回答一下,有什麼不對的地方請大神指正。 @車小胖首先理解兩句話:伺服器必須將確認資訊發回客戶端以表明資料接收。

伺服器必須處理資料,將它傳遞給目標應用程式處理。區分開這兩件事情是非常重要的,區分開這兩件事情是非常重要的,區分開這兩件事情是非常重要的。

你在傳送資料的時候,是傳送給伺服器的,在基本的滑動視窗機制中,伺服器資料於接收時確認,但並不一定立即從快取中傳輸出去。也就意味著當接收資料速度快於接收TCP處理速度時,快取有可能被填滿。當這一情況發生時,接收裝置需要調小視窗已防止快取過載。

如果相反,它會調大視窗。在這裡決定視窗大小的不是接收視窗,而是伺服器快取的空閒空間。

現實中伺服器可能需要處理數十,數百乃至數千個TCP連線。TCP可能無法立刻處理資料,或應用應用程式本身無法接過多資料。任何一種情況下,伺服器TCP都無法立刻將資料從快取中移出。

這時,除了發回確認資訊給客戶端以外,伺服器會想要告知客戶端更改視窗大小,以表示快取已經被部分寫入了。

TCP滑動視窗協議,視窗過大或過小有什麼影響?

歌頓 1.滑動視窗過小,則需要在網路上頻繁的傳輸確認資訊,占用了大量的網路頻寬 2.滑動視窗過大 假設傳送方不使用慢啟動,那傳送方將按照區域網的頻寬盡可能快地傳送報文段。如此有可能造成兩種擁塞。第一種擁塞 是當資料到達乙個大的管道 如乙個快速區域網 並向乙個較小的管道 如乙個較慢的廣域網 傳送時便會...

tcp重傳機制 對端滑動視窗一直為0時如何處理

拳頭 tcp重傳有乙個往返時間RTT 是隨機的有乙個公式 tcp通訊要基於ip的可達性像你說的 tcp發過去包多端存快取裡都無法處理了可見對端網路連通性極差 至於題主如果想研究一些抬槓的東西建議你研究一下qos 看一看快取裡的資料處理過程 接收端通告的視窗大小變成0,傳送端會發乙個1位元組的段 就是...

請問動態規劃和滑動視窗的區別是什麼?

Johngo學長 emmm.貌似完全不同 可能有些問題用到了動態規劃解決,但同時利用了滑動視窗的方法。下面是之前寫過的兩篇,可以嘗試看下 Johngo學長 學妹上岸位元組的 動態規劃 寶典Johngo學長 完虐演算法系列 字串 滑動視窗 覆盤總結很清晰的兩篇文章,應該可以幫助你完全解決你迷茫的地方。...