TCP爲什麼要3次握手4次揮手
TCP網絡是全雙工的,服務器端和客戶機端可以互發消息,發送消息,需要兩臺服務器之間
建立連接,並確認消息的初始序號。
3次握手
1. A:SYN(我有話要說,我從12345開始說,你記一下[seq=12345])
2. B:ACK+SYN(好的,我記住了,你下面要說12346哦,我從45678開始說,你記一下[ack=12346,seq=45678])
3. A:ACK(好的,我也記住了,我又說了12346,你下面要從45679開始哦[ack=45679,seq=12346])
4次揮手:
類似兩個人掛電話
1. A:掛了吧 (告訴B我沒話說了,不能直接掛,要B確認,不然B可能還有話要說)
2. B:好的(B確認.A不會再說話了,但是還可以接收消息,B可能還有數據沒發完)
3. B:掛了吧(B處理完了,告訴A,我沒話說了)
4. A:好的(B收到這條消息,關閉連接,A等了一會確認B收到消息了,A就關閉連接)
3次握手
第一次握手發送建立連接請求SYN以及客戶機的序號seq=x
,第二次握手,服務器端確認請求返回ACK以及ack=x+1,和服務器端的seq=y,第三次握手是
爲了吧服務器端的y同步給客戶端,客戶端將返回ack,連接建立成功。
4次揮手:
假設A端發起關閉連接請求
發送FIN以及seq=x,
B端收到FIN請求,並進入CLOSE-WAIT,等待另一方關閉,發送ACK請求,告訴A我已經收到FIN請求
B發起FIN請求,請求A關閉,等待A確認
A返回ACK確認,雙方關閉成功