为什么在文件夹地址栏中输入地址,会跳转到浏览器搜索?

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

DNS递归查找如下图所示:

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

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



  • 请求处理 请求处理阅读请求及它的参数和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是一个请求-响应协议,所以聊天服务器不能把新消息发给客户。取而代之的是客户端不得不隔几秒就轮询下服务器端看自己有没有新消息。

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

    希望看了本文,你能明白不同的网络模块是如何协同工作的

    1. 接收 URL,并拆分成协议,网络地址,资源路径
    2. 与缓存进行比对,如果请求的对象在缓存中,则直接进行第九步
    3. 如果网络地址不是一个 IP 地址,向操作系统询问,操作系统返回一个IP地址
    4. 浏览器向服务器发起一个 TCP 连接
    5. 浏览器通过 TCP 连接向服务器发起 HTTP 请求,HTTP 三次握手,HTTPS 握手过程则复杂得多
    6. 浏览器接受 HTTP 响应,这时候它能关闭 TCP 连接也能为另一个连接保留。
    7. 检查 HTTP header 里的状态码,并做出不同的处理方式。比如:错误(4XX5XX),重定向(3XX),授权请求(2XX
    8. 如果是可以缓存的,这个响应则会被存储起来
    9. 浏览器进行解码响应,并决定如何处理该响应(比如HTML页面,图像,声音等等)
    10. 浏览器渲染响应,或者为不能识别的类型提供下载的提示框
    1. 检查域名是否在本地的 host 的文件中,在则直接返回 IP 地址,不在则向 DNS 服务器请求
    2. DNS 服务器一级一级往上查询,直到查询到 IP 地址
    1. 验证连接是否合法,如客户端 IP 地址是否符合防火墙的规则,端口号是否开启等
    2. 将请求转发到相应的端口
    1. 建立连接:接受一个客户端,或者如果不希望与这个客户端不能简历连接,就将其关闭
    2. 接收请求:从网络中读取一条 HTTP 请求报文
    3. 处理请求:对请求报文进行解释,并采取行动
    4. 访问资源:访问报文中指定的资源
    5. 构建响应:创建带有正确首部的 HTTP 响应报文
    6. 发送响应:将响应回送给客户端
    7. 记录事务处理过程:将已完成事务相关的内容记录在一个日志文件中

    输入 URL 便能浏览互联网,其背后的计算机系统却要完成无数工作。上述过程中的每一步的背后都蕴含着无数人的智慧,每一步都可以展开成庞大的课题,真实的情景也要比提到的复杂很多。我想这正是科技最大的魅力,身处其中并得益于此,感谢各个领域的无数工程师为此付出的努力。


在浏览器地址栏键入URL,按下回车之后会经历以下流程:

1、浏览器向DNS 服务器请求解析该URL 中的域名所对应的IP 地址;
2、解析出IP 地址后,根据该IP 地址和默认端口80,和服务器建立TCP连接;
3、浏览器发出读取文件(URL 中域名后面部分对应的文件)的HTTP 请求,该请求报文作为TCP 三次握手的第三个报文的数据发送给服务器;
4、服务器对浏览器请求作出响应,并把对应的html 文本发送给浏览器;
6、浏览器将该html 文本并显示内容;

//如果文件名为空,直接回到首页! //如果路径不存在,创建一个

5、测试上传文件,OK!

2、前端表单提交地址修改

3、访问提交测试,OK!

5、关闭流 (先开后关)

//2、 读取文件--输入流 //3、 写出文件--输出流 //4、执行 写出操作

测试,文件下载OK,大家可以和我们之前学习的JavaWeb原生的方式对比一下,就可以知道这个便捷多了!

文件上传代码都是死的,需要用的时候 直接拿过来用,修改一下下载和上传的地址即可

我要回帖

更多关于 文件夹地址栏一直在闪 的文章

 

随机推荐