请求过程简图
1、HTTP请求的三次握手(建立连接)
- 第一次:建立连接时,客户端发送SYN包(syn=j)到服务器,并进入SYN_SEND状态,等待服务器确认;
- 第二次:服务器收到SYN包,向客户端返回ACK(ack=j+1),同时自己也发送一个SYN包(syn=k),即SYN+ACK包,此时服务器进入SYN_RCVD状态;
- 第三次:客户端收到服务器的SYN+ACK包,向服务器发送确认包ACK(ack=k+1),此包发送完毕,客户端和服务器进入ESTABLISHED状态,完成三次握手。
- 完成三次握手,客户端与服务器开始传送数据,也就是ESTABLISHED状态,并开始通信
2、HTTP请求的四次挥手(断开连接)
- 第一次: TCP客户端发送一个FIN,用来关闭客户到服务器的数据传送。
- 第二次:服务器收到这个FIN,它发回一个ACK,确认序号为收到的序号加1。。和SYN一样,一个FIN将占用一个序号。
- 第三次:服务端同时也发送一个FIN,表示自己也即将关闭服务端到客户端的数据传送
- 第四次:客户端发回ACK报文确认,并将确认序号设置为收到序号加1。
- 完成四次挥手,连接关闭,通信结