服务器

位置:IT落伍者 >> 服务器 >> 浏览文章

新手入门:了解WWW服务与HTTP协议(图)


发布日期:2020年03月23日
 
新手入门:了解WWW服务与HTTP协议(图)

在前一篇文章里我们介绍了网络应用和网络协议的一些基础知识现在让我们来了解一下WWW服务应用和HTTP网络协议

历史上先后问世了多个具有重大社会影响的电子通信技术第一个这样的技术是世纪年代发明的电话电话使得不在同一物理位置的两人得以实时地口头交流它对社会有重大的影响——有好的也有坏的下一个电子通信技术是世纪年代及年代问世的广播收音机/电视机广播收音机/电视机使得人们能收听收视大量的音频和视频信息它对社会同样有重大的影响——有好的也有坏的改变了人们的生活与工作方式的第三个重大通信技术是webweb最吸引用户的也许是它的随选(on demand)操作性用户只在想要时收到所要的东西这一点不同于广播收音机/电视机广播收音机/电视机的用户是在其内容供应商播出内容期间被迫收听收视除了随选操作性Web还有许多大家喜爱的其他精彩特性任何个人都可以极其容易地在Web上公布任何信息;任何人都可能以极低的成本成为发行人超链接和搜索引擎帮助我们在Web站点的海洋中导航图形和动画刺激着我们的感官表单Java小应用程序Activex控件以及其他许多设备使得我们能与Web页面和站点交互Web还越来越普遍地提供存放在因特网中的可随选访问(即点播)的大量音频和视频材料的菜单接口

HTTP概貌

Web的应用层协议HTTP是Web的核心HTTP在Web的客户程序和服务器程序中得以实现运行在不同端系统上的客户程序和服务器程序通过交换HTTP消息彼此交流HTTP定义这些消息的结构以及客户和服务器如何交换这些消息在详细解释HTTP之前我们先来回顾一些web中的术语

Web页面(web page也称为文档)由多个对象构成对象(object)仅仅是可由单个URL寻址的文件例如HTML文件JPG图像GIF图像JAVA小应用程序语音片段等大多数Web页面由单个基本HIML文件和若干个所引用的对象构成例如如果一个Web页面包含HTML文本和个JPEG图像那么它由个对象构成即基本HML文件加个图像基本HTML文件使用相应的URL来引用本页面的其他对象每个URL由存放该对象的服务器主机名和该对象的路径名两部分构成例如在如下的URL中:

/urlpath/pictureqif

是一个主机名/urlpath/pictureqif是一个路径名浏览器是web的用户代理它显示所请求的Web页面并提供大量的导航与配置特性Web浏览器还实现HTTP的客户端因此在web上下文中我们会从进程意义上互换使用浏览器客户两词流行的Web浏览器有Netscape Communicatorfirefox和微软的IE等Web服务器存放可由URL寻址的Web对象web服务器还实现HTTP的服务器端流行的Web服务器有Apache微软的IIS以及Netscape Enterprise ServerNetcraft提供了web服务器的概要剖析[Netcrft ]

HTTP定义Web客户(即浏览器)如何从web服务器请求Web页面以及服务器如何把Web页面传送给客户下图展示了这种请求—响应行为当用户请求一个Web页面(譬如说点击某个超链接)时浏览器把请求该页面中各个对象的HTTP请求消息发送给服务器服务器收到请求后以运送含有这些对象HTTP响应消息作为响应年底基本上所有的浏览器和Web服务器软件都实现了在RFC 中定义的HTTP/版本年初一些Web服务器软件和浏览器软件开始实现在RFC 中定义的HTTP/版本HTP/与HTTP/后向兼容;运行版本的web服务器可以与运行版本的浏览器对话运行版本的浏览器也可以与运行版本的Web服务器对话

HTTP请求与响应行为

HTTP/和HTTP/都把TCP作为底层的传输协议HTTP客户首先发起建立与服务器TCP连接一旦建立连接浏览器进程和服务器进程就可以通过各自的套接字来访问TCP如前所述客户端套接字是客户进程和TCP连接之间的服务器端套接字是服务器进程和同一TCP连接之间的客户往自己的套接字发送HTTP请求消息也从自己的套接字接收HTTP响应消息类似地服务器从自己的套接字接收HTTP请求消息也往自己的套接字发送HTTP响应消息客户或服务器一旦把某个消息送入各自的套接字这个消息就完全落入TCP的控制之中TCP给HTTP提供一个可靠的数据传输服务;这意味着由客户发出的每个HTTP请求消息最终将无损地到达服务器由服务器发出的每个HTTP响应消息最终也将无损地到达客户我们可从中看到分层网络体系结构的一个明显优势——HTTP不必担心数据会丢失也无需关心TCP如何从数据的丢失和错序中恢复出来的细节这些是TCP和协议栈中更低协议层的任务

TCP还使用一个拥塞控制机制该机制迫使每个新的TCP连接一开始以相对缓慢的速率传输数据然而只要网络不拥塞每个连接可以迅速上升到相对较高的速率这个慢速传输的初始阶段称为缓启动(slow start)

需要注意的是在向客户发送所请求文件的同时服务器并没有存储关于该客户的任何状态信息即便某个客户在几秒钟内再次请求同一个对象服务器也不会响应说:自己刚刚给它发送了这个对象相反服务器重新发送这个对象因为它已经彻底忘记早先做过什么既然HTTP服务器不维护客户的状态信息我们于是说HTTP是一个无状态的协议(stateless protocol)

非持久连接和持久连接

HTTP既可以使用非持久连接(nonpersistent connection)也可以使用持久连接(persistent connection)HTTP/使用非持久连接HTTP/默认使用持久连接

非持久连接

让我们查看一下非持久连接情况下从服务器到客户传送一个Web页面的步骤假设该贝面由个基本HTML文件和个JPEG图像构成而且所有这些对象都存放在同一台服务器主机中 再假设该基本HTML文件的URL为:/somepath/l

下面是具体步骡:

HTTP客户初始化一个与服务器主机中的HTTP服务器的TCP连接HTTP服务器使用默认端口号监听来自HTTP客户的连接建立请求

HTTP客户经由与TCP连接相关联的本地套接字发出—个HTTP请求消息这个消息中包含路径名/somepath/l

HTTP服务器经由与TCP连接相关联的本地套接字接收这个请求消息再从服务器主机的内存或硬盘中取出对象/somepath/l经由同一个套接字发出包含该对象的响应消息

HTTP服务器告知TCP关闭这个TCP连接(不过TCP要到客户收到刚才这个响应消息之后才会真正终止这个连接)

HTTP客户经由同一个套接字接收这个响应消息TCP连接随后终止该消息标明所封装的对象是一个HTML文件客户从中取出这个文件加以分析后发现其中有个JPEG对象的引用

给每一个引用到的JPEG对象重复步骡

浏览器在接收web页面的同时把它显示给用户不同的浏览器可能会以略有不同的方式解释(也就是向用户显示)同一个web页面HTTP与客户如何解释Web页面没有任何关系其规范([RFC ]和[RFC I)仅仅定义HTTP客户程序和服务器程序之间的通信协议

上述步骤之所以称为使用非持久连接原因是每次服务器发出一个对象后相应的TCP连接就被关闭也就是说每个连接都没有持续到可用于传送其他对象每个TCP连接只用于传输一个请求消息和一个响应消息就上述例子而言用户每请求一次那个web页面就产生个TCP连接

在上述步骡中我们有意不说清客户是通过个串行的TCP连接先后取得所有JPEG对象还是通过并行的TCP连接同时取得其中某些JPEG对象实际上现今的浏览器允许用户通过配置来控制并行连接的程度大多数浏览器默认可以打开个并行的TCP连接每个连接处理一个请求—响应事务用户要是喜欢可以把最大并行连接数设为l那样的话这个连接是串行地建立的我们将在第章看到使用并行连接可以缩短响应时间

继续介绍之前先估算一下从客户请求基本HTML文件到它收到该文件所经历的时间为此我们定义往返时间(round trip time简称RTT)它是一个小分组从客户主机游动到服务器主机再返回客户主机所花的时间RTT包括分组传播延迟在中间路由器和交换机土的分组排队延迟以及分组处理延迟下面考虑用户点击某个超链接时会发生什么用户的点击导致浏览器发起建立一个与Web服务器的TCP连接;这里涉及·—次三次握手过程——首先是客户向服务器发送一个小的冗余消息接着是服务器向客户确认并响应以一个小的TCP消息最后是客户向服务器回确认三次握手过程的前两次结束时流逝的时间为个RTT此时客户把HTTP请求消息发送到TCP连接中客户接着把三次握手过程最后一次中的确认捎带在包含这个消息的数据分节中发送以去服务器收到来自TCP连接的请求消息后把相应的HTML文件发送到TCP连接中服务器接着把对早先收到的客户请求的确认捎带在包含该HTML文件的数据分节中发送出去这个HTTP请求顺应交互也花去个RTT时间因此总的响应时间粗略地算是个RTT加上服务器发送这个HTMI文件的时间

持久连接

非持久连接有些缺点首先客户得为每个待请求的对象建立并维护一个新的连接对于每个这样的连接TCP得在客户端和服务器端分配TCP缓沖区并维持TCP变量对于有可能同时为来自数百个不同客户的请求提供服务的web服务器来说这会严重增加其负担其次如前所述每个对象都有个RTT的响应延长——一个RTT用于建立TCP连接另—个RTT用于请求和接收对象最后每个对象都遭受TCP缓启               

上一篇:DHCP服务器管理再出“绝招”

下一篇:启动与关闭服务器