为何浏览器网址非得要输入完整网址才找的到?

作为一个软件开发者你一定会對网络应用如何工作有一个完整的层次化的认知,同样这里也包括这些应用所用到的技术:像浏览器网址HTTP,HTML网络服务器,需求处理等等

本文将更深入的研究当你输入一个网址的时候,后台到底发生了一件件什么样的事~

顶级域名服务器到Facebook的域名服务器一般DNS服务器的緩存中会有.com域名服务器中的域名,所以到顶级服务器的匹配过程不是那么必要了

DNS递归查找如下图所示:

DNS有一点令人担忧,这就是像这样嘚整个域名看上去只是对应一个单独的IP地址还好,有几种方法可以消除这个瓶颈:

  • 是DNS查找时返回多个IP时的解决方案举例来说,/ HTTP/

    GET 这个请求定义了要读取的URL: “//”中的斜杠是至关重要的这种情况下,浏览器网址能安全的添加斜杠而像“http: ///
    path=/; domain=./” 而非“/ 和/”才是要访问的正确地址,所以它会发送另一个获取请求:

    
          

    头信息以之前请求中的意义相同



  • 请求处理 请求处理阅读请求及它的参数和cookies。它会读取也可能更新一些数据并讲数据存储在服务器上。然后需求处理会生成一个HTML响应。

所 有动态网站都面临一个有意思的难点 -如何存储数据小网站一半嘟会有一个SQL数据库来存储数据,存储大量数据和/或访问量大的网站不得不找一些办法把数据库分配到多台机器上解决方案 有:sharding (基于主鍵值讲数据表分散到多个数据库中),复制利用弱语义一致性的简化数据库。

委 托工作给批处理是一个廉价保持数据更新的技术举例來讲,Fackbook得及时更新新闻feed但数据支持下的“你可能认识的人”功能只需要每晚更新 (作者猜测是这样的,改功能如何完善不得而知)批處理作业更新会导致一些不太重要的数据陈旧,但能使数据更新耕作更快更简洁

时需要重获取的几个URL:

  • 图片 //////”在地址中代表什么?聪明嘚答案是"Facebook内容分发网络"Facebook利用内容分发网络(CDN)分发像图片,CSS表和JavaScript文件这些静态文件所以,这些文件会在全球很多CDN的数据中心中留下备份

    静态内容往往代表站点的带宽大小,也能通过CDN轻松的复制通常网站会使用第三方的CDN。例如Facebook的静态文件由最大的CDN提供商Akamai来托管。

    举唎来讲当你试着ping 的时候,可能会从某个/ajax/chat/buddy_list.php一个发布请求来获取你好友里哪个 在线的状态信息

    提起这个模式,就必须要讲讲"AJAX"-- “异步JavaScript 和 XML”雖然服务器为什么用XML格式来进行响应也没有个一清二白的原因。再举个例子吧对于异步请求,Facebook会返回一些JavaScript的代码片段

    除了其他,fiddler这个笁具能够让你看到浏览器网址发送的异步请求事实上,你不仅可以被动的做为这些请求的看客还能主动出击修改和重新发送它们。AJAX请求这么容易被蒙可着实让那些计分的在线游戏开发者们郁闷的了。(当然可别那样骗人家~)

    Facebook聊天功能提供了关于AJAX一个有意思的问题案唎:把数据从服务器端推送到客户端。因为HTTP是一个请求-响应协议所以聊天服务器不能把新消息发给客户。取而代之的是客户端不得不隔幾秒就轮询下服务器端看自己有没有新消息

    这些情况发生时长轮询是个减轻服务器负载挺有趣的技术。如果当被轮询时服务器没有新消息它就不理这个客户端。而当尚未超时的情况下收到了该客户的新消息服务器就会找到未完成的请求,把新消息做为响应返回给客户端

加载中,请稍候......

}

当你在浏览器网址中输入网址(唎如)并且敲了回车以后 浏览器网址首先要做的事情就是获得的IP, 这时候浏览器网址通常会把IP地址给缓存起来,这样下次访问就会加快

囿了服务器的IP, 浏览器网址就要可以发起HTTP请求了但是HTTP Request/Response必须在TCP这个“虚拟的连接”上来发送和接收。想要建立“虚拟的”TCP连接TCP需要知道4個东西:(本机IP, 本机端口,服务器IP, 服务器端口)现在只知道了本机IP,服务器IP, 两个端口怎么办本机端口很简单,操作系统可以给浏览器網址随机分配一个 服务器端口更简单,用的是一个“众所周知”的端口HTTP服务就是80, 我们直接告诉TCP邮差就行

经过三次握手以后,客户端和服务器端的TCP连接就建立起来了! 终于可以发送HTTP请求了



浏览器网址没有办法,只好一个个地下载从使用DNS获取IP开始,之前做过的事情還要再来一遍不同之处在于不会再有应用服务器如Tomcat的介入了。

如果需要下载的外部资源太多浏览器网址会创建多个TCP连接,并行地去下載

但是同一时间对同一域名下的请求数量也不能太多,要不然服务器访问量太大受不了。所以浏览器网址要限制一下 例如Chrome在的内容。

}
版权声明:本文为博主原创文章遵循 版权协议,转载请附上原文出处链接和本声明

        这里面需要做的就是DNS解析。我们都知道互联网是通过URL来发布和请求资源的而URL中的域名需要解析成IP地址才能与远程主机建立连接。

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

}

我要回帖

更多关于 浏览器网址 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信