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

牽著老婆滿街逛

嚴(yán)以律己,寬以待人. 三思而后行.
GMail/GTalk: yanglinbo#google.com;
MSN/Email: tx7do#yahoo.com.cn;
QQ: 3 0 3 3 9 6 9 2 0 .

libjingle源碼解析(4)-【PseudoTcp】建立UDP之上的TCP(2):對(duì)交互數(shù)據(jù)流的處理

轉(zhuǎn)載自:http://blog.csdn.net/leehark/article/details/7661271

對(duì)交互數(shù)據(jù)流的處理

TCP包含兩類數(shù)據(jù)流,交互數(shù)據(jù)流和成塊數(shù)據(jù)流。交互數(shù)據(jù)流的特點(diǎn)是每個(gè)報(bào)文數(shù)據(jù)字節(jié)數(shù)比較小,大部分是10字節(jié)一下,而成塊數(shù)據(jù)流的特點(diǎn)是大部分報(bào)文是滿長(zhǎng)度的,一般能達(dá)到MSS

本文先介紹一些TCPPTCP對(duì)交互數(shù)據(jù)流的處理。

交互式輸入

    Rlogin是典型的交互數(shù)據(jù)流應(yīng)用,每一按鍵都會(huì)產(chǎn)生數(shù)據(jù)分組,使客戶端傳輸一個(gè)報(bào)文,接連總共產(chǎn)生4個(gè)報(bào)文:

    a.C傳輸交互按鍵數(shù)據(jù)

    b.S確認(rèn)C的數(shù)據(jù)

    c.S回顯C的按鍵

    d.C確認(rèn)S的回顯

    上面的報(bào)文b,c可能會(huì)同時(shí)包含在一個(gè)報(bào)文段。而對(duì)于TCP報(bào)文-40個(gè)字節(jié)的頭部的協(xié)議報(bào)文來說每次只傳輸一個(gè)字節(jié)是個(gè)極大的浪費(fèi),此外Rlogin這類應(yīng)用會(huì)在短時(shí)間內(nèi)按N個(gè)字符,按如上的方式,至少要傳輸3*N個(gè)報(bào)文。

經(jīng)受時(shí)延的確認(rèn)

    經(jīng)受時(shí)延的確認(rèn)考慮了時(shí)間有關(guān)的細(xì)微之處,對(duì)于交互類應(yīng)用,短時(shí)間內(nèi)會(huì)產(chǎn)生多個(gè)報(bào)文。對(duì)于TCP,當(dāng)接收數(shù)據(jù)時(shí),并不立即發(fā)送確認(rèn),而先緩存,延遲發(fā)送,以便在短時(shí)間如果有該方向的數(shù)據(jù)需要發(fā)送,則一同發(fā)送,這樣能減少ACK報(bào)文的個(gè)數(shù),提高報(bào)文的利用率。TCP通常等待200ms后發(fā)送ACK

    對(duì)于PTCP來說,也支持延時(shí)確認(rèn),默認(rèn)延時(shí)時(shí)長(zhǎng)為100ms,可以通過選項(xiàng)OPT_ACKDELAY更改延時(shí)時(shí)間。不另外,如果出現(xiàn)連續(xù)兩個(gè)不含數(shù)據(jù)的ACK需要發(fā)送,則不會(huì)等到100ms,直接會(huì)發(fā)送ACK報(bào)文。PTCP發(fā)送ACK的時(shí)機(jī)如下:

    A. 和SEND數(shù)據(jù)一起發(fā)送

    B. 等到超時(shí)(100ms后沒有數(shù)據(jù)時(shí))時(shí)發(fā)送

    C. 出錯(cuò)時(shí)發(fā)送(如發(fā)現(xiàn)對(duì)方傳來的數(shù)據(jù)和預(yù)期的不一致,或者ACK被丟失)

    雖然PTCP是等到100ms后發(fā)送ACK,但沒有提供任何定時(shí)器,只提供了下次需要被提醒的時(shí)間(通過方法GetNextClock),然后由業(yè)務(wù)層來實(shí)現(xiàn)定時(shí)器并通知到時(shí)(通過方法NotifyClock)。這樣,業(yè)務(wù)層就會(huì)有靈活的方式設(shè)置定時(shí)器,比如通過消息循環(huán),等待事件,完成端口等等。

Nagle算法

    Nagle算法是為了避免在廣域網(wǎng)上出現(xiàn)大量的TCP小分組報(bào)文段。該算法要求一個(gè)TCP連接上最多只有一個(gè)未被確認(rèn)的小分組。當(dāng)已經(jīng)發(fā)送的一個(gè)分組沒有被確認(rèn)前,該算法積累所有需要發(fā)送的數(shù)據(jù),等到未被確認(rèn)的分組確認(rèn)了,一同發(fā)送,這樣在短時(shí)間內(nèi)出現(xiàn)的小分組合并成一個(gè)報(bào)文發(fā)送,提高了報(bào)文的利用率。這個(gè)算法是自適應(yīng)的,得到確認(rèn)越快,則發(fā)送頻率越高。偽代碼如下:

    if there is new data to send

      if the window size >= MSS and available data is >= MSS

        send complete MSS segment now

      else

        if there is unconfirmed data still in the pipe

          enqueue data in the buffer until an acknowledge is received

        else

          send data immediately

        end if

      end if

    end if

    PTCP也支持Nagle算法,可以通過選項(xiàng)OPT_NODELAY開啟或者關(guān)閉。Nagle算法的實(shí)現(xiàn)比較簡(jiǎn)單,當(dāng)嘗試發(fā)送數(shù)據(jù)時(shí),發(fā)現(xiàn)如果有未確認(rèn)的數(shù)據(jù)且等待發(fā)送的數(shù)據(jù)長(zhǎng)度小于MSS,則延遲發(fā)送,如下:

    

  1. void PseudoTcp::attemptSend(SendFlags sflags) {  
  2.     ......  
  3.         // Nagle's algorithm.  
  4.         // If there is data already in-flight, and we haven't a full segment of  
  5.         // data ready to send then hold off until we get more to send, or the  
  6.         // in-flight data is acknowledged.  
  7.         if (m_use_nagling && (m_snd_nxt > m_snd_una) && (nAvailable < m_mss))  {  
  8.           return;  
  9.         }  
  10.     ......  
  11.     }  

窗口大小通告

    TCPPTCP都通過頭部的window字段通告接收緩沖區(qū)的可用窗口大小。當(dāng)客戶端收到服務(wù)器的數(shù)據(jù),并有等待發(fā)送的數(shù)據(jù)時(shí)(開啟Nagle算法時(shí)會(huì)經(jīng)常出現(xiàn)此情況),通告給服務(wù)器的窗口大小總是小于接收緩沖區(qū)的大小,是因?yàn)椋瑧?yīng)用層還沒有拿取剛從服務(wù)獲取的數(shù)據(jù)之前,就會(huì)嘗試發(fā)送被緩沖的數(shù)據(jù)。

    PTCP的實(shí)現(xiàn)如下:

    當(dāng)PTCP接收對(duì)方發(fā)送的數(shù)據(jù)時(shí)會(huì)調(diào)用NofifyPacket->parse->process,在Process先調(diào)用attemptSend發(fā)送緩沖的數(shù)據(jù),然后通知應(yīng)用層有可讀數(shù)據(jù)。

  1. bool PseudoTcp::process(Segment& seg) {  
  2. ......  
  3.         attemptSend(sflags);  
  4.          // If we have new data, notify the user  
  5.          if (bNewData && m_bReadEnable) {  
  6.               m_bReadEnable = false;  
  7.               if (m_notify) {  
  8.                 m_notify->OnTcpReadable(this);  
  9.               }  
  10.               //notify(evRead);  
  11.            }  
  12.          return true;  
  13. }  

posted on 2013-09-01 14:06 楊粼波 閱讀(410) 評(píng)論(0)  編輯 收藏 引用


只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。
網(wǎng)站導(dǎo)航: 博客園   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成人动漫| 亚洲精品在线二区| 在线播放日韩欧美| 亚洲国产99精品国自产| 亚洲高清在线精品| 91久久国产综合久久91精品网站| 亚洲电影观看| 在线亚洲美日韩| 久久超碰97中文字幕| 久久久久一区二区三区| 欧美寡妇偷汉性猛交| 夜夜嗨av一区二区三区免费区| 在线视频精品| 久久精品国产2020观看福利| 牛牛国产精品| 欧美无乱码久久久免费午夜一区| 国产日本欧洲亚洲| 亚洲精品影视在线观看| 亚洲欧美国产另类| 欧美1区2区3区| 亚洲美女视频在线观看| 午夜宅男久久久| 欧美日韩精品一区二区三区四区 | 亚洲欧美另类在线观看| 欧美综合77777色婷婷| 欧美精品日韩一区| 国产伊人精品| 亚洲香蕉在线观看| 欧美成人精品在线观看| 99成人精品| 免费的成人av| 国产亚洲综合在线| 亚洲制服欧美中文字幕中文字幕| 蜜桃精品久久久久久久免费影院| 一本久久a久久免费精品不卡| 久久手机精品视频| 国产美女一区| 亚洲网站啪啪| 欧美第一黄色网| 欧美一区2区视频在线观看| 欧美日韩亚洲不卡| 亚洲精品久久久一区二区三区| 久久久久99| 亚洲欧美成人一区二区在线电影| 欧美精品一区二区三区蜜桃 | 欧美体内she精视频| 一区免费观看视频| 一本色道久久综合亚洲精品高清| 欧美一区不卡| 亚洲精品久久久久中文字幕欢迎你| 亚洲欧美国产高清va在线播| 男同欧美伦乱| 激情综合色综合久久综合| 亚洲综合电影一区二区三区| 亚洲精品欧美专区| 欧美福利一区| 91久久亚洲| 欧美国产日韩视频| 久久亚洲免费| 在线观看欧美日韩| 欧美福利专区| 免费欧美日韩| 精品99一区二区| 久久久久综合网| 久久精品亚洲精品| 在线日韩成人| 欧美激情精品久久久久久| 免费成人美女女| 亚洲日韩视频| av不卡在线看| 国产精品视频yy9099| 欧美一级专区| 久久精品成人欧美大片古装| 在线观看国产成人av片| 亚洲大胆av| 亚洲欧洲久久| 久久综合一区二区| 久久久亚洲高清| 亚洲人成网站影音先锋播放| 日韩一二三在线视频播| 国产精品女主播| 久久在线视频| 欧美成人激情视频免费观看| 99在线|亚洲一区二区| 一区二区三区国产精品| 国产精品一区二区你懂得| 老司机精品视频一区二区三区| 欧美成年人在线观看| 亚洲欧美在线网| 久久婷婷综合激情| 亚洲色图自拍| 久久福利毛片| 99热在这里有精品免费| 亚洲一区国产一区| 1769国内精品视频在线播放| 一本高清dvd不卡在线观看| 韩国精品在线观看| 在线视频你懂得一区二区三区| 国产在线播精品第三| 91久久精品日日躁夜夜躁欧美| 欧美午夜宅男影院| 欧美久久综合| 久久av老司机精品网站导航| 久久精品国产第一区二区三区| 亚洲激情视频在线观看| 亚洲无人区一区| 亚洲国产综合视频在线观看| 亚洲一区国产视频| 亚洲精品一区在线观看| 久久久www| 久久精品亚洲乱码伦伦中文 | 性18欧美另类| 欧美国产专区| 鲁大师影院一区二区三区| 国产精品二区在线| 亚洲国产婷婷香蕉久久久久久99| 国产午夜精品一区二区三区欧美 | 欧美一区二区视频在线| 免费欧美视频| 久久久噜久噜久久综合| 国产精品电影观看| 亚洲韩国青草视频| 亚洲精品一区二区三区福利| 久久久噜久噜久久综合| 久久大综合网| 国产日韩欧美精品在线| 亚洲综合国产精品| 性欧美激情精品| 欧美日韩综合视频| 亚洲老司机av| 在线性视频日韩欧美| 欧美日韩国产综合网 | 欧美在线高清视频| 欧美专区中文字幕| 国产视频精品网| 羞羞视频在线观看欧美| 欧美一区二区三区在线观看| 国产欧美日韩在线观看| 性色av香蕉一区二区| 久久久久国内| 亚洲成人在线免费| 久久久欧美精品sm网站| 欧美成人精品激情在线观看| 亚洲电影在线| 欧美激情一区二区三区蜜桃视频 | avtt综合网| 欧美精品videossex性护士| 亚洲国产精品国自产拍av秋霞| 亚洲国产欧美日韩| 欧美日本韩国一区二区三区| 一区二区av在线| 欧美一二三视频| 国内成+人亚洲| 嫩草伊人久久精品少妇av杨幂| 亚洲高清免费| 亚洲一区二区综合| 韩日视频一区| 欧美精品一区二区三区在线播放 | 久久精品2019中文字幕| 久久精品人人做人人综合 | 亚洲黄色成人网| 欧美日韩国产一区精品一区 | 亚洲精品影视| 午夜精品视频| 极品日韩久久| 欧美精品国产精品| 亚洲欧美日韩国产综合| 浪潮色综合久久天堂| 亚洲精选一区二区| 国产精品一区二区你懂得| 久久综合999| 亚洲香蕉在线观看| 亚洲国产精品一区二区久| 午夜久久电影网| 亚洲成人在线视频播放| 国产精品久久中文| 欧美承认网站| 久久福利视频导航| 亚洲私人影院| 亚洲国产精品传媒在线观看| 久久精品99国产精品酒店日本| 亚洲激情一区| 国产综合网站| 国产精品国产| 欧美精品三级| 久久综合一区二区三区| 亚洲一区二区三区精品在线观看| 亚洲国产精品123| 久热这里只精品99re8久| 亚洲一级网站| 一本色道久久精品| 亚洲国产成人高清精品| 国产综合自拍| 国产精品视频99| 欧美系列精品| 欧美日韩一视频区二区| 欧美激情视频给我| 欧美a一区二区| 久久免费99精品久久久久久|