Cracking the coding interview--Q17.1

February 3, 2013
作者:Hawstein
出处:http://hawstein.com/posts/17.1.html
声明:本文采用以下协议进行授权: 自由转载-非商用-非衍生-保持署名|Creative Commons BY-NC-ND 3.0 ,转载请注明作者及出处。

题目

原文:

Explain what happens, step by step, after you type a URL into a browser. Use as much detail as possible.

译文:

一步一步地解释一下,在你往浏览器中输入一个URL后都发生了什么。要尽可能详细。

解答

这道题目没有所谓的完全的正确答案,这个题目可以让你在任意的一个点深入下去, 只要你对这个点是熟悉的。以下是一个大概流程:

  1. 浏览器向DNS服务器查找输入URL对应的IP地址。

  2. DNS服务器返回网站的IP地址。

  3. 浏览器根据IP地址与目标web服务器在80端口上建立TCP连接

  4. 浏览器获取请求页面的html代码。

  5. 浏览器在显示窗口内渲染HTML。

  6. 窗口关闭时,浏览器终止与服务器的连接。

这其中最有趣的是第1步和第2步(域名解析)。我们输入的网址(域名)是IP地址的一个别名, 在一个DNS内,一个域名对应一个IP地址。域名系统(DNS) 的工作就是将域名与它的IP地址对应起来。DNS是分布式的,同时也是具有层级关系的。

一个域名服务器虽然只记录一个小的子网内的主机名和IP地址, 但所有的域名服务器联合起来工作,就能将全网内的域名与它们的IP地址对应起来。 这也就意味着,如果一个域名服务器无法找到某个请求域名所对应的IP地址, 它就会向其它的域名服务器发出请求进行寻找。

关于这个问题,推荐阅读以下文章:

原文: What really happens when you navigate to a URL

译文: 当你在浏览器地址栏输入一个URL后回车,将会发生的事情

全书题解目录:

Cracking the coding interview–问题与解答

全书的C++代码托管在Github上:

https://github.com/Hawstein/cracking-the-coding-interview