从输入url到页面展现的过程

先看一幅图:(下面的所有图我都进行拉伸压缩了  如果看不到  可以右键复制图片地址 然后到浏览器粘贴查看  不然显示不全图片)

 mac没有画图软件  不好意思  xmind做的

1. 输入网址

   当我们开始在浏览器中输入网址的时候,浏览器其实就已经在智能的匹配可能得 url 了,他会从历史记录,书签等地方,找到已经输入的字符串可能对应的 url,然后给出智能提示,让你可以补全url地址。

     url : 统一资源定位符,用于定位互联网上的资源。
     url构成 协议类型://<主机名>:<端口>/<路径>/文件名?参数名#锚点
     
     IP是因特网中的每台连接到网络的计算机为实现相互通信而遵循的规则协议。每个处于互联网中的设备都有IP 地址,形如 192.168.0.1,而127.0.0.1代表本机的 IP。IP又分为局域网IP和公网IP。而局域网 IP 和公网 IP 是有差别的。每个网站就是靠IP来定位的。
     比如对于 http://www.baidu.com的URL,浏览器实际上不知道 www.baidu.com到底是什么东西,需要域名解析
 

2. 浏览器查找域名的IP地址(域名解析)

   浏览器缓存
        浏览器会检查缓存中有没有这个域名对应的解析过的IP地址,如果缓存中有,这个解析过程就将结束
     系统缓存 
        浏览器会查看本地硬盘的 hosts 文件,看看其中有没有和这个域名对应的规则,如果有的话就直接使用 hosts 文件里面的 ip 地址。
     路由器缓存
        如果系统缓存中也找不到,那么查询请求就会发向路由器,路由器一般会有自己的DNS缓存。
     ISP DNS 缓存(域名商的域名解析系统)
    如果在hosts文件中也没有找到对应的条目,浏览器就会发起一个DNS的系统调用,就会向
    本地配置的首选DNS服务器(一般是运营商提供的)发起域名解析请求,(通过的是UDP协议向DNS的53端口发起请求,这个请求是递归的请求,也就是运营商的DNS服务器必须得提供给我们该域名的IP地址),运营商的DNS服务器首先查找自身的缓存,找到对应的条目,且没有过期,则解析成功。
     如果都没有找到,则运营商的DNS代浏览器发起迭代DNS解析请求,查找域名对应 IP(见图)

3. 通过IP向服务器发起TCP连接(3次握手)

      拿到域名对应的IP地址之后,浏览器会以一个随机的端口(1024~65535)向服务器(Niginx, Apache等)的WEB程序80端口/8080端口(HTTP协议使用80端口/8080端口,HTTPS使用443端口)发起TCP连接请求。连接请求到达服务器端后,通过网卡,进入到内核的TCP/IP协议栈,还有可能要经过防火墙,进入WEB程序,最终建立TCP/IP连接。
  

 (百度的图)

4. 服务器接受到请求

    如果有nginx反向代理服务器 用户发送的请求并不是直接进入到应用服务器,而是会先到达反向代理服务器,然后由反向代理服务器根据实际情况将用户请求传递给某个应用服务器

5. 服务器处理请求返回相应文件(包含四次挥手)

服务器状态码 https://www.cnblogs.com/jinzhenzong/p/11753752.html

6、页面渲染

  解析HTML文件,创建DOM树(解析执行JS脚本时,会停止解析后续HTML)
    解析CSS,形成CSS对象模型
    将CSS与DOM合并,构建渲染树
    布局渲染树
    绘制渲染树(可能触发回流和重绘)

 结合xmind看下:

 7、页面加载完毕

分享外的知识:DNS劫持
  DNS劫持又称域名劫持,是指在劫持的网络范围内拦截域名解析的请求,分析请求的域名,把审查范围以外的请求放行,否则返回假的IP地址或者什么都不做使请求失去响应,其效果就是对特定的网络不能反应或访问的是假网址
原文地址:https://www.cnblogs.com/jinzhenzong/p/11753559.html