青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

星綻紫輝(rawdata)的Blog

快樂地學習,快樂地工作!

  C++博客 :: 首頁 :: 聯系 :: 聚合  :: 管理
  16 Posts :: 0 Stories :: 37 Comments :: 0 Trackbacks

常用鏈接

留言簿(5)

我參與的團隊

搜索

  •  

最新評論

閱讀排行榜

評論排行榜

轉載: http://hi.baidu.com/tangzhenjiang/blog/item/e860003be8f807e814cecb28.html

TCP_NODELAY 和 TCP_CORK,
這兩個選項都對網絡連接的行為具有重要的作用。許多UNIX系統都實現了TCP_NODELAY選項,但是,TCP_CORK則是Linux系統所獨有的而且相對較新;它首先在內核版本2.4上得以實現。此外,其他UNIX系統版本也有功能類似的選項,值得注意的是,在某種由BSD派生的系統上的TCP_NOPUSH選項其實就是TCP_CORK的一部分具體實現。
TCP_NODELAY和TCP_CORK基本上控制了包的“Nagle化”,Nagle化在這里的含義是采用Nagle算法把較小的包組裝為更大的幀。John Nagle是Nagle算法的發明人,后者就是用他的名字來命名的,他在1984年首次用這種方法來嘗試解決福特汽車公司的網絡擁塞問題(欲了解詳情請參看IETF RFC 896)。他解決的問題就是所謂的silly window syndrome ,中文稱“愚蠢窗口癥候群”,具體含義是,因為普遍終端應用程序每產生一次擊鍵操作就會發送一個包,而典型情況下一個包會擁有一個字節的數據載荷以及40個字節長的包頭,于是產生4000%的過載,很輕易地就能令網絡發生擁塞,。 Nagle化后來成了一種標準并且立即在因特網上得以實現。它現在已經成為缺省配置了,但在我們看來,有些場合下把這一選項關掉也是合乎需要的。
現在讓我們假設某個應用程序發出了一個請求,希望發送小塊數據。我們可以選擇立即發送數據或者等待產生更多的數據然后再一次發送兩種策略。如果我們馬上發送數據,那么交互性的以及客戶/服務器型的應用程序將極大地受益。例如,當我們正在發送一個較短的請求并且等候較大的響應時,相關過載與傳輸的數據總量相比就會比較低,而且,如果請求立即發出那么響應時間也會快一些。以上操作可以通過設置套接字的TCP_NODELAY選項來完成,這樣就禁用了Nagle算法。
另外一種情況則需要我們等到數據量達到最大時才通過網絡一次發送全部數據,這種數據傳輸方式有益于大量數據的通信性能,典型的應用就是文件服務器。應用Nagle算法在這種情況下就會產生問題。但是,如果你正在發送大量數據,你可以設置TCP_CORK選項禁用Nagle化,其方式正好同TCP_NODELAY相反(TCP_CORK 和 TCP_NODELAY 是互相排斥的)。下面就讓我們仔細分析下其工作原理。
假設應用程序使用sendfile()函數來轉移大量數據。應用協議通常要求發送某些信息來預先解釋數據,這些信息其實就是報頭內容。典型情況下報頭很小,而且套接字上設置了TCP_NODELAY。有報頭的包將被立即傳輸,在某些情況下(取決于內部的包計數器),因為這個包成功地被對方收到后需要請求對方確認。這樣,大量數據的傳輸就會被推遲而且產生了不必要的網絡流量交換。
但是,如果我們在套接字上設置了TCP_CORK(可以比喻為在管道上插入“塞子”)選項,具有報頭的包就會填補大量的數據,所有的數據都根據大小自動地通過包傳輸出去。當數據傳輸完成時,最好取消TCP_CORK 選項設置給連接“拔去塞子”以便任一部分的幀都能發送出去。這同“塞住”網絡連接同等重要。
總而言之,如果你肯定能一起發送多個數據集合(例如HTTP響應的頭和正文),那么我們建議你設置TCP_CORK選項,這樣在這些數據之間不存在延遲。能極大地有益于WWW、FTP以及文件服務器的性能,同時也簡化了你的工作。示例代碼如下:

intfd, on = 1;

/* 此處是創建套接字等操作,出于篇幅的考慮省略*/

setsockopt (fd, SOL_TCP, TCP_CORK, &on, sizeof (on)); /* cork */
write (fd, …);
fprintf (fd, …);
sendfile (fd, …);
write (fd, …);
sendfile (fd, …);

on = 0;
setsockopt (fd, SOL_TCP, TCP_CORK, &on, sizeof (on)); /* 拔去塞子 */


不幸的是,許多常用的程序并沒有考慮到以上問題。例如,Eric Allman編寫的sendmail就沒有對其套接字設置任何選項。

Apache HTTPD是因特網上最流行的Web服務器,它的所有套接字就都設置了TCP_NODELAY選項,而且其性能也深受大多數用戶的滿意。這是為什么呢?答案就在于實現的差別之上。由BSD衍生的TCP/IP協議棧(值得注意的是FreeBSD)在這種狀況下的操作就不同。當在TCP_NODELAY 模式下提交大量小數據塊傳輸時,大量信息將按照一次write()函數調用發送一塊數據的方式發送出去。然而,因為負責請求交付確認的記數器是面向字節而非面向包(在Linux上)的,所以引入延遲的概率就降低了很多。結果僅僅和全部數據的大小有關系。而 Linux 在第一包到達之后就要求確認,FreeBSD則在進行如此操作之前會等待好幾百個包。

在Linux系統上,TCP_NODELAY的效果同習慣于BSD TCP/IP協議棧的開發者所期望的效果有很大不同,而且在Linux上的Apache性能表現也會更差些。其他在Linux上頻繁采用TCP_NODELAY的應用程序也有同樣的問題。

posted on 2011-11-17 16:30 星綻紫輝 閱讀(523) 評論(0)  編輯 收藏 引用

只有注冊用戶登錄后才能發表評論。
網站導航: 博客園   IT新聞   BlogJava   博問   Chat2DB   管理


青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            欧美精品午夜| 久久香蕉国产线看观看网| 亚洲欧美高清| 国产精品羞羞答答| 欧美片网站免费| 欧美日本久久| 欧美亚州韩日在线看免费版国语版| 午夜精品一区二区三区在线视| 夜夜嗨av一区二区三区中文字幕 | 亚洲国产女人aaa毛片在线| 国产精品亚洲不卡a| 国产精品亚洲综合| 国产一区亚洲一区| 亚洲成人在线网站| 99ri日韩精品视频| 亚洲免费一级电影| 麻豆精品一区二区综合av| 免费观看在线综合| 99视频精品| 久久亚洲影院| 国产精品色午夜在线观看| 韩国美女久久| 一区二区欧美精品| 久久综合婷婷| 一本色道久久综合一区| 久久精品99国产精品酒店日本| 免费视频一区| 黄色国产精品一区二区三区| 亚洲日本成人| 美女日韩在线中文字幕| 亚洲欧美精品在线| 国产精品高潮呻吟久久av黑人| 在线精品国产欧美| 欧美一区2区三区4区公司二百| 国产一区二区三区黄| 亚洲小说欧美另类社区| 欧美黄网免费在线观看| 校园春色综合网| 国产精品免费网站| 99国产成+人+综合+亚洲欧美| 久久久亚洲一区| 久久精品国产99| 伊人精品在线| 欧美不卡视频一区发布| 久久久综合网| 99视频有精品| 亚洲一区免费网站| 国产午夜精品美女毛片视频| 欧美诱惑福利视频| 久久九九国产| 日韩天堂av| 午夜影院日韩| 亚洲国产91精品在线观看| 欧美国产日韩在线观看| 亚洲精品乱码视频| 国产精品一区久久久| 136国产福利精品导航网址| 亚洲第一福利视频| 国产精品国产精品国产专区不蜜| 亚洲女爱视频在线| 嫩草国产精品入口| 亚洲一区二区三区欧美| 久久九九99| 亚洲欧美亚洲| 欧美成人免费在线| 久久久久久婷| 欧美色大人视频| 亚洲二区视频在线| 好看的日韩av电影| 黑丝一区二区三区| 亚洲精品美女久久久久| 韩日成人在线| 羞羞色国产精品| 性欧美1819性猛交| 久久久久网站| 国产精品美女久久久久久久 | 影音先锋久久久| 一区二区精品在线| 一区二区av在线| 欧美日一区二区三区在线观看国产免| 久久精品人人爽| 国产综合色精品一区二区三区| 亚洲欧美亚洲| 久久夜色精品亚洲噜噜国产mv | 久久成人精品无人区| 午夜视频一区在线观看| 国产亚洲精品v| 久久精品首页| 欧美国产大片| 亚洲综合精品一区二区| 国产三区精品| 欧美韩日一区| 亚洲综合好骚| 亚洲国产精品热久久| 一区二区精品在线观看| 国产精品日韩欧美大师| 久久免费精品视频| 亚洲精品1区2区| 久久久成人网| 中文国产成人精品| 亚洲国产cao| 美女免费视频一区| 欧美成人免费在线视频| 亚洲精品乱码久久久久久日本蜜臀 | 亚洲自拍都市欧美小说| 国产精品综合不卡av| 欧美高清免费| 久久久爽爽爽美女图片| 在线视频欧美一区| 久久先锋影音av| 亚洲自拍16p| 亚洲尤物视频网| 一区二区三区精品| 99天天综合性| 亚洲视频免费看| 中日韩男男gay无套| 99re热这里只有精品视频| 亚洲激情第一页| 日韩西西人体444www| 亚洲免费观看高清完整版在线观看熊| 国内精品久久久久久久影视麻豆| 国产精品国码视频| 国产精品视频免费| 国产日韩欧美综合在线| 精品二区视频| 国产欧美日韩在线播放| 亚洲午夜一区二区| 国产一区二区视频在线观看| 国产精品影视天天线| 国产亚洲一区二区三区在线观看 | 欧美在线在线| 久久精品在线免费观看| 免费观看一区| 亚洲一区二区免费视频| 久久久99精品免费观看不卡| 免费高清在线一区| 国产精品美女在线| 亚洲日韩成人| 久久爱www.| 国产精品久久波多野结衣| 激情一区二区| 久久国产主播| 亚洲综合国产激情另类一区| 免费观看成人鲁鲁鲁鲁鲁视频| 欧美午夜国产| 99精品视频网| 欧美激情按摩| 久久综合网络一区二区| 国产伦精品一区二区三区免费迷| 亚洲日本中文字幕| 美女露胸一区二区三区| 亚洲欧美日韩天堂一区二区| 欧美日韩视频在线一区二区| 一区二区三区在线免费观看| 久久国产精品久久久久久久久久 | 欧美在线高清| 国产精品一区二区在线观看不卡| 99国产精品久久| 亚洲黄一区二区三区| 免费观看欧美在线视频的网站| 99精品久久久| 欧美日韩麻豆| 亚洲欧美另类国产| 先锋亚洲精品| 亚洲国产欧美另类丝袜| 亚洲人成啪啪网站| 欧美日韩久久久久久| 亚洲欧美精品在线观看| 羞羞漫画18久久大片| 在线观看视频欧美| 日韩视频免费观看高清在线视频| 欧美日韩亚洲在线| 快射av在线播放一区| 欧美紧缚bdsm在线视频| 亚洲在线观看视频| 久久久久久尹人网香蕉| 在线视频你懂得一区二区三区| 亚洲人成网站色ww在线| 久久这里只有| 性xx色xx综合久久久xx| 免费看成人av| 久久国产精品亚洲77777| 欧美www视频在线观看| 欧美在线观看视频一区二区三区| 免费欧美视频| 欧美1区视频| 狠狠做深爱婷婷久久综合一区| 亚洲精品视频免费| 亚洲国产激情| 久久人人97超碰精品888| 久久久精品一区| 国产精品五区| 亚洲免费视频网站| 欧美一区二区三区另类| 国产精品欧美久久久久无广告| 亚洲日本aⅴ片在线观看香蕉| 亚洲大胆av| 欧美成人午夜激情在线| 国产精品久久久久久久久免费桃花 | 精品成人在线视频|