tcp 選項

weixin_34208283發表於2017-06-03

TCP_QUICKACK選項來取消確認延遲
TCP_NODELAY選項可以禁止Negale 演算法
TCP_CORK 選項

    所謂的CORK就是塞子的意思,形象地理解就是用CORK將連線塞住,使得資料先不發出去,等到拔去塞子後再發出去。設定該選項後,核心會盡力把小資料包拼接成一個大的資料包(一個MTU)再傳送出去,當然若一定時間後(一般為200ms,該值尚待確認),核心仍然沒有組合成一個MTU時也必須傳送現有的資料(不可能讓資料一直等待吧)。
    然而,TCP_CORK的實現可能並不像你想象的那麼完美,CORK並不會將連線完全塞住。核心其實並不知道應用層到底什麼時候會傳送第二批資料用於和第一批資料拼接以達到MTU的大小,因此核心會給出一個時間限制,在該時間內沒有拼接成一個大包(努力接近MTU)的話,核心就會無條件傳送。也就是說若應用層程式傳送小包資料的間隔不夠短時,TCP_CORK就沒有一點作用,反而失去了資料的實時性(每個小包資料都會延時一定時間再傳送)。

相關文章