LeavingMe.net

在我浏览这个页面之前都发生了些什么?

2008-12-09 07:05:00

 薄荷脑 @ yeeyan.com

简介 本文简略地介绍了服务器端原理,大虾们就不用看了:)  
  在过去一周左右的时间里,我试着自己写一个小型的服务器,因而参考了许多文件、网站,并向朋友们讨教,但至今我还是没有写出来。我在Java、Python之间徘徊,因为他们似乎都能满足我的需求,只是我两个都不怎么精通。但在我研究一个服务器是如何运行的时候倒是积累了不少相关的知识,在这里和大家分享一下。   “在我浏览这个页面之前都发生了些什么?”——有许多人知道其中的原理,当然也有像我这样只有模糊概念的人。但幸运的是,这篇网志可以解决许多人的迷惑。   让我们看看幕后都发生了些什么: 1、假设你在[浏览器](http://www.cnblogs.com/articles/tag/浏览器)里输入了[http://www.yahoo.com](http://www.yahoo.com/)这个网址,或者在别的页面上点击了这个链接; 2、[浏览器](http://www.cnblogs.com/articles/tag/浏览器)通过分析这个网址得知它使用的是HTTP协议; 3、然后,[浏览器](http://www.cnblogs.com/articles/tag/浏览器)将这个网址分割成协议、域名、文件名(本例中没有文件名); 4、[浏览器](http://www.cnblogs.com/articles/tag/浏览器)连接其默认的域名服务器(DNS),从而将域名转换为IP地址。域名服务器是一个大型的分布式数据库,提供了域名到IP地址的转换功能。浏览器的默认域名服务器也许没有这个域名的IP地址记录; 5、如果域名服务器没有与[www.yahoo.com](http://www.yahoo.com/)对应的IP地址,它就会连接根域名服务器来查询IP地址; 6、如果找到了IP地址,域名服务器就将该地址传送给[浏览器](http://www.cnblogs.com/articles/tag/浏览器)。   最终,[浏览器](http://www.cnblogs.com/articles/tag/浏览器)会建立与该IP地址之间的连接,雅虎的服务器会接受这个请求并返回雅虎的主页。如果你还是不理解这个过程,就请参考下面的例子: ![](http://abhinavsingh.com/library/images/DNS.gif) 1、我打算建立一个域名为[http://gtalkbots.com](http://gtalkbots.com/)的网站; 2、我需要在域名注册商那里注册一个域名。比如,我在godaddy.com中注册了我的域名; 3、我需要有一台用来放置我的网站文件的服务器,所以我购买了一个虚拟主机(VPS); 4、我需要将以上两者连接起来,也就是说,当某个人在[浏览器](http://www.cnblogs.com/articles/tag/浏览器)里输入了[http://gtalkbots.com](http://gtalkbots.com/)这个网址后,应该会连接到我的虚拟主机; 5、为了使域名和我的虚拟主机相连,我在godaddy里建立里一条A记录,把虚拟主机的IP地址告诉了godaddy。这样一来,当你在[浏览器](http://www.cnblogs.com/articles/tag/浏览器)里输入[http://gtalkbots.com](http://gtalkbots.com/)时,godaddy会将浏览器连接到我的虚拟主机; 6、图中的后面四条表示我将gtalkbots.com这个域名连接到了我的google apps账号,从而让我能够在google apps中收发gtalkbots.com的邮件。   还有很多东西需要学习,但以上这些内容已经足以回答“在我浏览这个页面之前都发生了些什么?”这个问题了。

comments powered by Disqus