TCP三次握手,四次挥手
TCP的报文段结构:
对于TCP的三次握手,需要用到的信号量以及序列号有:
- SYN:1位,其中SYN=1表示建立连接
- seq:32位序号,随机生成
- ACK:1位,其中ACK=1表示确认消息有效
- ack:32位确认序号,seq+1
- FIN:1位,其中FIN=1表示中断连接
TCP三次握手
TCP四次挥手
TCP三次握手的原因(为什么不是2次或者4次)
TCP协议
-
需要建立连接才可以起作用
-
需要Client端和Server端都具有正常的发送和接收能力
握手 | Client端可以验证的能力 | Server端可以验证的能力 |
---|---|---|
第一次 | Client发送、Server接收 | |
第二次 | Server发送、Client发送、Server接收、Client接收 | |
第三次 | Client接收、Server发送 |
所以只有三次挥手,Client端和Server端才可以验证双方都具有正常的发送和接收能力
TCP挥手比握手多一次的原因
当Client端发出FIN报文段时,只可以说明Client端没有数据发送了,但是Client端还可以从Server端接收数据。
当Server端发送ACK报文段时,只可以说明它知道了Client端没有数据发送了,但是Server端还可以发送数据。
当Server端发送FIN报文段时,表示Server端也没有数据发送了。
当Client端接收到后会返回ACK,之后彼此就会愉快的中断这次TCP连接。