步骤:
1,输入地址
2,缓存解析
3,DNS域名解析
4,TCP链接,三次握手
5,服务器收到请求,处理后返回请求
6,浏览器渲染
7,断开TCP链接,四次挥手
一、输入网址
在浏览器中输入要访问的url地址,回车发起请求
二、缓存解析
浏览器获取了这个url,当然就去解析了,它先去缓存当中看看有没有,从 浏览器缓存-系统缓存-路由器缓存 当中查看,如果有从缓存当中显示页面,然后没有那就进行步骤三;
缓存就是把你之前访问的web资源,比如一些js,css,图片什么的保存在你本机的内存或者磁盘当中。
三、DNS域名解析
在发送http之前,需要进行DNS解析即域名解析。
DNS解析:域名到IP地址的转换过程。域名的解析工作由DNS服务器完成。解析后可以获取域名相应的IP地址
解析过程:
通过域名查找对应的服务器IP
1,在本地hosts文件中查找
2,在本地DNS解析缓存中查找
3,在本地DNS服务器中查找
4,本地DNS服务器向根DNS服务器发送请求,根DNS服务器会返回一个域服务器(.com服务器)地址
5,本地DNS服务器向域服务器发送请求,域服务器返回一个域名解析服务器地址
6,本地DNS服务器向域名解析服务器发送请求,获得服务器ip地址
7,本地DNS服务器缓存查询结果,并告知浏览器
四、TCP连接,三次握手
在域名解析之后,浏览器向服务器发起了http请求,三次握手,浏览器与服务器建立TCP连接。TCP协议是面向连接的,所以在传输数据前必须建立连接
三次握手的过程:
(1)客户端向服务器发送连接请求报文;
(2)服务器端接受客户端发送的连接请求后后回复ACK报文,并为这次连接分配资源。
(3)客户端接收到ACK报文后也向服务器端发生ACK报文,并分配资源。
这样TCP连接就建立了,在此之后,浏览器开始向服务器发送http请求,请求数据包。请求信息包含一个头部和一个请求体。
注意:三次握手的目的是确保通讯双发的发送、接收消息的功能都正常
五、服务器收到请求,处理后返回请求
1,服务器接收到http请求的格式包,然后解析其中的参数。
2,执行请求。这个执行请求,指的是进行一些逻辑操作,查询操作,持久层操作等的。也就是我们开发通常的业务处理。
3,生成http格式的数据包,发送响应数据包。
六、浏览器渲染
客户端接收到response返回结果,开始解析html,以及内嵌资源。发现有远程资源,继续向服务器请求资源,解析完成后对数据进行渲染展示给用户。
七、断开TCP链接,四次挥手
四次挥手的目的:确认双发都收到断开连接的请求。
1,客户端发出断开连接的请求
2,服务端ack 这个断开请求,确保自己的数据传输完毕,再发送断开连接的请求
3,客户端收到断开请求进入TIME-WAIT状态,发送ack,等待2msl后没有再收到服务端的请求则完全断开连接
54,服务端收到客户端的ack后关闭连接