• <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>

            大龍的博客

            常用鏈接

            統(tǒng)計(jì)

            最新評(píng)論

            tcp三次握手和time wait --- 轉(zhuǎn)

            第一次握手:建立連接時(shí),客戶端發(fā)送syn包和一個(gè)隨機(jī)序列號(hào)seq=x到服務(wù)器,并進(jìn)入SYN_SEND狀態(tài),等待服務(wù)器進(jìn)行確認(rèn)。(syn,同 步序列編號(hào))。第二次握手,服務(wù)器收到syn包,必須確認(rèn)客戶的SYN,然后服務(wù)器發(fā)送一個(gè)ACK=1, SYN=1, seq=y的隨機(jī)數(shù)和ack=x+1的確認(rèn)數(shù)的包發(fā)送回去。第三次握手是客戶端收到服務(wù)器端的SYN+ACK包,然后向服務(wù)器端發(fā)送確認(rèn)包 ack=y+1, seq=x+1, ACK=1,客戶端和服務(wù)器端進(jìn)入ESTABLISHED狀態(tài),完成三次握手。具體圖示如下:

             

            這里多說(shuō)一點(diǎn),既然提到了連接時(shí)的三次握手,就順便把斷開(kāi)連接時(shí)的四次揮手也復(fù)習(xí)一下。首先客戶端主動(dòng)發(fā)送Fin=1,seq=u,它等于前面已傳 送過(guò)去的最后一個(gè)字節(jié)的序號(hào)加1.這是A進(jìn)入FIN-WAIT-1狀態(tài),等待B的確認(rèn)。B收到連接后立即發(fā)出確認(rèn),確認(rèn)號(hào)是ack=u+1,而這個(gè)報(bào)文段 自己的序號(hào)是v,等于B前面已傳送過(guò)的數(shù)據(jù)的最后一個(gè)字節(jié)的序號(hào)加1.然后B即進(jìn)入CLOSE-WAIT狀態(tài)。因而A到B的這個(gè)鏈接現(xiàn)在已經(jīng)斷開(kāi)了,這時(shí) 的TCP連接處于半關(guān)閉狀態(tài),即A已經(jīng)沒(méi)有數(shù)據(jù)需要發(fā)送了。但B若發(fā)送數(shù)據(jù),A還是要接受的。A收到來(lái)自B的確認(rèn)之后就進(jìn)入了FIN-WAIT-2狀態(tài)等 待B發(fā)出連接釋放報(bào)文段。若B已經(jīng)沒(méi)有要向A發(fā)送數(shù)據(jù),其應(yīng)用進(jìn)程就通知TCP釋放連接。這是B發(fā)出的連接釋放報(bào)文段必須使用FIN=1.現(xiàn)在假定B的序 號(hào)為w,B還必須重復(fù)上次已發(fā)送過(guò)的確認(rèn)號(hào)ack=u+1.這時(shí)B就進(jìn)入了LAST-ACK狀態(tài),等待A確認(rèn)。A在收到B的連接釋放之后必須對(duì)此發(fā)出確 認(rèn)。在確認(rèn)號(hào)中把ACK置1,確認(rèn)號(hào)ack=w+1,而自己的序號(hào)是seq=u+1。接著A進(jìn)入TIME-WAIT狀態(tài)。為了保證B可以收到確認(rèn)釋放報(bào)文 段。如上圖:

             


            是不是所有執(zhí)行主動(dòng)關(guān)閉的socket都會(huì)進(jìn)入TIME_WAIT狀態(tài)呢?
            有沒(méi)有什么情況使主動(dòng)關(guān)閉的socket直接進(jìn)入CLOSED狀態(tài)呢?

            主動(dòng)關(guān)閉的一方在發(fā)送最后一個(gè) ack 后
            就會(huì)進(jìn)入 TIME_WAIT 狀態(tài) 停留2MSL(max segment lifetime)時(shí)間
            這個(gè)是TCP/IP必不可少的,也就是“解決”不了的。

            也就是TCP/IP設(shè)計(jì)者本來(lái)是這么設(shè)計(jì)的
            主要有兩個(gè)原因
            1。防止上一次連接中的包,迷路后重新出現(xiàn),影響新連接
            (經(jīng)過(guò)2MSL,上一次連接中所有的重復(fù)包都會(huì)消失)
            2。可靠的關(guān)閉TCP連接
            在主動(dòng)關(guān)閉方發(fā)送的最后一個(gè) ack(fin) ,有可能丟失,這時(shí)被動(dòng)方會(huì)重新發(fā)
            fin, 如果這時(shí)主動(dòng)方處于 CLOSED 狀態(tài) ,就會(huì)響應(yīng) rst 而不是 ack。所以
            主動(dòng)方要處于 TIME_WAIT 狀態(tài),而不能是 CLOSED 。

            posted on 2013-02-17 14:59 大龍 閱讀(2500) 評(píng)論(0)  編輯 收藏 引用


            只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。
            網(wǎng)站導(dǎo)航: 博客園   IT新聞   BlogJava   博問(wèn)   Chat2DB   管理


            久久精品国产亚洲AV无码娇色| 久久久久亚洲精品天堂久久久久久| 国产精品嫩草影院久久| 国产∨亚洲V天堂无码久久久| 久久久无码精品亚洲日韩蜜臀浪潮| 久久精品国产一区二区| 2021国产成人精品久久| 91久久精品视频| 99久久精品无码一区二区毛片| 久久se精品一区二区| 99久久超碰中文字幕伊人| 狠狠色丁香久久婷婷综合五月| 久久狠狠高潮亚洲精品| 高清免费久久午夜精品| 久久97久久97精品免视看秋霞| 国产高清美女一级a毛片久久w| 国产精品日韩欧美久久综合| 观看 国产综合久久久久鬼色 欧美 亚洲 一区二区| 国产成人无码久久久精品一| 亚洲狠狠综合久久| 久久久精品久久久久特色影视| 久久久亚洲精品蜜桃臀| 尹人香蕉久久99天天拍| 日日躁夜夜躁狠狠久久AV| 国产91色综合久久免费| 久久久久国产亚洲AV麻豆| 亚洲综合精品香蕉久久网| 久久99国产亚洲高清观看首页| 国产精品一区二区久久精品无码| 人妻无码久久精品| 丁香五月网久久综合| 久久亚洲中文字幕精品一区四| 精品久久久久久中文字幕大豆网| AV无码久久久久不卡网站下载| 久久国产V一级毛多内射| 亚洲精品无码久久久影院相关影片| 久久96国产精品久久久| 久久人人爽人人爽人人片AV不| 久久美女人爽女人爽| 久久精品国产欧美日韩99热| 国产午夜久久影院|