2019-07-04三次握手四次挥手

三次握手目的是保证双方都准备好资源。

三次握手:客户端告诉服务端准备好资源

                 服务端告诉客户端,我准备好了,你准备好了?

                 我也准备好了

四次挥手是保证双方都把资源释放掉。

四次挥手过程:

第一次调用close()发送了一个数据包,然后得回一个,这个时候客户端知道服务端收到了,第二次用recv解阻塞,有数据就处理,第三次没有数据就关闭,调用close关闭就会向对方发送一个数据包,第四次客户端回复。

为啥是四次挥手而不合并为三次挥手?

不能合并因为不调用第三次挥手的close就不能得到回复。

为啥服务端不能先调用close?

客户端先调用等两分钟随机分配再连再分配。

服务器先调用不允许绑定端口,会出现端口被占用,

setsockopt 套接字选项,REUSEADDR重复利用资源解决端口调用。

你可能感兴趣的:(2019-07-04三次握手四次挥手)