TCP_QUICKACK選項來取消確認(rèn)延遲
TCP_NODELAY選項可以禁止Negale 算法
TCP_CORK 選項
所謂的CORK就是塞子的意思侄非,形象地理解就是用CORK將連接塞住幌陕,使得數(shù)據(jù)先不發(fā)出去椎组,等到拔去塞子后再發(fā)出去。設(shè)置該選項后,內(nèi)核會盡力把小數(shù)據(jù)包拼接成一個大的數(shù)據(jù)包(一個MTU)再發(fā)送出去灭将,當(dāng)然若一定時間后(一般為200ms泄伪,該值尚待確認(rèn)),內(nèi)核仍然沒有組合成一個MTU時也必須發(fā)送現(xiàn)有的數(shù)據(jù)(不可能讓數(shù)據(jù)一直等待吧)立润。
然而狂窑,TCP_CORK的實現(xiàn)可能并不像你想象的那么完美,CORK并不會將連接完全塞住桑腮。內(nèi)核其實并不知道應(yīng)用層到底什么時候會發(fā)送第二批數(shù)據(jù)用于和第一批數(shù)據(jù)拼接以達(dá)到MTU的大小泉哈,因此內(nèi)核會給出一個時間限制,在該時間內(nèi)沒有拼接成一個大包(努力接近MTU)的話破讨,內(nèi)核就會無條件發(fā)送丛晦。也就是說若應(yīng)用層程序發(fā)送小包數(shù)據(jù)的間隔不夠短時,TCP_CORK就沒有一點(diǎn)作用提陶,反而失去了數(shù)據(jù)的實時性(每個小包數(shù)據(jù)都會延時一定時間再發(fā)送)烫沙。