首頁(yè) 考試吧論壇 Exam8視線 考試商城 網(wǎng)絡(luò)課程 模擬考試 考友錄 實(shí)用文檔 求職招聘 論文下載
2011中考 | 2011高考 | 2012考研 | 考研培訓(xùn) | 在職研 | 自學(xué)考試 | 成人高考 | 法律碩士 | MBA考試
MPA考試 | 中科院
四六級(jí) | 職稱英語(yǔ) | 商務(wù)英語(yǔ) | 公共英語(yǔ) | 托福 | 雅思 | 專四專八 | 口譯筆譯 | 博思 | GRE GMAT
新概念英語(yǔ) | 成人英語(yǔ)三級(jí) | 申碩英語(yǔ) | 攻碩英語(yǔ) | 職稱日語(yǔ) | 日語(yǔ)學(xué)習(xí) | 法語(yǔ) | 德語(yǔ) | 韓語(yǔ)
計(jì)算機(jī)等級(jí)考試 | 軟件水平考試 | 職稱計(jì)算機(jī) | 微軟認(rèn)證 | 思科認(rèn)證 | Oracle認(rèn)證 | Linux認(rèn)證
華為認(rèn)證 | Java認(rèn)證
公務(wù)員 | 報(bào)關(guān)員 | 銀行從業(yè)資格 | 證券從業(yè)資格 | 期貨從業(yè)資格 | 司法考試 | 法律顧問(wèn) | 導(dǎo)游資格
報(bào)檢員 | 教師資格 | 社會(huì)工作者 | 外銷員 | 國(guó)際商務(wù)師 | 跟單員 | 單證員 | 物流師 | 價(jià)格鑒證師
人力資源 | 管理咨詢師考試 | 秘書(shū)資格 | 心理咨詢師考試 | 出版專業(yè)資格 | 廣告師職業(yè)水平
駕駛員 | 網(wǎng)絡(luò)編輯
衛(wèi)生資格 | 執(zhí)業(yè)醫(yī)師 | 執(zhí)業(yè)藥師 | 執(zhí)業(yè)護(hù)士
會(huì)計(jì)從業(yè)資格考試會(huì)計(jì)證) | 經(jīng)濟(jì)師 | 會(huì)計(jì)職稱 | 注冊(cè)會(huì)計(jì)師 | 審計(jì)師 | 注冊(cè)稅務(wù)師
注冊(cè)資產(chǎn)評(píng)估師 | 高級(jí)會(huì)計(jì)師 | ACCA | 統(tǒng)計(jì)師 | 精算師 | 理財(cái)規(guī)劃師 | 國(guó)際內(nèi)審師
一級(jí)建造師 | 二級(jí)建造師 | 造價(jià)工程師 | 造價(jià)員 | 咨詢工程師 | 監(jiān)理工程師 | 安全工程師
質(zhì)量工程師 | 物業(yè)管理師 | 招標(biāo)師 | 結(jié)構(gòu)工程師 | 建筑師 | 房地產(chǎn)估價(jià)師 | 土地估價(jià)師 | 巖土師
設(shè)備監(jiān)理師 | 房地產(chǎn)經(jīng)紀(jì)人 | 投資項(xiàng)目管理師 | 土地登記代理人 | 環(huán)境影響評(píng)價(jià)師 | 環(huán)保工程師
城市規(guī)劃師 | 公路監(jiān)理師 | 公路造價(jià)師 | 安全評(píng)價(jià)師 | 電氣工程師 | 注冊(cè)測(cè)繪師 | 注冊(cè)計(jì)量師
繽紛校園 | 實(shí)用文檔 | 英語(yǔ)學(xué)習(xí) | 作文大全 | 求職招聘 | 論文下載 | 訪談 | 游戲

軟考網(wǎng)絡(luò)工程師知識(shí)點(diǎn):利用TCP/IP優(yōu)化數(shù)據(jù)傳輸

考試吧整理了軟考網(wǎng)絡(luò)工程師知識(shí)點(diǎn):利用TCP/IP優(yōu)化數(shù)據(jù)傳輸,幫助考生梳理知識(shí)點(diǎn)。

  為了減輕這些問(wèn)題所帶來(lái)的影響,Linux(以及其他的一些操作系統(tǒng))在其TCP實(shí)現(xiàn)中包括了TCP_DEFER_ACCEPT選項(xiàng)。它們?cè)O(shè)置在偵聽(tīng)套接字的服務(wù)器方,該選項(xiàng)命令內(nèi)核不等待最后的ACK包而且在第1個(gè)真正有數(shù)據(jù)的包到達(dá)才初始化偵聽(tīng)進(jìn)程。在發(fā)送SYN/ACK包之后,服務(wù)器就會(huì)等待客戶程序發(fā)送含數(shù)據(jù)的IP包,F(xiàn)在,只需要在網(wǎng)絡(luò)上傳送3個(gè)包了,而且還顯著降低了連接建立的延遲,對(duì)HTTP通信而言尤其如此。這一選項(xiàng)在好些操作系統(tǒng)上都有相應(yīng)的對(duì)等物。例如,在FreeBSD上,同樣的行為可以用以下代碼實(shí)現(xiàn):

  /* 為明晰起見(jiàn),此處略去無(wú)關(guān)代碼 */

  struct accept_filter_arg af = { “dataready”, “” };

  setsockopt(s, SOL_SOCKET, SO_ACCEPTFILTER, &af, sizeof(af));

  這個(gè)特征在FreeBSD上叫做“接受過(guò)濾器”,而且具有多種用法。不過(guò),在幾乎所有的情況下其效果與TCP_DEFER_ACCEPT是一樣的:服務(wù)器不等待最后的ACK包而僅僅等待攜帶數(shù)據(jù)負(fù)載的包。要了解該選項(xiàng)及其對(duì)高性能Web服務(wù)器的重要意義的更多信息請(qǐng)參考Apache文檔上的有關(guān)內(nèi)容。

  就HTTP客戶/服務(wù)器交互而言,有可能需要改變客戶程序的行為?蛻舫绦?yàn)槭裁匆l(fā)送這種“無(wú)用的”ACK包呢?這是因?yàn),TCP協(xié)議棧無(wú)法知道ACK包的狀態(tài)。如果采用FTP而非HTTP,那么客戶程序直到接收了FTP服務(wù)器提示的數(shù)據(jù)包之后才發(fā)送數(shù)據(jù)。在這種情況下,延遲的ACK將導(dǎo)致客戶/服務(wù)器交互出現(xiàn)延遲。為了確定ACK是否必要,客戶程序必須知道應(yīng)用程序協(xié)議及其當(dāng)前狀態(tài)。這樣,修改客戶行為就成為必要了。

  對(duì)Linux客戶程序來(lái)說(shuō),我們還可以采用另一個(gè)選項(xiàng),它也被叫做TCP_DEFER_ACCEPT。我們知道,套接字分成兩種類型,偵聽(tīng)套接字和連接套接字,所以它們也各自具有相應(yīng)的TCP選項(xiàng)集合。因此,經(jīng)常同時(shí)采用的這兩類選項(xiàng)卻具有同樣的名字也是完全可能的。在連接套接字上設(shè)置該選項(xiàng)以后,客戶在收到一個(gè)SYN/ACK包之后就不再發(fā)送ACK包,而是等待用戶程序的下一個(gè)發(fā)送數(shù)據(jù)請(qǐng)求;因此,服務(wù)器發(fā)送的包也就相應(yīng)減少了。

  TCP_QUICKACK

  阻止因發(fā)送無(wú)用包而引發(fā)延遲的另一個(gè)方法是使用TCP_QUICKACK選項(xiàng)。這一選項(xiàng)與 CP_DEFER_ACCEPT不同,它不但能用作管理連接建立過(guò)程而且在正常數(shù)據(jù)傳輸過(guò)程期間也可以使用。另外,它能在客戶/服務(wù)器連接的任何一方設(shè)置。如果知道數(shù)據(jù)不久即將發(fā)送,那么推遲ACK包的發(fā)送就會(huì)派上用場(chǎng),而且最好在那個(gè)攜帶數(shù)據(jù)的數(shù)據(jù)包上設(shè)置ACK 標(biāo)志以便把網(wǎng)絡(luò)負(fù)載減到最小。當(dāng)發(fā)送方肯定數(shù)據(jù)將被立即發(fā)送(多個(gè)包)時(shí),TCP_QUICKACK選項(xiàng)可以設(shè)置為0。對(duì)處于“連接”狀態(tài)下的套接字該選項(xiàng)的缺省值是1,首次使用以后內(nèi)核將把該選項(xiàng)立即復(fù)位為1(這是個(gè)一次性的選項(xiàng))。

  在某些情形下,發(fā)出ACK包則非常有用。ACK包將確認(rèn)數(shù)據(jù)塊的接收,而且,當(dāng)下一塊被處理時(shí)不至于引入延遲。這種數(shù)據(jù)傳輸模式對(duì)交互過(guò)程是相當(dāng)?shù)湫偷,因(yàn)榇祟惽闆r下用戶的輸入時(shí)刻無(wú)法預(yù)測(cè)。在Linux系統(tǒng)上這就是缺省的套接字行為。在上述情況下,客戶程序在向服務(wù)器發(fā)送HTTP請(qǐng)求,而預(yù)先就知道請(qǐng)求包很短所以在連接建立之后就應(yīng)該立即發(fā)送,這可謂HTTP的典型工作方式。既然沒(méi)有必要發(fā)送一個(gè)純粹的ACK包,所以設(shè)置TCP_QUICKACK為0以提高性能是完全可能的。在服務(wù)器方,這兩種選項(xiàng)都只能在偵聽(tīng)套接字上設(shè)置一次。所有的套接字,也就是被接受呼叫間接創(chuàng)建的套接字則會(huì)繼承原有套接字的所有選項(xiàng)。

  通過(guò)TCP_CORK、TCP_DEFER_ACCEPT和TCP_QUICKACK選項(xiàng)的組合,參與每一HTTP交互的數(shù)據(jù)包數(shù)量將被降低到最小的可接受水平(根據(jù)TCP協(xié)議的要求和安全方面的考慮)。結(jié)果不僅是獲得更快的數(shù)據(jù)傳輸和請(qǐng)求處理速度而且還使客戶/服務(wù)器雙向延遲實(shí)現(xiàn)了最小化。

  小結(jié)

  網(wǎng)絡(luò)程序的性能優(yōu)化顯然是一項(xiàng)復(fù)雜的任務(wù)。優(yōu)化技術(shù)包括:盡可能使用零拷貝、用TCP_CORK及其等價(jià)選項(xiàng)組裝適當(dāng)?shù)臄?shù)據(jù)包、把傳輸數(shù)據(jù)包的數(shù)量最小化以及延遲優(yōu)化等。為了提升網(wǎng)絡(luò)、系統(tǒng)的性能和可伸縮性,有必要在程序代碼中聯(lián)合一致地采用以上各種可用方法。當(dāng)然,清楚了解TCP/IP協(xié)議棧和操作系統(tǒng)的內(nèi)部工作原理也是必要的。

  相關(guān)推薦:

  2011年上半年軟考報(bào)名時(shí)間及方式匯總

  2010年下半年軟考成績(jī)查詢時(shí)間及方式匯總

  軟考網(wǎng)絡(luò)工程師歷年真題匯總(2007年-2010年)

文章搜索
軟件水平考試欄目導(dǎo)航
版權(quán)聲明:如果軟件水平考試網(wǎng)所轉(zhuǎn)載內(nèi)容不慎侵犯了您的權(quán)益,請(qǐng)與我們聯(lián)系800@exam8.com,我們將會(huì)及時(shí)處理。如轉(zhuǎn)載本軟件水平考試網(wǎng)內(nèi)容,請(qǐng)注明出處。