強化理解TCP的三次握手與四次揮手(又名:我與漂亮小姨子的聊天記錄)

一、關於TCP

TCP(Transmission Control Protocol傳輸控制協議)是一種面向連接的、可靠的、基於字節流傳輸層通信協議,由IETF的RFC793定義。在簡化的計算機網絡OSI模型中,它完成第四層傳輸層所指定的功能。在因特網協議族(Internet protocol suite)中,TCP層是位於IP層之上,應用層之下的中間層。不同主機的應用層之間經常需要可靠的、像管道一樣的連接,但是IP層不提供這樣的流機制,而是提供不可靠的包交換

二、三次握手

今天回家坐在電腦前面寫博客,想起了TCP三次握手、四次揮手

TCP是因特網中的傳輸層協議,使用三次握手協議建立連接。當主動方發出SYN連接請求後,等待對方回答SYN+ACK,並最終對對方的 SYN 執行 ACK 確認。這種建立連接的方法可以防止產生錯誤的連接,TCP使用的流量控制協議是可變大小的滑動窗口協議。

TCP三次握手的過程如下:

  1. 客戶端發送SYN(SEQ=x)報文給服務器端,進入SYN_SEND狀態。

  2. 服務器端收到SYN報文,迴應一個SYN (SEQ=y)ACK(ACK=x+1)報文,進入SYN_RECV狀態。

  3. 客戶端收到服務器端的SYN報文,迴應一個ACK(ACK=y+1)報文,進入Established狀態。

三次握手完成,TCP客戶端和服務器端成功地建立連接,可以開始傳輸數據了。

想到這裏,忽然想起一件開心的事,想着分享給我那漂亮的額小姨子,於是迫不及待的打開微信給漂亮小姨子發了一條消息:

Baldwin:姐們兒在麼?能收到我的消息麼?我是Baldwin[SEQ=x](我不知道她是否能收到我的消息,我也不知道我這2m的移動光纖是否能把這條消息發出去,懷着忐忑的心情,我進入到了SYN_SEND狀態)

小姨子:在啊!能收到你的消息,一號[ACK=x+1]你能收到我的消息麼?我是你的小姨子[SEQ=y](已收到她的消息,我懸着的心就放下了一半,因爲此時我已經確定我能夠正常的發送消息,也能正常的接收到她的消息,我知道她在此刻也進入到了SYN_RECV狀態,正等着我的回覆)

Baldwin:姐們兒姐們兒ACK=y+1],我能收到你的消息(她收到我的消息之後,她也明白了她現在能夠正常的收發消息,於是我倆就進入了Established狀態,可以開心地聊天了)

Baldwin:我給你說,我今天遇到了一件特別有意思的事兒。。。(於是我倆就開始了愉快的聊天)

三、四次揮手

我們聊人生、聊理想、聊未來,越聊越開心,我尋思着 不能再聊了啊!我女朋友還在臥室等我呢!於是我要結束這次聊天(調用close,我要執行“主動關閉”)

Baldwin:這次聊天該結束了,你姐還在等我呢!晚安[發送一個FIN分節](發完之後,我等着她的回覆,此時我進入了FIN_WAIT_1狀態)

小姨子:那行吧(小姨子執行“被動關閉”,此時小姨子進入了CLOSE_WAIT狀態)

我收到了小姨子的信息,但是我沒有回覆她,我現在想說的已經說完了,就等着她說晚安[FIN]了(此時我進入到了FIN_WAIT_2狀態)

小姨子:晚安[FIN](LAST_ASK)(這次她是已經看完了我之前給她發的所有消息,也都理解完成了,這次聊天確實可以結束了,發完這條消息,她就準備[close()]了)

Baldwin:行,我收到你的晚安了,晚安(我發完之後就進入了TIME_WAIT狀態,我在等一段時間,說不定她還要給我發消息呢)

小姨子收到消息直接就關機睡覺了,我等了2MSL(指一個片段在網絡中最大的存活時間)後,沒有收到他的消息,我這邊也就直接關機回臥室了

回臥室一看,我操!我女朋友呢?這一嚇不要緊,直接把我嚇醒了!這纔想到,我哪有啥小姨子,我連女朋友都沒有

大半夜難過得睡不着覺的我回憶起了以前看到過的TCP四次揮手的內容

1.客戶端設置seq和 ACK ,向服務器發送一個 FIN=1報文段。此時,(第一次揮手,FIN=1,seq=u)客戶端進入 FIN_WAIT 狀態,表示客戶端沒有數據要發送給服務端了。

2.服務端收到了客戶端發送的 FIN 報文段,向客戶端回了一個 ACK 報文段。

3.服務端向客戶端發送FIN 報文段,請求關閉連接,同時服務端進入 LAST_ACK 狀態。

4.客戶端收到服務端發送的 FIN 報文段後,向服務端發送 ACK 報文段,然後客戶端進入 TIME_WAIT 狀態。服務端收到客戶端的 ACK 報文段以後,就關閉連接。此時,客戶端等待 2MSL(指一個片段在網絡中最大的存活時間)後依然沒有收到回覆,則說明服務端已經正常關閉,這樣客戶端就可以關閉連接了。

 五、總結

1.本文章中除我沒有女朋友及TCP相關內容外皆爲杜撰,如有雷同,算你倒黴

2.文章中若有理解不到位的地方,歡迎指點

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章