成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

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

網絡 網絡管理
TCP是一個面向連接的協議,無論哪一方向另一方發送數據之前,都必須先在雙方之間家里一條連接。今天講講TCP連接的終止,也就是我們平時說的四次揮手。

TCP是一個面向連接的協議,無論哪一方向另一方發送數據之前,都必須先在雙方之間家里一條連接。

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

還沒看過的同學看這里👇

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

今天講講TCP連接的終止,也就是我們平時說的四次揮手。

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

因為一個TCP連接時全雙工(即數據在兩個方向上能同時傳遞),因此每個方面必須單獨地進行關閉。

需要注意的是,收到一個FIN 只意味著在這一方向上沒有數據流動,但一個TCP連接在收到一個FIN之后仍能發送數據。

TCP 連接終止過程,如圖1所示 :

  • TCP 客戶端發送一個FIN ,用來關閉從客戶端到服務器的數據傳送;
  • 當服務器收到這個FIN ,它發回一個ACK ,確認序號為收到的序號加1 。一個FIN 也將占用一個序號;
  • 服務器程序首先傳送一個文件結束符,然后服務器關閉它的連接,發送一個FIN 到客戶端;
  • 客戶端回復一個確認。

最大報文段長度(MSS)表示TCP 傳往另一端的最大塊數據塊的長度。當建立一個TCP連接時,每一方都有用于通告它期望接收的MSS選項 ( MSS選項只能出現在SYN報文段中) 。

如果一方沒有接收到來自另一方的MSS值,則 MSS就定為默認值536字節(這個默認值允許20 字節的IP 首部和20字節的TCP首部以適合576 字節的IP數據報)。

MSS讓主機限制另一端發送數據報的長度,加上主機也能控制它發送數據報的長度,這將使以較小MTU接收到一個網絡上的主機避免分段。

圖1

 

半連接:TCP 連接的一端在結束它的發送之后還能接收到來自另一端數據的能力。

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

ESTABLISHED狀態是連接雙方能夠進行雙向數據傳送的狀態。

當 SYN_RCVD(圖中SYN 收到)狀態是從LISTEN狀態(正常情況)進入,而不是從SYN_SENT狀態(同時打開)進入時,從SYN_RCVD回到 LISTEN狀態變遷才是有效的。

這意味著如果執行被動打開(進入LISTEN),收到一個SYN,發送一個帶ACK的 SYN(進入SYN_RCVD),然后收到一個RST,而不是一個ACK,便又回到LISTEN狀態并等待另一個連接請求的到來。

TIME_WAIT狀態也成為2MSL等待狀態。

當 TCP 執行一個主動關閉,并發回最后一個ACK ,該連接必須在TIME_WAIT狀態停留 的時間為2倍的MSL 。

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

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

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

無論何時一個報文段發往基準的連接(即,由目的IP地址和目的端口號以及源IP地址和源端口號指明的連接)出現錯誤,TCP都會發回一個復位報文段。

異常終止(發送一個復位(RST )報文段而不是FIN 來中途釋放一個連接)一個連接對應用程序來說有兩點好處:

  • 丟棄任何待發數據并立即發送復位報文段;
  • RST 的接收方會區分另一端執行的是異常關閉還是正常關閉。在正常關閉的情況,需要在所有排隊數據都已發送之后才發送FIN 。因此,正常情況下沒有任何數據丟失。

Socket API通過“ linger to close選項”(SO_LINGER)提供這種異常關閉的能力。

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

任何一端的主機異常都可能導致這種情況的發生。

只要不打算在半打開連接上傳輸數據,仍處于連接狀態的一方就不會檢測另一方已經出現異常。

發生半打開連接的另一個常見原因是,當客戶主機突然掉電而不是正常的結束客戶應用程序后在關機。

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

下圖顯示了同時打開期間報文段的交換。

兩端幾乎在同時發送SYN ,并進入SYN_SENT狀態。

當每一端收到SYN時,狀態為SYN_RCVD,同時它們都再發送SYN并對收到的SYN進行確認。

當雙方都收到SYN及相應的ACK時,狀態都邊前衛ESTABLISHED。

因此,一個同時打開的連接需要交換4個報文段。

同時關閉 :當應用層發送關閉命令時,兩端均從ESTABLISHED變為 FIN_WAIT_1。

這將導致雙方各發送一個FIN,兩個FIN 經過網絡傳送后分別到達另一端。

收到FIN后,狀態由FIN_WAIT_1變遷到CLOSING,并發送最后的ACK。

當收到最后的ACK時,狀態變化為TIME_WAIT。

下圖總結了這些變化。

再如下圖,顯示了當前TCP選項的格式,這些選項的定義來自于RFC 793和RFC1323 。

每個選項的開始是1字節kind字段,說明選項的類型。

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

責任編輯:趙寧寧 來源: 思科CCIE俱樂部
相關推薦

2021-10-14 20:33:16

TCP連接關閉

2024-07-11 10:55:27

2020-02-17 10:10:43

TCP三次握手四次揮手

2019-07-16 11:06:09

TCP四次揮手半關閉

2024-01-12 08:23:11

TCPACK服務器

2015-10-13 09:42:52

TCP網絡協議

2022-08-05 11:03:59

TCP 四次揮手三次握手

2021-05-18 12:27:40

TCP控制協議

2021-01-29 06:11:08

TCP通信三次握手

2023-10-24 15:22:09

TCPUDP

2014-09-19 09:46:46

TCPIP

2017-09-25 21:27:07

TCP協議數據鏈

2019-06-12 11:26:37

TCP三次握手四次揮手

2023-09-02 22:02:58

TCP協議四次揮手

2020-03-02 14:41:04

運維架構技術

2019-02-01 09:38:16

2021-07-03 17:47:25

TCP控制協議

2018-08-10 09:23:19

TCP考點數據

2015-11-09 09:58:56

2023-10-28 09:07:57

TCP面試三次握手
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 色婷婷精品国产一区二区三区 | 久久网站免费视频 | 一区二区三区在线 | 欧 | japanhdxxxx裸体 | 日韩欧美国产综合 | av在线三级 | 一级免费视频 | heyzo在线| 欧美二区在线 | 日韩国产中文字幕 | 欧美一区精品 | 亚洲精品久久久蜜桃 | 欧美激情一区二区三区 | 久久69精品久久久久久久电影好 | 精品中文字幕一区二区三区 | 农村妇女毛片精品久久久 | 岛国av免费看 | 国产农村妇女精品一二区 | 国产成人精品一区二区 | 欧美视频成人 | 欧美天堂在线 | 亚洲视频在线播放 | 久久99精品久久久 | 国产精品久久国产精品 | 精品国产乱码久久久久久牛牛 | 精久久| 成人在线影视 | 国产一区二区日韩 | 亚洲日日夜夜 | 亚洲精品永久免费 | 久久一区二区免费视频 | 精品av久久久久电影 | 亚洲一区二区三 | 欧美最猛黑人xxxx黑人 | 黄色网页在线 | 人人干人人看 | 中文天堂在线一区 | 欧美一区二区三区高清视频 | 国产高清性xxxxxxxx | 91久久精品日日躁夜夜躁国产 | 久久久久久久久久久高潮一区二区 |