TCP三次握手和四次揮手以及11種狀態(tài)

原創(chuàng)地址:https://blog.51cto.com/jinlong/2065461原創(chuàng)作者:IT_外賣小哥

三次握手

置位概念:根據(jù)TCP的包頭字段,存在3個重要的標(biāo)識ACK粗截、SYN秉继、FIN

ACK:表示驗(yàn)證字段 SYN:位數(shù)置1奄容,表示建立TCP連接 FIN:位數(shù)置1康聂,表示斷開TCP連接

image

三次握手過程說明:

1.由客戶端發(fā)送建立TCP連接的請求報文,其中報文中包含seq序列號北滥,是由發(fā)送端隨機(jī)生成的刚操,并且將報文中的SYN字段置為1,表示需要建立TCP連接再芋。(SYN=1菊霜,seq=x,x為隨機(jī)生成數(shù)值)

2.由服務(wù)端回復(fù)客戶端發(fā)送的TCP連接請求報文济赎,其中包含seq序列號鉴逞,是由回復(fù)端隨機(jī)生成的,并且將SYN置為1司训,而且會產(chǎn)生ACK字段华蜒,ACK字段數(shù)值是在客戶端發(fā)送過來的序列號seq的基礎(chǔ)上加1進(jìn)行回復(fù),以便客戶端收到信息時豁遭,知曉自己的TCP建立請求已得到驗(yàn)證。(SYN=1贺拣,ACK=x+1蓖谢,seq=y捂蕴,y為隨機(jī)生成數(shù)值)這里的ack加1可以理解為是確認(rèn)和誰建立連接。

3.客戶端收到服務(wù)端發(fā)送的TCP建立驗(yàn)證請求后闪幽,會使自己的序列號加1表示啥辨,并且再次回復(fù)ACK驗(yàn)證請求,在服務(wù)端發(fā)過來的seq上加1進(jìn)行回復(fù)盯腌。(SYN=1溉知,ACK=y+1,seq=x+1)

四次揮手

image

四次揮手過程說明:

1.客戶端發(fā)送斷開TCP連接請求的報文腕够,其中報文中包含seq序列號级乍,是由發(fā)送端隨機(jī)生成的,并且還將報文中的FIN字段置為1帚湘,表示需要斷開TCP連接玫荣。(FIN=1,seq=x大诸,x由客戶端隨機(jī)生成)

2.服務(wù)端會回復(fù)客戶端發(fā)送的TCP斷開請求報文捅厂,其包含seq序列號,是由回復(fù)端隨機(jī)生成的资柔,而且會產(chǎn)生ACK字段焙贷,ACK字段數(shù)值是在客戶端發(fā)過來的seq序列號基礎(chǔ)上加1進(jìn)行回復(fù),以便客戶端收到信息時贿堰,知曉自己的TCP斷開請求已經(jīng)得到驗(yàn)證辙芍。(FIN=1,ACK=x+1官边,seq=y沸手,y由服務(wù)端隨機(jī)生成)

3.服務(wù)端在回復(fù)完客戶端的TCP斷開請求后,不會馬上進(jìn)行TCP連接的斷開注簿,服務(wù)端會先確保斷開前契吉,所有傳輸?shù)紸的數(shù)據(jù)是否已經(jīng)傳輸完畢,一旦確認(rèn)傳輸數(shù)據(jù)完畢诡渴,就會將回復(fù)報文的FIN字段置1捐晶,并且產(chǎn)生隨機(jī)seq序列號。(FIN=1妄辩,ACK=x+1惑灵,seq=z,z由服務(wù)端隨機(jī)生成)

4.客戶端收到服務(wù)端的TCP斷開請求后眼耀,會回復(fù)服務(wù)端的斷開請求英支,包含隨機(jī)生成的seq字段和ACK字段,ACK字段會在服務(wù)端的TCP斷開請求的seq基礎(chǔ)上加1哮伟,從而完成服務(wù)端請求的驗(yàn)證回復(fù)干花。(FIN=1妄帘,ACK=z+1,seq=h池凄,h為客戶端隨機(jī)生成)至此TCP斷開的4次揮手過程完畢

11種狀態(tài)

image

1.一開始抡驼,建立連接之前服務(wù)器和客戶端的狀態(tài)都為CLOSED

2.服務(wù)器創(chuàng)建socket后開始監(jiān)聽,變?yōu)長ISTEN狀態(tài)肿仑;

3.客戶端請求建立連接致盟,向服務(wù)器發(fā)送SYN報文,客戶端的狀態(tài)變味SYN_SENT尤慰;

4.服務(wù)器收到客戶端的報文后向客戶端發(fā)送ACK和SYN報文馏锡,此時服務(wù)器的狀態(tài)變?yōu)镾YN_RCVD;

5.然后割择,客戶端收到ACK眷篇、SYN,就向服務(wù)器發(fā)送ACK荔泳,客戶端狀態(tài)變?yōu)镋STABLISHED蕉饼;

6.服務(wù)器端收到客戶端的ACK后變?yōu)镋STABLISHED。此時3次握手完成玛歌,連接建立昧港!

image

由于TCP連接是全雙工的,斷開連接會比建立連接麻煩一點(diǎn)點(diǎn)支子。

1.客戶端先向服務(wù)器發(fā)送FIN報文创肥,請求斷開連接,其狀態(tài)變?yōu)镕IN_WAIT1值朋;

2.服務(wù)器收到FIN后向客戶端發(fā)送ACK叹侄,服務(wù)器的狀態(tài)圍邊CLOSE_WAIT;

3.客戶端收到ACK后就進(jìn)入FIN_WAIT2狀態(tài)昨登,此時連接已經(jīng)斷開了一半了趾代。如果服務(wù)器還有數(shù)據(jù)要發(fā)送給客戶端,就會繼續(xù)發(fā)送丰辣;

4.直到發(fā)完數(shù)據(jù)撒强,就會發(fā)送FIN報文,此時服務(wù)器進(jìn)入LAST_ACK狀態(tài)笙什;

5.客戶端收到服務(wù)器的FIN后飘哨,馬上發(fā)送ACK給服務(wù)器,此時客戶端進(jìn)入TIME_WAIT狀態(tài)琐凭;

6.再過了2MSL長的時間后進(jìn)入CLOSED狀態(tài)芽隆。服務(wù)器收到客戶端的ACK就進(jìn)入 CLOSED狀態(tài)。至此,還有一個狀態(tài)沒有出來:CLOSING狀態(tài)摆马。
CLOSING狀態(tài)表示: 客戶端發(fā)送了FIN臼闻,但是沒有收到服務(wù)器的ACK,卻收到了服務(wù)器的FIN囤采,這種情況發(fā)生在服務(wù)器發(fā)送的ACK丟包的時候,因?yàn)榫W(wǎng)絡(luò)傳輸有時會有意外惩淳。
LISTEN:等待從任何遠(yuǎn)端TCP 和端口的連接請求蕉毯。
SYN_SENT:發(fā)送完一個連接請求后等待一個匹配的連接請求。SYN_RECEIVED:發(fā)送連接請求并且接收到匹配的連接請求以后等待連接請求確認(rèn)思犁。
ESTABLISHED:表示一個打開的連接代虾,接收到的數(shù)據(jù)可以被投遞給用戶。連接的數(shù)據(jù)傳輸階段的正常狀態(tài)激蹲。
FIN_WAIT_1:等待遠(yuǎn)端TCP 的連接終止請求棉磨,或者等待之前發(fā)送的連接終止請求的確認(rèn)。
FIN_WAIT_2:等待遠(yuǎn)端TCP 的連接終止請求学辱。
CLOSE_WAIT:等待本地用戶的連接終止請求乘瓤。
CLOSING:等待遠(yuǎn)端TCP 的連接終止請求確認(rèn)。
LAST_ACK:等待先前發(fā)送給遠(yuǎn)端TCP 的連接終止請求的確認(rèn)(包括它字節(jié)的連接終止請求的確認(rèn))
TIME_WAIT:等待足夠的時間過去以確保遠(yuǎn)端TCP 接收到它的連接終止請求的確認(rèn)策泣。
TIME_WAIT 兩個存在的理由:
? 可靠的實(shí)現(xiàn)tcp全雙工連接的終止衙傀;
? 允許老的重復(fù)分節(jié)在網(wǎng)絡(luò)中消逝。
CLOSED:不在連接狀態(tài)(這是為方便描述假想的狀態(tài)萨咕,實(shí)際不存在)

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末统抬,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子危队,更是在濱河造成了極大的恐慌聪建,老刑警劉巖,帶你破解...
    沈念sama閱讀 221,406評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件茫陆,死亡現(xiàn)場離奇詭異金麸,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)盅弛,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,395評論 3 398
  • 文/潘曉璐 我一進(jìn)店門钱骂,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人挪鹏,你說我怎么就攤上這事见秽。” “怎么了讨盒?”我有些...
    開封第一講書人閱讀 167,815評論 0 360
  • 文/不壞的土叔 我叫張陵解取,是天一觀的道長。 經(jīng)常有香客問我返顺,道長禀苦,這世上最難降的妖魔是什么蔓肯? 我笑而不...
    開封第一講書人閱讀 59,537評論 1 296
  • 正文 為了忘掉前任,我火速辦了婚禮振乏,結(jié)果婚禮上蔗包,老公的妹妹穿的比我還像新娘。我一直安慰自己慧邮,他們只是感情好调限,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,536評論 6 397
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著误澳,像睡著了一般耻矮。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上忆谓,一...
    開封第一講書人閱讀 52,184評論 1 308
  • 那天裆装,我揣著相機(jī)與錄音,去河邊找鬼倡缠。 笑死哨免,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的毡琉。 我是一名探鬼主播铁瞒,決...
    沈念sama閱讀 40,776評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼桅滋!你這毒婦竟也來了慧耍?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,668評論 0 276
  • 序言:老撾萬榮一對情侶失蹤丐谋,失蹤者是張志新(化名)和其女友劉穎芍碧,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體号俐,經(jīng)...
    沈念sama閱讀 46,212評論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡泌豆,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,299評論 3 340
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了吏饿。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片踪危。...
    茶點(diǎn)故事閱讀 40,438評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖猪落,靈堂內(nèi)的尸體忽然破棺而出贞远,到底是詐尸還是另有隱情,我是刑警寧澤笨忌,帶...
    沈念sama閱讀 36,128評論 5 349
  • 正文 年R本政府宣布蓝仲,位于F島的核電站,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏袱结。R本人自食惡果不足惜亮隙,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,807評論 3 333
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望垢夹。 院中可真熱鬧溢吻,春花似錦、人聲如沸果元。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,279評論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽噪漾。三九已至,卻和暖如春且蓬,著一層夾襖步出監(jiān)牢的瞬間欣硼,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,395評論 1 272
  • 我被黑心中介騙來泰國打工恶阴, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留诈胜,地道東北人。 一個月前我還...
    沈念sama閱讀 48,827評論 3 376
  • 正文 我出身青樓冯事,卻偏偏與公主長得像焦匈,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子昵仅,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,446評論 2 359