• 当我输入url之后发生了什么?


    一、DNS域名解析
    二、建立tcp连接
    三、发送一个http请求
    四、服务器处理相关请求
    五、返回响应的结果
    六、关闭tcp连接
    七、浏览器解析HTML
    八、浏览器进行布局渲染

    1. DNS域名解析

        在浏览器输入网址,其实就是要向服务器请求我们想要的页面内容,所以浏览器首先要确认的是域名所对应的服务器在哪里。

        将域名解析成对应的服务器IP地址这项工作,是由DNS服务器来完成的。

        客户端收到域名地址后,首先去找本地的hosts文件,检查在该文件中是否有相应的域名、IP对应关系,如果有,则向其IP地址发送请求,如果没有,再去找DNS服务器。

      2. 建立TCP连接

        三次握手:请求连接(SYN数据包),确认信息(SYN/ACK数据包),握手结束(ACK数据包)

      3. 发起http请求

        与服务器建立了连接后,就可以向服务器发起请求了。

      4. 服务器处理请求

        服务器端收到请求后的由web服务器(准确说应该是http服务器)处理请求。

        web服务器解析用户请求,知道了需要调度哪些资源文件,再通过相应的这些资源文件处理用户请求和参数,并调用数据库信息,最后将结果通过web服务器返回给浏览器客户端。

      5. 返回响应结果

        在http里,有请求就会有响应,哪怕是错误信息。

        在响应结果中都会有个一个http状态码,如200、301、404、500等。通过这个状态码可以知道服务器端的处理是否正常,并能了解具体的错误。

      6. 关闭TCP连接

        为了避免服务器与客户端双方的资源占用和损耗,当双方没有请求或响应传递时,任意一方都可以发起关闭请求。四次挥手。

      7. 浏览器解析HTML

        浏览器需要加载解析的不仅仅是HTML,还包括CSS、JS。以及还要加载图片、视频等其他媒体资源。

        浏览器通过解析HTML,生成DOM树,解析CSS,生成CSS规则树,然后通过DOM树和CSS规则树生成渲染树。

        渲染树与DOM树不同,渲染树中并没有head、display为none等不必显示的节点。

      8. 浏览器布局渲染

        根据渲染树布局,计算CSS样式,即每个节点在页面中的大小和位置等几何信息。

        HTML默认是流式布局的,CSS和js会打破这种布局,改变DOM的外观样式以及大小和位置。

  • 相关阅读:
    OpenCASCADE DataExchange DWG
    OpenCASCADE Conic to BSpline Curves-Circle
    OpenCASCADE Conic to BSpline Curves-Hyperbola
    Java中通过命令行启动jar包时指定编码
    VSCode来绘制流程图真是得心应手
    若依微服务版新建业务模块后提示找不到mapper的解决方法
    若依微服务版怎样实现不同业务模块下实体和mapper互相调用
    GitLab怎样实现新建仓库并允许开发者推送代码实现协同开发
    RuoYi-Process多模块activity工作流项目快速搭建
    若依微服务版手把手教你本地搭建环境并运行前后端项目
  • 原文地址:https://www.cnblogs.com/wanghuanl/p/16198814.html
Copyright © 2020-2023  润新知