TCP協議的三向交握和四次揮手機制

來源:互聯網
上載者:User

標籤:管理   互連網絡   重要   建立   重設   strong   對話   資料報   決定   

核心知識點:

1.三向交握:seq和ack number

2.四次揮手:FIN和隨機數

 

一、TCP/IP協議

TCP/IP協議(Transmission control protool/Internet protool)叫做傳輸控制/網際協議,又叫做網路通訊協議。

這個協議是Internet國際互連網絡的基礎,TCP/IP協議是網路中使用的基本的通行協議。

雖然從名字上看TCP/IP協議(傳輸控制通訊協定/網際協議),但是TCP/IP實際上是一組協議,

包括上百個各種功能的協議,如:遠程登入、檔案傳輸和電子郵件等,

而TCP協議和IP協議是保證資料完整性傳輸的兩個基本的重要協議。

通常說TCP/IP是協議簇,而不單單是TCP和IP,TCP協議使用範圍極廣,是目前異種網路通訊使用的唯一協議體系,

適用於串連各種機型,既可用於區域網路,也可用於廣域網路。

 

TCP/IP是很多不同的協議組成,TCP使用者資料報表協議,也稱做TCP傳輸控制通訊協定(Transport Control Protool可靠的主機到主機層協議),

傳輸控制通訊協定是OSI網路的第四層的叫法,TCP傳輸控制通訊協定是TCP/IP傳輸的6個基本協議的一種,

兩個TCP意思不相同,TCP是一種可靠的連線導向的傳輸服務,它在傳輸資料時是分段進行的,主機交換資料必須建立一個對話。

它用位元流通訊,即資料被作為無結構的位元組流,通過TCP傳輸的欄位指定順序號,以獲得可靠性,

是OSI參考模型的第四層,TCP是使用IP的網間互連網功能而提供可靠的資料轉送,

IP不停的把報文放到網路上,而TCP是負責確定報文到達,

在協同IP的操作中TCP負責:握手過程、報文管理、流量控制、錯誤偵測和處理(控制),

可以根據一定的編號順序對非正常順序的報文給予重新排列順序。

傳輸協議就只有兩種,一種是可靠傳輸協議(TCP),一種是不可靠傳輸協議(UDP)。

關於TCP協議可以查看:

http://www.cnblogs.com/yangmingxianshen/p/7900531.html

http://www.cnblogs.com/yangmingxianshen/p/7787281.html

 

二、三向交握和四次揮手

1.三向交握:建立串連

TCP是對主機層的傳輸控制通訊協定,提供可靠的串連服務,採用三向交握確認建立一個串連,位碼即tcp的標誌位。

 

部分名詞解釋:

  • SYN:建立聯機,標識狀態
  • ACK:確認,標識狀態
  • PSH:傳送
  • FIN:結束
  • RST:重設
  • URG:緊急
  • Sequence number:順序號碼
  • Acknowledge number:確認號碼

第一次握手:主機A發送位碼為SYN=1,隨機產生seq number=1(假設)的資料包到伺服器上,主機B由SYN=123456知道,主機A要求建立串連。

第二次握手:主機B收到請求後要確認聯機資訊,向A發送ack number=(主機A的seq+1),syn=1,ack=1,隨機產生seq number=654321的包。

第三向交握:主機A收到後檢查ack number是否正確,即第一次發送的seq number+1,以及位碼ck是否為1,若正確,主機A會再發送ack number=(主機B的seq+1),

  ACK=1,主機B收到後,確認seq值與ACK=1,如果正確則串連成功,就可以開始傳送資料了。

三向交握的關鍵的在於seq和ack number上面,前兩次握手都會隨機產生一個seq隨機數,這個隨機數將決定下次確認的ack number=(seq+1),

而SYN和ACK可以看作是一種狀態,A到B需要發送請求,B到A也要發送請求,所以前兩次握手是有SYN的,

而第一次握手是發起狀態,所以之後後面兩次有確認資訊ACK,以及ack number。

 

2.四次揮手:中斷連線

上面已經闡述了TCP請求如何通過三向交握建立串連的過程,現在闡述TCP請求如何通過4次回收來中斷連線的,如何保證資料的完整性和安全性的。

由於TCP串連是全雙工系統,因此每個方向都必須單獨進行關閉,這個原則是當一方完成它的資料發送任務後就發送一個FIN來終結這方面的串連。

收到一個FIN意味著這一方向沒有資料流動,一個TCP串連在收到一個FIN後仍能發送資料,首先進行關閉的一方將執行主動關閉,而另一方執行被動關閉。

現假設A到B資料轉送完畢:

第一次揮手:A發送給B一個FIN,標誌資料已經傳輸完畢,用來關閉A到B的資料轉送,同時還發送一個隨機數M,類似於seq。

第二次揮手:B收到資訊後會返回一個ack=M+1給A,表示已經收到。

第三次揮手:當B的資料轉送也結束的時候,B也會給A發送一個FIN,通知A已經傳輸完畢,同時還發送一個隨機數N。

第四次揮手:A收到資訊後,返回一個確認資訊,ack=N+1給B,通知B自己已經收到了。至此雙方都中斷連線,標誌著整個TCP會話結束。

四次揮手其實是兩次單方面的中斷連線,為啥需要這樣,這樣可以保證資料的完整性。

 

為什是三向交握,四次揮手?

首先要說明的是中斷連線並不是連續的,為了保證資料的完整性必須是:請求+確認的模式,所以中斷連線就是4次,

而建立串連的過程是連續的,兩次請求+一次確認所以就是三次。

TCP協議的三向交握和四次揮手機制

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.