您的位置:首页 > 运维架构 > 网站架构

浏览器打开一个网站可能经历那些步骤

2016-11-24 11:10 330 查看
此话题,可能被很多大神都写过很多次,但我依旧还要再写一次,因为这是我写的。

当前社会下,相信我们每个人每天都要接触到互联网,当你在看这篇在胡扯的文章的时候,其实你正享受着互联网带给你的便捷。那么当你点击一个连接或者在浏览器地址栏中输入一个URL时,背后到底做了哪些事呢?下面将分步骤试着阐述一下.
第一步:当我们在浏览器地址栏中输入www.baidu.com并按回车后,首先是要找到这个URL的域名对应的服务器IP地址。在这里了解释下域名和服务器地址,域名呢相当就是我们的名字,大家感觉都很好记,其实目的也就是为了让大家好记的;ip地址呢,就相当于我们的身份证号,不是让人来记住的,其目的是为了标识一个全球唯一的服务器地址。有差别的地方就是域名也不能重复,谁先申请、先注册谁拥有的原则。而为了找到域名对应的ip地址,根据情况不同可能有多步操作:

1去看看浏览器缓存区是否缓存这当前输入的URL的域名对应的ip地址,如果有那么很ok,直接就找到了ip地址,如果没有那就继续往下走。

2 查看我们操作系统是否缓存我们需要的ip信息,同理找到结束,没有继续。

3 在我们的hosts文件中查看是否有配置信息,同上面一样找到结束,没有继续。比如我们的windows系统的hosts文件位置就在C:\Windows\System32\drivers\etc\HOSTS(受保护文件可能隐藏),里面一般都配置127.0.0.1 localhost,其实就是表名localhost对应的ip地址就是127.0.0.1。题外说一句,hosts文件劫持其实就是黑客去修改你的hosts文件,比如把www.taobao.com指向一个骗子开发的高仿网站上,当你双十一去买买买的时候,输入用户名和密码都会被骗子知道,更危险的还有银行等网站。

4 如果上面都没有找到我们需要的信息,那么下来就要本地DNS服务器出场了,本地DNS服务器可能还会有上级的DNS服务器,呈树状结构,会一级一级的向上查找。本地DNS地址在网络设置中设置,一般都是网络服务商给你提供,离你城市最近的一个DNS服务器地址。有时出现的qq可以上网,但是浏览器打不开网址一般都是DNS服务器配置出现了问题。和hosts文件劫持一样也存在着DNS劫持。

5 如果在第4步还没有找到对应的IP地址,下来本地DNS请求ROOT DNS Server(根域名服务器),目前根域名服务器全球有13台,国内一台没有。ROOT DNS Server并不存储域名 - IP 对应关系,它只是根据你域名的后缀,如.com、.cn等,给你一个gTLD服务器地址,让你去连接gTLD(通用顶级域名)服务器,然而gTLD服务器其实也不给你返回对应的ip信息,他会给你一个name
server服务器地址,这个name server服务器其实就是此域名的服务注册商,这个name server才会真正的给你返回域名对应的ip地址,如果任何一步出现问题,那么不好意思要么网络服务出现问题要么你的域名输入错误, 一般后者居多。

上面步骤中,略去了缓存步骤,比如浏览器缓存区没有命中目标,但在后面任意一个步骤命中目标后都会缓存到浏览器中的,后面步骤类似,前一个步骤缓存后面的结果,具体的缓存失效时间等机制不做描述。

第二步:上一步中历经多层波折,我们找到了IP地址,那么下来,浏览器会根据IP地址给目标服务器发送HTTP请求。可以简单的理解为,一个HTTP请求就是建立了一个socket连接(socket连接其实需要IP+端口,没有的情况下,IPV4会用默认端口80,IPV6默认端口443),通过socket我们才能使用TCP/IP协议进行数据传输,此章内容下次会详细解释。socket连接建立以后,目标服务器会返回一个响应内容。比如我们有时在浏览网页时偶尔会发现的404、500错误都是服务器给我们返回的响应,不过在这个卖萌就是生产力的时代,不同的浏览器或公司都会给出不同的优化后页面。
第三部:浏览器根据HTTP解析响应的内容,进行解析、布局和渲染。同时,相应的内容中可能还包含外部文件,每一个外部文件又会重复去执行第一步、第二部的步骤。如果目标网址用到了CDN加速,那么还有更多的工作步骤,CDN加速的简单理解其实就是把一些大的资源在网络中多处备份,用户要访问这个资源时,智能的到离自己最近的那个备份中获取资源。
但是在实际中,工作远远复杂与上面几个步骤,可见一个网页要历经多少磨难才能来到你面前。第一次写此类文章,如有不到之处还请指正批评。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  dns socket 浏览器
相关文章推荐