1.DNS域名解析:浏览器缓存、系统缓存、路由器、ISP的DNS服务器、根域名服务器。把域名转化成IP地址。
2.与IP地址对应的服务器建立TCP连接,经历三次握手:SYN,ACK、SYN,ACK
3.以get,post方式发送HTTP请求,get方式发送主机,用户代理,connection属性,cookie等
4.获得服务器的响应,显示页面

首先是查找浏览器缓存,浏览器会保存一段时间你之前访问过的一些网址的DNS信息,不同浏览器保存的时常不等。

如果没有找到对应的记录,这个时候浏览器会尝试调用系统缓存来继续查找这个网址的对应DNS信息。

如果还是没找到对应的IP,那么接着会发送一个请求到路由器上,然后路由器在自己的路由器缓存上查找记录,路由器一般也存有DNS信息。

如果还是没有,这个请求就会被发送到ISP(注:Internet Service Provider,互联网服务提供商,就是那些拉网线到你家里的运营商,中国电信中国移动什么的),ISP也会有相应的ISP DNS服务器,一听中国电信就知道这个DNS服务器的规模肯定不会小,所以基本上都能在这里找得到。题外话:会跑到这里进行查询是因为你没有改动过"网络中心"的"ipv4"的DNS地址,万恶的电信联通可以改动了这个DNS服务器,换句话说他们可以让你的浏览器跳转到他们设定的页面上,这也就是人尽皆知的DNS和HTTP劫持,ISP们还美名曰“免费推送服务”。强烈鄙视这种霸王行为。我们也可以自行修改DNS服务器来防止DNS被ISP污染。

如果还是没有的话, 你的ISP的DNS服务器会将请求发向根域名服务器进行搜索。根域名服务器就是面向全球的顶级DNS服务器,共有13台逻辑上的服务器,从A到M命名,真正的实体服务器则有几百台,分布于全球各大洲。所以这些服务器有真正完整的DNS数据库。如果到了这里还是找不到域名的对应信息,那只能说明一个问题:这个域名本来就不存在,它没有在网上正式注册过。或者卖域名的把它回收掉了(通常是因为欠费)。

这也就是为什么打开一个新页面会有点慢,因为本地没什么缓存,要这样递归地查询下去。

多说一句,例如"mp3.baidu.com",域名先是解析出这是个.com的域名,然后跑到管理.com域名的服务器上进行进一步查询,然后是.baidu,最后是mp3,

所以域名结构为:三级域名.二级域名.一级域名。

浏览器终于得到了IP以后,浏览器接着给这个IP的服务器发送了一个http请求,方式为get,例如访问nbut.cn

这个get请求包含了主机(host)、用户代理(User-Agent),用户代理就是自己的浏览器,它是你的"代理人",Connection(连接属性)中的keep-alive表示浏览器告诉对方服务器在传输完现在请求的内容后不要断开连接,不断开的话下次继续连接速度就很快了。其他的顾名思义就行了。还有一个重点是Cookies,Cookies保存了用户的登陆信息,在每次向服务器发送请求的时候会重复发送给服务器。Corome上的F12与Firefox上的firebug(快捷键shift+F5)均可查看这些信息。

发送完请求接下来就是等待回应了,如下图:

当然了,服务器收到浏览器的请求以后(其实是WEB服务器接收到了这个请求,WEB服务器有iis、apache等),它会解析这个请求(读请求头),然后生成一个响应头和具体响应内容。接着服务器会传回来一个响应头和一个响应,响应头告诉了浏览器一些必要的信息,例如重要的Status Code,2开头如200表示一切正常,3开头表示重定向,4开头,如404,呵呵。响应就是具体的页面编码,就是那个<html>......</html>,浏览器先读了关于这个响应的说明书(响应头),然后开始解析这个响应并在页面上显示出来。在下一次CF的时候(不是穿越火线,是http://codeforces.com/),由于经常难以承受几千人的同时访问,所以CF页面经常会出现崩溃页面,到时候可以点开火狐的firebug或是Chrome的F12看看状态,不过这时候一般都急着看题和提交代码,似乎根本就没心情理会这个状态吧-.-。

如果是个静态页面,那么基本上到这一步就没了,但是如今的网站几乎没有静态的了吧,基本全是动态的。所以这时候事情还没完,根据我们的经验,浏览器打开一个网址的时候会慢慢加载这个页面,一部分一部分的显示,直到完全显示,最后标签栏上的圈圈就不转了。

这是因为,主页(index)页面框架传送过来以后,浏览器还要继续向服务器发送请求,请求的内容是主页里面包含的一些资源,如图片,视频,css样式等等。这些"非静态"的东西要一点点地请求过来,所以标签栏转啊转,内容刷啊刷,最后全部请求并加载好了就终于好了。

需要说明的是,对于静态的页面内容,浏览器通常会进行缓存,而对于动态的内容,浏览器通常不会进行缓存。缓存的内容通常也不会保存很久,因为难保网站不会被改动。

当你在浏览器输入一个网址,如http://www.taobao.com,按回车之后发生了什么?请从技术的角度描述,如浏览器、网络(UDP、TCP、HTTP等),以及服务器等各种参与对象上由此引发的一系相关推荐

  1. 关于浏览器输入一个网址后页面经历的过程总结

    浏览器进程 浏览器输入一个网址后的主流程 一.用户输入 根据以下规则,把用户输入的内容加上协议,合成为完整的 URL. 判断输入的关键字是搜索内容,还是请求的 URL 如果是搜索内容:使用浏览器默认的 ...

  2. 在浏览器输入一个网址,按回车之后发生了什么?

    详细参考网址:http://www.cnblogs.com/wenanry/archive/2010/02/25/1673368.html 这个问题涉及到浏览器.网络.服务器三者之间的一系列行为,希望 ...

  3. 在浏览器输入一个网址到得到页面的过程(详细)

    作为一个软件开发者,你一定会对网络应用如何工作有一个完整的层次化的认知,同样这里也包括这些应用所用到的技术:像浏览器,HTTP,HTML,网络服务器,需求处理等等. 本文将更深入的研究当你输入一个网址 ...

  4. 在浏览器输入一个网址,如http://www.taobao.com,按回车之后发生了什么?

    当在浏览器中输入一个网址后的处理过程如下: 1.浏览器根据域名查询域名对应的服务器的IP地址. 根据域名查询IP地址的顺序如下: 浏览器DNS >>> 操作系统DNS缓存 >& ...

  5. 浏览器输入一个网址(www.baidu.com)后执行的全过程

    转载于:https://blog.csdn.net/u014590757/article/details/80035410 1.客户端浏览器通过DNS解析到www.baidu.com的IP地址202. ...

  6. 15.浏览器输入一个网址(www.baidu.com)后执行的全过程

    1.客户端浏览器通过DNS解析到www.baidu.com的IP地址202.108.22.5,通过这个IP地址找到客户端到服务器的路径.客户端浏览器发起一个HTTP会话到202.108.22.5,然后 ...

  7. 当你在浏览器输入一个网址,如http://www.taobao.com,按回车之后发生了什么?

    总的思路:在浏览器地址栏键入URL,按下回车之后发生的几个事件: 1)浏览器向DNS服务器请求解析该URL中的域名所对应的IP地址: 2)解析出IP地址后,根据该IP地址和默认端口80,和服务器建立T ...

  8. 输入一个网址后发生了什么

    当你在浏览器输入一个网址,如http://www.taobao.com,按回车之后发生了什么?请从技术的角度描述,如浏览器.网络(UDP.TCP.HTTP等),以及服务器等各种参与对象上由此引发的一系 ...

  9. c++软件开发面试旋极面试题_经典软件开发面试题:浏览器中输入一个网址后发生了什么?...

    经典软件开发面试题:浏览器中输入一个网址后发生了什么? ​ 大家好, 这一期呢,我们来谈一个经典的面试题.这种题目是在浏览器中输入一个网址以后, 会显示一个网页,这期间到底发生了什么? 答案要求说的越 ...

最新文章

  1. MFC视图滚动条的基本使用和C语言输出三角形的MFC版本
  2. spring事务管理-注解配置aop事务(重点)
  3. java字节码运行原理_JVM 内部原理(六)— Java 字节码基础之一
  4. 两校合并!新部属大学,来了!
  5. python自动爬取更新电影网站_python爬取电影网站信息
  6. 2019年最佳作家奖
  7. 很好的c++和Python混合编程文章
  8. 最新仿7881游戏装备网虚拟物品交易源码+修复版
  9. jmeter的json提取器提取数据
  10. 童年经典,任天堂switch红白机游戏
  11. zencart 模板设计
  12. 知识资源整理(持续更新)
  13. Redis 集群可用性测试
  14. 导出多个sheet的Excel以及在服务器上压缩文件然后再导出(在这里是压缩一个excel后导出)
  15. JVM和操作系统的关系是什么?
  16. 深圳学位分数计算机,深圳各区学位录取积分出炉!罗湖录取到C类,南山最高降40分……...
  17. Spark(一)Spark介绍
  18. jQuery根据ID删除元素
  19. python课程设计,学了python后你可以做的案例(词云,折线图,饼图…)
  20. 转:管理者既要疏通水管,又要写诗歌

热门文章

  1. 35修改tomcat端口
  2. Qt 生成bin文件
  3. java python 运行 内存_Python C Java中字符串在内存中的存储
  4. protected访问权限_复习封装与访问控制
  5. npcap loopback adapter是什么意思_抖音限流是什么意思? 抖音为什么突然限流?
  6. node.js通过回调函数获取异步函数的返回结果
  7. bzoj2733永无乡
  8. swift - 使用系统app导航
  9. 5专题总结-数据结构
  10. CommonJs、AMD、CMD模块化规范