创建时间:2016-09-05 00:07:17
原文地址:http://fex.baidu.com/blog/2014/05/what-happen/
阅读请出门左转 原文地址
总结
这一篇文章写的知识基本都是很底层的东西,权当增长见识, 因为单纯的前端,这里的内容就需要花费很大的精力, 才有可能『搞懂』。
【这两天偷懒,没有自己自己去整理出文章,转载一些优秀的文章,放到这里】
目录:
背景
第一个问题:从输入 URL 到浏览器接收的过程中发生了什么事情?
- 从触屏到 CPU
- CPU 内部的处理
- 从 CPU 到操作系统内核
- 从操作系统 GUI 到浏览器
- 扩展学习
第二个问题:浏览器如何向网卡发送数据?
- 从浏览器到浏览器内核
- HTTP 请求的发送
- DNS 查询
- 通过 Socket 发送数据
- Socket 在内核中的实现
- 底层网络协议的具体例子
- 扩展学习
第三个问题:数据如何从本机网卡发送到服务器?
- 从内核到网络适配器(Network Interface Card)
- 连接 Wi-Fi 路由
- 运营商网络内的路由
- 主干网间的传输
- IDC 内网
- 服务器 CPU
- 扩展学习
第四个问题:服务器接收到数据后会进行哪些处理?
- 负载均衡
- LVS
- 反向代理
- Web Server 中的处理
- 进入后端语言
- Web 框架(Framework)
- 读取数据
- 扩展学习
第五个问题:服务器返回数据后浏览器如何处理?
- 从 01 到字符
- 外链资源的加载
- JavaScript 的执行
- 从字符到图片
- 跨平台 2D 绘制库
- GPU 合成
- 扩展学习
第六个问题:浏览器如何将页面展现出来?
- Framebuffer
- 从内存到 LCD
- LCD 显示
- 扩展学习
本文所忽略的内容
为了编写方便,前面的介绍中将很多底层细节实现忽略了,比如:
内存相关
- 堆,这里的分配策略有很多,比如 malloc 的实现
- 栈,函数调用,已经有很多优秀的文章或书籍介绍了
- 内存映射,动态库加载等
- 队列几乎无处不在,但这些细节和原理没太大关系
各种缓存
- CPU 的缓存、操作系统的缓存、HTTP 缓存、后端缓存等等
各种监控
- 很多日志会保存下来以便后续分析