从百度/谷歌搜索上输入一个网址,到浏览器加载出网站页面的过程中,发生了什么

让我们先回顾一下网络体系的七层体系结构图

从百度/谷歌搜索上输入一个网址,到浏览器加载出网站页面的过程中,发生了什么

一、DNS 解析:(网址转换成对应的IP地址)

1. DNS递归:

先看本地域名服务器是否缓存该地址,然后各服务器依次递归.(根域名服务器) -> .com -> google.com. -> www.google.com.(这样是不是会造成多次请求连接浪费资源?)

2. DNS缓存:

所以各个服务器都会存在缓存,以便下次使用,浏览器、路由器、域名服务器都会有缓存

3. DNS负载:

如果某个服务器接受的请求和大量连接,会给服务器造成巨大的压力,通过部署多个服务器来实现DNS 负载,重定向另外一个服务器,减轻当前服务器的压力。****

二、TCP 连接:(浏览器向该地址服务器发送TCP 连接请求)

三次握手请求连接(也可以考虑下四次挥手的过程)看之前的文章TCP 中的三次握手和四次挥手

三、发送HTTP 请求:(浏览器向网站服务器发送一个HTTP请求)

1. Https VS http

他们的区别就是在 HTTP 与 TCP 中加入了 ssl 进行相应的验证

从百度/谷歌搜索上输入一个网址,到浏览器加载出网站页面的过程中,发生了什么

2. HTTP 请求报文(请求行,请求报头和请求正文)

2.1 请求行:GET index.html HTTP/1.1

常用的方法有:GET,POST,DELETE,OPTIONS,HEAD

2.2 请求报头:允许客户端向服务器传递请求的*附加信息和客户端自身的信息*

常见的请求报头字段有:Accept, Accept-Charset, Accept-Encoding, Accept-Language, Content-Type, Authorization, Cookie, User-Agent等。

2.3 请求正文:如果使用的是POST,PUT方法时,数据就存储在请求正文里面,包括一些与请求正文相关的信息。

四、HTTP响应报文:(服务端向浏览器返回一个HTTP 报文)

状态码:由三位数字组成,第一个数字定义了响应的类别

  • 1xx: 表示请求已接收,继续处理

  • 2xx: 请求已经成功被接受

  • 3xx: 重定向-要完成请求必须进行更进一步的操作

  • 4xx: 客户端错误-请求语法错误或者请求无法实现

  • 5xx: 服务端错误-服务器未能实现合法的请求

响应报头:

响应相关报头字段有:Server, Connection...

响应报文:

服务器返回给浏览器的文本信息,比如html,css,js,图片等等文件

五、浏览器解析文件,渲染页面

从百度/谷歌搜索上输入一个网址,到浏览器加载出网站页面的过程中,发生了什么

上一篇:.net core 3.1升级到.net 5 web.config配置报错 processPath="%LAUNCHER_PATH%" arguments="%LAUNCHER_ARGS%"


下一篇:用原生nodejs封装类似于express的路由以及静态资源服务器