1. 程式人生 > 其它 >來聊聊 TCP 協議

來聊聊 TCP 協議

什麼是 TCP 協議?TCP 協議的歷史?為什麼會有 TCP 協議?

TCP 的三次握手

TCP 協議使用三次握手機制來實現客戶端和服務端之間的連線建立。

三次握手其實是在驗證通訊雙方是否有收發訊息的能力:

客戶端 服務端
自己發信 [ ] 自己發信 [ ]
自己收信 [ ] 自己收信 [ ]
對方發信 [ ] 對方發信 [ ]
對方收信 [ ] 對方收信 [ ]

三次握手的過程如下:

第一次握手:客戶端傳送一個訊息給服務端。服務端可以確認客戶端的發信能力以及自己的收信能力是沒有問題的。

Q: 訊息裡有哪些內容?

客戶端 服務端
自己發信 [ ] 自己發信 [ ]
自己收信 [ ] 自己收信 [✔]
對方發信 [ ] 對方發信 [✔]
對方收信 [ ] 對方收信 [ ]

第二次握手:服務端傳送一個訊息給客戶端。客戶端可以確認自己發信和收信能力沒有問題,服務端的發信和收信能力沒有問題。

客戶端 服務端
自己發信 [✔] 自己發信 [ ]
自己收信 [✔] 自己收信 [✔]
對方發信 [✔] 對方發信 [✔]
對方收信 [✔] 對方收信 [ ]

第三次握手:客戶端傳送一個確認訊息給服務端。服務端可以確認自己的發信能力以及對方的收信能力沒有問題。

客戶端 服務端
自己發信 [✔] 自己發信 [✔]
自己收信 [✔] 自己收信 [✔]
對方發信 [✔] 對方發信 [✔]
對方收信 [✔] 對方收信 [✔]

於此,客戶端和服務端就算是建立連線了。

需要注意的是,客戶端和服務端通過三次握手建立連線後,並不會真的在雙方之間拉一條連線線。連線的狀態是雙方各自維持的。也就是說,客戶端這邊會記錄自己正在和某個ip地址的伺服器的某個埠建立連線,在服務端也是一樣。

為什麼不能是兩次握手或者四次握手?

現在明白了什麼是 TCP 的三次握手機制,但假如我問你,為什麼是三次握手?為什麼不能是兩次握手或者四次握手?你會如何回答?