TCP使用一種特定的算法來控制其行為,我們改變不了算法,但可以靈活應變、更高效地使用算法。
使用HTTP的Web會話、文件傳輸、文件共享和系統(tǒng)備份通常使用TCP,系統(tǒng)啟動時裝入的Windows桌面配置同樣基于TCP,可以說,與互聯(lián)網(wǎng)相關(guān)的絕大部分數(shù)據(jù)是由傳輸控制協(xié)議(TCP)承載的。
然而,如果系統(tǒng)備份到距離相當遠的遠程站點,那么實際使用的帶寬可能只有所購帶寬的一小部分。比如,監(jiān)控攝像頭將視頻傳輸?shù)竭h程錄像機或者使用無線連接的錄像機時,這個傳輸過程可能緩慢或受到干擾。
造成TCP性能糟糕主要有網(wǎng)絡時延和網(wǎng)絡中斷兩個原因。TCP被設計成可重新傳輸丟失的數(shù)據(jù)段,但數(shù)據(jù)段可能會延遲傳輸。在線路很長的情況下,TCP必須限制傳輸速率,以免接收端的緩沖區(qū)應接不暇。
由于大多數(shù)網(wǎng)絡分析工具只告訴我們遇到了TCP性能問題,但并不會告知為何會發(fā)生,這類工具也沒有建議采取何種可行的糾正措施,這使問題變得更嚴重。
在更深入地探究這個問題之前,不妨看一下有助于改善TCP性能的幾個技巧。TCP使用一種特定的算法來控制其行為,我們改變不了算法,但可以靈活應變,以便更高效地使用算法。
技巧1 加大緩沖區(qū)
減小網(wǎng)絡中導致數(shù)據(jù)包丟失的出錯可能性。無線通信很容易出現(xiàn)錯誤,那些錯誤通常是網(wǎng)絡操作人員看不見的。咨詢網(wǎng)絡設備廠商,確保路由器和交換機的緩沖區(qū)大于傳統(tǒng)的64k字節(jié),64k字節(jié)在早期的無線設備中很常見。現(xiàn)代的TCP版本傳輸?shù)臄?shù)據(jù)段比64k緩沖區(qū)的數(shù)據(jù)容納量大得多。
技巧2 縮短線路
確保網(wǎng)絡線路盡量短。從紐約備份到費城要比從紐約備份到丹佛或備份到倫敦快速得多,即使可用帶寬和終端系統(tǒng)都一樣。這種情況下,內(nèi)容分發(fā)網(wǎng)絡(CND)提供商可以提供幫助。他們將內(nèi)容放到更靠近用戶的地方,因而縮短了網(wǎng)絡時延,提高了分發(fā)性能。
技巧3 考慮使用HTTP管線化
如果某任務(比如批量文件傳輸)可以分成兩個或多個TCP會話,然后同時傳輸,那么可用帶寬能得到更高效的利用,這就是HTTP管線化(HTTP pipelining)的原理。
技巧4 更新堆棧
盡可能使用最新的TCP堆棧。新版本的TCP工作起來效果遠勝過舊版本。比如說,Windows XP使用通常被稱為New Reno的TCP版本,而Windows 7/8使用名為Compound TCP的較新版本。這個版本對數(shù)據(jù)段丟失有更好的控制,還有另外幾處變化,有助于提升其性能。如果你是Linux用戶,就要確保版本至少是2.3.13,其性能類似Compound TCP的性能。
技巧5 使用數(shù)據(jù)包分析儀
確保企業(yè)中至少有一人懂得如何使用數(shù)據(jù)分析儀,此人能夠明白客戶機和服務器在約定TCP中使用一些較新的選項。其中一些選項是選擇性確認(SACK)、窗口縮放和快速傳輸。雖然分析儀無法告知這些選項為何很重要,但它會證實它們已使用。這將表明兩頭終端系統(tǒng)可能都使用了較新的TCP堆棧。
另外,我們可以在有限的程度上改變算法。比如說,微軟網(wǎng)站上的一些研究披露,企業(yè)IT管理人員可以改變TCP堆棧中的一些參數(shù)。大多數(shù)研究認為,Cubic TCP在這兩個因素方面都比New Reno或Compound TCP更勝一籌。Compound TCP的表現(xiàn)通常比New Reno TCP要好一點。