tcp建立連接爲什麼要三次握手

一:爲了確認建立連接的雙方擁有收發能力。
二:爲了防止超時。
具體解釋如下圖所示:

圖片描述

A,B兩個機器建立連接,A發送建立信號這是第一次握手,B收到後發送確認信號這是第二次握手,A收到確認後再次發送確認信號這是第三次握手。
接下來我們看看三次握手是如何確認收發能力的:
所謂確認收發能力,就是確認自己具有收發能力和確認對方具有收發能力。
當B第一次收到A發來的連接握手時,B方能夠確認B擁有接收能力,並且A具有發送能力。
當A收到B的確認握手時,A方能夠確認A擁有發送能力(否則B不能回發),B擁有接收能力(否則B不能回發),A擁有接收能力,B擁有發送能力。
此時A確認的有:A接收能力,A發送能力,B接收能力,B發送能力。
此時B確認的有:A的發送能力,B的接收能力。
那麼B還需要確認A的接收能力,B的發送能力。
而當B第二次接收到A發來的確認握手時候則B還需確認的能力此時得到確認。

如何防止超時:
如果兩次握手就可以建立連接:
那麼A的一個超時連接發送給B,B就會認爲這個連接是新的建立連接的請求並沒有超時,然後建立連接,但是超時連接是對於A來說的,A知道它發送的連接已經超時,只是B不知道,此時B單方面建立連接,不過A並沒有,此時不僅是連接超時,而且B還建立了髒連接。
如果是三次握手的話:
A的超時連接發送給B,B發送確認連接,因爲A知道已經超時,所以A不會理會B發來的握手,那麼B等待一段時間後發現自己的連接超時,連接就沒有建立。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章