在浏览器输入网址,Enter之后发生了什么?

启动浏览器,在地址栏输入我们将要访问的网页,然后按一下回车,OK,成功进入!

在我们回车之后,发生了什么事情?为什么我们会访问到期待的网页,我们究竟访问了谁?如何访问到他的?

我简单的向大家介绍一下,并不深入讲解,只能算作小白科普,不过这个科普还是很有必要的,它不仅能让我们认识到计算机之间是如何沟通的,也能让我们知道很多网络危机、故障是大致怎样产生的,以后遇到问题也好有一个切入点。

你的名字叫什么?

启动浏览器是浏览网页的第一步,毕竟是世界之窗嘛,然后我们在地址栏中输入一个网址,比如百度(www.baidu.com),这里我们叫他“域名”,根据这个域名,是否可以找到百度公司的服务器?这得问问路由器了,在网络中路由器负责为我们传输数据。

你可能会问,这和路由器什么关系?我没有传输数据啊,只是输入一个网址啊,恩恩,没错,不过这相当于一次请求——请求百度的服务器返回一个搜索界面。

看看路由器怎么说:哦,我不用域名或者主机名,我只处理IP地址,我根据它找到目标地点(百度服务器),把数据传给他。

哦哦,看起来域名只是你的别称,你真正的名字叫IP。什么是IP?形如 w.x.y.z的数字,四个数字都是0~255(比如192.168.0.1),也就是四个字节,不过有的会有一些限制,这里不必考虑。

原来还有军师!

如此看来,域名对于路由器来说是不管用的,我们得想办法搞到对应的IP地址,当然,这件事情浏览器帮我们完成了,“你是说,浏览器有一个数据库,里面存储了各个域名到IP的映射?”,这个当然不是,初步算一下这个大约有40亿个,浏览器可存不下。原来在我们按下回车之后浏览器把域名发给他的军师,军师收到域名之后,返回给浏览器一个IP地址,这个就是我们想要的那个。

这位军师就是我们经常会看到的DNS,中文名字是域名系统服务器,一般位于ISP(互联网服务提供商,比如我们熟知的联通、移动、电信等)中。浏览器会首先发给离自己最近的DNS,DNS收到浏览器发来的域名,在自己的数据库和缓存中查找这个域名所对应的IP,如果没有他会询问其他的DNS,递归下去直到弄清楚IP。最后把结果返回给浏览器。

包裹运送 礼尚往来

浏览器既然获得了IP,就可以把包裹发给路由器了,路由器依据这个IP地址,多方周转,送到了百度服务器的手中。到这里还没有结束,百度服务器看到包裹中的请求,把百度的搜索页面发送回浏览器,回来的时候也是依据你主机的IP地址才能将包裹正确送达。

至此,在浏览器输入网址,Enter之后发生的事情简述完毕。再回顾一下:

1. 浏览器接收域名

2. 发送域名给DNS

3. DNS返回域名所对应的IP地址

4. 浏览器向因特网中发出请求

5. 路由器依据IP地址,把包裹送达IP所对应的服务器

看起来,DNS很重要啊,前几天我家附近的计算机部分网络无法访问,我想应该就是DNS那边解析出了问题。2014年有一次国内很多网络无法访问,问题就出在DNS服务器上。全球DNS根服务器只有13台,中国没有,看起来我们国家急需有自己的DNS根服务器啊!

上一篇:[转]C# 互操作性入门系列(四):在C# 中调用COM组件


下一篇:Hdu 2236 无题II 最大匹配+二分