面试中经常会被问到http的连接和断开的问题,所以我在这里做一个小整理,希望可以帮到大家。
1.HTTP的三次握手
第一次握手:Client端A将标志位SYN置为1,随机产生一个值seq=J,并将该数据包发送给Server端B,A进入SYN_SENT状态,等待B确认。
第二次握手:B收到数据包后由标志位SYN=1知道A请求建立连接,B将标志位SYN和ACK都置为1,ack=J+1,随机产生一个值seq=K,并将该数据包发送给A以确认连接请求,Server进入SYN_RCVD状态。
第三次握手:A收到确认后,检查ack是否为J+1,ACK是否为1,如果正确则将标志位ACK置为1,ack=K+1,并将该数据包发送给B,B检查ack是否为K+1,ACK是否为1,如果正确则连接建立成功,A和B进入ESTABLISHED状态,完成三次握手,随后A与B之间可以开始传输数据了。
2.http的四次挥手
1)客户端发送FIN信号给server端,server端接受到FIN信号,得知客户端要关闭连接
2)server端发送应答信号,告诉客户端送到关闭连接信号,使客户端多等一会,将剩余的数据发送给给他