首先对上篇blog进行一个补充:
以我做的“基于线程池和数据库连接池的web服务器”为例,说说HTTP通信的流程,大体分为三个阶段:
A. 连接 服务器通过一个ServerSocket类对象对8000端口进行监听,监听到之后建立
连接,打开一个socket虚拟文件。
B. 请求 创建与建立socket连接相关的流对象后,浏览器获取请求,为GET请求,则
从请求信息中获取所访问的HTML文件名,向服务器发送请求。
C. 应答 服务收到请求后,搜索相关目录文件,若不存在,返回错误信息。若存在,
则想html文件,进行加HTTP头等处理后响应给浏览器,浏览器解析html
文件,若其中还包含图片,视频等请求,则浏览器再次访问web服务器,异
常获取图片视频等,并对其进行组装显示出来。
Ok! 言归正传! 写上篇blog时,留下了一个问题,就是浏览器的工作原理,在我们输入一个网址就获得如此丰富多彩的网络世界的背后究竟发生了什么事请,作为一个软件工程的学生很有必要研究一下! 上网查了查,想总结如下:
S1: 浏览器根据你输入的网址查找IP地址。这里涉及到一个叫DNS(域名解析系统)的东西,专门用于查找域名对应的IP地址的。当然,处于性能的考虑,不是每一次都需要到这个系统中进行查找的,这里边会有很多的缓存对一些对应信息进行缓存。会依次查询:浏览器缓存,系统缓存,路由器缓存,ISP DNS缓存,ISP DNS对root域名服务器到自己的域名服务器进行递归搜索。
这里产生一个问题:负载平衡器;
S2: 浏览器向服务器发送请求。(当然,有时候浏览器中有缓存另当别论)。这里就是上篇blog中提到的过程了。
当然这里可以有一个小插曲,重定向响应。当输入http://facebook.com/时,当服务器回给浏览器响应一个301永久重定向响应。
浏览器接到重定向后就会跟踪重定向,进而浏览器就会访问“http://www.facebook.com/” 而非“http://facebook.com/”。
这里也产生一个问题:cookies
S3: 服务器处理请求。 服务器接受请求,并进行处理。
这里面还是大有文章可做啊。具体的如何处理的,那又将是一个美丽的世界:
里面至少包括下列知识:
Web服务器(IIS,阿帕奇等),CGI,servlet,asp,jsp,以及我们现在所学的web开发(HSS框架,设计模式等等)大都是在做这个事情。
S4: 服务器发回一个HTML响应
S5: 浏览器开始显示html。
S6: 浏览器发送嵌在html中的相关对象。如:图片,CSS,JS等。这些资源同样需要经历想访问html文件的流程。
这里同样有很多东西可以研究的啦!像这些静态资源如何存放,有个叫内容分发器的东西(将这些资源分发到不同的数据中心备份),负责平衡器等在这里就有用处了。
S7: 补充浏览器发送一个AJAX请求。
对这个还不是太明白,同样产生一个问题:AjAx。
查资料了解到:
fiddler这个工具能够让你看到浏览器发送的异步请求。事实上,你不仅可以被动的做为这些请求的看客,还能主动出击修改和重新发送它们。AJAX请求这么容易被蒙,可着实让那些计分的在线游戏开发者们郁闷的了。(当然,可别那样骗人家~)
Facebook聊天功能提供了关于AJAX一个有意思的问题案例:把数据从服务器端推送到客户端。因为HTTP是一个请求-响应协议,所以聊天服务器不能把新消息发给客户。取而代之的是客户端不得不隔几秒就轮询下服务器端看自己有没有新消息。
这些情况发生时长轮询是个减轻服务器负载挺有趣的技术。如果当被轮询时服务器没有新消息,它就不理这个客户端。而当尚未超时的情况下收到了该客户的新消息,服务器就会找到未完成的请求,把新消息做为响应返回给客户端。
写本blog遇到的问题如下:
1. 负载平衡器 是以一个特定IP地址进行侦听并将网络请求转发到集群服务器上的硬件设备。 一些大型的站点一般都会使用这种昂贵的高性能负载平衡器。 ???多次接触到这个词了~~~~ 先放这下次解决!
2. Cookies
3. AJAX
分享到:
相关推荐
WEB浏览器工作原理
讲述了浏览器的工作原理,中英文对照版,从组成,到解析,渲染等过程都有。
浏览器工作原理pdf文档
百度文库找到PPT文件,花了20财富下载下来,坑爹啊,太贵了。不过好东西也值了。
浏览器工作原理 很好的 很有用的 这是我毕设的论文 希望给大家分享
How_Browser_Works 浏览器工作原理
浏览器工作原理 适合前端工作者
web开发者必读,浏览器工作原理.pdf
前端必读:浏览器内部工作原理.pdf前端必读:浏览器内部工作原理.pdf前端必读:浏览器内部工作原理.pdf前端必读:浏览器内部工作原理.pdf前端必读:浏览器内部工作原理.pdf
浏览器工作原理拆解分析[借鉴].pdf
最新版《浏览器工作原理(how-browsers-work)中英文对照版》,共享给爱前端爱Web的童鞋~后端看看也能涨见识啦!好书值得推荐嘛~
目录 一、介绍 二、渲染引擎 三、解析与DOM树构建 四、渲染树构建 五、布局 六、绘制 七、动态变化 八、渲染引擎的线程 九、CSS2可视模型
前端面试必刷/跨域/浏览器工作原理/Vue/React/性能优化
本资源是本人在学习浏览器工作原理的过程中,无意间在GitHub上找到的资源,讲解的浅显易懂。内容包括浏览器的基本结构、渲染引擎、渲染树、布局、绘图、浏览器引擎的线程等内容。分享出来,希望对想要了解浏览器工作...
我博客的配套pdf,原版网站被墙了, 有一点英文基础的都能看懂
浏览器是如何工作的?(工作原理)[整理].pdf