一次完整的HTTP服务过程(再整理)

重温一下计算机网络的重要知识

例如:当我们在web浏览器的地址栏中输入:www.baidu.com并回车,具体发生了什么。

  • 第一层理解
  1. 对网址进行DNS域名解析,得到对应的公网IP地址
  2. 根据这个IP,找到对应的服务器,发起TCP的三次握手
  3. 建立TCP连接后发起HTTP请求
  4. 服务器响应HTTP请求,浏览器得到html代码
  5. 浏览器解析html代码,并请求html代码中的资源(比如js、css、图片等)注意:要得到html代码,才能去找到这些资源
  6. 浏览器对页面进行渲染呈现给用户
  7. 服务器关闭TCP连接
  • 过程再推演 依旧是1.0版本:
    (1)url(www.baidu.com) => ip(比如:192.168.1.2)
    (2)拿到ip去跟服务器建立tcp连接
    (3)建立tcp连接之后发起http请求(tcp是比http更底层的一个连接协议)
    (4)http连接建立之后,服务器把html发送给浏览器
    (5)浏览器解析html(js文件,css文件,图片 下载 运行)
    (6)浏览器渲染html
    (7)服务器关闭连接

  • 进阶2.0:
    (1)DNS如何找到域名:采用递归查询的方式 先去DNS缓存里找 ->缓存中没有就去根域名服务器里找->根域名服务器又会寻找下一级
    (2)为什么HTTP协议要基于TCP来实现:TCP是一个端到端的可靠的面向连接的协议,HTTP(位于应用层)基于TCP(位于传输层)协议不用担心数据传输可能会发生的各种问题(比如发生错误之后TCP支持重传)
    (3)浏览器是如何对页面进行渲染的:
    ①解析html文件构成DOM树
    ②解析css文件生成css渲染树,html生成的dom树和css生成的css渲染树一起构成一颗html渲染树
    ③一边解析,一边渲染。
    ④js单线程运行,js有可能修改DOM结构,意味着js执行完成前,后续所有资源的下载是没有必要的。

  • 3.0版本
    (1)url =>ip
    ①从浏览器自身域名缓存中查找
    ②从操作系统的域名缓存中查找
    ③从hosts文件(记录ip和域名之间的映射关系的一个文件)中查找(这一步我们可以进行人为干预,通过更改hosts文件)
    ④从域名服务器中查找
    (2)web这边是如何渲染的:
    reflow(回流)和repain(重绘)
    在这里插入图片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章