文档库 最新最全的文档下载
当前位置:文档库 › 浏览器工作原理

浏览器工作原理

浏览器工作原理
浏览器工作原理

从输入网址到显示页面:浏览器工作原理拆解分析本文将深入的研究当你输入一个网址的时候,后台到底发生了一件件什么样的事~

1. 首先嘛,你得在浏览器里输入网址:

2. 浏览器查找域名的IP地址

导航的第一步是通过访问的域名找出其IP地址。DNS查找过程如下:

1.浏览器缓存–浏览器会缓存DNS记录一段时间。有趣的是,操作系统没有告诉

浏览器储存DNS记录的时间,这样不同浏览器会储存个自固定的一个时间(2分钟到30分钟不等)。

2.系统缓存–如果在浏览器缓存里没有找到需要的记录,浏览器会做一个系统调

用(windows里是gethostbyname)。这样便可获得系统缓存中的记录。

3.路由器缓存–接着,前面的查询请求发向路由器,它一般会有自己的DNS缓存。

4.ISP DNS 缓存–接下来要check的就是ISP缓存DNS的服务器。在这一般都能

找到相应的缓存记录。

5.递归搜索–你的ISP的DNS服务器从跟域名服务器开始进行递归搜索,从.com

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

DNS递归查找如下图所示:

DNS有一点令人担忧,这就是像https://www.wendangku.net/doc/0e10142500.html, 或者https://www.wendangku.net/doc/0e10142500.html,这样的整个域名看上去只是对应一个单独的IP地址。还好,有几种方法可以消除这个瓶颈:1. 循环DNS 是DNS查找时返回多个IP时的解决方案。举例来说,Faceboo https://www.wendangku.net/doc/0e10142500.html,实际上就对应了四个IP地址。

2. 负载平衡器是以一个特定IP地址进行侦听并将网络请求转发到集群服务器上的硬件设备。一些大型的站点一般都会使用这种昂贵的高性能负载平衡器。

3. 地理DNS 根据用户所处的地理位置,通过把域名映射到多个不同的IP地址提高可扩展性。这样不同的服务器不能够更新同步状态,但映射静态内容的话非常好。

4. Anycast是一个IP地址映射多个物理主机的路由技术。美中不足,Anycast 与TCP协议适应的不是很好,所以很少应用在那些方案中。

大多数DNS服务器使用Anycast来获得高效低延迟的DNS查找。

3. 浏览器给web服务器发送一个HTTP请求

因为像Facebook主页这样的动态页面,打开后在浏览器缓存中很快甚至马上就会过期,毫无疑问他们不能从中读取。

所以,浏览器将把一下请求发送到Facebook所在的服务器:

GET https://www.wendangku.net/doc/0e10142500.html,/ HTTP/1.1

Accept: application/x-ms-application, image/jpeg, application/xaml+x ml, [...]

User-Agent: Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; WOW64; [...]

Accept-Encoding: gzip, deflate

Connection: Keep-Alive

Host: https://www.wendangku.net/doc/0e10142500.html,

Cookie: datr=1265876274-[...]; locale=en_US; lsd=WW[...]; c_user=210 1[...]

GET 这个请求定义了要读取的URL:“https://www.wendangku.net/doc/0e10142500.html,/”。浏览器自身定义(User-Agent头),和它希望接受什么类型的相应(Accept and Accept-Encodin

g头). Connection头要求服务器为了后边的请求不要关闭TCP连接。

请求中也包含浏览器存储的该域名的cookies。可能你已经知道,在不同页面请求当中,cookies是与跟踪一个网站状态相匹配的键值。这样cookies会存储登录用户名,服务器分配的密码和一些用户设置等。Cookies会以文本文档形式存储在客户机里,每次请求时发送给服务器。

用来看原始HTTP请求及其相应的工具很多。作者比较喜欢使用fiddler,当然也有像FireBug这样其他的工具。这些软件在网站优化时会帮上很大忙。

除了获取请求,还有一种是发送请求,它常在提交表单用到。发送请求通过UR L传递其参数(e.g.: https://www.wendangku.net/doc/0e10142500.html,/puzzle.aspx?id=85)。发送请求在请求正文头之后发送其参数。

像“https://www.wendangku.net/doc/0e10142500.html,/”中的斜杠是至关重要的。这种情况下,浏览器能安全的添加斜杠。而像“http: //https://www.wendangku.net/doc/0e10142500.html,/folderOrFile”这样的地址,因为浏览器不清楚folderOrFile到底是文件夹还是文件,所以不能自动添加斜杠。这时,浏览器就不加斜杠直接访问地址,服务器会响应一个重定向,结果造成一次不必要的握手。

4. facebook服务的永久重定向响应

图中所示为Facebook服务器发回给浏览器的响应:

HTTP/1.1 301 Moved Permanently

Cache-Control: private, no-store, no-cache, must-revalidate, post-ch eck=0,

pre-check=0

Expires: Sat, 01 Jan 2000 00:00:00 GMT

locetion: https://www.wendangku.net/doc/0e10142500.html,/

P3P: CP="DSP LAW"

Pragma: no-cache

Set-Cookie: made_write_conn=deleted; expires=Thu, 12-Feb-2009 05:09: 50 GMT;

path=/; domain=https://www.wendangku.net/doc/0e10142500.html,; httponly

Content-Type: text/html; charset=utf-8

X-Cnection: close

Date: Fri, 12 Feb 2010 05:09:51 GMT

Content-Length: 0

服务器给浏览器响应一个301永久重定向响应,这样浏览器就会访问“http://ww https://www.wendangku.net/doc/0e10142500.html,/” 而非“https://www.wendangku.net/doc/0e10142500.html,/”。

为什么服务器一定要重定向而不是直接发会用户想看的网页内容呢?这个问题有好多有意思的答案。

其中一个原因跟搜索引擎排名有关。你看,如果一个页面有两个地址,就像htt p://https://www.wendangku.net/doc/0e10142500.html,/ 和https://www.wendangku.net/doc/0e10142500.html,/,搜索引擎会认为它们是两个网站,结果造成每一个的搜索链接都减少从而降低排名。而搜索引擎知道301永久重定向是什么意思,这样就会把访问带www的和不带www的地址归到同一个网站排名下。

还有一个是用不同的地址会造成缓存友好性变差。当一个页面有好几个名字时,它可能会在缓存里出现好几次。

5. 浏览器跟踪重定向地址

现在,浏览器知道了“https://www.wendangku.net/doc/0e10142500.html,/”才是要访问的正确地址,所以它会发送另一个获取请求:

GET https://www.wendangku.net/doc/0e10142500.html,/ HTTP/1.1

Accept: application/x-ms-application, image/jpeg, application/xaml+x ml, [...]

Accept-Language: en-US

User-Agent: Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; WOW64;

[...]

Accept-Encoding: gzip, deflate

Connection: Keep-Alive

Cookie: lsd=XW[...]; c_user=21[...]; x-referer=[...]

Host: https://www.wendangku.net/doc/0e10142500.html,

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

6. 服务器“处理”请求

服务器接收到获取请求,然后处理并返回一个响应。

这表面上看起来是一个顺向的任务,但其实这中间发生了很多有意思的东西- 就像作者博客这样简单的网站,何况像facebook那样访问量大的网站呢!

1.Web 服务器软件

web服务器软件(像IIS和阿帕奇)接收到HTTP请求,然后确定执行什么请求处理来处理它。请求处理就是一个能够读懂请求并且能生成HTML来进行响应的程序(像https://www.wendangku.net/doc/0e10142500.html,,PHP,RUBY...)。

举个最简单的例子,需求处理可以以映射网站地址结构的文件层次存储。像htt p://https://www.wendangku.net/doc/0e10142500.html,/folder1/page1.aspx这个地址会映射/httpdocs/folder1/page1.aspx这个文件。web服务器软件可以设置成为地址人工的对应请求处理,这样page1.a spx的发布地址就可以是https://www.wendangku.net/doc/0e10142500.html,/folder1/page1。

2.请求处理

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

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

委托工作给批处理是一个廉价保持数据更新的技术。举例来讲,Fackbook得及时更新新闻feed,但数据支持下的“你可能认识的人”功能只需要每晚更新(作者

猜测是这样的,改功能如何完善不得而知)。批处理作业更新会导致一些不太重要的数据陈旧,但能使数据更新耕作更快更简洁。

7. 服务器发回一个HTML响应

图中为服务器生成并返回的响应:

HTTP/1.1 200 OK

Cache-Control: private, no-store, no-cache, must-revalidate, post-ch eck=0,

pre-check=0

Expires: Sat, 01 Jan 2000 00:00:00 GMT

P3P: CP="DSP LAW"

Pragma: no-cache

Content-Encoding: gzip

Content-Type: text/html; charset=utf-8

X-Cnection: close

Transfer-Encoding: chunked

Date: Fri, 12 Feb 2010 09:05:55 GMT

2b3Tn@[...]

整个响应大小为35kB,其中大部分在整理后以blob类型传输。

内容编码头告诉浏览器整个响应体用gzip算法进行压缩。解压blob块后,你可以看到如下期望的HTML:

"https://www.wendangku.net/doc/0e10142500.html,/TR/xhtml1/DTD/xhtml1-strict.dtd">

lang="en" id="facebook" class=" no_js">

...

关于压缩,头信息说明了是否缓存这个页面,如果缓存的话如何去做,有什么c ookies要去设置(前面这个响应里没有这点)和隐私信息等等。

请注意报头中把Content-type设置为“text/html”。报头让浏览器将该响应内容以HTML形式呈现,而不是以文件形式下载它。浏览器会根据报头信息决定如何解释该响应,不过同时也会考虑像URL扩展内容等其他因素。

8. 浏览器开始显示HTML

在浏览器没有完整接受全部HTML文档时,它就已经开始显示这个页面了:

9. 浏览器发送获取嵌入在HTML中的对象

在浏览器显示HTML时,它会注意到需要获取其他地址内容的标签。这时,浏览器会发送一个获取请求来重新获得这些文件。

下面是几个我们访问https://www.wendangku.net/doc/0e10142500.html,时需要重获取的几个URL:

1.图片

https://www.wendangku.net/doc/0e10142500.html,/rsrc.php/z12E0/hash/8q2anwu7.gif

https://www.wendangku.net/doc/0e10142500.html,/rsrc.php/zBS5C/hash/7hwy7at6.gif

2.CSS 式样表

https://www.wendangku.net/doc/0e10142500.html,/rsrc.php/z448Z/hash/2plh8s4n.css

https://www.wendangku.net/doc/0e10142500.html,/rsrc.php/zANE1/hash/cvtutcee.css

3.j 文件

https://www.wendangku.net/doc/0e10142500.html,/rsrc.php/zEMOA/hash/c8yzb6ub.js

https://www.wendangku.net/doc/0e10142500.html,/rsrc.php/z6R9L/hash/cq2lgbs8.js

这些地址都要经历一个和HTML读取类似的过程。所以浏览器会在DNS中查找这些域名,发送请求,重定向等等...

但不像动态页面那样,静态文件会允许浏览器对其进行缓存。有的文件可能会不需要与服务器通讯,而从缓存中直接读取。服务器的响应中包含了静态文件保存的期限信息,所以浏览器知道要把它们缓存多长时间。还有,每个响应都可能包含像版本号一样工作的ETag头(被请求变量的实体值),如果浏览器观察到文件的版本ETag信息已经存在,就马上停止这个文件的传输。

试着猜猜看“https://www.wendangku.net/doc/0e10142500.html,”在地址中代表什么?聪明的答案是"Facebook内容分发网络"。Facebook利用内容分发网络(CDN)分发像图片,CSS表和j文件这些静态文件。所以,这些文件会在全球很多CDN的数据中心中留下备份。

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

举例来讲,当你试着ping https://www.wendangku.net/doc/0e10142500.html,的时候,可能会从某个https://www.wendangku.net/doc/0e10142500.html,

服务器上获得响应。有意思的是,当你同样再ping一次的时候,响应的服务器可能就不一样,这说明幕后的负载平衡开始起作用了。

10. 浏览器发送异步(AJAX)请求

在Web 2.0伟大精神的指引下,页面显示完成后客户端仍与服务器端保持着联系。

以Facebook聊天功能为例,它会持续与服务器保持联系来及时更新你那些亮亮灰灰的好友状态。为了更新这些头像亮着的好友状态,在浏览器中执行的j代码会给服务器发送异步请求。这个异步请求发送给特定的地址,它是一个按照程式构造的获取或发送请求。还是在Facebook这个例子中,客户端发送给http://ww https://www.wendangku.net/doc/0e10142500.html,/ajax/chat/buddy_list.php一个发布请求来获取你好友里哪个在线的状态信息。

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

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

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

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

JavaWeb工作原理

[JavaWeb工作原理] [第一章]

一什么是JavaWeb? JavaWeb是用Java技术来解决相关web互联网领域的技术总和。web包括:web服务器和web客户端两部分,在第一个项目(贷款计息查询服务器)的时候已经知道在Web服务器的作用是接受客户端请求,然后向客户端返回一些结果.浏览器的作用是允许用户请求服务器上的某个资源,并且向用户显示请求的结果,HTML用于告诉浏览器怎样向用户显示内容,HTTP是WEB上客户端和服务器之间通信所用的协议 二HTTP协议 Http是一种超文本传输协议(HyperText Transfer Protocol),他是一套计算机在网中通信的一种规则,在TCP/IP体系结构中,HTTP属于应用层协议,位于TCP/IP协议的顶层.HTTP是一种无状态的协议,意思是指在WEB浏览器和WEB服务器之间不需要建立持久的连接,HTTP 定义的事物处理由以下四步组成: 1.客户端和WEB服务器建立连接 a)客户端和服务器的连接就是与客户端与服务器的一个TCP Socket套接字连接 2.客户端发送HTTP请求 a)请求包含:请求行--请求行是一个ACCII文本行,由请求的HTTP方法,请求的 URL,HTTP版本组成,中间用空格分开, b)请求头---HTTP协议使用HTTP头来传递请求的元信息, c)空行---发送回车符和退行,通知服务器以下不再有请求头 d)消息体--HTTP请求中带有查询字符串时,如果是GET方法,查询字符串或表单 数据附加在请求行中,那么消息体就没有内容,如果是POST方法,查询字符串或 表单数据就添加在消息体重 3.服务器端接收客户端的HTTP请求,生成HTTP相应回发 a)响应包含:状态行---每个HTTP响应以一个状态行开头,它由HTTP协议版本, 响应状态码,响应描述组成,中间用空格分开 b)响应头---响应头与请求头一样,也是一个用冒号分隔符的名称/值对,冒号前面 是HTTP头得名称,后面是HTTP头得值 c)空行---发送回车符和退行,通知服务器以下不再有响应头 d)消息体---要发送回客户端的HTML文档或其他要显示的内容等,WEB服务器 把要发送给客户端的文档信息放在消息体中 4.服务器端关闭连接,客户端解析并回发响应,恢复页面 a)HTTP响应到达客户端后,浏览器先解析HTTP响应中的状态行,查看请求是否 成功的状态代码,然后开始一步步解析响应

简单Web服务器设计与实现课程设计

计算机网络课程设计报告 题目:简单Web服务器设计与实现 专业: 学号: 学生姓名: 指导教师:

摘要 (2) 关键词 (2) 1. 前言 (3) 1.1 课程设计前准备 (4) 1.2 课程设计的内容 (5) 1.3 课程设计要求 (5) 1.4 课程设计平台 (5) 2. Web服务器的工作原理 (5) 2.1 HTTP协议的作用原理 (5) 2.2 Java开发语言相关知识与技术 (6) 3. 开发环境及套字接编程 (11) 3.1 Web服务器的开发环境 (11) 3.2 Web服务器的套接字编程 (12) 4. WEB服务器的设计与实现 (13) 4.1 Web服务器的程序设计流程 (13) 4.2 用Java实现Web服务器的主要设计步骤及程序 (14) 5. 测试运行 (21) 5.1 调试运行 (21) 6.结束语 (23) 参考文献 (24)

WWW的工作基于客户机/服务器计算模型,由Web 浏览器(客户机)和Web服务器(服务器)构成,两者之间采用超文本传送协议(HTTP)进行通信,HTTP协议的作用原理包括四个步骤:连接,请求,应答,关闭应答。在课程设计中,系统开发平台为Win7,程序设计语言采用Java,程序运行平台为Eclipse。在程序设计中,采用了结构化与面向对象两种解决问题的方法。程序通过调试运行,初步实现了设计目标,并且经过适当完善后,将可以应用在商业中解决实际问题。 关键词Java;HTTP;Web服务器

Internet是目前世界上最大的计算机互联网络,与大家的生活、学习、工作有着越来越密切的关系,它遍布全球,将世界各地各种规模的网络连接成一个整体,其用户群十分庞大,因此,建设一个好的Web站点对于一个机构的发展十分重要。近年来,随着网络用户要求的不断提高及计算机科学的迅速发展,特别是数据库技术在Internet中的广泛应用,Web站点向用户提供的服务将越来越丰富,越来越人性化。 本课程设计主要解决由Web 浏览器(客户机)和Web服务器(服务器)构成,两者之间采用超文本传送协议(HTTP)进行通信的Web服务器的程序设计。 1.1 课程设计前准备 以下的工作均是建立在大量的调查基础上的,是Web服务器开发前期准备工作所解决的问题。 (1)Java简介 Java是由sun公司开发的一种新型的面向对象的程序设计语言,主要用于web页面的设计[1]。Java语言的流行除了因为它能够编制嵌入HTML文件中的Applet外,还在于Java语言本身的面向对象、简单、平台无关性、安全性、多线程等特点。Java语言的发展颇具传奇性,它与Internet的WWW的迅猛发展是分不开的。由于其发展迅速,有人将它比喻为Internet上的世界语。前面讲到在Internet上Web页面的设计采用的是HTML语言,用户借助于Web浏览器(如Netscape,HotJava,IE等),可以访问到远程web服务器上静态的、具有超链接的Web页面[2]。 (2)HTTP协议简介 HTTP 协议是应用层的协议,定义了服务器端和客户端之间文件传输的沟通方式。HTTP协议用于从WWW服务器传输超文本到本地浏览器的传送协议。由于HTTP协议支持的服务不限于WWW,还可以是其它服务,它允许用户在统一的界面下,采用不同的协议访问不同的服务。它可以使浏览器更加高效,使网络传输减少。它不仅保证计算机正确快速地传输超文本文档,还确定传输文档中的哪一部分,以及哪部分内容首先显示等[3]。

浏览器工作原理

从输入网址到显示页面:浏览器工作原理拆解分析本文将深入的研究当你输入一个网址的时候,后台到底发生了一件件什么样的事~ 1. 首先嘛,你得在浏览器里输入网址: 2. 浏览器查找域名的IP地址 导航的第一步是通过访问的域名找出其IP地址。DNS查找过程如下: 1.浏览器缓存–浏览器会缓存DNS记录一段时间。有趣的是,操作系统没有告诉 浏览器储存DNS记录的时间,这样不同浏览器会储存个自固定的一个时间(2分钟到30分钟不等)。 2.系统缓存–如果在浏览器缓存里没有找到需要的记录,浏览器会做一个系统调 用(windows里是gethostbyname)。这样便可获得系统缓存中的记录。 3.路由器缓存–接着,前面的查询请求发向路由器,它一般会有自己的DNS缓存。 4.ISP DNS 缓存–接下来要check的就是ISP缓存DNS的服务器。在这一般都能 找到相应的缓存记录。 5.递归搜索–你的ISP的DNS服务器从跟域名服务器开始进行递归搜索,从.com 顶级域名服务器到Facebook的域名服务器。一般DNS服务器的缓存中会有.co m域名服务器中的域名,所以到顶级服务器的匹配过程不是那么必要了。 DNS递归查找如下图所示:

DNS有一点令人担忧,这就是像https://www.wendangku.net/doc/0e10142500.html, 或者https://www.wendangku.net/doc/0e10142500.html,这样的整个域名看上去只是对应一个单独的IP地址。还好,有几种方法可以消除这个瓶颈:1. 循环DNS 是DNS查找时返回多个IP时的解决方案。举例来说,Faceboo https://www.wendangku.net/doc/0e10142500.html,实际上就对应了四个IP地址。 2. 负载平衡器是以一个特定IP地址进行侦听并将网络请求转发到集群服务器上的硬件设备。一些大型的站点一般都会使用这种昂贵的高性能负载平衡器。 3. 地理DNS 根据用户所处的地理位置,通过把域名映射到多个不同的IP地址提高可扩展性。这样不同的服务器不能够更新同步状态,但映射静态内容的话非常好。 4. Anycast是一个IP地址映射多个物理主机的路由技术。美中不足,Anycast 与TCP协议适应的不是很好,所以很少应用在那些方案中。 大多数DNS服务器使用Anycast来获得高效低延迟的DNS查找。 3. 浏览器给web服务器发送一个HTTP请求 因为像Facebook主页这样的动态页面,打开后在浏览器缓存中很快甚至马上就会过期,毫无疑问他们不能从中读取。 所以,浏览器将把一下请求发送到Facebook所在的服务器: GET https://www.wendangku.net/doc/0e10142500.html,/ HTTP/1.1 Accept: application/x-ms-application, image/jpeg, application/xaml+x ml, [...] User-Agent: Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; WOW64; [...] Accept-Encoding: gzip, deflate Connection: Keep-Alive Host: https://www.wendangku.net/doc/0e10142500.html, Cookie: datr=1265876274-[...]; locale=en_US; lsd=WW[...]; c_user=210 1[...] GET 这个请求定义了要读取的URL:“https://www.wendangku.net/doc/0e10142500.html,/”。浏览器自身定义(User-Agent头),和它希望接受什么类型的相应(Accept and Accept-Encodin g头). Connection头要求服务器为了后边的请求不要关闭TCP连接。 请求中也包含浏览器存储的该域名的cookies。可能你已经知道,在不同页面请求当中,cookies是与跟踪一个网站状态相匹配的键值。这样cookies会存储登录用户名,服务器分配的密码和一些用户设置等。Cookies会以文本文档形式存储在客户机里,每次请求时发送给服务器。 用来看原始HTTP请求及其相应的工具很多。作者比较喜欢使用fiddler,当然也有像FireBug这样其他的工具。这些软件在网站优化时会帮上很大忙。

浏览器内部工作原理

浏览器内部工作原理 浏览器可以被认为是使用最广泛的软件,我将介绍浏览器的简单基本的工作原理,我们将看到,从你在地址栏输入https://www.wendangku.net/doc/0e10142500.html,到你看到facebook主页过程中都发生了什么。

URL解析过程 ? 1. You enter a URL into the browser(输入一个url地址) –https://www.wendangku.net/doc/0e10142500.html, ? 2.The browser looks up the IP address for the domain name(浏览器查找域名的ip地址) –浏览器缓存 –系统缓存 –路由器缓存 –ISP DNS缓存 –递归搜索

? 3.The browser sends a HTTP request to the web server(浏览器给web服务器发送一个HTTP请求) –GET https://www.wendangku.net/doc/0e10142500.html,/ HTTP/1.1 –Accept: application/x-ms-application, image/jpeg, application/xaml+xml, [...] –User-Agent: Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; WOW64; [...] –Accept-Encoding: gzip, deflate –Connection: Keep-Alive –Host: https://www.wendangku.net/doc/0e10142500.html, –Cookie: datr=1265876274-[...]; locale=en_US; lsd=WW[...]; c_user=2101[...] ?Get : 以GET的方式提交发送请求| POST ?https://www.wendangku.net/doc/0e10142500.html,/ 发送请求的URL地址 ?Http/1.1 HTTP协议 ?User-Agent : 浏览器自身定义 ?Accept-Encoding : 希望接收什么类型相应数据 ?Connection : 表示要求服务器为了后边的请求不要关闭TCP连接 ?请求中也包含浏览器存储的该域名的cookies,cookies会存储登录用户名,服务器分配的密码和一些用户设置等?像“https://www.wendangku.net/doc/0e10142500.html,/”中的斜杠是至关重要的。这种情况下,浏览器能安全的添加斜杠。而像“http: //https://www.wendangku.net/doc/0e10142500.html,/folderOrFile”这样的地址,因为浏览器不清楚folderOrFile到底是文件夹还是文件,所以不能自动添加斜杠。这时,浏览器就不加斜杠直接访问地址,服务器会响应一个重定向,结果造成一次不必要的握手

各服务器工作原理

FTP(文件传输协议)服务器工作原理FTP(文件传输协议)工作原理 目前在网络上,如果你想把文件和其他人共享。最方便的办法莫过于将文件放FTP服务器上,然后其他人通过FTP客户端程序来下载所需要的文件。 1、FTP架构 如同其他的很多通讯协议,FTP通讯协议也采用客户机 / 服务器(Client / Server )架构。用户可以通过各种不同的FTP客户端程序,借助FTP协议,来连接FTP服务器,以上传或者下载文件。 2、FTP通讯端口知识 FTP服务器和客户端要进行文件传输,就需要通过端口来进行。FTP协议需要的端口一般包括两种:控制链路--------TCP端口21所有你发往FTP服务器的命令和服务器反馈的指令都是通过服务器上的21 端口传送的。数据链路--------TCP端口20数据链路主要是用来传送数据的,比如客户端上传、下载内容,以及列目录显示的内容等。 3、FTP连接的两种方式在数据链路的建立上,FTP Server 为了适应不同的网络环境,支持两种连接模式:主动模式(Port)和被动模式(Pasv)。其实这两种连接模式主要是针对数据链路进行的,和控制链路无关。 主动模式主动模式是这样工作的:客户端把自己的高位端口和服务器端口21建立控制链路。所有的控制命令比如Is或get都是通过这条链路传送的。当客户端需要服务器端给它传送数据时,客户端会发消息给服务器端,告诉自己的位置和打开的高位端口(一般大于1024的端口都就叫高位端口),等候服务器的20端口和客户端打开的端口进行连接,从而进行数据的传输。当服务器端收到信息后,就会和客户端打开的端口连接,这样数据链路就建立起来了。

java web 工作原理总结

总结 第一章java web 工作原理 1.1、web应用程序有web服务器,web客服端浏览器,HTTP协议以及静态HTML文件。 Web服务器的作用是接受客服端请求,然后向客服端返回些结果;浏览器的作用是允许用户请求服务器上的某个资源,并且向用户显示请求的结果; HTML是用于告诉浏览器怎么样向用户显示内容; HTTP是web上客服端和服务器之间通信所用的协议。 1.1.2 HTTP协议将来自于客服端的请求信息封装成HTTP请求; 封装的信息当中包括请求行、请求头、消息体、分隔请求头、消息体的一个空行。 请求行是一个ASCII文本行,由三个标记组成:请求的HTTP方法、请求的URL、HTTP版本;中间用空格分开例如: GET /lovobook/index.html HTTP/1.0 在HTTP1.1版本中请求方法有八种分别是下面: GET:用于向服务器检索资源在HTTP请求头 POST:用于向服务器发送资源,并要求指定的URI处理在消息体HEAD:于GET方法相同,服务器只返回状态行和头标,并不返回请求文档。 PUT:请求服务器保持请求数据作为指定的URI新内容;

DELETE:请求服务器删除URI中命名的资源; OPTIONS:请求关于服务器支持的请求方法信息; TRACE:请求web服务器反馈HTTP请求和其头标;CONNECT:已文档化但当前未实现的一个方法,预留做隧道处理;请求头: HTTP协议使用HTTP头来传递请求的元信息。HTTP头是一个用冒号分隔的名称/值对,冒号前面是HTTP头的名称,后面是HTTP头的值。 1.1.3 HTTP响应包括:状态行、响应头、消息体、分割消息头、响应头。状态行里面出现: 1XX:表示信息,请求收到,继续处理。 2XX:表示成功 3XX:表示重定向 4XX:表示客服端错误 5XX:表示服务器错误 1.2 Web服务器的缺陷是只能向用户提供静态网页内容。 1.3 服务器端网页编程就是web服务器创建动态服务器端内容的过程。 1.3.1 服务器端网页编程出现得最早的技术就是CGI,它的缺点就是每次请求一个CGI资源,将在服务器上创建一个新的进程,并且通过标准输

浏览器工作原理拆解分析

浏览器工作原理拆解分析 1. 首先嘛,你得在浏览器里输入网址: 2. 浏览器查找域名的IP地址 导航的第一步是通过访问的域名找出其IP地址。DNS查找过程如下: 浏览器缓存——浏览器会缓存DNS记录一段时间。有趣的是,操作系统没有告诉浏览器储存DNS记录的时间,这样不同浏览器会储存个自固定的一个时间(2分钟到30分钟不等)。 系统缓存——如果在浏览器缓存里没有找到需要的记录,浏览器会做一个系统调用(windows 里是gethostbyname)。这样便可获得系统缓存中的记录。 路由器缓存——接着,前面的查询请求发向路由器,它一般会有自己的DNS缓存。 ISP DNS缓存——接下来要check的就是ISP缓存DNS的服务器。在这一般都能找到相应的缓存记录。 递归搜索——你的ISP的DNS服务器从跟域名服务器开始进行递归搜索,从.com顶级域名服务器到Facebook的域名服务器。一般DNS服务器的缓存中会有.com域名服务器中的域名,所以到顶级服务器的匹配过程不是那么必要了。 DNS递归查找如下图所示: DNS有一点令人担忧,这就是像https://www.wendangku.net/doc/0e10142500.html, 或者 https://www.wendangku.net/doc/0e10142500.html,这样的整个域名看上去只是对应一个单独的IP地址。还好,有几种方法可以消除这个瓶颈: 循环 DNS是DNS查找时返回多个IP时的解决方案。举例来说,https://www.wendangku.net/doc/0e10142500.html,实际上就对应了四个IP地址。 负载平衡器是以一个特定IP地址进行侦听并将网络请求转发到集群服务器上的硬件设备。一些大型的站点一般都会使用这种昂贵的高性能负载平衡器。 地理 DNS 根据用户所处的地理位置,通过把域名映射到多个不同的IP地址提高可扩展性。这样不同的服务器不能够更新同步状态,但映射静态内容的话非常好。

Web服务器的工作原理

Web服务器工作原理概述 很多时候我们都想知道,web容器或web服务器(比如Tomcat或者jboss)是怎样工作的?它们是怎样处理来自全世界的http请求的?它们在幕后做了什么动作?Java Servlet API(例如ServletContext,ServletRequest,ServletResponse和Session这些类)在其中扮演了什么角色?这些都是web应用开发者或者想成为web应用开发者的人必须要知道的重要问题或概念。在这篇文章里,我将会尽量给出以上某些问题的答案。 请集中精神! 文章章节: ?什么是web服务器、应用服务器和web容器? ?什么是Servlet?他们有什么作用? ?什么是ServletContext?它由谁创建? ?ServletRequest和ServletResponse从哪里进入生命周期? ?如何管理Session?知道cookie吗? ?如何确保线程安全? 什么是web服务器,应用服务器和web容器? 我先讨论web服务器和应用服务器。让我在用一句话大概讲讲: “在过去它们是有区别的,但是这两个不同的分类慢慢地合并了,而如今在大多在情况下和使用中可以把它们看成一个整体。” 在Mosaic浏览器(通常被认为是第一个图形化的web浏览器)和超链接内容的初期,演变出了“web服务器”的新概念,它通过HTTP协议来提供静态页面内容和图片服务。在

那个时候,大多数内容都是静态的,并且HTTP 1.0只是一种传送文件的方式。但在不久后web服务器提供了CGI功能。这意味着我们可以为每个web请求启动一个进程来产生动态内容。现在,HTTP协议已经很成熟了并且web服务器变得更加复杂,拥有了像缓存、安全和session管理这些附加功能。随着技术的进一步成熟,我们从Kiva和NetDynamics学会了公司专属的基于Java的服务器端技术。这些技术最终全都融入到我们今天依然在大多数应用开发里使用的JSP中。 以上是关于web服务器的。现在我们来讨论应用服务器。 在同一时期,应用服务器已经存在并发展很长一段时间了。一些公司为Unix开发了Tuxedo(面向事务的中间件)、TopEnd、Encina等产品,这些产品都是从类似IMS和CICS的主机应用管理和监控环境衍生而来的。大部分的这些产品都指定了“封闭的”产品专用通信协议来互连胖客户机(“fat”client)和服务器。在90年代,这些传统的应用服

浏览器工作原理(图) 内部工作原理

前端必读:浏览器内部工作原理 目录 一、介绍 二、渲染引擎 三、解析与DOM树构建 四、渲染树构建 五、布局 六、绘制 七、动态变化 八、渲染引擎的线程 九、CSS2可视模型 英文原文:How Browsers Work: Behind the Scenes of Modern Web Browsers 一、介绍 浏览器可以被认为是使用最广泛的软件,本文将介绍浏览器的工作原理,我们将看到,从你在地址栏输入https://www.wendangku.net/doc/0e10142500.html,到你看到google主页过程中都发生了什么。 将讨论的浏览器 今天,有五种主流浏览器——IE、Firefox、Safari、Chrome及Opera。 本文将基于一些开源浏览器的例子——Firefox、Chrome及Safari,Safari是部分开源的。 根据W3C(World Wide Web Consortium万维网联盟)的浏览器统计数据,当前(2011年5月),Firefox、Safari及Chrome的市场占有率综合已接近60%。(原文为2009年10月,数据没有太大变化)因此,可以说开源浏览器已经占据了浏览器市场的半壁江山。 浏览器的主要功能 浏览器的主要功能是将用户选择的web资源呈现出来,它需要从服务器请求资源,并将其显示在浏览器窗口中,资源的格式通常是HTML,也包括PDF、image及其他格式。用户用URI(Uniform Resource Identifier统一资源标识符)来指定所请求资源的位置,在网络一章有更多讨论。 HTML和CSS规范中规定了浏览器解释html文档的方式,由W3C组织对这些规范进行维护,W3C是负责制定web标准的组织。 HTML规范的最新版本是HTML4(https://www.wendangku.net/doc/0e10142500.html,/TR/html401/),HTML5还在制定中(译注:两年前),最新的CSS规范版本是2(https://www.wendangku.net/doc/0e10142500.html,/TR/CSS2),CSS3也还正在制定中(译注:同样两年前)。 这些年来,浏览器厂商纷纷开发自己的扩展,对规范的遵循并不完善,这为web开发者带来了严重的兼容性问题。 但是,浏览器的用户界面则差不多,常见的用户界面元素包括: ?用来输入URI的地址栏 ?前进、后退按钮 ?书签选项 ?用于刷新及暂停当前加载文档的刷新、暂停按钮

WEB浏览器工作原理

WEB浏览器工作原理【来自网络】 2007-04-13 17:15 WWW 的工作基于客户机/服务器计算模型,由Web 浏览器(客户机)和Web服务器(服务 器)构成,两者之间采用超文本传送协议(HTTP)进行通信, HTTP协议的作用原理包括四 个步骤:连接,请求,应答。根据上述HTTP协议的作用原理,本文实现了GET 请求的Web服 务器程序的方法,通过创建 TcpListener类对象,监听端口8080;等待、接受客户机连 接到端口8080;创建与socket字相关联的输入流和输出流;然后,读取客户机的请求信 息,若请求类型是GET,则从请求信息中获取所访问的HTML文件名,如果HTML 文件存在, 则打开HTML文件,把HTTP头信息和 HTML文件内容通过socket传回给Web浏览器,然后关闭 文件。否则发送错误信息给Web浏览器。最后,关闭与相应Web浏览器连接的socket 字。 一、HTTP协议的作用原理 WWW是以Internet作为传输媒介的一个应用系统,WWW网上最基本的传输单位是Web网 页。WWW的工作基于客户机/服务器计算模型,由Web 浏览器(客户机)和Web服务器(服务 器)构成,两者之间采用超文本传送协议(HTTP)进行通信。HTTP协议是基于TCP/IP协议 之上的协议,是Web浏览器和Web服务器之间的应用层协议,是通用的、无状态的、面向对 象的协议。HTTP协议的作用原理包括四个步骤: 连接:Web浏览器与Web服务器建立连接,打开一个称为socket(套接字)的虚拟文 件,此文件的建立标志着连接建立成功。 请求:Web浏览器通过socket向Web服务器提交请求。HTTP的请求一般是GET 或POST命 令(POST用于FORM参数的传递)。GET命令的格式为: GET 路径/文件名 HTTP/1.0 文件名指出所访问的文件,HTTP/1.0指出Web浏览器使用的HTTP版本。 应答:Web浏览器提交请求后,通过HTTP协议传送给Web服务器。Web服务器接

深入了解浏览器加载渲染及内核原理

浏览器加载和渲染网页的过程 2009-07-20 20:26 关于网页加载和渲染的过程,在网络上的讨论并不多。可能是因为这个过程比较复杂,而且浏览器执行的速度太快,目前还没有发现什么比较好的工具可以清楚的看到浏览器解析网页的每一个过程。通过firedug和httpWatch可以看到浏览器的http请求,但是对于浏览器如何paint和flow处理html元素,我们仍然是不得而知。“flow”这个词借鉴于reflow,表示浏览器第一次加载网页的过程。在网络上搜索了一下,学习如下。 关于浏览器加载网页过程的有趣视频 可以参见:https://www.wendangku.net/doc/0e10142500.html,/blog/2008/05/reflow/(形象化的reflow)。这个视频展现了网页加载的过程,看着比较有趣。要是可以更加形象化,就更好了,可以帮助我们书写更好的提高网页加载速度的代码。 浏览器内核 不同的浏览器内核,对于网页的解析过程肯定也不尽相同。 https://www.wendangku.net/doc/0e10142500.html,/post/Trident-Gecko-WebKit-Presto.php一文对各种浏览器的页面渲染引擎进行了简介。目前主要有基于 (1)Trident页面渲染引擎–> IE系列浏览器; (2)Gecko页面渲染引擎–> Mozilla Firefox; (3)KHTML页面渲染引擎或WebKit框架–> Safafi和Google Chrome; (4)Presto页面渲染引擎–> Opera 详细的介绍可以参见原文。 浏览器解析网页的过程 https://www.wendangku.net/doc/0e10142500.html,/seosky/blog/item/78d3394c130f86ffd72afc56.html浏览器加载 和渲染原理分析一文中通过一定的方法,推断了浏览器加载解析网页的顺序大致如下: 1. IE下载的顺序是从上到下,渲染的顺序也是从上到下,下载和渲染是同时进行的; 2. 在渲染到页面的某一部分时,其上面的所有部分都已经下载完成(并不是说所有相关联的元素都已经下载完); 3. 在下载过程中,如果遇到某一标签是嵌入文件,并且文件是具有语义解释性的(例如:JS脚本,CSS样式),那么此时IE的下载过程会启用单独连接进行下载,并且在下载后进行解析,解析(JS、CSS中如有重定义,后定义函数将覆盖前定义函数)过程中,停止页面所有往下元素的下载; 4. 样式表文件比较特殊,在其下载完成后,将和以前下载的所有样式表一起进行解析,解析完成后,将对此前所有元素(含以前已经渲染的)重新进行样

一次访问Web服务器的详细通信过程

一次访问Web服务器的详细通信过程 在这一讲中我们要了解一下Internet中一台计算机访问Web服务器的全部过程,从中可以窥探Internet是如何工作的,本讲中会涉及到网络(或Internet)的专业术语、概念及Internet的重要内容,在以后的讲座中我们会详细讲解。本讲主要是想让大家明网络是怎样交付数据、寻址等,即Internet的基本工作原理。 一、网络环境说明 图一 本次网络通信试验采用Packet Tracer 5.0思科网络模拟软件。有关Packet Tracer 5.0的使用与技巧请参考我的相关博文。此次模拟环境中使用5个路由器连接两个以太网,其中192.168.2.0/24网段为服务器,192.168.2.1为DNS服务器,192.168.2.2为Web服务器,域名为https://www.wendangku.net/doc/0e10142500.html,,192.168.2.3为TFTP服务器,192.168.1.0/24网段为Client PC,其网关为192.168.1.254。每个路由器使用RIP路由协议发现路由。 二、PC0(IP地址为192.168.1.1)访问https://www.wendangku.net/doc/0e10142500.html,的过程详解 1、把域名https://www.wendangku.net/doc/0e10142500.html,解析为IP地址,这就要使用DNS协议,向DNS服务器查询域为https://www.wendangku.net/doc/0e10142500.html,的IP地址。 a、PC0组装成一个DNS数据包,该数据包包含了一条查询域名为https://www.wendangku.net/doc/0e10142500.html,的IP是多少的问题,然后再把该DNS数据包加上一个UDP报头,在UDP报头的目的端口为53,源端口随机选择,把UDP 数据报交给IP层,加上目的地址即DNS服务器的IP地址:192.168.2.1,源地址为本机IP地址,IP数据包交给网络接口层(也可以理解为数据链路层)准备发给本网段网关,由网络转发出去。在网络接口层又封闭为数据帧,帧头的源MAC地址为本机网卡MAC地址,目的地址应该为网关的MAC地址,但此时PC0并

web服务器apache架构与原理

web服务器apache架构与原理 web服务器 在开始了解Apache前,我们先熟悉一下web服务器,因为apache也是web服务器的一种。 Web系统由客户端(浏览器)和服务器端两部分组成。Web系统架构也被称为B/S架构。最常见的Web服务器有Apache、IIS等,常用的浏览器有IE、Firefox、chrome等。当你想访问一个网页时,需要在浏览器的地址栏中输入该网页的URL(Uniform Resource Locator,简称为URL)地址,或者是通过超链接链接到该网页。浏览器会向该网页所在的服务器发送一个HTTP请求,服务器会对接收到的请求信息进行处理,然后将处理的结果返回给浏览器,最终将浏览器处理后的结果呈现给用户。 web服务器端的工作流程: (1)客户端发送请求 客户端(通过浏览器)和Web服务器建立TCP连接,连接建立以后,向Web服务器发出访问请求(如get)。根据HTTP协议,该请求中包含了客户端的IP地址、浏览器的类型和请求的URL等一系列信息。 (2)服务器解析请求 Web服务器对请求按照HTTP协议进行解码来确定进一步的动作,设计的内容有三鼐要点:方法(GET)、文档(/sample.html)、和浏览器使用的协议(HTTP/1.1)其中方法告诉服务器应完动的动作,GET方法的含义很明显是:服务器应定位、读取文件并将它返回给客户。 Web服务器软件现在就知道了,它应该找到文件/sample.html,并使用HTTP/1.1协议将内存返回给客户。信息是经过与请求到来相同的连接发出的,所以服务器不需要定们客户或创建新的连接。 (3)读取其它信息(非必须步骤)

浏览器工作原理

长沙理工大学 《网络系统》课程设计报告 学院城南学院专业计算机科学与技术班级计算机1101 学号201186250222 学生姓名高扬指导教师周书仁 课程成绩完成日期2013年6月28日

课程设计成绩评定 学院城南学院专业计算机科学与技术班级计算机1101 学号201186250222 学生姓名高扬指导教师周书仁完成日期2013年6月28日 指导教师对学生在课程设计中的评价 指导教师对课程设计的评定意见

课程设计任务书 城南学院学院计算机科学与技术专业

浏览器的设计与实现 学生姓名:高扬指导老师:周书仁 摘要论文主要介绍了本课题的开发背景,所要完成的功能和开发的过程。重点说明了系统设计重点、设计思想、难点技术和解决方案;同时也论述了基于HTTP协议的Web浏览器的开发思路、开发过程、利用的主要技术及本浏览器应用程序的功能模块的说明。本课题是在深入理解HTTP协议的工作机理,系统掌握了TCP/UDP网络通信协议及网络编程的基本方法,掌握了使用Windows Sockets API和MFC Socket编程技术之后,采用Visual C++作为开发工具来设计并实现一个Web浏览器,其功能主要包括:浏览器的界面实现;实现收藏菜单;显示超文本;删除相关历史记录;将应用程序加入到时工具栏、禁止弹出窗口、禁止浏览某些网站访问Web页,保存网页,打印网页,停止当前访问,刷新网页,查看源文件和Internet属性等等。 关键词:Visual C++;MFC;HTTP协议;浏览器 目录 第1章绪论 1.1 软件开发背景 随着社会的发展和需求,在20世纪中叶人类研制了电子计算机。电子计算机运算速度快,计算精度高,存储能力强,具有逻辑判断能力,具有自动运行能力等特点。进过半个多世纪的飞速发展,电子计算在许多领域得到了广泛的应用,已成为衡量一个国家现代化水平的重要标志。而

基于Java的Web服务器工作原理1

基于Java的Web服务器工作原理1基于Java的Web服务器工作原理1 一个Web服务器也被称为HTTP服务器,它通过HTTP协议与客户端通信。 这个客户端通常指的是Web浏览器。一个基于Java的Web服务器用到二个重要的类,https://www.wendangku.net/doc/0e10142500.html,.Socket与https://www.wendangku.net/doc/0e10142500.html,.ServerSocket,并通过HTTP消息通信。 因此,本文从讨论HTTP与这二个类开始,然后我将解释一个与本文相关的简单的Web应用。 The Hypertext Transfer Protocol(HTTP) HTTP是一种让Web服务器与浏览器(客户端)通过Internet发送与接收数 据的协议。它是一个请求、响应协议--客户端发出一个请求,服务器响应这个 请求。HTTP运用可靠的TCP连接,通常用的TCP 80端口。它的第一个版本是HTTP/0.9,然后被HTTP/1.0取代。当前的版本是HTTP/1.1,由RFC2616(.pdf)定义。 本节主要对应HTTP 1.1,足够使你充分理解由Web服务器程序发出的消息。如果你对更加详细的知识有兴趣,可以参考RFC2616。 在HTTP中,客户端总是通过建立一个连接与发送一个HTTP请求来发起一 个事务。服务器不能主动去与客户端联系,也不能给客户端发出一个回叫连接。客户端与服务器端都可以提前中断一个连接。例如,当用一个浏览器下载一个 文件时,你可以通过点击"停止"键来中断文件的下载,关闭与服务器的HTTP连接。 HTTP请求 一个HTTP请求包含三个部分: Method-URI-Protocol/Version方法-地址-版本 Request header请求头

简单Web服务器设计与实现课程设计

琼州学院电子信息工程学院 课程设计报告 课程名称:计算机网络 设计题目:简单web服务器设计与实现 专业:软件工程 学生姓名:王永浩(11241056)、宋雨(11241060) 夏成鹏(11241066)、黄兵周(11241007)指导教师:陈德祥 日期: 2014年4月6日

目录 摘要 ..................................................................................................................................... - 2 -1前言 .................................................................................................................................. - 2 -1.1 课程设计前准备 ............................................................................................................ - 2 -1.2课程设计的内容........................................................................................................... - 3 -1.3课程设计要求 ............................................................................................................... - 3 - 1.4课程设计平台 ............................................................................................................... - 3 - 2 Web服务器的工作原理.................................................................................................... - 4 -2.1HTTP协议的作用原理................................................................................................. - 4 -2.2J AVA开发语言相关知识与技术 .................................................................................. - 5 -2.2.1 java中的多线程及实现: ....................................................................................... - 5 -2.2.2 I/O字节流操作...................................................................................................... - 7 -2.2. 3 网络架构: ............................................................................................................... - 9 -3开发环境及套字接编程 .................................................................................................. - 10 -3.1W EB服务器的开发环境............................................................................................. - 10 -3.2W EB服务器的套接字编程......................................................................................... - 11 - 3.2.1 ServerSocket类....................................................................................................... - 11 - 4 WEB服务器的设计与实现 ............................................................................................ - 12 -4.1W EB服务器的程序设计流程..................................................................................... - 12 -4.2用J AVA实现W EB服务器的主要设计步骤及程序................................................ - 13 -5测试运行 .......................................................................................................................... - 20 -5.1调试运行 ..................................................................................................................... - 20 -结束语 ................................................................................................................................. - 21 -参考文献 ............................................................................................................................. - 22 -

Brower基本原理

浏览器(browser) 定义: 万维网(Web)服务的客户端浏览程序。 可向万维网(Web)服务器发送各种请求,并对从服务器发来的超文本信息和各种多媒体数据格式进行解释、显示和播放。 浏览器工作原理 WWW 的工作基于客户机/服务器计算模型,由Web 浏览器(客户机)和Web服务器(服务器)构成,两者之间采用超文本传送协议(HTTP)进行通信,HTTP协议的作用原理包括四个步骤:连接,请求,应答。根据上述HTTP协议的作用原理,本文实现了GET请求的Web服务器程序的方法,通过创建TcpListener 类对象,监听端口8080;等待、接受客户机连接到端口8080;创建与socket字相关联的输入流和输出流;然后,读取客户机的请求信息,若请求类型是GET,则从请求信息中获取所访问的HTML文件名,如果HTML文件存在,则打开HTML文件,把HTTP头信息和HTML文件内容通过socket传回给Web浏览器,然后关闭文件。否则发送错误信息给Web浏览器。最后,关闭与相应Web浏览器连接的socket 字。 HTTP协议的作用原理 WWW是以Internet作为传输媒介的一个应用系统,WWW网上最基本的传输单位是Web网页。WWW 的工作基于客户机/服务器计算模型,由Web 浏览器(客户机)和Web服务器(服务器)构成,两者之间采用超文本传送协议(HTTP)进行通信。HTTP协议是基于TCP/IP协议之上的协议,是Web浏览器和Web 服务器之间的应用层协议,是通用的、无状态的、面向对象的协议。HTTP协议的作用原理包括四个步骤:连接:Web浏览器与Web服务器建立连接,打开一个称为socket(套接字)的虚拟文件,此文件的建立标志着连接建立成功。 请求:Web浏览器通过socket向Web服务器提交请求。HTTP的请求一般是GET或POST命令(POST 用于FORM参数的传递)。GET命令的格式为: GET 路径/文件名HTTP/1.0 文件名指出所访问的文件,HTTP/1.0指出Web浏览器使用的HTTP版本。 应答:Web浏览器提交请求后,通过HTTP协议传送给Web服务器。Web服务器接到后,进行事务处理,处理结果又通过HTTP传回给Web浏览器,从而在Web浏览器上显示出所请求的页面。 例:假设客户机与https://www.wendangku.net/doc/0e10142500.html,:8080/mydir/index.html建立了连接,就会发送GET命令:GET /mydir/index.html HTTP/1.0。主机名为https://www.wendangku.net/doc/0e10142500.html,的Web服务器从它的文档空间中搜索子目录mydir的文件index.html。如果找到该文件,Web服务器把该文件内容传送给相应的Web浏览器。 为了告知Web浏览器传送内容的类型,Web服务器首先传送一些HTTP头信息,然后传送具体内容(即HTTP体信息),HTTP头信息和HTTP体信息之间用一个空行分开。 常用的HTTP头信息有: ①HTTP 1.0 200 OK 这是Web服务器应答的第一行,列出服务器正在运行的HTTP版本号和应答代码。代码 “200 OK”表示请求完成。 ②MIME_V ersion:1.0

相关文档