转到浏览器中输入URL给你一个页面后,。有些事情,你每天都在使用,学的是计算机网络知道是怎么回事。DNS解析然后页面的回馈,只是要讲好还是有难度。

之前fex团队的nwind专门写过这个问题的博客:

http://fex.baidu.com/blog/2014/05/what-happen/

厉害的地方是将整个计算机体系和硬件都涉及进来,非常广非常深,太强大了。

然后找到一个StackOverFlow的答案:

what happens when you type in a URL in browser

原链接

http://stackoverflow.com/questions/2092527/what-happens-when-you-type-in-a-url-in-browser

Piskvor的回答:

作一个简单粗暴的描写叙述。如果是简单的HTTP请求,IPV4,没有代理。

1.浏览器查询缓存,假设缓存存在跳到第9步。

2.浏览器询问操作系统server的IP地址。

3.操作系统做DNS查询,返回IP地址给浏览器。

4.浏览器打开对server的TCP连接(假设是HTTPS协议的话会更复杂)。

5.浏览器通过TCP连接发送HTTP请求。

6.浏览器接收HTTP响应而且可能关掉TCP连接。或者是又一次使用连接处理新请求。

7.浏览器检查HTTP响应是否为一个重定向(3xx 结果状态码 )。一个验证请求(401),错误(4xx 5xx)等等。这些都是不同响应的正常处理(2xx).

8.假设响应可缓存,将存入缓存。

9.浏览器解码响应(比如:假设它是gzziped压缩)。

10.浏览器决定怎样处理这些响应(比如。它是HTML页面,一张图片,一段音乐)。

11.浏览器展现响应,对未知类型还会弹出下载对话框。

这里边的每一个步骤都能够长篇大论一番,当然还有非常多东西与这些步骤平行发生。

(完)

RIO,IT 舆论锚告诉我:“Follow your heart”。 我找到了。

输入 URL 到页面完成加载过程中的所有发生的事情?的更多相关文章

  1. css3实现loading效果--当页面加载过程中显示Loading的进度条,全部加载完成之后进度条消失

    一个页面等图片资源全部加载完成,会需要很长时间,用户体验会很差,所以我们需要loading来掩盖这个漫长的过程! emmm,定时器?写个定时器还要清除,万一造成内存泄露?定时器之间还会互相影响,呼呼呼 ...

  2. 浏览器从输入url 到页面展示完成响应过程

    用户从输入 url 到浏览器响应,呈现给用户的具体过程 1.用户在输入栏输入地址 (1) 如果有 beforeunload 事件会先执行判断继续还是跳出操作 (2) 浏览器进程识别是 地址还是关键字检 ...

  3. DOM加载过程中ready和load的区别

    在浏览器地址栏输入URL地址,浏览器开始加载页面时,有以下几个过程 1.浏览器开始解析HTML文档 2. 浏览器遇到HTML文档中的<script>元素以及CSS样式文件,并且没有asyn ...

  4. WPF 大数据加载过程中的等待效果——圆圈转动

    大家肯定遇到过或将要遇到加载大数据的时候,如果出现长时间的空白等待,一般人的概念会是:难道卡死了? 作为一个懂技术的挨踢技术,即使你明知道数据量太大正在加载,但是假如看不到任何动静,自己觉得还是一种很 ...

  5. iOS学习之视图加载过程中会触发的方法(loadView/viewDidLoad/didReceiveMemoryWarning)

    1.loadView 这是视图控制器用来加载根视图的方法; 如果需要将自定义的视图作为根视图,则不需要调用父类对该方法的实现([super loadView]);直接将自定义视图通过self.view ...

  6. spring加载过程中jar包加载不了,解决方法

    当我们在开发spring项目时,一般会将jar包放到webInf/lib下,这样是myeclipse自动将jar包加载到tomcat中webapps下,但是当我们新建一个lib文件夹的情况下,我们ad ...

  7. 在程序加载过程中显示ProgressDialog 对话框

    private ProgressDialog mProgressDlg = null; @Override protected void onCreate(Bundle savedInstanceSt ...

  8. linux 内核驱动加载过程中 向文件系统中的文件进行读写操作

    utils.h 文件: #ifndef __UTILS_H__ #define __UTILS_H__ void a2f(const char *s, ...); #endif utils.c 文件: ...

  9. 从输入 URL 到页面加载完的过程中都发生了什么---优化

    这篇文章是转载自:安度博客,http://www.itbbu.com/1490.html 在很多地方看到,感觉不错,理清了自己之前的一些思路,特转过来留作记录. 一个HTTP请求的过程 为了简化我们先 ...

随机推荐

  1. Asp.NET MVC3 使用 SignalR 实现推

    一,简单介绍 Signal 是微软支持的一个执行在 Dot NET 平台上的 html websocket 框架. 它出现的主要目的是实现server主动推送(Push)消息到client页面,这样c ...

  2. uva10067 Playing with Wheels 【建图+最短路】

    题目:option=com_onlinejudge&Itemid=8&page=show_problem&problem=1008">uva10067 Play ...

  3. HDOJ 3480 Division

    斜率优化DP. ... 对数组排序后.dp[i][j]表示对前j个物品分i段的最少代价,dp[i][j]= min{ dp[i-1][k]+(a[k+1]-a[j])^2 }复杂度m*n^2     ...

  4. python中and和or的使用方法

    今天看了一个源代码,甚是对python不解,于是查了下资料,只是纠正下网上的老兄的解释 python 中的and从右到左计算表达式.若全部值均为真,则返回最后一个值.若存在假,返回第一个假值. or是 ...

  5. 离robots.txt启动网络爬虫之旅

    要成为一个网络爬虫或搜索引擎(在这里,共同蜘蛛)它不会陌生,在搜索引擎爬虫的第一个文件或者访问该网站上浏览robots.txt该.robots.txt文件讲述了蜘蛛server哪些文件要观看正在. 当 ...

  6. HTTP必知必会(转)

    HTTP协议作为网络传输的基本协议,有着广泛的应用.HTTP协议的完整内容很多,但是其核心知识却又简单精炼.学习者应该掌握其基本结构,并且能够举一反三.这篇文章所列的,就是在实际开发中必须知道必须掌握 ...

  7. Git提交代码的处理流程(转)

    Jerry 工作在wchar_support分支.他改变了名称的功能和测试后,他提交他的变化. [jerry@CentOS src]$ git branch master * wchar_suppor ...

  8. .NET中Redis安装部署及使用方法简介

    一Redis服务端以服务方式运行 修改端口压缩文件中配置的是6488 修改密码 修改库的数量 工具配置安装后如下图 二Redis服务端以控制台方式运行 第一步配置本地服务 第二部安装和配置客户端 三C ...

  9. WIN2003+IIS6+FastCGI+PHP5.4.30的安装配置

    原文:WIN2003+IIS6+FastCGI+PHP5.4.30的安装配置 说明:PHP5.5已不支持win2003了,Win2003最高能安装PHP5.4.30. 安装好系统:并且安装好IIS6. ...

  10. 采用tcpdump攫Android网络数据包

    1 空灵的原理 tcpdump(需Root用户执行)拦截和显示发送或收到过网络连接到该机器的TCP/IP和其它数据包.简单说就监控手机进出网络数据. 2 方法优劣 2.1长处 1.手机数据包无遗漏 2 ...