浏览器请求数据过程

客户端向服务器请求数据,分为几个步骤

1. 客户端将域名发送给DNS,DNS解析出Ip地址,再返还给客户端;

2. 客户端拿到了Ip地址,就向服务器发送http请求,期间经历三次握手,建立TCP连接

三次握手:1. 客户端发送连接、请求报文;

     2. 服务端接受连接后回复ACK报文,并为这次连接分配资源;

       3. 客户端收到报文后,也向服务器发送ACK报文,并分配资源,这样TCP连接就建立了。

注:ACK报文是用来确认发来的数据已接受无误。

3. 服务器向客户端发送HTTP协议应答包;

4. 客户端和服务器断开,期间经历四次挥手,之后客户端开始解释处理HTML文档

四次挥手: 1. 客户端发起中断连接请求,也就是发送FIN报文,服务器接受到FIN报文后,FIN报文的意思是说“我客户端已经没有数据要发送给你了,但是如果你还有数据没有发完,可以不着急关闭,可以继续发送数据”;

         2. 服务器发送ACK报文,告诉客户端,“你的请求我收到了,但是我还没有准备好,请继续等我的消息”;

      wait: 这个时候客户端进入FIN-WAIT状态,继续等待服务端的FIN报文;

      3. 当服务端确定数据已发送完毕,就向客户端发送FIN报文,告诉客户端,“我的数据已经发送完了,准备好关闭连接了”;

      4. 客户端收到FIN报文后,就知道已经可以关闭连接了,但是他还是不相信网络,怕服务端不知道可以关闭了,所以发送ACK报文后进入TIME_WAIT状态,如果服务端没有接受到ACK则可以重传。服务端收到ACK后,就知道可以断开连接了。客户端等待了2MSL后依然没有收到回复,则证明服务端已经断开连接了,然后客户端也断开了来连接。这样TCP连接就关闭了。

 

猜你喜欢

转载自www.cnblogs.com/lanpangci/p/9631859.html