从输入URL到页面加载完成的过程中都发生了什么事情?--这是一个经典的面试题;

主要是关于计算机网络方面的知识基础,对于非科班计算机自学web开发的同学可能理解起来就很困难。

StackOverFlow上有一个简要回答:

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

Piskvor的回答:
作一个简单粗暴的描述,假设是简单的HTTP请求,IPV4,没有代理。
1.浏览器查询缓存,如果缓存存在跳到第9步。 2.浏览器询问操作系统服务器的IP地址。 3.操作系统做DNS查询,返回IP地址给浏览器。 4.浏览器打开对服务器的TCP连接(如果是HTTPS协议的话会更复杂)。 5.浏览器通过TCP连接发送HTTP请求。 6.浏览器接收HTTP响应并且可能关掉TCP连接,或者是重新使用连接处理新请求。 7.浏览器检查HTTP响应是否为一个重定向(3xx 结果状态码 ),一个验证请求(401),错误(4xx 5xx)等等,这些都是不同响应的正常处理(2xx). 8.如果响应可缓存,将存入缓存。 9.浏览器解码响应(例如:如果它是gzziped压缩)。 10.浏览器决定如何处理这些响应(例如,它是HTML页面,一张图片,一段音乐)。 11.浏览器展现响应,对未知类型还会弹出下载对话框。 这里边的每个步骤都可以长篇大论一番,当然还有很多东西与这些步骤平行发生。

主要要掌握计算机与网络设备之间通信

Web使用一种HTTP(HyperText TransFer Protocol,超文本协议)的协议作为规范,完成从客户端到服务器等一系列运作流程。可见web是建立在HTTP协议上通信的。

通常我们使用的网络(包括互联网)是在TCP/IP协议族的基础上运作的,而HTTP属于它内部的一个子集。

计算机与网络设备之间通信的协议总称为TCP/IP.该协议最重要的一点就是分层

利用TCP/IP协议族进行通信时,会通过分层顺序与对方进行通信。

与HTTP关系紧密的协议有:

DNS:负责域名解析

TCP:确保可靠性,会数据分割

IP:负责传输

传输过程图如下:

深入理解整个计算机体系和硬件的话,FEX团队的nwind专门有对该问题的文章:

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

该回答真的非常有深度和广度。值得学习。

Web访问原理-从输入URL到页面加载完成的过程中都发生了什么事情?的更多相关文章

  1. 从输入 URL 到页面加载完成的过程中都发生了什么事情?

    这个问题是老生常谈的问题啦,虽然说到处百度都有的答案,还是希望自己能总结一下. 如今有很多答案,都是从硬件开始讲起,比如键盘的响应或者触屏的响应,然后CPU处理到OS的内核等等.这里不作为重点来讲,要 ...

  2. 【转】 从输入 URL 到页面加载完成的过程中都发生了什么事情?

    该问题总结 一. 往浏览器输入URL后给你一个页面,你天天在使用的东西,学过计算机网络的知道是怎么回事,就DNS解析然后页面的回馈,不过要讲好还是有难度. 之前fex团队的nwind专门写过这个问题的 ...

  3. [转]从输入url到页面加载完成的过程中都发生了什么事情

    第一个问题:从输入 URL 到浏览器接收的过程中发生了什么事情? 从触屏到 CPU 首先是「输入 URL」,大部分人的第一反应会是键盘,不过为了与时俱进,这里将介绍触摸屏设备的交互. 触摸屏一种传感器 ...

  4. 从输入URL到页面加载完成的过程中都发生了什么事情?

    为了便于理解,我将整个过程分为了六个问题来展开. 第一个问题:从输入 URL 到浏览器接收的过程中发生了什么事情? 从触屏到 CPU 首先是「输入 URL」,大部分人的第一反应会是键盘,不过为了与时俱 ...

  5. 从输入 URL 到页面加载完的过程中都发生了什么事情?

    1) 把URL分割成几个部分:协议.网络地址.资源路径.其中网络地址指示该连接网络上哪一台计算机,可以是域名或者IP地址,可以包括端口号:协议是从该计 算机获取资源的方式,常见的是HTTP.FTP,不 ...

  6. 面试经典——从输入 URL 到页面加载完的过程中都发生了什么事情?

    想要更加了解http协议,猛戳这里 1)把URL分割成几个部分:协议.网络地址.资源路径.其中网络地址指示该连接网络上哪一台计算机,可以是域名或者IP地址,可以包括端口号:协议是从该计算机获取资源的方 ...

  7. 一个网页从输入URL到页面加载完成的过程中都发生了什么事情?

    这是一个前端的经典面试题,很多大公司面试时都会被问及,涉及的面也是非常多. 一般会经历以下几个过程: 1.首先,在浏览器地址栏中输入url 2.浏览器先查看浏览器缓存-系统缓存-路由器缓存,如果缓存中 ...

  8. 转载:从输入 URL 到页面加载完的过程中都发生了什么事情?

    原帖地址:http://www.guokr.com/question/554991/ 1)把URL分割成几个部分:协议.网络地址.资源路径.其中网络地址指示该连接网络上哪一台计算机,可以是域名或者IP ...

  9. 一个页面从输入 URL 到页面加载完的过程中都发生了什么事情?

    过程概述 浏览器查找域名对应的 IP 地址: 浏览器根据 IP 地址与服务器建立 socket 连接: 浏览器与服务器通信: 浏览器请求,服务器处理请求: 浏览器与服务器断开连接. 以下为详细解析: ...

随机推荐

  1. 玩转Java多线程(乒乓球比赛)

    转载请标明博客的地址 本人博客和github账号,如果对你有帮助请在本人github项目AioSocket上点个star,激励作者对社区贡献 个人博客:https://www.cnblogs.com/ ...

  2. SpringBoot(17)---SpringBoot整合RocketMQ

    SpringBoot整合RocketMQ 上篇博客讲解了服务器集群部署RocketMQ 博客地址:RocketMQ(2)---Docker部署RocketMQ集群 这篇在上篇搭建好的基础上,将Spri ...

  3. 每周分享五个 PyCharm 使用技巧(五)

    文章首发于 微信公众号:Python编程时光 大家好,这是本系列 PyCharm 的高效使用技巧的第五篇.按照惯例,本次还是分享 5 个. 本系列前四篇如下,若还没看的,你可以点击查阅 21. 随处折 ...

  4. Scala 学习之路(六)—— 常用集合类型之 List & Set

    一.List字面量 List是Scala中非常重要的一个数据结构,其与Array(数组)非常类似,但是List是不可变的,和Java中的List一样,其底层实现是链表. scala> val l ...

  5. 【JAVA】POI生成EXCEL图表(柱状图、折线等)

    1.使用excel工具自带的图形工具创建一个图: 2.绑定数据区域: 3.数据区域绑定完成,我们要做的就是将数据写入到数据区域中: 4.标记 5.POI 引入包 <!-- https://mvn ...

  6. 【需要重新整理】【mongoDB】mongoDB初见笔记

    A安装(windows版): 1.官网下载安装文件 2.解压 3.配置环境变量 4.win+r cmd>打开控制台配置仓库路径 5.mongod --dbpath=d:/bigMongo//启动 ...

  7. AJAX异步提交form表单

    记录: 网上有说怎么做,没说怎么接收,打印了一下数据,记录一下取值: 比如说有如下form: <form id="form1" name="form1" ...

  8. Thread中的start()方法和自己定义的run()方法有什么区别

    在讲这个问题之前引入一下多线程的小知识吧 /*/windows系统中的应用程序来做说明 ,例如:扫雷程序,游戏进行的同时,可以同时记录分数,计算时间等. 其实一个应用程序就是一个可执行文件,中包含了一 ...

  9. nginx反向代理中神奇的斜线

    nginx反向代理中神奇的斜线 在进行nginx反向代理配置的时候,location和proxy_pass中的斜线会造成各种困扰,有时候多一个或少一个斜线,就会造成完全不同的结果,所以特地将locat ...

  10. 设计模式-解释器模式(Interpreter)

    解释器模式是行为型模式的一种.给定一个语言(如由abcdef六个字符组成的字符串集合),定义它的文法的一种表示(S::=abA*ef,A::=cd)并定义一个解释器,解释器使用该表示来解释语言中的句子 ...