今天看到一句话很喜欢,就顺手记了下来:“真正的坚持到最后靠的不是激情,而是恰到好处的喜欢和投入”。浏览器
一直看到有这样一道题,感受颇有意思,由于在看到这个问题以前,我怎么没有想过这个呢?看来仍是思想不够深刻啊,之后要多多思考。缓存
在浏览器输入:http://www.baidu.com/ 到最后浏览器出现相应的网页,这个过程究竟发生了神马?服务器
首先是咱们主动在浏览器输入,说明咱们想请求与目的服务器链接,要想链接目的服务器,咱们首先必须知道的是它的IP地址,这样咱们才能找到它,因此咱们首先作的NO.1网络
第一步:根据输入的内容,找到目的主机IP。网站
可是为何咱们输入是字母(域名)也能够呢?这里就涉及到了一个DNS域名解析的问题,它会帮你把你输入方便的域名转化为目的IP而给你哦,感受这我的好厉害啊!那具体它又是如何解析的呢?url
(1)假如你浏览器以前访问过这个地址那么它会缓存这个IP一段时间,若是有缓存,那就方便就近了,直接返回IP,不然进行下一步。spa
(2)若是缓存中没有这个IP,浏览器会进行一个系统调用,查询本地有个hosts文件,若是找到,直接返回IP,不然进行下一步(在计算机这里指Linux系统的目录etc下有个host文件,hosts文件中保存着域名和对应IP的对应解析).net
(3)进行了本地(1)(2)查询无果后,只能借助于网络。路由器通常都会有本身的DNS缓存。若是无果,这能借助于DNS递归解析了。设计
(4)这时DNS服务器就会开始从根域名服务器开始递归搜索(感受DNS服务器也挺辛苦的啊),从.com顶级域名服务器到baidu的域名服务器。到这里浏览器得到了IP,达到了第一步的目的。递归
有了咱们心心念的IP地址后,感受瞬间有了方向,那么接下来就是和网站服务器进行链接,这样咱们才能和它传输数据啊。
第二步:浏览器与网站创建TCP链接
至于TCP的链接,这里又涉及了不少重要的知识点须要咱们知道。采用你们都熟知的TCP三次握手就可以完成与服务器的链接,具体的过程要心中有数,这里面先省略。经过这个让我想到了一些小问题,都是须要知道,也是常常被问到的,TCP链接为何是三次握手?不是两次、四次呢?这些道理须要我搞懂。(后续会整理好)
第三步:浏览器发起请求(请求类型GET POST.......)
以前的步骤都为咱们打通了和服务器之间的通道了,因此接下来咱们想要干啥就能够直接请求了。只管感受和easy啊,可是。这里面设计了太多的关于http协议、Web开发之类的宝贵东西,只想说须要看的东西太多了。。
第四部:显示页面或返回其余
每个点细扣都有太多的相关点,本事学识短浅,整理好后继续补充。