1.引子 在了解OkHttp的复用连接池之前,我们首先要了解几个概念。 TCP三次握手通常我们进行HTTP连接网络的时候我们会进行TCP的三次握手,然后传输数据,然后再释放连接。 TCP三次握手的过程为: 第一次握手:建立连接。客户端发送连接请求报文段,将SYN位置为1,SequenceNumber为x;然后,客户端进入SYN_SEND状态,等待服务器的确认; 第二次握手:服务器收到客户端的SYN报文段,需要对这个SYN报文段进行确认,设置AcknowledgmentNumber为x+1(SequenceNumber+1);同时,自己自己还要发送SYN请求信息,将SYN位置为1,SequenceNumber为y;服务器端将上述所有信息放到一个报文段(即SYN+ACK报文段)中,一并发送给客户端,此时服务器进入SYN_RECV状态; 第三次握手:客户端收到服务器的SYN+ACK报文段。然后将AcknowledgmentNumber设置为y+1,向服务器发送ACK报文段,这个报文段发送完毕以后,客户端和服务器端都进入ESTABLISHED状态,完成TCP三次握手。 TCP四次分手当客户端和服务器通过三次握手建立了TCP连接以后,当数据传送完毕,断开连接就需要进行TCP四次分手: 第一次分手:主机1(可以使客户端,也可以是服务器端),设置SequenceNumber和AcknowledgmentNumber,向主机2发送一个FIN报文段;此时,主机1进入FIN_WAIT_1状态;这表示主机1没有数据要发送给主机2了; 第二次分手:主机2收到了主机1发送的FIN报文段,向主机1回一个ACK报文段,AcknowledgmentNumber为Sequence 第三次分手:主机2向主机1发送FIN报文段,请求关闭连接,同时主机2进入LAST_ACK状态; 第四次分手:主机1收到主机2发送的FIN报文段,向主机2发送ACK报文段,然后主机1进入TIME_WAIT状态;主机2收到主机1的ACK报文段以后,就关闭连接;此时,主机1等待2MSL后依然没有收到回复,则证明Server端已正常关闭,那好,主机1也可以关闭连接了。 来看下面的图加强下理解: keepaliveconnections当然大量的连接每次连接关闭都要三次握手四次分手的很显然会造成性能低下,因此复方川芎酊治疗白癜风的效果怎样北京去哪里医院治疗白癜风
|