文章目录

  • 1.DNS域名解析
  • 2.建立TCP连接
  • 3.发送HTTP请求
  • 4.接受响应结果
  • 5.浏览器解析html
  • 6.浏览器布局渲染

这张图非常好,大家可以保存下来,以便快速回顾


1.DNS域名解析

  • 在浏览器DNS缓存中搜索
  • 在操作系统DNS缓存中搜索
  • 读取系统hosts文件,查找其中是否有对应的ip
  • 向本地配置的首选DNS服务器发起域名解析请求

2.建立TCP连接

为了准确地传输数据,TCP协议采用了三次握手策略。发送端首先发送一个SYN(synchronize)标志的数据包给接收方,接收方收到后,回传一个带有SYN/ACK(acknowledegment)标志的数据包以示传达确认信息。最后发送方再回传一个带ACK标志的数据包,代表握手结束。在这过程中若出现问题中断,TCP会再次发送相同的数据包。

TCP是一个端到端的可靠的面向连接的协议,所以HTTP基于传输层TCP协议不用担心数据的传输的各种问题。


3.发送HTTP请求

请求方法:

  • GET:获取资源
  • POST:传输实体主题
  • HEAD:获取报文首部
  • PUT:传输文件
  • DELETE:删除文件
  • OPTIONS:询问支持的方法
  • TRACE:追踪路径

4.接受响应结果

服务器返回的状态码:

  • 1**:信息性状态码
  • 2**:成功状态码
    200:OK 请求正常处理
    204:No Content请求处理成功,但没有资源可返回
    206:Partial Content对资源的某一部分的请求
  • 3**:重定向状态码
    301:Moved Permanently 永久重定向
    302:Found 临时性重定向
    304:Not Modified 缓存中读取
  • 4**:客户端错误状态码
    400:Bad Request 请求报文中存在语法错误
    401:Unauthorized需要有通过Http认证的认证信息
    403:Forbidden访问被拒绝
    404:Not Found无法找到请求资源
  • 5**:服务器错误状态码
    500:Internal Server Error 服务器端在执行时发生错误
    503:Service Unavailable 服务器处于超负载或者正在进行停机维护

5.浏览器解析html

浏览器按顺序解析html文件,构建DOM树,在解析到外部的css和js文件时,向服务器发起请求下载资源,若是下载css文件,则解析器会在下载的同时继续解析后面的html来构建DOM树,则在下载js文件和执行它时,解析器会停止对html的解析。这便出现了js阻塞问题。

浏览器解析css,形成CSSOM树,当DOM树构建完成后,浏览器引擎通过DOM树和CSSOM树构造出渲染树。渲染树中包含可视节点的样式信息(不可见节点将不会被添加到渲染树中,如:head元素和display值为none的元素)

这个过程是逐步完成的,为了更好的用户体验,渲染引擎将会尽可能早的将内容呈现到屏幕上,并不会等到所有的html都解析完成之后再去构建和布局render树。它是解析完一部分内容就显示一部分内容,同时,可能还在通过网络下载其余内容。


6.浏览器布局渲染

  • 布局:通过计算得到每个渲染对象在可视区域中的具体位置信息(大小和位置),这是一个递归的过程。
  • 绘制:将计算好的每个像素点信息绘制在屏幕上

计算机网络之在浏览器输入“www.xxx.com”后都发生了什么?相关推荐

  1. 在浏览器中输入URL并回车后都发生了什么?

    1.解析URL ________________________________________________________________________ 关于URL: URL(Universa ...

  2. 浏览器输入域名网址访问后的过程详解

    我们从系统网络的角度分析在浏览器输入域名网址访问后的过程: 1.以富贵论坛为例,客户端浏览器通过DNS解析到https://www.fgba.net/,IP地址是202.108.22.5,通过这个IP ...

  3. 如何解决每次输入push origin master后都需要我们再输入一次GitHub的密码

    由于每次输入push origin master都需要我们再输入一次GitHub的密码很麻烦,可以进行命令如下进行保存: 方式一:设置记住密码(默认15分钟) git config --global ...

  4. 【计算机网络漫游】浏览器输入一个URL后发生了什么

    浏览器输入一个URL之后发生了什么?这个问题一直是一个非常经典的问题,透过这个问题,我们可以从数据包的角度,自顶向下 (也可以自底向上) 地理解计算机网络各层发生的事情,同时也是一个面试的热点问题.但 ...

  5. 浏览器输入一个URL地址后发生的事情

    在浏览器中输入一个URL至页面呈现,发生的事情? 1.域名解析:浏览器获得URL地址,向操作系统请求该URL对应的IP地址,操作系统查询DNS(首先查询本地HOST文件,没有则查询网络)获得对应的IP ...

  6. 当你在浏览器输入www.xxx.com的时候会发生什么?

    最近记录了一些java中常踩的坑.设计思路和小知识点,大家可以看看 详细记录一次接入xxl-job的踩坑路径 30s快速解决循环依赖 idea中一个小小的操作竟能解决如此多的问题 docker中的服务 ...

  7. 详细介绍一下浏览器输入www.baidu.com后会发生什么

    (1)    客户端浏览器通过DNS解析到www.baidu.com的IP地址,通过这个IP地址找到客户端到服务器的路径.客户端浏览器发起一个HTTP会话到IP地址,然后通过tcp进行封装数据包,输入 ...

  8. 浏览器输入www.baidu.com之后,发生了什么?

    1.将域名www.baidu.com解析为IP地址: 解析IP地址的过程依次经过了:浏览器缓存.系统缓存.hosts文件.路由器缓存.递归搜索根域名服务器. 浏览器缓存: 每个浏览器都会有一个DNS缓 ...

  9. java基础巩固-宇宙第一AiYWM:为了维持生计,四大基础之计网_Part_2(在浏览器中输入www.baidu.com后执行的全部过程、DNS的域名<->IP地址、OS协议栈的样子、CDN)整起

    可以说计算机网络,就是玩那几层中的那些协议们,本层玩,本层玩完了跨层玩,跨层玩,跨层玩完了本层玩- PART1:在浏览器中输入网站网址后执行的全部过程? 0.服务器在 80 端口等待客户的请求. se ...

最新文章

  1. sqlserver中计算某个特殊字符在字符串中出现的位置
  2. Spring boot的Webjars
  3. myeclipse + maven项目创建
  4. Graphic Device
  5. 通过javaMail API 发送邮件
  6. [Leetcode]147. Insertion Sort List
  7. elf section类型_在 498 行极小 OS 上跑标准 ELF 程序
  8. Python学习 Part6:错误和异常
  9. [Django]SE项目回忆录(二)-注册/登录功能的实现及细节
  10. 查看zookeeper版本
  11. 【51nod - 1050】循环数组最大子段和(dp)
  12. ASP.NET jQuery 食谱15 (通过控件CustomValidator验证CheckBoxList)
  13. Parrot 发布新版本——基于Debian的Linux 发行版
  14. IK Analyzer 和 lucene结合使用
  15. 肇庆学院计算机类宿舍哪里,肇庆学院宿舍怎么样 住宿条件好不好
  16. 金山WPS c++ 二面面经
  17. Compose 实现下拉刷新和上拉加载
  18. Jumping NLP Curves: A review of NLP research (翻译)
  19. Windows Mobil中解决日期显示不正常的方法
  20. 设计一款理财产品并发布推广

热门文章

  1. vr分类及其常见类型
  2. 信息化 不只是技术 某公司局域网改造实例 转
  3. 01入门及简单应用-ReentrantReadWriteLock原理-AQS-并发编程(Java)
  4. 01.MySQL数据库初识
  5. 怎样在ZBrush中快速绘制人体躯干
  6. vs2019添加文件夹到到现有项目
  7. CUDA是什么-CUDA简介
  8. 国家著作权: DNA 计算公式, 肽展定理公式与 变嘧啶 推导.
  9. GEE入门【4】| 矢量数据FeatureCollection(行政区划分)
  10. 【预测】中国2015年将陷入20年来最严重的失业潮和减薪潮!