用URL请求页面流程

一、打开浏览器,地址栏输入blog.csdn.net。


二、开始进行域名解析

DNS 查找过程
  1. 浏览器缓存 —— 浏览器会缓存 DNS 记录一段时间,但是操作系统并没有告诉浏览器储存 DNS 记录的时间。于是,不同浏览器会储存各自的一个固定时间( 2 分钟到 30 分钟不等)
  2. 系统缓存 – 如果在浏览器缓存里没有找到需要的记录,浏览器会做一个系统调用( Windows 里是 gethostbyname ),这样便可获得并查询系统缓存中的记录。
  3. 路由器缓存 – 接着,前面的查询请求发向路由器。路由器一般会有自己的 DNS 缓存。
  4. ISP DNS缓存 – 接下来要 check 的就是 ISP 缓存 DNS 的服务器。ISP (Internet Service Provider)就是互联网服务提供商,在这一般都能找到相应的缓存记录。
  5. 递归搜索 – 你的 ISPDNS 服务器从根域名服务器开始进行递归搜索,从 .com 顶级域名服务器到 example 的域名服务器。一般 DNS 服务器的缓存中会有 .com 域名服务器中的域名,所以到顶级服务器的匹配过程不是那么必要了。
DNS 进行域名解析的过程
  1. 客户端发出 DNS 请求翻译 IP 地址或主机名;
  2. DNS 服务器在收到客户端的请求后,检查 DNS 服务器的缓存,若查到请求的地址或名字,即向客户端发出应答信息;
  3. 若没有查到,则在数据库中查找,若查到请求的地址或名字,即向客户端发出应答信息;
  4. 若没有查到,则将请求发给DNS 服务器,并依序从根域查找顶级域,由顶级查找二级域,二级域查找三级,直至找到要解析的地址或名字。然后,向客户端所在网络的 DNS 服务器发出应答信息,DNS 服务器收到应答后,先在缓存中存储,然后,将解析结果发给客户端。
  5. 若没有找到,则返回错误信息。

三、三次握手建立TCP连接

  1. 第一次握手:建立连接时,客户端发送syn同步序列编号(syn=j)到服务器,并进入SYN_SENT状态,等待服务器确认;SYN:(Synchronize Sequence Numbers)。
  2. 第二次握手:服务器收到syn包,必须确认客户的SYN(ack=j+1),同时自己也发送一个SYN包(syn=k),即SYN+ACK包,此时服务器进入SYN_RECV状态;

  3. 第三次握手:客户端收到服务器的SYN+ACK包,向服务器发送确认包ACK(ack=k+1),此包发送完毕,客户端和服务器进入ESTABLISHED(TCP连接成功)状态,完成三次握手。

这里写图片描述


四、HTTP请求

完成三次握手,客户端与服务器开始传送数据:

  1. 服务器端接受到请求,根据路径参数,经过后端的一些处理之后,把处理后的一个结果数据返回给浏览器,如果是一个完整的网页,就是把完整的html页面代码返回给浏览器。
  2. 浏览器拿到html页面代码,解析和渲染页面,里面的 js、css图片资源都需要经过上面的步骤。
  3. 浏览器拿到资源对页面进行渲染,最终把一个完整的页面呈现给用户。

五、四次挥手断开TCP连接

由于 TCP 连接是全双工的,因此每个方向都必须单独进行关闭。原则是当一方完成它的数据发送任务后,就能发送一个 FIN 来终止这个方向的连接。收到一个 FIN 只意味着这一方向上没有数据流动。

  1. 第一次挥手:TCP 客户端发送一个 FIN,用来关闭客户端到服务器的数据传送。意思是说”我Client端没有数据要发给你了,但是如果你还有数据没有发送完成,可以继续发送数据。“
  2. 第二次挥手:服务器收到这个 FIN,它发回一个 ACK,确认序号为收到的序号加 1 。这是在告诉Client端:”你的请求我收到了,但是我还有数据要发送,请继续你等我的消息。”
  3. 第三次挥手:服务器发送一个 FIN 给客户端。
  4. 第四次挥手:客户端发回 ACK 报文确认,并将确认序号设置为收到序号加 1 。服务器端收到ACK后就可以断开连接了;客户端等待一段时间没有回复也就确认了服务器端已经关闭连接了,它也释放连接。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值