首先对上篇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 浏览器工作原理 WEB 浏览器工作原理是基于客户机/服务器计算模型,由 Web 浏览器(客户机)和 Web 服务器(服务器)构成,两者之间采用超文本传送协议(HTTP)进行通信。HTTP 协议是基于 TCP/IP 协议之上的协议...
2. 浏览器工作原理的复杂性:文档强调了浏览器工作方式的复杂性,这种复杂性是由许多不同的标准决定的。不同的浏览器有自己的实现方式,因此不可能在单一的介绍中探索浏览器工作的所有细节。 3. 浏览器的模块化和...
### 浏览器工作原理与主流浏览器分析 #### 一、概述 随着互联网技术的飞速发展,浏览器作为用户访问互联网的重要工具之一,在日常生活和工作中扮演着不可或缺的角色。本篇文章旨在探讨浏览器的工作原理以及市场上...
### 前端必读:浏览器工作原理 #### 一、引言 浏览器作为现代互联网生活中不可或缺的一部分,其背后的工作机制对于理解Web开发至关重要。本文将深入探讨浏览器的基本原理,从用户输入URL到最终页面展示的整个过程...
讲述了浏览器的工作原理,中英文对照版,从组成,到解析,渲染等过程都有。
浏览器工作原理详解 Web浏览器是当今最广泛使用的软件之一,它们在互联网的日常使用中扮演着核心角色。本文将深入探讨浏览器背后的工作机制,从你在地址栏输入'google.com'开始,直到Google页面在浏览器屏幕上呈现...
浏览器工作原理是前端开发人员必须掌握的基础知识,它涉及到从用户输入地址到页面展现的整个过程,以及浏览器内部结构的各个组件是如何协同工作的。浏览器是用户与互联网交互的主要工具,其中最常见的包括Internet ...
浏览器是互联网世界的重要入口,它的工作原理对于前端开发者乃至全栈工程师来说,是理解网页显示、交互和性能优化的关键。...通过深入学习浏览器工作原理,开发者能够更高效地解决问题,提升网站性能和用户体验。
浏览器工作原理的核心在于解析和处理用户输入的URL,以及与Web服务器之间的通信。首先,当用户在浏览器中输入一个网址时,浏览器并不会立即向服务器发送请求,而是会先尝试从本地缓存中查找对应的IP地址。这是因为...
浏览器工作原理是Web开发者理解网页显示机制的关键。这篇文章主要探讨了现代Web浏览器的工作流程,特别是以Firefox、Chrome和Safari为例,它们都是基于特定的渲染引擎来解析和展示网页内容。 1. **介绍** 浏览器的...
在前端开发领域,面试往往涉及一系列关键知识点,其中包括跨域、浏览器工作原理、Vue与React框架的使用,以及性能优化。这些是现代Web开发中不可或缺的技能,也是衡量一个前端开发者专业水平的重要标准。 首先,让...
目录 一、介绍 二、渲染引擎 三、解析与DOM树构建 四、渲染树构建 五、布局 六、绘制 七、动态变化 八、渲染引擎的线程 九、CSS2可视模型
### 浏览器的工作原理:深入理解Webkit与Gecko #### 1. 引言 随着互联网技术的发展,浏览器已成为人们日常生活中不可或缺的一部分。在众多浏览器中,**WebKit**和**Gecko**是最为知名的两种渲染引擎。WebKit主要...
尽管浏览器种类繁多,但它们的基本工作原理是类似的。本文将详细介绍浏览器的工作原理,以及其组成部分和渲染流程。 一、浏览器的主要功能与构成 浏览器的主要功能是将用户所选择的Web资源呈现出来。当用户在地址栏...