`
zhangchibang
  • 浏览: 346292 次
社区版块
存档分类
最新评论

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

阅读更多

 

历史上,先后问世了多个具有重大社会影响的电子通信技术。第一个这样的技术是19世纪70年代发明的电话。电话使得不在同一物理位置的两人得以实时 地口头交流。它对社会有重大的影响——有好的也有坏的。下一个电子通信技术是20世纪20年代及30年代问世的广播收音机/电视机。广播收音机/电视机使 得人们能收听收视大量的音频和视频信息。它对社会同样有重大的影响——有好的也有坏的。改变了人们的生活与工作方式的第三个重大通信技术是web。web 最吸引用户的也许是它的随选(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文本和5个JPEG图像, 那么它由6个对象构成,即基本H1ML文件加5个图像。基本HTML文件使用相应的URL来引用本页面的其他对象。每个URL由存放该对象的服务器主机名 和该对象的路径名两部分构成。例如,在如下的URL中:

  www.yesky.com/urlpath/picture.qif

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

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


图1 HTTP请求与响应行为

  HTTP/1.0和HTTP/1.1都把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)。

 

分享到:
评论

相关推荐

    圆方圆Python入门:超适合小白的python新手教程.docx

    ### 圆方圆Python入门:超适合小白的Python新手教程 #### Python简介与设计哲学 Python是一种高级编程语言,集解释性、编译性、互动性和面向对象编程于一体。它的设计初衷是为了提高编程效率和代码可读性。Python...

    Dubbo新手入门实例HelloWorld(zookeeper)源码

    在本实例中,“Dubbo新手入门实例HelloWorld(zookeeper)”旨在帮助初学者了解如何结合Dubbo和Zookeeper创建一个简单的服务提供者和消费者。首先,我们需要理解这两个关键组件: 1. **Dubbo**: Dubbo的核心功能包括...

    VoIP新手入门级培训资料

    VoIP新手入门级培训资料通常会涵盖以下关键知识点: 1. **VoIP基础概念**:理解VoIP的基本原理,包括如何将声音转化为数据包、如何使用网络协议如UDP或TCP进行传输,以及如何将数据包还原为可听的声音。 2. **硬件...

    symbian 新手入门 中文版

    《Symbian新手入门中文版》是一本专为初次接触Symbian操作系统的学习者准备的指南,旨在帮助读者快速理解并掌握Symbian系统的基本概念、功能和开发技巧。Symbian作为曾经广泛应用于智能手机的操作系统,具有丰富的...

    linux新手入门资料

    Linux新手入门资料是一套专为初学者设计的学习资源,涵盖了Linux操作系统的基础知识、常用指令以及相关的教程。这个压缩包包含了丰富的材料,可以帮助你快速踏入Linux的世界。以下将详细阐述其中可能涉及的一些关键...

    webservice新手入门实例

    在这个新手入门实例中,你将学习到以下关键知识点: 1. **创建Web Service**:首先,你需要创建一个提供服务的服务器端程序,通常使用Java的JAX-WS(Java API for XML Web Services)或者.NET的ASMX等技术。这个...

    FireBird新手入门教程

    ### FireBird新手入门教程 #### 一、简介与安装 **FireBird**,简称**FB**,是一款基于Interbase的开源关系型数据库管理系统。它以其稳定性、高效性和强大的功能受到开发者的青睐。对于初学者来说,掌握FireBird的...

    飞思卡尔XS128新手入门第一资料,必看哦。分享

    3. 外设接口与通信协议:介绍各种I/O接口和通信协议的使用方法。 4. CODEWARRIOR使用教程:详述如何配置IDE、创建项目、编写和调试代码。 5. 实例与实践:通过实例项目,指导读者动手实践,巩固理论知识。 总结,...

    SOA新手入门.doc

    本文旨在为SOA新手提供一个系统的入门指南,阐述其核心概念、关键特性、实现技术、生命周期管理,以及它能为企业带来的益处。 首先,我们需要了解SOA的基本理念。SOA支持将企业业务分解为可重用的服务单元,并通过...

    cisco模拟器新手入门案例/计网配置.pptx

    【Cisco模拟器新手入门案例/计网配置】的讲解涵盖了多个关键网络配置概念,适合初次接触思科模拟器的初学者。在这个PPT中,主要讲述了如何配置交换机,包括了VLAN、静态路由、VTP、交换树、DHCP服务、链路聚合、RIP...

    USB通讯协议 (新手绝对入门) 中文版ppt.rar

    USB通讯协议是现代电子设备间数据传输的一种标准...通过深入学习这份"USB通讯协议 (新手绝对入门) 中文版ppt",初学者可以逐步了解USB的工作原理,掌握USB设备的开发和调试技巧,为实际项目中的USB应用打下坚实的基础。

    新手入门redis 项目使用

    新手入门Redis并将其应用于项目中,需要理解其数据结构、集群机制、容错策略和与Spring Session集成的方法。通过实践操作,将Redis的高效缓存、快速响应与分布式存储能力融入到业务管理平台的开发与运维中,可以显著...

    Java新手入门的30个基本概念

    ### Java新手入门的30个基本概念 #### Java概述与特点 Java自问世以来便以其独特的...以上是对Java新手入门阶段需要了解的一些基本概念和特点的详细介绍,这些知识是深入学习Java的基础,对于初学者来说非常重要。

    Java_技术新手入门,好东西

    ### Java技术新手入门知识点详解 #### 一、Java技术概览 - **定义与特性**:Java技术是一种高级面向对象的编程语言,同时也是一种运行环境。它的核心特性之一是“一次编写,到处运行”(Write Once Run Anywhere, ...

    聊天程序 适合新手入门

    标题中的“聊天程序 适合新手入门”意味着我们将讨论一个初级级别的编程项目,旨在帮助初学者了解如何构建一个简单的聊天应用程序。这个程序很可能是基于客户端-服务器架构,使用了VC++编程语言,并涉及到socket编程...

    Dubbo新手入门实例HelloWorld(zookeeper)源码低分版

    Dubbo新手入门实例“HelloWorld”是初学者学习分布式服务框架Dubbo的典型起点。这个实例结合了Zookeeper作为注册中心,帮助理解Dubbo的基本工作原理。以下将详细讲解涉及的知识点。 首先,Dubbo是一个高性能、轻量...

    Lightroom_6数码照片处理从新手到高手视频教程第1章 软件入门:Lightroom安装.zip

    在本《Lightroom_6数码照片处理从新手到高手视频教程》的第一章“软件入门:Lightroom安装”中,我们将深入探讨Adobe Lightroom这一强大的照片管理和编辑工具的基础知识。这章教程旨在帮助初学者顺利安装并熟悉软件...

    一个蓝牙4.0BLE安卓开发的小例子,适合新手入门学习.rar

    这个压缩包提供了一个适合新手入门的学习案例,通过分析和实践,可以帮助初学者快速进入蓝牙开发的世界。 在安卓平台上进行蓝牙4.0BLE开发,主要涉及到以下几个关键知识点: 1. **蓝牙权限**:在AndroidManifest....

    新手入门摄像头

    5. "新手入门摄像头-第二篇-OV7620和OV7670的比较.pdf" - 在这篇文章中,读者可以了解到OV7620和OV7670之间的差异,包括分辨率、帧率、功耗等方面,有助于选择合适的传感器。 6. "新手入门摄像头-第三篇:智能车...

    nsis 新手入门教程

    NSIS(Nullsoft Scriptable Install ...总的来说,NSIS是一个强大且灵活的安装程序制作工具,适合新手和经验丰富的开发者使用。通过学习NSIS脚本语言和熟悉其核心概念,你可以创建出符合需求的、专业级别的安装程序。

Global site tag (gtag.js) - Google Analytics