下載本文檔
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、TCP 滑動窗口協(xié)議TCP 的首部中有一個(gè)很重要的字段就是 16 位長的窗口 大小,它出現(xiàn)在每一個(gè) TCP 數(shù)據(jù)報(bào)中,配合 32 位的確認(rèn)序 號,用于向?qū)Χ送ǜ姹镜?socket 的接收窗口大小。 也就是說, 如果本地 socket 發(fā)送一個(gè) TCP 數(shù)據(jù),其 32 位確認(rèn)序號是 5, 窗口大小是 5840 ,則用于告訴對端,對端已經(jīng)發(fā)出的4個(gè)字節(jié)的數(shù)據(jù)已經(jīng)收到并確認(rèn), 接下來, 本地 socket 最多能 夠接收從第 5 個(gè)字節(jié)開始的 5840 個(gè)字節(jié)長度的數(shù)據(jù)。這是 由接收方進(jìn)行的一種流量控制,接收方通過告訴發(fā)送方自己 所能夠接收數(shù)據(jù)的大小,達(dá)到控制發(fā)送方發(fā)送速度的目的。 結(jié)構(gòu)體 stru
2、ct tcp_sock 中有很多成員數(shù)據(jù)跟滑動窗口協(xié)議相 關(guān),需要注意的是這里講的滑動窗口都是指本地 socket 的接 收窗口。 成員 window_clamp 表示滑動窗口的最大值, 滑動窗口的大小在變化的過程中不能超出這個(gè)值。 它在 TCP 連接建立的時(shí)候被初始化,被置為最大的 16 位整數(shù)左移窗 口的擴(kuò)大因子,因?yàn)榛瑒哟翱谠?TCP 首部中以 16 位表示, window_clamp 太大會導(dǎo)致滑動窗口不能在 TCP 首部中表示。 成員 rx_opt 是一個(gè) struct tcp_options_received 結(jié)構(gòu)體,它 有兩個(gè)成員 snd_wscale 和 rcv_wscale
3、,分別表示來自對端 通告的滑動窗口擴(kuò)大因子 (本地發(fā)送數(shù)據(jù)報(bào)時(shí)需要遵守 ),和 本地接收滑動窗口的擴(kuò)大因子。 snd_wscale 從來自對端的第 一個(gè) SYN 中獲取。 rcv_wscale 在本地 socket 建立連接時(shí)初 始化,它賦值的原則是使 16 位整數(shù)的最大值左移 rcv_wscale 后,至少可以達(dá)到整個(gè)接收緩存的最大值。接收緩存最大值 在協(xié)議棧中由全局變量 mysysctl_rmem_max 表示,它是 256*(256+sizeof(struct sk_buff) 后的值,為 107520 ,但 sysctl_tcp_rmem3 所表示的接收緩存的上限更大,為 174760
4、 ,所以,取后者,這樣的話, rcv_wscale 的值幾乎 可以說是固定的, 為 2 。所以 window_clamp 的值就是 65535 << 2 = 262140 ??梢姡?window_clamp 的值超出了接收 緩存的最大值, 但這沒有關(guān)系, 因?yàn)樵诨瑒哟翱谠鲩L的時(shí)候, 會考慮接收緩存的大小這個(gè)因素的。 rcv_wnd 表示當(dāng)前 的接收窗口的大小,這個(gè)值在接收到來自對端的數(shù)據(jù)后,會 變動的。它的初始值取接收緩存大小的 3/4 跟 MAX_TCP_WINDOW 之間的最小值, MAX_TCP_WINDOW 在系統(tǒng)中的定義為 32767U 。然后,還要根據(jù) mss 的值作一
5、 個(gè)調(diào)整,調(diào)整邏輯是:如果 mss 大于 3*1460 ,則如果當(dāng)前 的 rcv_wnd 大于兩倍的 mss ,就取兩倍的 mss 作為 rcv_wnd 的值;如果 mss 大于 1460 ,則如果當(dāng)前的 rcv_wnd 大于 3 倍的 mss ,就取 3 倍的 mss 作為 rcv_wnd 的新值;否則, 如果rcv_wnd大于4倍的 mss,就取4倍的 mss作為rcv_wnd 的新值,我們的實(shí)驗(yàn)環(huán)境的 mss 值為 1448( 因?yàn)?tcp 首部有 12 字節(jié)的時(shí)間戳選項(xiàng) ),所以 rcv_wnd 最后被調(diào)整為一個(gè)閥值,其初始值就置為 rcv_wnd 。它跟 rcv_wnd 配合工 作,
6、當(dāng)本地 socket 收到數(shù)據(jù)報(bào),并滿足一定條件時(shí),增長 rcv_ssthresh 的值,在下一次發(fā)送數(shù)據(jù)報(bào)組建 TCP 首部時(shí), 需要通告對端當(dāng)前的接收窗口大小, 這時(shí)需要更新 rcv_wnd , 此時(shí) rcv_wnd 的取值不能超過 rcv_ssthresh 的值。兩者配合, 達(dá)到一個(gè)滑動窗口大小緩慢增長的效果。 rcv_wup 記錄 滑動窗口的左邊沿,即落在滑動窗口中的最小的一個(gè)序號。 這樣的話, rcv_wup+rcv_wnd 即為滑動窗口的右邊沿, rcv_wup+rcv_wnd-rcv_nxt 即為滑動窗口的空白部分。它的 初始值為 0 ,在移動滑動窗口時(shí)被更新。 以上是關(guān)于接 收
7、滑動窗口的幾個(gè)相關(guān)數(shù)據(jù),下面我們看看它們是如何運(yùn)用 在 TCP 協(xié)議的通訊中的。 每次發(fā)送一個(gè) TCP 數(shù)據(jù)報(bào), 都要構(gòu)建 TCP 首部,這時(shí),會調(diào)用 mytcp_select_window 選擇窗口大小,窗口大小選擇的基本思想是接收緩存剩余空 間大小的 3/4 ,但是不能超過 rcv_ssthresh 的大小。但是, 如果這個(gè)新選擇的窗口大小比當(dāng)前窗口的剩余大小還小,則 以當(dāng)前窗口的剩余大小作為新窗口的大小。同時(shí)右移左邊沿, 令 rcv_wup=rcv_nxt 。這個(gè)新選擇的窗口是受 rcv_ssthresh 限制的,一般不會有什么問題,但我們可以看到代碼中還是 作了一些上限判斷, 如果擴(kuò)大
8、因子為 0, 則窗口大小不能超過 32767U ,否則不能超過 65535 左移擴(kuò)大因子后的值。 每次接收到來自對端的一個(gè) TCP 數(shù)據(jù)報(bào),且數(shù)據(jù)報(bào)長度大于 128 字節(jié)時(shí),我們需要調(diào)用 mytcp_grow_window ,增加 rcv_ssthresh 的值,一般每次為 rcv_ssthresh 增長兩倍的 mss ,增加的條件是 rcv_ssthresh 小于 window_clamp, 并且 rcv_ssthresh 小于接收緩存剩余空間的 3/4 ,同時(shí) mytcp_memory_pressure 沒有被置位 ( 即接收緩存中的數(shù)據(jù) 量沒有太大 )。 mytcp_grow_window 中對新收到的 skb 的長 度還有一些限制,并不總是增長 rcv_ssthresh 的值。具體見 函數(shù)代碼。 以上是關(guān)于接收窗口,下面簡單看一下發(fā)送 窗口。關(guān)于發(fā)送窗口,在 struct tcp_sock 中也有一些成員數(shù) 據(jù)相關(guān)。 snd_wl1 記錄發(fā)送窗口更新時(shí),造成窗口更新 的那個(gè) ACK 數(shù)據(jù)報(bào)的第一個(gè)序號。它主要用于在下一次判 斷是否需要更新發(fā)送窗口。 snd_wnd 是發(fā)送窗口的大小, 直
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025至2030年中國糖水清補(bǔ)湯數(shù)據(jù)監(jiān)測研究報(bào)告
- 養(yǎng)殖場污泥清理運(yùn)輸協(xié)議
- 2025至2030年中國數(shù)碼卡智能式門禁系統(tǒng)數(shù)據(jù)監(jiān)測研究報(bào)告
- 2025至2030年中國圓單軌接頭數(shù)據(jù)監(jiān)測研究報(bào)告
- 農(nóng)藥化肥運(yùn)輸協(xié)調(diào)中介協(xié)議
- 證券投資服務(wù)居間合同范本
- 2025至2030年中國全信銀行綜合業(yè)務(wù)系統(tǒng)數(shù)據(jù)監(jiān)測研究報(bào)告
- 2025至2030年中國企業(yè)促銷宣傳單片數(shù)據(jù)監(jiān)測研究報(bào)告
- 校園內(nèi)環(huán)境監(jiān)測與衛(wèi)生制度的協(xié)同
- 2025年中國試樣預(yù)磨機(jī)市場調(diào)查研究報(bào)告
- 精神發(fā)育遲滯的護(hù)理查房
- 有效排痰的護(hù)理ppt(完整版)
- 魯教版七年級數(shù)學(xué)下冊(五四制)全冊完整課件
- 英語六級詞匯(全)
- 算法向善與個(gè)性化推薦發(fā)展研究報(bào)告
- 聚合物的流變性詳解演示文稿
- 電氣設(shè)備預(yù)防性試驗(yàn)安全技術(shù)措施
- 醫(yī)院出入口安檢工作記錄表范本
- 內(nèi)科學(xué)教學(xué)課件:免疫性血小板減少癥(ITP)
- 中華人民共和國文物保護(hù)單位登記表
- 《生物制品學(xué)》課程教學(xué)大綱
評論
0/150
提交評論