摘要:連接管理概述是面向連接的協(xié)議。要使每一方能夠確知對(duì)方的存在。的應(yīng)用進(jìn)程先向其發(fā)出連接釋放報(bào)文段,并停止發(fā)送數(shù)據(jù),主動(dòng)關(guān)閉連接。將連接釋放報(bào)文的終止控制位設(shè)置為,序列號(hào)為。收到的連接釋放報(bào)文之后,發(fā)送確認(rèn)。
TCP連接管理概述
TCP是面向連接的協(xié)議。運(yùn)輸連接是用來傳送TCP報(bào)文的。TCP的連接和釋放是每一次面向連接的通信中必不可少的過程。因此,運(yùn)輸連接就有三個(gè)階段,即:連接建立,數(shù)據(jù)傳輸和連接釋放。運(yùn)輸連接的管理就是使運(yùn)輸連接的建立和釋放都可以正常的進(jìn)行。
在TCP連接的建立過程中要解決一下三個(gè)問題。
1.要使每一方能夠確知對(duì)方的存在。
2.要允許雙方協(xié)商一些參數(shù)(如窗口最大值、是否使用窗口擴(kuò)大選項(xiàng)和時(shí)間戳選項(xiàng)以及服務(wù)質(zhì)量等)。
3.能夠?qū)\(yùn)輸實(shí)體資源(如緩存大小、連接中的項(xiàng)目等)進(jìn)行分配。
TCP連接的建立采用客戶服務(wù)器方式。主動(dòng)發(fā)起建立連接的應(yīng)用叫做客戶(Client),而被動(dòng)等待連接建立的應(yīng)用進(jìn)程叫做服務(wù)器(server)。
TCP連接的建立下圖表示的是TCP連接建立的過程。主機(jī)A運(yùn)行的是TCP客戶端程序,而B運(yùn)行TCP服務(wù)器端程序。最初的時(shí)候,雙方的TCP進(jìn)程都處于關(guān)閉(CLOSED)狀態(tài)。然后A主動(dòng)打開連接,而B被動(dòng)打開連接。
1.A發(fā)送一個(gè)SYN=1的TCP報(bào)文,序列號(hào)seq是x。A的狀態(tài)由CLOSED進(jìn)入到SYN-SENT。
2.B收到之后發(fā)送SYN=1,ACK=1的TCP報(bào)文,同樣為自己選一個(gè)序列號(hào)seq=y,確認(rèn)號(hào)ack=x+1。B的狀態(tài)由LISTEN進(jìn)入到SYN-RCVD。
3.A收到B的確認(rèn)之后,需要給B確認(rèn)。ACK=1,seq=x+1,確認(rèn)號(hào)ack是y+1。A的狀態(tài)由SYN-SENT進(jìn)入到ESTABLISH,B在收到A的確認(rèn)之后也由SYN-RCVD進(jìn)入到ESTABLISH。
以上的過程就是3次握手。這里一個(gè)常見的問題就是為什么在A發(fā)送建立連接的請(qǐng)求后還需要發(fā)送一個(gè)確認(rèn)報(bào)文?這是因?yàn)橹饕菫榱吮苊庖呀?jīng)失效的連接請(qǐng)求報(bào)文段突然又傳到了B而產(chǎn)生錯(cuò)誤。失效的報(bào)文主要是在出現(xiàn)在網(wǎng)絡(luò)不是很通暢的時(shí)候會(huì)產(chǎn)生,而三次握手機(jī)制避免了這種情況會(huì)產(chǎn)生的問題。
TCP連接的釋放在傳輸結(jié)束之后,通信雙方都可以釋放連接。A的應(yīng)用進(jìn)程先向其TCP發(fā)出連接釋放報(bào)文段,并停止發(fā)送數(shù)據(jù),主動(dòng)關(guān)閉TCP連接。
1.A將連接釋放報(bào)文的終止控制位FIN設(shè)置為1,seq序列號(hào)為u。此時(shí)A的狀態(tài)由ESTABLISH進(jìn)入到FIN-WAIT-1。
2.B在收到這個(gè)報(bào)文之后,隨即發(fā)出確認(rèn)。ACK=1 seq=v ack=u+1。此時(shí)B由ESTABLISH進(jìn)入到CLOSE-WAIT狀態(tài)。A收到B的確認(rèn)之后進(jìn)入到FIN-WAIT-2。此時(shí)B的TCP服務(wù)器進(jìn)程會(huì)通知高層應(yīng)用進(jìn)程。這個(gè)時(shí)候A到B的傳輸就釋放了,TCP的連接處于半關(guān)閉狀態(tài)。A沒有數(shù)據(jù)發(fā)送到B,若B還有數(shù)據(jù),可以發(fā)送到A。
3.B發(fā)送FIN=1 ACK=1 seq=w ack=u+1(必須重復(fù)上次的確認(rèn)號(hào))。B由CLOSE-WAIT進(jìn)入到LAST-ACK狀態(tài)。
4.A收到B的連接釋放報(bào)文之后,發(fā)送確認(rèn)ACK=1 seq=u+1 ack=w+1。此時(shí)A由FIN-WAIT-2進(jìn)入到TIME-WAIT。B在收到A的確認(rèn)之后由LAST-ACK進(jìn)入CLOSED狀態(tài)。A在2MSL(大約是4分鐘)之后進(jìn)入到CLOSED狀態(tài)。
這里一個(gè)常見的問題就是A為什么需要2MSL的等待時(shí)間。第一是為了保證A最后發(fā)送的ACK報(bào)文到達(dá)B。第二是為了當(dāng)時(shí)出現(xiàn)上文提到的失效的報(bào)文段。因?yàn)?MSL會(huì)使本次連接產(chǎn)生的報(bào)文段都從網(wǎng)絡(luò)中消失。
全文完。
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/29883.html
摘要:正文討論深淺拷貝,首先要從的基本數(shù)據(jù)類型說起根據(jù)中的變量類型傳遞方式,分為值類型和引用類型,值類型變量包括。當(dāng)你拷貝的對(duì)象有多級(jí)的時(shí)候,就是深拷貝。數(shù)據(jù)不存在則對(duì)其拷貝。 前言: 本文主要閱讀對(duì)象:對(duì)深淺拷貝印象模糊對(duì)初級(jí)前端,想對(duì)js深淺拷貝聊一聊的中級(jí)前端。 如果是對(duì)這些有完整對(duì)認(rèn)知體系和解決方法的大佬,可以選擇略過。 正文: 討論深淺拷貝,首先要從js的基本數(shù)據(jù)類型說起: 根據(jù) J...
閱讀 3354·2023-04-25 16:25
閱讀 3902·2021-11-15 18:01
閱讀 1642·2021-09-10 11:21
閱讀 3073·2021-08-02 16:53
閱讀 3114·2019-08-30 15:55
閱讀 2514·2019-08-29 16:24
閱讀 2128·2019-08-29 13:14
閱讀 1071·2019-08-29 13:00