总体分几个过程

  • DNS解析
  • TCP连接
  • 发送HTTP请求
  • 服务器处理请求并返回HTTP报文
  • 浏览器解析渲染页面
  • 连接结束

参考文献:https://segmentfault.com/a/1190000006879700

DNS解析

www.google.com只是为了方便人们记忆,它真正意义上的地址是它的IP地址,每个计算机都有一个独一无二的IP地址,把一个网址转换到IP地址,这个过程就是DNS解析。

DNS解析是一个递归查询的过程


本地域名服务器中查询IP地址===》根域名服务器查询===》com顶级域名查询===》google.com域名服务器

等于以下查询过程:
. -> .com -> google.com. -> www.google.com.

DNS 优化

将查询到的IP地址进行缓存,方便下次查询

DNS存在着多级缓存,从离浏览器的距离排序的话,有以下几种: 浏览器缓存,系统缓存,路由器缓存,IPS服务器缓存,根域名服务器缓存,顶级域名服务器缓存,主域名服务器缓存

DNS负载均衡

DNS返回的IP地址是否每次都不一样,每次请求的资源不一定位于同一台机器上面。

所以为了解决高性能和储存满足亿万请求,需要成千上百台服务器,大型的网站甚至更多

DNS可以返回一个合适的机器的IP给用户,例如可以根据每台机器的负载量,该机器离用户地理位置的距离等等,这种过程就是DNS负载均衡

TCP连接

拿到IP地址后,浏览器就知道该向哪个服务器发送请求了,这就用到了传输层的TCP协议,TCP是一种面向有连接的传输层协议,建立连接需要进行三次握手才能互相传输数据,在TCP连接建立完成之后就可以发送HTTP请求了

https://blog.csdn.net/qq_42253147/article/details/94389689

发送HTTP请求

HTTP报文是包裹在TCP报文中发送的,服务器端收到TCP报文时会解包提取出HTTP报文。但是这个过程中存在一定的风险,HTTP报文是明文,如果中间被截取的话会存在一些信息泄露的风险。那么在进入TCP报文之前对HTTP做一次加密就可以解决这个问题了。

HTTPS协议的本质就是HTTP + SSL(or TLS)。在HTTP报文进入TCP报文之前,先使用SSL对HTTP报文进行加密。从网络的层级结构看它位于HTTP协议与TCP协议之间。

  • HTTP请求报文是由三部分组成: 请求行, 请求报头和请求正文。

post和get的区别

1、GET是从服务器上获取数据,POST是向服务器传送数据。

2、在客户端, GET方式在通过URL提交数据,数据在URL中可以看到,不安全;POST方式,数据放置在HTML HEADER内提交,安全

3、对于GET方式,服务器端用Request.QueryString获取变量的值,对于POST方式,服务器端用Request.Form获取提交的数据。

4、GET方式提交的数据最多只能有1024字节,而POST则没有此限制

服务器处理请求并返回HTTP报文

HTTP响应报文也是由三部分组成: 状态码, 响应报头和响应报文

  • 状态码

浏览器解析渲染页面

浏览器是一个边解析边渲染的过程,首先浏览器解析HTML文件构建DOM树,然后解析CSS文件构建渲染树,等到渲染树构建完成后,浏览器开始布局渲染树并将其绘制到屏幕上。