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分钟, 具体为什么
是两分钟还没有得到很好的解释. 在这个过程中, 网络中残留的传输失败的报文会消散, 以免影响网速.
来源: http://www.bubuko.com/infodetail-3297716.html