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

打開APP
userphoto
未登錄

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

開通VIP
一組圖帶你讀懂TCP連接的終止——四次揮手的原理~

TCP是一個(gè)面向連接的協(xié)議,無(wú)論哪一方向另一方發(fā)送數(shù)據(jù)之前,都必須先在雙方之間家里一條連接。

而建立一個(gè)TCP連接需要三次握手,這個(gè)我在昨天的文章中已詳細(xì)說(shuō)明,這里就不提了。

還沒(méi)看過(guò)的同學(xué)看這里??

為什么TCP 要采用「3次握手」建立連接?1個(gè)例子教會(huì)你~


今天講講TCP連接的終止,也就是我們平時(shí)說(shuō)的四次揮手。

這是由于TCP的半關(guān)閉 ( half-close)造成的。 

因?yàn)橐粋€(gè)TCP連接時(shí)全雙工(即數(shù)據(jù)在兩個(gè)方向上能同時(shí)傳遞),因此每個(gè)方面必須單獨(dú)地進(jìn)行關(guān)閉。

需要注意的是收到一個(gè)FIN 只意味著在這一方向上沒(méi)有數(shù)據(jù)流動(dòng),但一個(gè)TCP連接在收到一個(gè)FIN之后仍能發(fā)送數(shù)據(jù)。

TCP 連接終止過(guò)程,如圖1所示 :

1、TCP 客戶端發(fā)送一個(gè)FIN ,用來(lái)關(guān)閉從客戶端到服務(wù)器的數(shù)據(jù)傳送;

2、當(dāng)服務(wù)器收到這個(gè)FIN ,它發(fā)回一個(gè)ACK ,確認(rèn)序號(hào)為收到的序號(hào)加1 。一個(gè)FIN 也將占用一個(gè)序號(hào);

3、服務(wù)器程序首先傳送一個(gè)文件結(jié)束符,然后服務(wù)器關(guān)閉它的連接,發(fā)送一個(gè)FIN  到客戶端;

4、客戶端回復(fù)一個(gè)確認(rèn)。

最大報(bào)文段長(zhǎng)度(MSS)表示TCP 傳往另一端的最大塊數(shù)據(jù)塊的長(zhǎng)度。當(dāng)建立一個(gè)TCP連接時(shí),每一方都有用于通告它期望接收的MSS選項(xiàng) ( MSS選項(xiàng)只能出現(xiàn)在SYN報(bào)文段中) 。

如果一方?jīng)]有接收到來(lái)自另一方的MSS值,則 MSS就定為默認(rèn)值536字節(jié)(這個(gè)默認(rèn)值允許20 字節(jié)的IP 首部和20字節(jié)的TCP首部以適合576 字節(jié)的IP數(shù)據(jù)報(bào))。

MSS讓主機(jī)限制另一端發(fā)送數(shù)據(jù)報(bào)的長(zhǎng)度,加上主機(jī)也能控制它發(fā)送數(shù)據(jù)報(bào)的長(zhǎng)度,這將使以較小MTU接收到一個(gè)網(wǎng)絡(luò)上的主機(jī)避免分段。

半連接:TCP 連接的一端在結(jié)束它的發(fā)送之后還能接收到來(lái)自另一端數(shù)據(jù)的能力。 

TCP 的狀態(tài)變遷圖(如圖所示): 

ESTABLISHED狀態(tài)是連接雙方能夠進(jìn)行雙向數(shù)據(jù)傳送的狀態(tài)。

當(dāng) SYN_RCVD(圖中SYN  收到)狀態(tài)是從LISTEN狀態(tài)(正常情況)進(jìn)入,而不是從SYN_SENT狀態(tài)(同時(shí)打開)進(jìn)入時(shí),從SYN_RCVD回到  LISTEN狀態(tài)變遷才是有效的。

這意味著如果執(zhí)行被動(dòng)打開(進(jìn)入LISTEN),收到一個(gè)SYN,發(fā)送一個(gè)帶ACK的 SYN(進(jìn)入SYN_RCVD),然后收到一個(gè)RST,而不是一個(gè)ACK,便又回到LISTEN狀態(tài)并等待另一個(gè)連接請(qǐng)求的到來(lái)。

TIME_WAIT狀態(tài)也成為2MSL等待狀態(tài)。

當(dāng)  TCP 執(zhí)行一個(gè)主動(dòng)關(guān)閉,并發(fā)回最后一個(gè)ACK ,該連接必須在TIME_WAIT狀態(tài)停留 的時(shí)間為2倍的MSL 。

這樣可讓TCP再次發(fā)送最后的ACK以防這個(gè)ACK丟失(另一端超時(shí)并重發(fā)組后的FIN )。 

一個(gè) socket對(duì)(即包含本地IP 地址、本地端口、遠(yuǎn)端IP 地址和遠(yuǎn)端端口的4 元組)在TCP連接處于2 MSL  等待期間,將不能再次被使用。

盡管許多具體的實(shí)現(xiàn)中允許一個(gè)進(jìn)程重新使用仍處于2 MSL  等待的端口(通常是設(shè)置選項(xiàng)SO_REUSEADDR),但TCP 不能允許一個(gè)新的連接建立在相同的插口上。

無(wú)論何時(shí)一個(gè)報(bào)文段發(fā)往基準(zhǔn)的連接(即,由目的IP地址和目的端口號(hào)以及源IP地址和源端口號(hào)指明的連接)出現(xiàn)錯(cuò)誤,TCP都會(huì)發(fā)回一個(gè)復(fù)位報(bào)文段。

異常終止(發(fā)送一個(gè)復(fù)位(RST )報(bào)文段而不是FIN 來(lái)中途釋放一個(gè)連接)一個(gè)連接對(duì)應(yīng)用程序來(lái)說(shuō)有兩點(diǎn)好處:

1、丟棄任何待發(fā)數(shù)據(jù)并立即發(fā)送復(fù)位報(bào)文段;

2、RST 的接收方會(huì)區(qū)分另一端執(zhí)行的是異常關(guān)閉還是正常關(guān)閉。在正常關(guān)閉的情況,需要在所有排隊(duì)數(shù)據(jù)都已發(fā)送之后才發(fā)送FIN 。因此,正常情況下沒(méi)有任何數(shù)據(jù)丟失。

Socket API通過(guò)“ linger to close選項(xiàng)”(SO_LINGER)提供這種異常關(guān)閉的能力。

如果一方已經(jīng)關(guān)閉或異常終止連接而另一方卻還不知道,這樣的TCP 連接成為半打開(Half-Open)的。

任何一端的主機(jī)異常都可能導(dǎo)致這種情況的發(fā)生。

只要不打算在半打開連接上傳輸數(shù)據(jù),仍處于連接狀態(tài)的一方就不會(huì)檢測(cè)另一方已經(jīng)出現(xiàn)異常。

發(fā)生半打開連接的另一個(gè)常見原因是,當(dāng)客戶主機(jī)突然掉電而不是正常的結(jié)束客戶應(yīng)用程序后在關(guān)機(jī)。

TCP 連接在同時(shí)打開的情況下,僅建立一條連接而不是兩條連接。

下圖顯示了同時(shí)打開期間報(bào)文段的交換。

兩端幾乎在同時(shí)發(fā)送SYN ,并進(jìn)入SYN_SENT狀態(tài)。

當(dāng)每一端收到SYN時(shí),狀態(tài)為SYN_RCVD,同時(shí)它們都再發(fā)送SYN并對(duì)收到的SYN進(jìn)行確認(rèn)。

當(dāng)雙方都收到SYN及相應(yīng)的ACK時(shí),狀態(tài)都邊前衛(wèi)ESTABLISHED。

因此,一個(gè)同時(shí)打開的連接需要交換4個(gè)報(bào)文段。

同時(shí)關(guān)閉 :當(dāng)應(yīng)用層發(fā)送關(guān)閉命令時(shí),兩端均從ESTABLISHED變?yōu)?FIN_WAIT_1。

這將導(dǎo)致雙方各發(fā)送一個(gè)FIN,兩個(gè)FIN 經(jīng)過(guò)網(wǎng)絡(luò)傳送后分別到達(dá)另一端。

收到FIN后,狀態(tài)由FIN_WAIT_1變遷到CLOSING,并發(fā)送最后的ACK。

當(dāng)收到最后的ACK時(shí),狀態(tài)變化為TIME_WAIT。

下圖總結(jié)了這些變化。

再如下圖,顯示了當(dāng)前TCP選項(xiàng)的格式,這些選項(xiàng)的定義來(lái)自于RFC 793和RFC1323 。

每個(gè)選項(xiàng)的開始是1字節(jié)kind字段,說(shuō)明選項(xiàng)的類型。

END


好了,今天的分享就到這了。

如果還有什么疑義,歡迎在評(píng)論區(qū)一起討論交流~

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

聯(lián)系客服