【轉】TCP ECE/CWR標識位

來源:互聯網
上載者:User

標籤:

本文轉自:http://blog.sina.com.cn/s/blog_7fc4c23d0101fa0z.html當前的TCP實現將TCP端節點之間的中間網路視為一個不透明的“黑盒”。TCP包進入和流出這個盒子。有些時候進入盒子的包被丟失了。因為今天的數字和光媒體上出現位元級錯誤的機會非常少,TCP的設計者們就假設包的丟失很大程度上是因為路由器的擁塞

  TCP對ECN的支援

  當一個IP包的ECN域被路由器設定為11時,接收端而非發送端被通知路徑上發生了擁塞。ECN使用TCP頭部來告知發送端網路正在經曆擁塞,並且告知接收端發送段已經受到了接收端發來的擁塞通告,已經降低了發送速率。

  圖2

  TCP對ECN的支援使用TCP中預先定義的保留位。ECN定義兩個新的標誌,2所示:

  •   ECE:ECN響應標誌被用來在TCP3次握手時表明一個TCP端是具備ECN功能的,並且表明接收到的TCP包的IP頭部的ECN被設定為11。更多資訊請參考RFC793。
  •   CWR:擁塞視窗減少標誌被發送主機設定,用來表明它接收到了設定ECE標誌的TCP包。擁塞視窗是被TCP維護的一個內部變數,用來管理髮送視窗大小。

  當兩個支援ECN的TCP端進行TCP串連時,它們交換SYN,SYN-ACK和ACK包。對於支援ECN的TCP端來說,SYN包的ECE和CWR標誌都被設定了。SYN-ACK只設定ECE標誌。

  一個支援ECN的TCP主機在支援ECN的TCP串連上發送設定了IP頭部為10或者01的TCP包。支援ECN的路由器在經曆擁塞時設定IP頭部的ECN域為11。當一個TCP接收端發送針對收到的一個設定ECN位為11的TCP包的響應時,它設定TCP包頭中的ECE,並且在接下來的ACK中也做同樣設定。

  當發送主機接收到設定了ECE標誌的ACK時,它就像感知到包丟失一樣,開始減少發送視窗,運行慢啟動過程和擁塞避免演算法。在下一個資料包中,寄件者設定CWR標誌。在接收到新的設定CWR標誌的包時,接受者停止在接下來的ACK中設定ECE標誌。

  ECN例子

  圖3

  圖3展示了一個在支援ECN的TCP端節點之間的一個TCP串連的例子,它們之間的一個支援ECN的路由器正在經曆擁塞。

  在這個例子中,TCP端A發送資料給TCP端B。TCP端A一次性發送5個包。包2通過一個擁塞的支援ECN的路由器轉寄,將IP包頭的ECN位設定為11。當TCP端B接收到這個包,它發送設定了ECE標誌的ACK。當TCP端A接收到第一個設定了ECE的ACK以後,它降低發送速率,並且在發送下一個包(6)時設定其CWR標誌。通過接收包6,TCP端將不對接下來的ACK包設定ECE標誌。詳情請參考RFC 3168。

  Windows對ECN的支援

  Windows Vista支援ECN但是預設是關閉的。你可以通過netsh interface tcp set global ecncapability=enabled來開啟支援。因為ECN使用到了IP和TCP包頭中以前未使用或者保留的位,中間的網路裝置如路由器和防火牆將會靜默地丟棄ECN網域設定為非0值的包。為了防止出現這種情況,請對你的網路裝置進行適當的配置和升級以支援ECN。

【轉】TCP ECE/CWR標識位

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.