输入网址之后解析的过程

                           输入网址之后解析的过程

一、URL 解析

1地址解析:

2 HSTS  由于安全隐患,会使用 HSTS 强制客户端使用 HTTPS 访问页面。

3 其他操作 安全检查、访问限制(之前国产浏览器限制 996.icu)。

4 检查缓存

 

二、DNS 查询

1. 浏览器缓存

2. 操作系统缓存

3. 路由器缓存

4. ISP DNS 缓存

根域名服务器查询

前面所有步骤没有缓存的情况下,本地 DNS 服务器会将请求转发到互联网上的根域,下面这个图很好的诠释了整个流程:

 

三、TCP 连接

TCP/IP 分为四层,在发送数据时,每层都要对数据进行封装

 

1. 应用层:发送 HTTP 请求

在前面的步骤我们已经得到服务器的 IP 地址,浏览器会开始构造一个 HTTP 报文,其中包括:

  • 请求报头(Request Header):请求方法、目标地址、遵循的协议等等
  • 请求主体(其他参数)

其中需要注意的点:

  • 浏览器只能发送 GETPOST 方法,而打开网页使用的是 GET 方法

2. 传输层:TCP 传输报文

传输层会发起一条到达服务器的 TCP 连接,为了方便传输,会对数据进行分割(以报文段为单位),并标记编号,方便服务器接受时能够准确地还原报文信息。

在建立连接前,会先进行 TCP 三次握手。

关于 TCP/IP 三次握手,网上已经有很多段子和图片生动地描述了。

相关知识点:

  1. SYN 泛洪攻击

3. 网络层:IP协议查询Mac地址

将数据段打包,并加入源及目标的IP地址,并且负责寻找传输路线。

判断目标地址是否与当前地址处于同一网络中,是的话直接根据 Mac 地址发送,否则使用路由表查找下一跳地址,以及使用 ARP 协议查询它的 Mac 地址。

注意:在 OSI 参考模型中 ARP 协议位于链路层,但在 TCP/IP 中,它位于网络层。

4. 链路层:以太网协议

以太网协议

根据以太网协议将数据分为以为单位的数据包,每一帧分为两个部分:

  • 标头:数据包的发送者、接受者、数据类型
  • 数据:数据包具体内容

Mac 地址

以太网规定了连入网络的所有设备都必须具备网卡接口,数据包都是从一块网卡传递到另一块网卡,网卡的地址就是 Mac 地址。每一个 Mac 地址都是独一无二的,具备了一对一的能力。

广播

发送数据的方法很原始,直接把数据通过 ARP 协议,向本网络的所有机器发送,接收方根据标头信息与自身 Mac 地址比较,一致就接受,否则丢弃。

注意:接收方回应是单播。

相关知识点:

  1. ARP 攻击

4服务器接受请求

 

HTTPD

最常见的 HTTPD Linux 上常用的 Apache Nginx,以及 Windows 上的 IIS

它会监听得到的请求,然后开启一个子进程去处理这个请求。

处理请求

接受 TCP 报文后,会对连接进行处理,对HTTP协议进行解析(请求方法、域名、路径等),并且进行一些验证:

  • 验证是否配置虚拟主机
  • 验证虚拟主机是否接受此方法
  • 验证该用户可以使用该方法(根据 IP 地址、身份信息等)

重定向

假如服务器配置了 HTTP 重定向,就会返回一个 301永久重定向响应,浏览器就会根据响应,重新发送 HTTP 请求(重新执行上面的过程)。

URL 重写

然后会查看 URL 重写规则,如果请求的文件是真实存在的,比如图片、htmlcssjs文件等,则会直接把这个文件返回。

否则服务器会按照规则把请求重写到 一个 REST 风格的 URL 上。

然后根据动态语言的脚本,来决定调用什么类型的动态文件解释器来处理这个请求。

PHP 语言的 MVC 框架举例,它首先会初始化一些环境的参数,根据 URL 由上到下地去匹配路由,然后让路由所定义的方法去处理请求。

5、浏览器接受响应

浏览器接收到来自服务器的响应资源后,会对资源进行分析。

首先查看 Response header,根据不同状态码做不同的事(比如上面提到的重定向)。

如果响应资源进行了压缩(比如 gzip),还需要进行解压。

然后,对响应资源做缓存。

接下来,根据响应资源里的 MIME 类型去解析响应内容(比如 HTMLImage各有不同的解析方式)。

6、渲染页面

 

不同的浏览器内核,渲染过程也不完全相同,但大致流程都差不多。

 

https://4ark.me/post/b6c7c0a2.html#%E4%B8%80%E3%80%81URL-%E8%A7%A3%E6%9E%90

  • 0
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
在电脑重启后,打开浏览器并输入一个网址以打开网页的过程中,涉及了以下几个协议: 1. DNS(Domain Name System)协议:在打开浏览器后,输入网址需要通过DNS协议将域名解析为对应的IP地址。浏览器会向本地DNS服务器发送查询请求,本地DNS服务器会返回对应的IP地址,以便后续建立连接。 2. HTTP(Hypertext Transfer Protocol)协议:一旦浏览器获取到目标网址的IP地址,它会使用HTTP协议与目标服务器建立连接。HTTP协议是用于在Web上发送和接收超文本的协议,它定义了客户端和服务器之间的通信规则。 3. TCP/IP(Transmission Control Protocol/Internet Protocol)协议:在建立HTTP连接时,浏览器会使用TCP/IP协议来进行数据传输。TCP协议负责将数据分割成小块,并确保它们按正确的顺序到达目标服务器。IP协议负责将这些数据包从源地址发送到目标地址。 4. SSL/TLS(Secure Sockets Layer/Transport Layer Security)协议:如果目标网站使用HTTPS协议(HTTP over SSL/TLS),则在建立TCP连接后,浏览器和服务器之间会进行SSL/TLS握手协议。SSL/TLS协议用于加密和保护数据的传输,确保数据的安全性和完整性。 总结起来,在电脑重启后,打开浏览器并输入网址打开网页的过程中,涉及了DNS协议进行域名解析,HTTP协议进行客户端和服务器之间的通信,TCP/IP协议进行数据传输,以及可能的SSL/TLS协议进行数据加密和保护。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

haikuotiankongdong

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值