天天看點

傳輸層TCP的标志位及三次握手,四次揮手

傳輸控制協定(TCP,Transmission Control Protocol)的标志位

  • SYN:同步序列編号(Synchronize Sequence Numbers)請求建立連接配接
  • ACK (Acknowledge character)即是确認字元,在資料通信中,接收站發給 發送站的一種傳輸類控制字元。表示發來的資料已确認接收無誤。
  • PSH(Push)表示有 DATA資料傳輸,當設定為1時,要求把資料盡快的交給應用層,不做處理
  • FIN(Finish)表示關閉連接配接
  • REST(Reset) 一般是在FIN之後才會出現為1的情況,表示的是連接配接重置。
  • URG(Urgen)設定為1時,首部中的緊急指針有效;為0時,緊急指針沒有意義。
  • Sequence number(順序号碼)
  • Acknowledge number(确認号碼)

TCP的三次握手

第一次握手:主機A發送位碼為syn=1,随機産生seq number=1234567的資料包到伺服器,主機B由SYN=1知道,A要求建立聯機;

第二次握手:主機B收到請求後要确認聯機資訊,向A發送ack number=(主機A的seq+1),syn=1,ack=1,随機産生seq=7654321的包;

第三次握手:主機A收到後檢查ack number是否正确,即第一次發送的seq number+1,以及位碼ack是否為1,若正确,主機A會再發送ack number=(主機B的seq+1),ack=1,主機B收到後确認seq值與ack=1則連接配接建立成功。

完成三次握手後,主機A與主機B開始傳送資料。

傳輸層TCP的标志位及三次握手,四次揮手

四次揮手(用戶端和服務端均可發起)

  • L第一次揮手:用戶端的資料傳輸了底部,向伺服器發送了FIN=1,就是用戶端請求斷開。

    就是我這邊即将要把資料傳輸完了,我準備跟你斷開連接配接了。

  • 第二次揮手:TCP的連接配接時全雙工的雙向連接配接,關閉必須從兩邊關閉,服務端收到了FIN标志位後,并不會立即向用戶端發送FIN标志位,而是發送一個ACK的應答資訊。

    相當于:你想要關閉的請求我已經收到,但是我可能還沒有接受完你的資料,等我資料接受完了我會告訴你。

  • 第三次揮手:伺服器接受資料完成,向用戶端發送一個FIN=1
  • 第四次揮手:用戶端收到伺服器發來的接收資料完成并想要斷開連接配接的請求,然後用戶端發送一個确認斷開連接配接的請求給服務端。這時候用戶端進入TIME_WAIT定時器狀态。

    如果在2MSL(2倍的最大封包生存時間)時間内沒有收到服務端的重傳請求,就确認服務端已經收到了,此時關閉自己的連接配接。如果逾時了,用戶端就會重新發送。

    傳輸層TCP的标志位及三次握手,四次揮手
    就那蹦極來舉個例子:
  • 我:(此時我的安全帶已經綁好(相當于資料傳輸完畢))我要跳了(第一次揮手)。
  • 從業人員:等等,我再檢查一下安全帶,我讓你跳你再跳(第二次揮手)
  • 從業人員:(安全措施檢查完畢)好了,現在你可以跳了。(第三次揮手)
  • 我:啊!!!!!(第四次揮手)

我跳完之後從業人員會幫我解開安全帶把我帶上岸,若沒有聽見我的 啊!!!!!!的尖叫聲 我就會再 啊!!!!! 給從業人員。(逾時重傳)

如果是服務端主動請求斷開連接配接的話,服務端就會先發送FIN=1标志位

參考部落格:

https://blog.csdn.net/zycxnanwang/article/details/77413870

傳輸層TCP的标志位及三次握手,四次揮手

繼續閱讀