TCP建立连接需要三次握手:
(1)客户端发送syn请求
(2)服务端收到请求后,发送syn+ack回复
(3)客户端回复ack请求
好比两个人隔着50米在大雾中对话。老黄看见50米处的老王,向他微笑(syn)。老王看见老黄的微笑,向老黄的方向挥了挥手(ack),表示自己已经看到
他了,并且对老黄微笑(syn)。老黄看到老王的挥手,知道老王看到他的微笑了,他挥了挥手(ack),表示自己看到了老王了。
于是两个好友见面了。
在这个过程中,一共产生四个动作,包括客户端的syn1和ack1,以及服务端的syn2和ack2。服务端的ack1+syn2是放在一条信息里的,
所以客户端主动发起两个,服务端被动发起一个。共有三次信息发送。
TCP解除连接的四次握手:
(1)客户端主动发起fin请求
(2)服务端回复ack,客户端收到后处于半关闭状态,不能释放资源
(3)服务端发起fin请求
(4)客户端回复ack,此时释放资源。
为什么接触连接需要四次握手,因为客户端收到回复后是处于半关闭状态的。并没有释放资源。
在客户端处于半关闭状态的时间里,大概是4分钟,也就是2个MSL(maximium segment lifetime),MSL是报文最大存活时间,2分钟,具体为什么
是两分钟还没有得到很好的解释。在这个过程中,网络中残留的传输失败的报文会消散,以免影响网速。