“从浏览器输入 xxx 到跳转完成的过程发生了什么”,是一个常见的比较综合的面试题,以下是我查阅了一些资料后总结的,如有错误,还望批评指正。(以美团网为例)

1.在浏览器地址栏输入:meituan.com

2.通过DNS把meituan.com解析成IP地址,因为当前输入的地址中不含端口号,所以使用HTTP协议的默认端口号80,如果有端口号,则会使用用户输入的端口号。在解析过程中,DNS会首先通过缓存进行查找,依次按照浏览器缓存-操作系统缓存-路由器缓存-ISP DNS缓存的顺序。如果缓存中都没有记载相应的IP地址,那么DNS服务器将按照根域-顶级域-二级域-…的顺序进行递归查找,并返回查找结果。
3.浏览器向服务器发送HTTP请求
4.服务器返回一个永久重定向响应(code:301),即把meituan.com重定向成www.meituan.com
5.浏览器申请连接重定向地址
6.服务器响应请求,并开始向浏览器返回数据,如果资源路径不存在,那么会返回404错误
7.如果6中返回的是页面,根据页面的外链URL,再次进行获取,然后浏览器根据资源类型进行网页渲染,将网页展示给用户并响应用户的操作,在这个过程中,并不是要等整个页面渲染完成才展示出来的,而是同步的在进行。

最新文章

  1. KnockoutJS 3.X API 第七章 其他技术(6) 使用“fn”添加自定义函数
  2. Python 模块学习:os模块
  3. [官方作品] 关于ES4的设首页问题
  4. CyclicBarrier和CountDownLatch的差别
  5. [vijos1264]神秘的咒语(LCIS)
  6. Canvas tutorial
  7. 【转】Nginx系列(二)--模块化
  8. 设置Win10文件资源管理器默认打开“这台电脑”
  9. 白话C#:特性(转)
  10. Ribbon1: 在Office菜单中添加项目
  11. 定制化Azure站点Java运行环境(3)
  12. iframe 自适应高度、父子页面传值、回调
  13. Java8自定义函数式编程接口和便捷的引用类的构造器及方法
  14. 13、spark-submit
  15. Linux 学习记录 四(Bash 和 Shell scirpt).
  16. 怎么把html页面中共用的底部代码做成共享模块
  17. 表格行mouse经过时高亮显示
  18. TrID文件类型识别linux版
  19. vue里面引入jq的方法
  20. 分别用C和C++来实现一个链栈

热门文章

  1. LeetCode Find Duplicate File in System
  2. 利用DAC(Data-tier Application)实现数据库结构迁移
  3. LG2120 [ZJOI2007]仓库建设
  4. Oracle终极数据恢复,孰弱孰强(DUL vs AUL)
  5. linux 命令详解 sort
  6. A SQLiteConnection object for database '/data/data/.../databases/....db' was leaked!
  7. 转 : 配置 mysql-advanced-5.6.21-winx64 免安装版
  8. CAN总线概述
  9. Spring 循环依赖
  10. 在液晶屏里显示浮点数的方法 (sprintf 的妙用)