其实这个很多大神已经说的很多了。但是为了自己更好的理解,在自己所接触的层面上,重新对自己讲解一下。当然,这是站在一个前端开发者的角度上来看问题的。

说说一次HTTP完整事务的过程

  1. 输入URL

    浏览器从URL中解析出服务器的域名

  2. DNS服务器解析URL,查找IP。

    • 如果有端口号的话,将端口号也解析出来
    • 先从浏览器缓存中查找
    • 再从系统系统中查找
    • 再从路由器缓存中查找
    • 递归查找...
  3. 构建HTTP请求包(HTTP头,HTTP体)

  4. 传输层发送TCP连接

  5. 3次握手建立TCP连接成功后,发送TCP包

    • TCP包发送过程中的几个重要过程
    • 窗口滑动
    • 流量控制
    • 拥塞处理
  6. TCP包在网络层被封装成IP包

  7. IP包在数据链路层被封装成数据帧

  8. 数据帧在物理层被转为比特流

  9. 发送方这边就结束了, 接受方那变和这边差不多

  10. 操作系统将阻塞的进程(HTTP服务器进程)唤醒,并且建立自己的子进程,子进程开始处理请求,而自己调用block原语阻塞自己。

  11. 处理结束后,将找到的资源封装成HTTP响应包

  12. 发送给客户端, 发送成功后,关闭连接

  13. 客户端进行页面渲染

    • HTML解析器解析HTML,转换为DOM Tree
    • CSS解析器解析CSS,提取CSS Rules
    • 将HTML和CSS混合为一个attachment
    • attachment通过布局(layout)被转换为一个Render Tree
    • Render Tree通过绘制就显示页面了

参考链接

浏览器的工作原理

当在浏览器地址栏里输入URL后会发生什么事情的更多相关文章

  1. 在浏览器输入 URL 后会发生什么?超级详细介绍

    一个古老的面试问题:当你在浏览器中输入whosmall.com并且按下回车之后发生了什么? 不过我们不再局限于平常的回答,而是想办法回答地尽可能具体,不遗漏任何细节. 这将是一个协作的过程,所以深入挖 ...

  2. 浏览器输入url后发生的事情以及每步可以做的优化

    首先总结下输入url按下回车后的大致流程: 查询url的ip地址. 建立tcp连接,连接服务器. 浏览器发起http/https请求. 服务器响应浏览器的请求. 网页的解析与渲染. 下面分析每个过程 ...

  3. 听过N次还是不会之:浏览器输入url后到底经历了什么

    有没有这种场景:当你被问起某一项知识点时,你大脑里想起经常看到过这样的问题,可是具体是怎么样就是说不清楚. 好吧,我就是这样的,于是整理一下,实在记不住,以后找起来也方便. 当你在浏览器地址栏里输入一 ...

  4. 在地址栏里输入一个 URL后,按下 Enter 到这个页面呈现出来,中间会发生什么?

    这是一个面试高频的问题 在输入 URL 后,首先需要找到这个 URL 域名的服务器 IP,为了寻找这个 IP,浏览器首先会寻找缓存,查看缓存中是否有记录,缓存的查找记录为:浏览器缓存 ->系统缓 ...

  5. 在浏览器输入url后并回车发生了哪些过程

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

  6. 【转】浏览器中输入url后发生了什么

    原文地址:http://www.jianshu.com/p/c1dfc6caa520 在学习前端的过程中经常看到这样一个问题:当你在浏览器中输入url后发生了什么?下面是个人学习过程中的总结,供个人复 ...

  7. 输入url后浏览器干了些什么(详解)

    输入url后浏览器干了些什么(详解) DNS(Domain Name System, 域名系统) 解析 DNS解析的过程就是寻找哪台机器上有你真正需要的资源过程.但你在浏览器张红输入一个地址时,例如: ...

  8. 在浏览器中输入URL后,执行的全部过程。会用到哪些协议?(一次完整的HTTP请求过程)

    在浏览器中输入URL后,执行的全部过程.会用到哪些协议?(一次完整的HTTP请求过程) 整个流程如下: 域名解析 为了将消息从你的PC上传到服务器上,需要用到IP协议.ARP协议和OSPF协议. 发起 ...

  9. 用户输入URL后发生了什么,以及优化问题

    用户角度:1.打开浏览器2.输入URL3.按下回车4.浏览器呈现画面 当用户输入页面地址后,浏览器获得用户希望访问的地址,便向该站点服务器发起一系列的请求,这些请求不光包括对页面的请求,还包括对页面中 ...

随机推荐

  1. JAVA程序测试之Swing编程

    package swingtest; import java.awt.BorderLayout; import java.awt.event.ActionEvent; import java.awt. ...

  2. iOS开发~制作同时支持armv7,armv7s,arm64,i386,x86_64的静态库.a

    一.概要 平时项目开发中,可能使用第三方提供的静态库.a,如果.a提供方技术不成熟,使用的时候就会出现问题,例如: 在真机上编译报错:No architectures to compile for ( ...

  3. c#导入excel 绑定数据 repeat为例子

    先读取Excel文件并存到dataset public DataSet ExcelToDataTable(string filename, string strsheetname) { try { / ...

  4. java 四则混合运算 计算器

    public class Counter { /**用递归算法,把括号内的公式算出然后递归   * @param args   */ public static void calculator (St ...

  5. Transport (VMDB) error -44: Message

     关于点击电源按钮的时候出现了这情况Transport (VMDB) error -44: Message.   虚拟机有个服务没开.开始菜单--运行--services.msc 回车   找到VMw ...

  6. BZOJ 4085:[Sdoi2015]bigyration(SDOI 2015 round 2 Day 1)

    别人家的神选系列.Day2根本不能做QAQ 题目描述:给定两个字符串集合,一个长度为n,另一个为m,求有多少个数字对i,j,满足xi+yj能由一个(n+m)/2的字符串旋转拼接而成 我们枚举长度较长的 ...

  7. 记使用sed的一次坑

    sed做为linux下的三剑客,自然功能强大,但是如果使用不当,反而适得其反,今天就因为这个命令采了很深坑,分析一下原因,以谏后来者. 情景回顾: 项目中使用的一个python爬虫采用的是多线程并发爬 ...

  8. 使用JS实现手风琴效果

    想要实现简单的手风琴切换效果,需要使用JS实现,如下是使用javascript源码实现,后续会更新使用jQuery实现. 1. 先进行简单的布局:我们可以再ul下添加几个li实现html的简单布局,再 ...

  9. Java源码ExtJS 5 SpringMVC 4Hibernate 4通用后台管理开发框架

    需要源码,请加QQ:858-048-581 一.特色1.采用Spring MVC的静态加载缓存功能,在首页将Javascript文件.CSS文件和图片等静态资源文件加载进来放进内存,极大提高ExtJS ...

  10. UI设计需具备的几大素质

    近年来,IT产业对于高端技术人才需求加大,特别是北上广和知名企业对人才需求更为迫切,UI设计人员的正在接受UI培训的学员都赢认识到UI设计在未来要求将越来越高,交互设计越来越新颖也将对用户更加友好,兄 ...