题目描述:

当你在浏览器输入一个网址,比如http://www.taobao.com,按回车之后发生了什么?请从技术的角度描述,如浏览器、网络(UDP,TCP,HTTP等),以及服务器等各种参数与对象上由此引发的一系列活动。请尽可能的涉及到所有的关键技术点。

这道题目还是蛮有意思的,了解这个对于开发Web程序也是有一定的帮助的,另外问题本身太大了,可以回答的东西太多了,这里给出的答案也是处于不断整理过程中。

答案:答题角度有以下几个DNS域名查找,负载均衡,HTTP协议格式,HTTP下一层的TCP协议,服务器应该返回的各种网络的应答。

1、通过访问的域名找出其IP地址。DNS查找过程如下:

  • 浏览器缓存:浏览器会缓存DNS记录,并存放一段时间。
  • 系统缓存:如果浏览器缓存中没有找到需要的记录,浏览器会做一个系统调用。
  • 路由器缓存:接着前面的查询请求发向路由器,它一般会有自己的DNS缓存。
  • ISP DNS缓存:接下来要check的就是ISP缓存的DNS服务器,在这一般都能找到相应的缓存记录
  • 递归搜索:你的ISP的DNS服务器从根域名服务器开始进行递归搜索,从.com顶级域名服务器到叶节点服务器。

2、上述这种域名解析的方式似乎只能解析出一个ip,我们知道一般的大型网站都有好几个ip地址,这种问题如何解决?还好,有几种方法可以消除这个瓶颈:

  • 轮叫调度(round-robin DNS):是DNS查找时返回多个IP时的解决方案。举例来说,Facebook.com实际上就对应了四个IP地址。
  • 负载均衡:是以一个特定IP地址进行侦听并将网络请求转发到集群服务器上的硬件设备。一些大型的站点一般都会使用这种昂贵的高性能负载均衡
  • 地理DNS:根据用户所处的地理位置,通过把域名映射到多个不同的IP地址提高可扩展性。这样不同的服务器不能够更新同步状态,但映射静态内容的话非常好。
  • Anycast:是一个IP地址映射多个物理主机的路由技术。美中不足,Anycast与TCP协议适应的不是很好,所以很少应用在那些方案中。大多数DNS服务器使用Anycast来获得高效低延迟的DNS查找。

3、浏览器给Web服务器发送一个Http请求

这里可以回答的更详细一点:比如说http协议的格式,http请求的头,比如说发起一个Get类型请求。

4、服务器给浏览器响应一个301永久重定向响应

为什么要有这一步,原因之一是为了便于搜索引擎优化

5、浏览器跟中重定向地址

这个时候浏览器已经知道了正确的URL地址,于是重新发送一个Get请求,请求头中的URL为重定向之后的。

6、服务器处理请求

  • Web服务器软件:web服务器软件(IIS和Apatch)介绍到Http请求,然后确定执行什么请求处理来处理它。请求处理就是一个能够读懂请求并且能生成HTML来进行相应的程序
  • 请求处理:请求处理阅读请求及它的参数和cookies。它会读取也可能更新一些数据,并讲数据存储在服务器上。然后,需求处理会生成一个HTML响应。

7、服务器发回一个HTML响应

8、浏览器开始渲染这个HTML

9、浏览器发送获取嵌入在HTML中的资源对象请求

一些嵌入在html中的资源,比如说图片,js,css等等

10、浏览器发送异步(AJAX)请求

在web2.0时代,在页面渲染成功之后,浏览器依然可以跟服务器进行交互,方法就是通过这个异步请求AJAX

下面这个答案说的尽管跟这道题目关系不大,但是很有意思。所以还是给出来:

你打开了www.taobao.com,这时你的浏览器首先查询DNS服务器,将www.taobao.com转换成ip地址。不过首先你会发现,你在不同的地区或者不同的网络(电信,联通,移动)的情况下,转换后的ip地址很可能是不一样的,这首先涉及到负载均衡的第一步,通过DNS解析域名时将你的访问分配到不同的入口,同时尽可能保证你所访问的入口是所有入口中可能较快的一个。

你通过这个入口成功的访问了www.taobao.com的实际的入口ip地址。这时你产生了一个PV,即Page View,页面访问。每日每个网站的总PV量是形容一个网站规模的重要指标。淘宝网全网在平日(非促销期间)的PV大概是16-25亿之间。同时作为一个独立的用户,你这次访问淘宝网的所有页面,均算作一个UV(Unique Visitor用户访问)。

因为同一时刻访问www.taobao.com的人数过于巨大,所以即便是生成淘宝首页页面的服务器,也不可能仅有一台。仅用于生成www.taobao.com首页的服务器就有可能有成百上千台,那么你的一次访问时生成页面给你看的任务便会被分配给其中一台服务器完成。这个过程要保证公平公正(也就是说这成百上千台服务器每台负担的用户数要差不多),这一很复杂的过程是由几个系统配合完成,其中最关键的便是LVS,Linux Virtual Server,世界上最流行的负载均衡系统之一。

经过一系列复杂的逻辑运算和数据处理,用于这次给你看的淘宝网的首页的HTML内容便生成成功了,对Web前端稍微有点常识的童鞋都应该知道,下一步浏览器会去加载页面中用到的css,js,图片等样式,脚本和资源文件。但是可能相对较少的同学才会知道,你的浏览器在同一个域名下并发加载的资源数量是有限制的,例如ie6-7是两个,ie8是6个,chrome个版本不大一样,一般是4-6个。我刚刚看了一下,我访问的淘宝网首页需要加载126个资源,那么如此小的并发连接数自然会加载很久。所以前端开发人员往往会将上述的这些资源文件分布在好多个域名下,变相的绕过浏览器的这个限制,同时也为下文的CDN工作做准备。

据不可靠消息,在双十一当天高峰,淘宝的访问流量达到最巅峰达到871GB/S。这个数字意味着需要178万个4mb带宽的家庭带宽才能负担的起,也完全有能力拖垮一个中小城市的全部互联网带宽。那么显然,这些访问流量不可能集中在一起。并且大家都知道,不同地区不同网络(电信,联通等)之间互访会非常缓慢,但是你却发现很少发现淘宝网访问缓慢。这便是CDN,Content Delivery Network,即内容分发网络的作用。淘宝在全国各地建立了上百个CDN节点,利用一些手段保证你的访问的(这里主要指js、css、图片等)地方是离你最近的CDN节点,这样便保证了大流量分散已经在各地访问的加速。

这便出现了一个问题,那就是假如一个卖家发布了一个新宝贝,上传了几张新的宝贝图片,那么淘宝网如何保证全国各地的CDN节点中都会同步的存在这几张图片供用户使用呢?这里边就涉及到大量的内容分发与同步的相关技术。淘宝开发了分布式文件系统TFS来处理这类问题。

阿里巴巴笔试的一道综合题相关推荐

  1. 九月十月百度 迅雷 华为 阿里巴巴笔试面试六十题 第411 470题

    分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow 也欢迎大家转载本篇文章.分享知识,造福人民,实现我们中华民族伟大复兴! 九月十月 ...

  2. 搜狗2020秋招笔试的一道算法题

    搜狗2020秋招的一道算法题 有A,B,C三种样品,凑齐三个样品各一个就可以领取一个奖品.任意两个样品可兑换另一种样品,如AA可兑换一个B或一个C,AB可兑换一个C.输入ABC,问最多可以领取多少奖品 ...

  3. 阿里巴巴-笔试前的测验题:星球大战

    题目要求: 阿里笔试前的编程测验题,具体的题目要求很长,我已经给忘记了,大概意思就是,给你一个由0和1组成的矩阵,例如下面这个矩阵: maps = [[1, 1, 0, 1, 1, 0, 0],[1, ...

  4. 冒泡排序,swich语句,while循环...基础性的一道综合题初学者可以做一个简单的测试...

    这道题是没有什么太大的难度,但是是比较基础性的知识点的应用! 对学习OC有一定的帮助. 1. 创建一对文件Student.h   Student.m 2. 在Student.h中,定义一个Studen ...

  5. 阿里笔试的一道算法题

    题目:获取一个正整数数组的最优跳动方式,要求如下: 1)从数组中间的任意位置开始向右跳,每次跳动的步伐数不能超过该位置对应元素的值 2)在跳动次数最少的情况下计算每次跳动的步伐 以下是实现,采用jav ...

  6. 2013校园招聘-阿里巴巴-笔试真题

    阿里巴巴笔试回忆: 系统设计题: 大图导航系统: (1)现有大图1W张,像素:1024*4096.系统可以增加或者删除图片. (2)手机屏幕分辨率240*320.内存16M,手机本地存储256M.只能 ...

  7. 转:九月十月百度人搜,阿里巴巴,腾讯华为笔试面试八十题(第331-410题)

    分类: 05.MS 100' original 2012-09-13 12:38 108951人阅读 评论(346) 收藏 举报 目录(?)[+] 九月十月百度人搜,阿里巴巴,腾讯华为小米搜狗笔试面试 ...

  8. 九月十月百度人搜,阿里巴巴,腾讯华为小米搜狗笔试面试八十题(10.29)

    文章出处:http://blog.csdn.net/v_july_v/article/details/7974418 九月十月百度人搜,阿里巴巴,腾讯华为小米搜狗笔试面试八十题 (参与算法&面 ...

  9. 九月十月百度人搜,阿里巴巴,腾讯华为小米搜狗笔试面试六十题 10 12

    http://blog.csdn.net/v_july_v/article/details/7974418 九月十月百度人搜,阿里巴巴,腾讯华为小米搜狗笔/面试五十题 「以下所有任何题目所给的点评里的 ...

最新文章

  1. 云计算应用还有不少的障碍尚需解决
  2. ORACLE 11G RAC ASM磁盘全部丢失后的恢复
  3. python学习内容大全_python学习内容大全
  4. python pp模块_python常用模块
  5. mysql 数据库 向上取整_PHP取整,四舍五入取整、向上取整、向下取整、小数截取...
  6. Search in Rotated Sorted Array
  7. 大数据产业目前面临哪些问题
  8. Android里面的各种广播
  9. LINUX访问WINDOWS网络共享目录
  10. 自动阅卷系统/自动阅卷机/网上阅卷
  11. 极大似然估计(Maximum likelihood estimation)
  12. 安装mysql中error nr.1045_windows10安装mysql提示error Nr.1045的解决方法
  13. android游戏地图编辑器
  14. android开发论坛!关于Android开发的面试经验总结,含爱奇艺,小米,腾讯,阿里
  15. LOGO创意-IT行业-随记
  16. python Pygame库介绍和使用,基本游戏开发
  17. 鸿蒙系统会不会吸收linux,鸿蒙系统是不是别人不给它适配?
  18. 请教知网检索返回网址的问题
  19. HP惠普墨盒(817.816)灌墨后计数器清零方法
  20. 计算机教师格言座右铭,教师人生格言座右铭

热门文章

  1. 2022-3-28 Leetcode 01.三合一
  2. C语言:三种常用基本结构
  3. 2022-1-25 Leetcode 884.两句话中的不常见单词
  4. CVPR2020 论文和代码合集
  5. KICAD创建电源符号
  6. 2021-05-18Leetcode96.不同的二叉搜索树
  7. 智慧社区:物联网应用解决方案
  8. python replace函数_Python replace()函数
  9. libdhnetsdk.so: 错误 ELF 类: ELFCLASS64
  10. python+django口腔牙诊所管理系统nodejs+vue+elementui