九色国产,午夜在线视频,新黄色网址,九九色综合,天天做夜夜做久久做狠狠,天天躁夜夜躁狠狠躁2021a,久久不卡一区二区三区

打開APP
userphoto
未登錄

開通VIP,暢享免費(fèi)電子書等14項(xiàng)超值服

開通VIP
TCP連接建立和終止小結(jié)

TCP連接建立(三次握手)

如圖:

  1. 請(qǐng)求端發(fā)送一個(gè)SYN到服務(wù)器的相應(yīng)端口,以及初始序號(hào)ISN
  2. 服務(wù)器發(fā)送包含服務(wù)器的初始序號(hào)的SYN作為應(yīng)答,同時(shí)確認(rèn)序號(hào)設(shè)置為客戶的ISN+1
  3. 客戶將確認(rèn)序號(hào)設(shè)置為服務(wù)器的ISN+1

最大報(bào)文段長(zhǎng)度(MSS)

  • 連接建立時(shí),連接的雙方都要通告各自的MSS。當(dāng)建立一個(gè)連接時(shí),每一方都有通告它期望接收的MSS選項(xiàng)。如果一方不接收來自另一方的MSS值,則MSS就定為576字節(jié)。對(duì)于一個(gè)以太網(wǎng),MSS可達(dá)1460字節(jié)(1460 + IP首部20 + TCP首部20 = 1500)。如果目的IP地址是“非本地的”, MSS通常的默認(rèn)值是536。
  • MSS讓主機(jī)限制另一端發(fā)送數(shù)據(jù)報(bào)的長(zhǎng)度,加上主機(jī)也能控制它發(fā)送數(shù)據(jù)報(bào)的長(zhǎng)度,這將使以較小MTU連接到一個(gè)網(wǎng)絡(luò)的主機(jī)避免分段。
  • 如果兩端的主機(jī)都連接到以太網(wǎng)上,都采用536的MSS, 但中間網(wǎng)絡(luò)采用296的MTU,也將會(huì)出現(xiàn)分段, 使用路徑上的MTU發(fā)現(xiàn)機(jī)制是關(guān)于這個(gè)問題的唯一方法。

同時(shí)打開

一般情況下,連接建立時(shí)是一方發(fā)送SYN,另一方發(fā)送SYN+ACK, 但極個(gè)別情況下,有可能兩個(gè)應(yīng)用程序幾乎同時(shí)向?qū)Ψ桨l(fā)送SYN,這就叫做同時(shí)打開。同時(shí)打開需要雙方都使用彼此熟知的端口,而不是一般情況下只需要客戶使用服務(wù)器的知名端口。

TCP的同時(shí)打開的狀態(tài)變遷圖如下:

兩端幾乎同時(shí)發(fā)送SYN,并進(jìn)入SYN_SENT狀態(tài)。當(dāng)每一端收到SYN時(shí),狀態(tài)變?yōu)镾YN_RCVD,同時(shí)它們都再發(fā)SYN并對(duì)收到的SYN進(jìn)行確認(rèn)。當(dāng)雙方都收到SYN及相應(yīng)的ACK時(shí),狀態(tài)都變遷為ESTABLISHED。

呼入連接請(qǐng)求隊(duì)列

有可能出現(xiàn)當(dāng)服務(wù)器在創(chuàng)建一個(gè)新的進(jìn)程時(shí),或操作系統(tǒng)正忙于處理優(yōu)先級(jí)更高的進(jìn)程時(shí),到達(dá)多個(gè)連接請(qǐng)求,當(dāng)服務(wù)器處于忙時(shí),TCP是如何處理這些呼入的連接請(qǐng)求? 在伯克利的TCP實(shí)現(xiàn)中采用以下規(guī)則:

正等待連接請(qǐng)求的一端有一個(gè)固定長(zhǎng)度的連接隊(duì)列,該隊(duì)列中的連接已被TCP接受(即三次握手已完成),但還沒有被應(yīng)用層所接受。注意區(qū)分TCP接受一個(gè)連接是將其放入隊(duì)列,而應(yīng)用層是將其從該隊(duì)列中移出。 應(yīng)用層將指明該隊(duì)列的最大長(zhǎng)度,這個(gè)值稱為積壓值。它的取值范圍是0~5之間的整數(shù)。 當(dāng)一個(gè)連接請(qǐng)求到達(dá)時(shí),TCP使用一個(gè)算法,來確定是否接收這個(gè)連接。 如果對(duì)于新的連接請(qǐng)求,該TCP監(jiān)聽的端點(diǎn)的連接隊(duì)列中還有空間,TCP模塊將對(duì)這個(gè)SYN進(jìn)行確認(rèn)并完成連接的建立。但應(yīng)用層只有在三次握手中的第三個(gè)報(bào)文段才能知道這個(gè)新連接。另外,當(dāng)客戶進(jìn)程的主動(dòng)打開成功但服務(wù)器的應(yīng)用層還不知道這個(gè)新的連接時(shí),它可能會(huì)認(rèn)為服務(wù)器進(jìn)程已經(jīng)準(zhǔn)備好接收數(shù)據(jù)了(如果發(fā)生這種情況,服務(wù)器的TCP僅將接收的數(shù)據(jù)放入緩沖隊(duì)列)。

如果對(duì)于新的連接請(qǐng)求,連接隊(duì)列已沒有空間,TCP將不理會(huì)收到的SYN,也不發(fā)回任何報(bào)文段(即不發(fā)回RST),如果應(yīng)用層不能及時(shí)接受已被TCP接受的連接,這些連接可能占滿整個(gè)連接隊(duì)列,客戶的主動(dòng)打開將最終超時(shí)。 當(dāng)隊(duì)列已滿時(shí),TCP將不理會(huì)收到的SYN,也不發(fā)回任何報(bào)文段(即不發(fā)回RST),因?yàn)檫@是一個(gè)軟錯(cuò)誤,而不是一個(gè)硬錯(cuò)誤。通常隊(duì)列已滿是由于應(yīng)用程序或操作系統(tǒng)忙造成的,這樣可防止應(yīng)用程序?qū)魅氲倪B接進(jìn)行服務(wù)。這個(gè)條件在很短的時(shí)間內(nèi)可以改變。但如果服務(wù)器的TCP以系統(tǒng)復(fù)位作為響應(yīng),客戶進(jìn)程的主動(dòng)打開將被廢棄。由于不應(yīng)答SYN,服務(wù)器程序迫使客戶TCP隨后重傳SYN,以等待連接隊(duì)列有空間接受新的連接。

TCP連接終止(四次握手)

既然一個(gè)TCP連接是全雙工的(即數(shù)據(jù)在兩個(gè)方向上都能傳遞),因此每個(gè)方向都必須單獨(dú)進(jìn)行關(guān)閉。這原則就是當(dāng)一方完成它的數(shù)據(jù)發(fā)送任務(wù)后就能發(fā)送一個(gè)FIN來終止這個(gè)方向上的連接。當(dāng)一端收到一個(gè)FIN,它必須通知應(yīng)用層另一端已經(jīng)終止了那個(gè)方向的數(shù)據(jù)傳送。

如下圖:

半關(guān)閉

TCP提供了連接的一端在結(jié)束它的發(fā)送后還能接收來自另一端數(shù)據(jù)的能力。這就是所謂的半關(guān)閉。

如下圖:

2MSL等待狀態(tài)

TIME_WAIT狀態(tài)也稱為2MSL等待狀態(tài)。每個(gè)具體TCP實(shí)現(xiàn)必須選擇一個(gè)報(bào)文段最大生存時(shí)間MSL。它是任何報(bào)文段被丟棄前在網(wǎng)絡(luò)內(nèi)的最長(zhǎng)時(shí)間。

為什么要有TIME_WAIT狀態(tài)?

  • 因?yàn)榻K止連接的一方發(fā)送的最后的一個(gè)ACK可能會(huì)丟失,另一端超時(shí)并重發(fā)最后的FIN, 這樣終止連接的一方可以再次發(fā)送最后的ACK

為什么是2MSL?

  • 最后一個(gè)ACK存在的時(shí)間最多為MSL,如果ACK丟失,然后接收端超時(shí)并重發(fā)FIN,這個(gè)FIN最多存在時(shí)間又是MSL,而TIME_WAIT狀態(tài)需要等待這個(gè)連接中的所有分組都消失,所以需要等待2ML
  • 2MSL時(shí)間后這個(gè)連接的所有分組都會(huì)消失,不會(huì)干擾到接下來相同socket對(duì)建立的連接。

TCP在2MSL等待期間,定義這個(gè)連接的插口(客戶的IP地址和端口號(hào),服務(wù)器的IP地址和端口號(hào))不能再被使用,這個(gè)連接只能在2MSL結(jié)束后才能再被使用。如果我們終止一個(gè)已經(jīng)建立連接的服務(wù)器程序,并試圖立即重啟這個(gè)服務(wù)器程序,服務(wù)器程序不能把它的這個(gè)熟知端口賦值給它的端點(diǎn),因?yàn)槟莻€(gè)端口是出于2MSL連接的一部分。 我們可以以-A標(biāo)記來設(shè)置SO_REUSEADDR,這樣可以使服務(wù)器程序使用之前的端口,但它不能主動(dòng)打開之前的相同端口的客戶程序,應(yīng)為那個(gè)連接的插口對(duì)仍處于2MSL等待狀態(tài)。但我們?nèi)绻屇莻€(gè)客戶程序來主動(dòng)打開這個(gè)服務(wù)器程序是會(huì)成功的,因?yàn)榇蠖鄶?shù)的伯克利實(shí)現(xiàn)支持一個(gè)新的連接請(qǐng)求到達(dá)仍處于TIME_WAIT狀態(tài)的連接。

復(fù)位報(bào)文段

一般說來,無論何時(shí)一個(gè)報(bào)文段發(fā)往指定的連接出現(xiàn)錯(cuò)誤,TCP都會(huì)發(fā)出一個(gè)復(fù)位報(bào)文段。 產(chǎn)生復(fù)位的幾種常見情況是:

  • 到不存在的端口的連接請(qǐng)求;
  • 異常終止一個(gè)連接;
  • 檢測(cè)半打開連接。 如果一端已經(jīng)關(guān)閉或異常終止連接而另一方卻還不知道,我們將這樣的連接成為半打開連接。

    同時(shí)關(guān)閉

    兩邊都執(zhí)行主動(dòng)關(guān)閉也是有可能的,TCP協(xié)議也允許這樣的同時(shí)關(guān)閉。 如下圖:

部分問題

  1. 為什么服務(wù)器對(duì)客戶FIN的ACK不和自己的FIN合并(即終止連接不是三次握手)?
    因?yàn)榘l(fā)送客戶FIN的ACK通常是收到FIN就立刻發(fā)送,但這是服務(wù)器不一定要關(guān)閉自己這端的連接,還可能需要發(fā)送數(shù)據(jù)(半關(guān)閉),所以不一定要發(fā)送FIN。
  2. 分析處于TIME_WAIT狀態(tài)的主機(jī)收到使其進(jìn)入此狀態(tài)的重復(fù)的FIN時(shí)所發(fā)生的情況
    發(fā)送ACK,重啟定時(shí)器。

本站僅提供存儲(chǔ)服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊舉報(bào)。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
《TCP/IP詳解卷1:協(xié)議》第17、18章 TCP:傳輸控制協(xié)議(2)-讀書筆記
面試必備!TCP協(xié)議經(jīng)典十五連問!
TCP協(xié)議解析
TCP狀態(tài)知識(shí)總結(jié)(圖解)
tcpip詳解筆記(15) TCP協(xié)議連接過程
一文秒懂 TCP/IP實(shí)際五層結(jié)構(gòu)(下篇)
更多類似文章 >>
生活服務(wù)
熱點(diǎn)新聞
分享 收藏 導(dǎo)長(zhǎng)圖 關(guān)注 下載文章
綁定賬號(hào)成功
后續(xù)可登錄賬號(hào)暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服