1. 程式人生 > >TCP建立連線和斷開連線過程詳解

TCP建立連線和斷開連線過程詳解

最近在看TCP這塊知識的時候對TCP連線三次握手斷開四次斷開不是很瞭解,找了下面一片文章講的很詳細,收藏下!

原文地址:http://blog.sina.com.cn/s/blog_60a4fcef0101e813.html


TCP是一個面向連線的服務,面向連線的服務是電話系統服務模式的抽象,每一次完整的資料傳輸都必須經過建立連線,資料傳輸和終止連線三個過程,TCP建立連線的過程稱為三次握手,下面說一下三次握手的具體過程:

TCP三次握手過程

  1. 主機A通過向主機B 傳送一個含有同步序列號的標誌位的資料段給主機B ,向主機B 請求建立連線,通過這個資料段,主機A告訴主機B 兩件事:我想要和你通訊;你可以用哪個序列號作為起始資料段來回應我。
  2. 主機B 收到主機A的請求後,用一個帶有確認應答(ACK)和同步序列號(SYN)標誌位的資料段響應主機A,也告訴主機A兩件事:我已經收到你的請求了,你可以傳輸資料了;你要用哪佧序列號作為起始資料段來回應我。
  3. 主機A收到這個資料段後,再發送一個確認應答,確認已收到主機B 的資料段:我已收到回覆,我現在要開始傳輸實際資料了。

這樣TCP三次握手就完成了,主機A和主機B 就可以傳輸資料了。三次握手的特點:沒有應用層的資料,SYN這個標誌位只有在TCP建產連線時才會被置1,握手完成後SYN標誌位被置0。

TCP建立連線要進行三次握手,而斷開連線要進行四次,這是由於TCP的半關閉造成的,因為TCP連線是全雙工的(即資料可在兩個方向上同時傳遞)所以進行關閉時每個方向上都要單獨進行關閉,這個單方向的關閉就叫半關閉.關閉的方法是一方完成它的資料傳輸後,就傳送一個FIN來向另一方通告將要終止這個方向的連線.當一端收到一個FIN,它必須通知應用層TCP連線已終止了這個方向的資料傳送,傳送FIN通常是應用層進行關閉的結果。

 四次斷開過程

  1. 當主機A完成資料傳輸後,將控制位FIN置1,提出停止TCP連線的請求
  2. 主機B收到FIN後對其作出響應,確認這一方向上的TCP連線將關閉,將ACK置1
  3. 由B 端再提出反方向的關閉請求,將FIN置1
  4. 主機A對主機B的請求進行確認,將ACK置1,雙方向的關閉結束。
TCP三次握手 <wbr>與 <wbr>四次斷開 <wbr>的詳細過程剖析

由TCP的三次握手和四次斷開

可以看出,TCP使用面向連線的通訊方式,大大提高了資料通訊的可靠性,使傳送資料端和接收端在資料正式傳輸前就有了互動,為資料正式傳輸打下了可靠的基礎。


講到這裡在來一張全面的圖來理解一下:(圖片來自:http://blog.csdn.net/hjw1991324/article/details/51044580)

這裡寫圖片描述