第一次握手:建立连接时,客户端发送syn包(syn=j)到服务器,并进入SYN_SEND状态,等待服务器确认;
第二次握手:服务器收到syn包,必须确认客户的SYN(ack=j+1),同时自己也发送一个SYN包(syn=k),即SYN+ACK包,此时服务器进入SYN_RECV状态; 第三次握手:客户端收到服务器的SYN+ACK包,向服务器发送确认包ACK(ack=k+1),此包发送完毕,客户端和服务器进入ESTABLISHED状态,完成三次握手。 完成三次握手,客户端与服务器开始传送数据.
若采用二次连接不行:
用三次握手是为了防止失效的连接请求报文段突然又传送到主机B,因而产生错误。
失效的连接请求报文段是指:主机A发出的连接请求没有收到主机B的确认,于是经过一段时间后,主机A又又一次向主机B发送连接请求。且建立成功。顺序完毕传输数据。考虑这样一种特殊情况。主机A第一次发送的连接请求并没有丢失,而是由于网络节点导致延迟达到主机B。主机B以为是主机A又发起的新连接,于是主机B允许连接。并向主机A发回确认,可是此时主机A根本不会理会,主机B就一直在等待主机A发送数据。导致主机B的资源浪费。
原文:https://www.cnblogs.com/girl1314/p/10627414.html