[经典小题一道] 在浏览器中输入:http://www.baidu.com/后到底发生了神马?

     今天看到一句话很喜欢,就顺手记了下来:“真正的坚持到最后靠的不是激情,而是恰到好处的喜欢和投入”。

     一直看到有这样一道题,感觉很有意思,因为在看到这个问题之前,我怎么没有想过这个呢?看来还是思想不够深入啊,以后要多多思考。

      在浏览器输入:http://www.baidu.com/ 到最后浏览器出现相应的网页,这个过程究竟发生了神马?

      首先是我们主动在浏览器输入,说明我们想请求与目的服务器连接,要想连接目的服务器,我们首先必须知道的是它的IP地址,这样我们才能找到它,所以我们首先做的NO.1

      第一步:根据输入的内容,找到目的主机IP。

      但是为什么我们输入是字母(域名)也可以呢?这里就涉及到了一个DNS域名解析的问题,它会帮你把你输入方便的域名转化为目的IP而给你哦,感觉这个人好厉害啊!那具体它又是如何解析的呢?

      (1)假如你浏览器之前访问过这个地址那么它会缓存这个IP一段时间,如果有缓存,那就方便就近了,直接返回IP,否则进行下一步。

      (2)如果缓存中没有这个IP,浏览器会进行一个系统调用,查询本地有个hosts文件,如果找到,直接返回IP,否则进行下一步(在计算机这里指Linux系统的目录etc下有个host文件,hosts文件中保存着域名和对应IP的对应解析)

      (3)进行了本地(1)(2)查询无果后,只能借助于网络。路由器一般都会有自己的DNS缓存。如果无果,这能借助于DNS递归解析了。

      (4)这时DNS服务器就会开始从根域名服务器开始递归搜索(感觉DNS服务器也挺辛苦的啊),从.com顶级域名服务器到baidu的域名服务器。到这里浏览器获得了IP,达到了第一步的目的。

      有了我们心心念的IP地址后,感觉瞬间有了方向,那么接下来就是和网站服务器进行连接,这样我们才能和它传输数据啊。

      第二步:浏览器与网站建立TCP连接

       至于TCP的连接,这里又涉及了很多重要的知识点需要我们知道。采用大家都熟知的TCP三次握手就能够完成与服务器的连接,具体的过程要心中有数,这里面先省略。通过这个让我想到了一些小问题,都是需要知道,也是经常被问到的,TCP连接为什么是三次握手?不是两次、四次呢?这些道理需要我搞懂。(后续会整理好)

      第三步:浏览器发起请求(请求类型GET POST.......)

      之前的步骤都为我们打通了和服务器之间的通道了,所以接下来我们想要干啥就可以直接请求了。只管感觉和easy啊,但是。这里面设计了太多的关于http协议、Web开发之类的宝贵东西,只想说需要看的东西太多了。。

      第四部:显示页面或返回其他

      每一个点细扣都有太多的相关点,本事学识短浅,整理好后继续补充。

  

转载于:https://my.oschina.net/u/2243518/blog/550602

你可能感兴趣的:(运维,网络)