当前位置: 首页 > article >正文

URL访问网址的全过程

前言

当我们通过一个网址连接输入到浏览器中,此时会有哪些步骤呢?

过程

大致有这几个流程
1:DNS解析,得到IP地址
2:浏览器根据IP地址,访问服务器,建立TCP连接
3:建立完TCP连接后,浏览器向服务器发送http请求
4:服务器返回http响应给浏览器
5:浏览器根据响应渲染页面呈现给用户
6:浏览器关闭TCP连接

1、DNS解析

浏览器得到是一个域名,需要把这个域名转化成IP地址才能找到服务器。DNS解析就是将域名转化为IP地址的过程。
解析的过程总的来说,是先在本地缓存里寻找域名对应的IP地址,没有找到就去域服务器递归寻找,找到后返回给浏览器并存到本地缓存

具体过程

①先在浏览器缓存里寻找DNS记录。谷歌浏览器能够缓存1000条DNS记录,缓存的时间是1分钟
②接着在host文件和系统缓存里寻找。
③本地缓存都没有的话向域服务器发送请求,没找到的话递归到下一级的域服务器继续查找。直到找到返回

2、建立TCP连接

得到ip地址后,浏览器通过ip地址找到服务器,并通过三次握手建立tcp连接。

TCP报文格式

三次连接的详细过程此处不做赘述

过程图:

3、浏览器发送Http请求

建立完TCP连接后,浏览器就可以向服务器发送Http请求了。
一个Http请求包括请求行,请求报头,请求文

Http报文格式

请求行:包括 请求方法 请求地址 Http版本协议

请求方法:

GET,POST,PUT,DELETE,HEAD,OPTION,SPATCH,TRACE

常用的是

GET(获取一个完整的资源)

POST(提交一个表单)

PUT(上传一个文件)

DELETE(删除)

4、服务器返回Http响应

服务器收到浏览器发送的Http请求,进行处理,然后返回http响应给浏览器

Http响应由状态行,响应头部,响应数据构成

状态行包括状态码,http协议版本

常见的状态码

200 客户端请求成功

403 服务器拒绝执行此请求

404 请求资源不存在,输入了错误的URL

500 服务器发生不可预期的错误

503 服务器暂时的无法处理客户端的请求。一段时间后可能恢复正常

5、浏览器根据响应进行解析渲染,呈现给用户

返回回来的响应可能有Html,css,js等等。

可能会再去发送http请求去把其他资源拿回来。一般来说,访问一个页面,页面最终呈现在用户面前,会需要经历多次的http请求。

浏览器根据响应回来的资源进行解析渲染。如果是js文件那么会用js的解析器进行解析,如果是其他语言其他的文件,那么也会用对应的方式进行解析

6、浏览器关闭TCP连接

Connection: keep-alive

在早期http1.0版本里,每创建一个http请求都需要创建tcp连接。这就导致tcp连接每次都要创建,关闭。性能十分低下。为此,在请求头中引入Connection: keep-alive。意在告诉服务端完成本次http请求后不要关闭tcp连接,直到空闲时间超过keep-alive(超时时间)。在1.1版本中,默认是Connection: keep-alive。

四次挥手关闭TCP连接

浏览器通过四次挥手关闭TCP连接,过程如下


http://www.kler.cn/a/427413.html

相关文章:

  • [C#]利用opencvsharp 已知原图和mask掩码图像,抠出原图中人物,背景设置为透明色
  • 方案拆解 | 打击矩阵新规频出!2025矩阵营销该怎么玩?
  • 蓝桥杯2117砍竹子(简单易懂 包看包会版)
  • 常见限流算法介绍 和 Spring Cloud Sentinel使用方式
  • 企业级资源监控方案落地:Prometheus+Grafana+Export
  • 代码随想录-算法训练营day35(贪心算法05:无重叠区间,划分字母区间,合并区间)
  • oracle 数组分组
  • 电子应用设计方案-43:智能手机充电器系统方案设计
  • node.js常用的模块和中间件?
  • DAY168内网对抗-基石框架篇单域架构域内应用控制成员组成用户策略信息收集环境搭建
  • RBA评分等级和标准
  • Oracle系统性能监控工具oswatcher演示
  • 通过 FRP 实现 P2P 通信:控制端与被控制端配置指南
  • Spring Boot接口返回统一格式
  • stm32中的常用函数
  • Java基础-异常
  • 【Vue3】 vant4 + Uploader组件上传文件
  • C++设计模式(建造者、中介者、备忘录)
  • ubuntu中使用ffmpeg库进行api调用开发
  • 【哈夫曼树】