TCP建立連線和斷開連線過程詳解
阿新 • • 發佈:2018-11-21
最近在看TCP這塊知識的時候對TCP連線三次握手斷開四次斷開不是很瞭解,找了下面一片文章講的很詳細,收藏下!
原文地址:http://blog.sina.com.cn/s/blog_60a4fcef0101e813.html
TCP是一個面向連線的服務,面向連線的服務是電話系統服務模式的抽象,每一次完整的資料傳輸都必須經過建立連線,資料傳輸和終止連線三個過程,TCP建立連線的過程稱為三次握手,下面說一下三次握手的具體過程:
TCP三次握手過程
- 主機A通過向主機B 傳送一個含有同步序列號的標誌位的資料段給主機B ,向主機B 請求建立連線,通過這個資料段,主機A告訴主機B 兩件事:我想要和你通訊;你可以用哪個序列號作為起始資料段來回應我。
- 主機B 收到主機A的請求後,用一個帶有確認應答(ACK)和同步序列號(SYN)標誌位的資料段響應主機A,也告訴主機A兩件事:我已經收到你的請求了,你可以傳輸資料了;你要用哪佧序列號作為起始資料段來回應我。
- 主機A收到這個資料段後,再發送一個確認應答,確認已收到主機B 的資料段:我已收到回覆,我現在要開始傳輸實際資料了。
這樣TCP三次握手就完成了,主機A和主機B 就可以傳輸資料了。三次握手的特點:沒有應用層的資料,SYN這個標誌位只有在TCP建產連線時才會被置1,握手完成後SYN標誌位被置0。
TCP建立連線要進行三次握手,而斷開連線要進行四次,這是由於TCP的半關閉造成的,因為TCP連線是全雙工的(即資料可在兩個方向上同時傳遞)所以進行關閉時每個方向上都要單獨進行關閉,這個單方向的關閉就叫半關閉.關閉的方法是一方完成它的資料傳輸後,就傳送一個FIN來向另一方通告將要終止這個方向的連線.當一端收到一個FIN,它必須通知應用層TCP連線已終止了這個方向的資料傳送,傳送FIN通常是應用層進行關閉的結果。
四次斷開過程
- 當主機A完成資料傳輸後,將控制位FIN置1,提出停止TCP連線的請求
- 主機B收到FIN後對其作出響應,確認這一方向上的TCP連線將關閉,將ACK置1
- 由B 端再提出反方向的關閉請求,將FIN置1
- 主機A對主機B的請求進行確認,將ACK置1,雙方向的關閉結束。
由TCP的三次握手和四次斷開
講到這裡在來一張全面的圖來理解一下:(圖片來自:http://blog.csdn.net/hjw1991324/article/details/51044580)