http协议范例6篇

http协议

http协议范文1

引 言

超文本传输协议(HTTP)是目前通过Internet进行信息交换最主要的方式。HTTP协议是建立在请求/响应(request/response)模型上的。首先由客户建立一条与服务器的TCP链接,并发送一个请求到服务器,请求中包含请求方法、URI、协议版本以及相关的MIME(Multipurpose Internet Mail Extensions)样式的消息。服务器响应一个状态行,包含消息的协议版本、一个成功和失败码以及相关的MIME式样的消息(包含服务器的信息、资源实体的信息和可能的资源内容)。图1给出了HTTP协议实现的一个简单模型。HTTP/1.0[3]为每一次HTTP的请求/响应建立一条新的TCP链接,因此一个包含HTML内容和图片的页面将需要建立多次的短期的TCP链接。一次TCP链接的建立将需要3次握手。另外,为了获得适当的传输速度,则需要TCP花费额外的回路链接时间(RTT)。每一次链接的建立需要这种经常性的开销,而其并不带有实际有用的数据,只是保证链接的可靠性,因此HTTP/1.1[4]提出了可持续链接的实现方法。HTTP/1.1将只建立一次TCP的链接而重复地使用它传输一系列的请求/响应消息,因此减少了链接建立的次数和经常性的链接开销。

可持续链接减少了每次TCP链接建立的时间,但是一个空闲的TCP链接将需要一个Socket和相应的存储缓冲区。一个Socket缓冲区的最小长度必须大于一个TCP包的最大长度,即64 KB,而且很多实现方法在链接建立时将预分配一些缓冲区。可用的Socket的数量是有限的,很多基于BSD的操作系统对于能够同时打开的链接数都有一个缺省的最大值。

无线掌上设备PDA的应用(如浏览器)[5]特点表现在:① 因为页面是针对掌上设备制作的,一般在1 K~2 K字节,比较小;② 目前无线通信网络的带宽很窄,GSM的数据信道带宽只有9.6 K。当前Web页面的访问大多通过HTTP协议,并使用TCP作为下层的传输控制协议。但不幸的是,TCP并不适合短会话的应用情况,不同于现在采用的使用单一TCP传输协议进行数据传输的方式。本文提出了采用动态选择传输层协议(TCP、UDP)的方法来改善取回页面的延迟、网络拥塞以及服务器的负荷。

这种混合TCP-UDP的方法结合两个方面的优点:首先,对于需要比较少数据传输的情况,它将使用UDP作为传输层的协议,从而避免了TCP链接的多次握手开销;另外,对于需要较多数据传输的情况,它将使用可靠的带有重排序和拥塞控制的TCP协议作为传输层的协议。混合TCP-UDP的实现方法只需要对应用层的改动,而操作系统的核心代码不用任何更改。仅采用UDP协议的缺点在于,需要在应用层建立一套类似于TCP复杂的控制协议,从而进行重排序和拥塞控制来保证传输的可靠性。

1 背 景

HTTP是一个请求/响应协议,客户端的应用程序通过提供一个URL可以从服务器上得到所需的数据。HTTP可以用来访问各种不同类型的资源,其中包括文本、图形、影音、可执行文件、数据库查询结果等等。

图2给出了在客户端发起HTTP GET请求后,在客户端和服务器之间进行数据包交换的示意。图中只有两个数据包是有用的(即携带了数据):一个是HTTP GET请求,另一个是HTTP的响应。其它的都是TCP用来进行握手操作的数据包。为了减轻Web服务器的负荷,经常采用重定向机制。这样从服务器发来的重定向响应报文是很短的数据包。使用TCP作为传输协议需要至少7个数据包,而使用UDP则只需要2个数据包就足够了。

2 设 计

我们使用混合传输层[6]的方法即对于少量数据传输的链接采用UDP,而对于大量数据传输的链接采用TCP作为传输层协议。这样对于短链接而言就避免了TCP经常性的握手开销,而对于长链接则仍可获得TCP的优点,如超时重传、拥塞控制、错误恢复机制等。这种方法中,客户端首先尝试使用UDP作为传输层的协议,如果对于所请求的URL UDP并不适合,则再次使用TCP链接。这种方法提供了以下保证:

如果初始的UDP数据包丢失,将采用TCP重新链接而不会受到影响。

如果所链接的服务器没有使用混合传输层的实现机制,客户端将使用TCP重新进行链接。

图3给出了混合TCP、UDP的实现算法。一个采用混合算法的HTTP客户端首先使用UDP作为传输层的协议发出HTTP GET请求,同时启动超时定时器。

当服务器处理客户端发来的请求时,它可以从以下两点做出选择:

① 如果响应的数据足够小(比如,可放到一个数据包中),服务器将使用UDP发回响应。像比较小的网页或HTTP REDIRECT响应就属于这一类。

② 如果响应的数据很大,无法放进一个UDP数据包中,服务器则要求客户端使用TCP重试。这可以通过添加一个HTTP的头部字段来解决如 TCPRETR。

在客户端,将会出现以下三种情况:

客户端从服务器接收到响应。如果响应中包含了所需的HTTP响应,客户端将对数据进行处理。如果服务器要求客户端重试,客户端将使用TCP作为传输层重试。

如果服务器没有处理通过UDP传输的HTTP包,客户端就会收到ICMP错误消息(目的地址无法到达/协议无法到达)。此时客户端将会使用TCP重试。

如果定时器超时,客户端应使用TCP重试。

图4给出了在定时器超时情况下,客户端和服务器之间数据包的交换。这种超时机制提供了可靠性,以及与未使用混合TCP-UDP方法的服务器的兼容性。

图5示意了服务器要求客户端使用TCP重发请求时,客户端和服务器之间的数据包交换。

3 结 语

混合TCP-UDP方法改善了参与HTTP传输的三个方面:客户端、服务器和网络。

对于客户端而言,可以避免由于TCP而引入的三向握手的时间,从而减少了浏览的延迟时间。

http协议范文2

现实世界中的很多过程都具有多条线索同时动作的特性。java语言的一大特性就是内置对多线程的支持。多线程是指同时存在几个执行体,按几条不同的执行线索共同工作的情况,它使得编程人员可以很方便地开发出具有多线程功能、能同时处理多个任务的功能强大的应用程序。一些同时运行的线程需要共享数据,因此每个线程就必须要考虑其它与它一起共享数据的线程的状态与行为,这就是线程安全的问题。为了对java多线程与线程安全机制进行研究与实践,特此设计一个基于http 协议的支持多线程断点续传的下载程序。此下载程序由下载任务模块、设置模块以及系统帮助模块组成。通过apache jakarta commons下的子项目httpclient包对http协议进行支持,从而下载服务器端的资源。程序提供多线程断点续传功能,在完成下载过程中使用多线程技术可以较大幅度地提高下载的速度。

关键词:多线程;线程安全;断点续传

需求分析

3.1用户需求分析

随着internet的发展,进入信息时代后快速获得网络共享资源成为很简单的事情,人们对互联网也有了很大的依赖性。人们甚至希望只轻松点击鼠标就可以得到自己想要的东西。比如,针对一些专业的论坛提供了很多相关资料以方便人们阅读或了解;还有更多的人希望能过下载到他们喜欢听得音乐、好看的图片、喜欢的电影等等。也可以看出人们在上网时再也不单是打开浏览器来浏览网页,越来越多的人们开始使用下载软件来获取资源。同时人们也更希望使用更新更快的下载软件。

由于用户下载需求的增大,也要求下载软件能够迅速完成对资源的下载。多线程程序设计可以很好的解决程序并发的问题。最恰当的比喻就是用户会感到cpu似乎同时出现在两个地方,在下载软件中应用多线程技术可以理解为将一个下载任务分成若干份来完成,其中的并发控制将使下载的效率大大提高。

由于下载资源是一个过程,当中用到的时间可能会很长。那么在很长的这段时间中很有可能会出现很多的意外情况使下载中断或是停止,比如电源意外被切断、网络中断、或是操作系统故障导致系统重新启动。这些原因都会导致下载的中断,但是当用户重新下载资源时发现原来下载的数据已经消失你还是要回头再来。断点续传就是用来解决这样的问题的,它的任务是在下载任务停止时,记录当前下载的信息并且利用网络协议中的一些重定向机制继续完成下载任务而不必从头再来。

随着使用下载工具的时间的增长,用户下载的资源越来越多,因此在下载列表中的项目也越来越多,越来越混乱,因此为了便于管理和用户使用方便,用户迫切希望下载工具具有下载文件分类的功能。

在下载任务的管理这一块,用户不仅希望下载工具具有下载一个一个资源的功能,而且具有批量下载有些相似的或有关联的资源的功能。还有些特殊情况下,用户在下载任务开始后由于种种原因希望放弃资源的下载,这就要求下载工具具有删除任务的功能了。

为了对下载任务进行掌控,用户往往具有设置下载任务的线程数,文件下载网址,文件下载存储目录和在下载过程中对下载任务的状态进行监控等功能需求。

鉴于某些软件使用初学者甚至某些电脑初学者的实际情况,他们往往需要系统有一个格外的帮助文档,使他们能够更快、更好地学会使用断点续传下载软件,提高效率。

3.2 业务流分析

多线程断点续传的业务流程:首先由用户进入软件系统,在新建任务中填写必要的下载资源的相关属性,比如相关资源下载地址url、存储路径、以及下载线程数等。由软件发送http消息请求,然后服务器根据请求返回响应消息。确认无误就可以启动线程开始下载资源。将缓存中存储的数据最终存储到目的存储路径。此外,系统为用户提供了一些对任务的基本操作,比如,停止、继续、删除等。

4. 系统设计

4.1 系统设计要点

随着用户下载需求的增大,用户下载的资源越来越大,下载的过程也就越来越久,这就要求下载软件能够迅速完成对资源的下载,为了提高下载效率的问题,所以本系统采用多线程的方式来实现下载速率的提高。多线程的优点之一是所有线程都可以访问相同的全局变量和共享资源,它提供了程序设计的简捷性与便利性,提高了对信息处理的并发度,但也带来了数据的讹误或线程得不到某一资源而被饿死(即死锁)的可能性。为了避免这些现象的产生,线程在使用共享资源或对象前必须获得一个约束访问同步对象的权力,也就是通过同步的机制来控制这种权力的使用,这就是线程的安全问题。http协议是互联网中一个非常重要而且应用十分频繁的协议,所以本系统的设计是基于 http协议的。长期以来,断点续传始终是困扰网虫们的一大难题,眼看着已经下载到99%的软件,却由于突然掉线而前功尽弃的那种沮丧恐怕人人都经历过,于是本系统采用断点续传的方式来设计。

本系统设计的基本目标就是利用编写一个时下流行的基于http协议的多线程断点续传的程序来研究java多线程与线程安全的机制。

4.2 系统总体功能结构

通过对多线程断点续传下载软件的需求分析并结合实际情况的分析,本系统由下载分类管理、任务管理、设置管理、系统帮助四个主模块构成。本系统的功能结构图如图示:

其中下载文件的分类模块主要是通过在新建下载任务时候设置下载文件的存储目录甚至新建一个存储目录的方式来实现。

下载任务的管理模块主要有三个子模块组成:新建下载任务模块、批量完成下载任务模块、删除任务模块。

在设置任务的管理模块主要有两个子模块组成:在新建(批量)下载任务的时候进行任务的连接方面的配置模块以及在现在过程中对下载任务的状态进行监视的模块。

http协议范文3

HTTP是单行线

为了通过网络发送或者下载数据,客户端需要与服务器之间建立TCP连接。TCP连接是为保证在终端之间完成无损数据传输而设计的,使用IP地址和网络端口进行配对。众所周知,数据(信息)不仅需要被传输,还需要被理解,所以还必须用到一个运行在TCP传输层之上的应用层协议,从而实现客户端和服务器之间的“通话”。在网站上,这个应用层协议主要就是HTTP协议。尽管TCP支持通过虚拟的透明传输层实现双向数据传输,但是应用层的HTTP协议并不支持该选项。简单地说,双向数据传输意味着允许从服务器端发送推送信息到客户端,这是现代Web应用程序的特性之一,但是“单向”的HTTP基于非常简单的问答模型,客户端发送“请求”,服务器端才会进行“回复”。这样做不仅速度慢而且成本高。

为了保证用户不需要频繁地按下更新按钮,程序员们想到了一些变通的方法,从而能够通过HTTP协议“巧妙”地实现即时通讯。其中最简单常用的一种方法是轮询(Polling),也就是浏览器端的脚本代码根据设定好的频率向服务器“询问”有没有新事件。轮询需要为每个请求建立一个新的连接,得到“回复”之后,服务器就会中断连接。如此一来就会花费更多的时间,而且频繁地新建TCP连接也会增加通信量,从而导致线路开销和网络负载倍增。另一种变通方案——长轮询(Long Polling)比轮询更先进一些,因为它可以等待服务器端有新的事件时才返回“通知”,缩短了可能会出现的通知延迟(Latency),让消息传输更及时,但并这没有完全解决网络负载大的问题。

HTTP streaming是变通方案中最好的一个,它可以长时间保持连接不断开,同时在后台实现与服务器按照不规则的顺序交换数据(无需刷新页面)。不过缺点是需要大量运用JavaScript对象XMLHttpRequest,该脚本在不同浏览器中的实现效果并不相同,而且它总是需要两个HTTP连接才能完成实时双向通讯。

快速高效的WebSocket

WebSocket协议通过建立套接层(Socket)解决以上替代方案出现的问题,该套接层可以通过IP地址和端口永久地维持客户端与服务器之间的信道,这样两端就可以在一个连接中同时完成双向的通讯,而不需要频繁地发送“请求”。在HTTP握手建立连接时有一个几乎已经被忘记的功能——“协议协商升级”(upgrade)。WebSocket现在将“协议协商升级”重新引入,通过HTTP握手完成应用层协议的升级。然后浏览器就可以调用WebSocket API,而不是JavaScript对象。是否启用了WebSocket连接可以通过浏览器地址栏中的统一资源标识符(URI)“ws://”和“wss://”(WebSocket安全协议)进行识别。

为了确保只有获得允许的WebSocket终端之间才能进行通讯,开发者在HTTP协议头部增加了一些安全机制:客户端在请求中生成一个基本的Base64编码安全密钥,服务器收到该密钥之后对其进行SHA-1加密,然后再返回给客户端。从而避免WebSocket服务器遭遇未知源的恶意攻击,保证只有已知的或者可信的客户端才可以建立连接。

http协议范文4

关键词:FS8610;Web服务器;TCP/IP

中图分类号:TP311文献标识码:A文章编号:1009-3044(2008)35-2116-02

Web Server Application Design Base on FS8610

WANG Xin,JIANG Xiao-feng

(School of Computer Science & Technology, Soochow University,Suzhou 215006,China)

Abstract: This paper gives introduction to a Fast Ethernet chip-FS8610 Within Hardware TCP/IP engine,and also describes the process of building a Web Server.The process include hardware connection, actualize TCP/IP engine and build Web Server.

Key words: FS8610;web server;TCP/IP

1 引言

随着嵌入式技术的迅速发展,嵌入式系统的应用越来越广泛。而网络通信的发展,使得B/S(服务器/客户端)应用模式成为一种趋势。嵌入式Web服务器是目前比较热门的应用方案之一。本方案就是通过FameG的8-bit高速以太网网络微处理芯片FS8610以及Realtek公司的RTL8201CP组建一个Web服务器。它具有成本低廉,体积小,设计灵活等特点。

2 FS8610概述

FS8610是一颗内嵌硬件TCP/IP协议栈的8位高速网络微控制器芯片,可以提供硬件处理的Ethernet/ARP/RARP/IPv4/ICMP/IGMPv2/TCP/UDP/PPPoE等网络协议。MCU使用1T RISC架构的8051处理器,在完全兼容标准8051指令集的基础上,可以提供超高速的处理能力(最高可运行在160MHz)。

芯片的主要功能如下:内嵌高性能RISC E8051D,完全兼容标准8051系统时钟;支持MII接口,兼容IEEE802.3 100BASE-TX and 10BASE-T;支持全双工和半双工模式;支持ARP/RARP/IP/ICMP/IGMP/TCP/UDP[1]硬件处理;支持PPPoE over xDSL;支持DMA数据传输功能;提供UART,GPIO,Timer等接口;提供SRAM标准接口,用来与外部数据存储器、程序存储器或者其他应用芯片进行连接;支持在线调试功能。其功能结构框图如图1所示。

3 嵌入式Web服务器的实现

3.1 硬件设计

Web服务器的重要功能就是可以通过局域网或者Internet网络访问服务器上的资源。因此,Web服务器必须提供一个标准的RJ45接口和可靠的网络传输质量。FS8610已经内置了MAC访问控制协议,而RTL8201CP提供了MII接口,可以支持MAC[2]。因此FS8610和RTL8201CP可以无缝对接,从FS8610传过来的数据比特流,在MDIO的控制下,通过RTL8201CP转换成以太网物理层能接收的模拟信号,并经过HY601680的耦合隔离变压器的转换和滤波,最后通过RJ45头传输到因特网中。其具体硬件原理图如图2所示。

3.2 软件设计

3.2.1 网络通信的实现

TCP/IP 协议[3]作为一种成熟的网际互联手段和事实标准,毫无疑问成为了嵌入式系统连入互联网的首选协议。但是在嵌入式系统中,硬件资源较少,通常缺乏足够的处理器和存储器资源以支持整个TCP/IP 协议族,因此嵌入式的TCP/IP技术与常规的TCP/IP 实现有很大的不同。嵌入式系统中实现的协议要根据系统自身的特点及功能来设计自己的协议族,因此,在嵌入式Web 服务器中并非TCP/IP 协议族中所有的协议都要实现,必须针对不同的网络应用对协议栈进行删减,保留其基本功能,以满足网络应用的需要。考虑到嵌入式Web 服务器的硬件处理速度慢并且存储容量相对较小的条件限制,在TCP/IP 协议栈中主要能够实现ARP,IP,ICMP,TCP 协议即可。

具体分析如下:以太网数据的传输是采用MAC 地址来识别的,而ARP 协议提供IP 地址和数据链路层使用的MAC 地址之间的转换功能,为了保证系统在以太网的通信,首先要实现ARP 协议;由于嵌入式Web服务器要能在Internet 上通信,在网络层一定要实现IP 协议,还要实现能报告数据传送差错等情况的ICMP 协议;同时,Web 服务器同Web 浏览器之间的通信是通过HTTP 协议进行的,在传输层采用TCP 协议,能保证可靠的数据传输,进而实现其基础之上的HTTP 协议。

在TCP/IP参考模型里,应用层下面的各层提供了可靠的传输,实现网络应用的是应用层的各类协议,但是它们并不直接为用户服务,所以我们还必须定义一些自定义协议。当网络向PC传送数据时,需要以某种共同约定的方式来通知PC数据开始传送了,数据的长度是多少;这些都需要自定义协议来实现。自定义协议,简而言之就是为了正确传输自定义的内容而定义的“网络传输规则”,包含特殊的命令或者特定的二进制位元。对于本系统而言,自定义协议要做的是将要传输的数据当作TCP或UDP包的“数据”,通过自定义的命令组成自定义协议,来正确的接收和处理这些数据,从而实现网络的通信。

3.2.2 嵌入式Web服务器的实现

以FS8610为核心构建其Web服务器时,充分利用了其内嵌硬件TCP/IP协议栈的特点,在Kernel层库函数和应用层协议的基础上,编写了Web服务器主要程序模块:HTTP包的解析、HTML文件的搜索、HTML文件的参数管理以及HTTP包的响应。其体系结构如图3所示。

嵌入式Web服务器需要根据浏览器发出的http请求及时更新网页或从头创建网页,因此需要用动态交互技术实现。到目前为止要实现动态网页,只能采用CGI,因为还不支持ASP, PHP等动态网页技术。公共网关接口――CGI是一种服务器与浏览器信息、交换的标准接口。CGI建立在浏览器/服务器机制上,为外部扩展的应用程序与Web服务器交互提供了一个标准接口。按照CGI标准编写的外部扩展应用程序可以处理客户端输入的工作数据,完成客户端与服务器的交互操作等。

客户端的用户通过浏览器完成一定输入工作后,向服务器发出HTTP请求(称为CGI请求),服务器守护进程接收到该请求后,就创建一个子进程(称为CGI子进程)。该CGI子进程将CGI请求的有关数据设置成环境变量,在CGI程序与服务器间建立两条数据通道,然后启动URL指定的CGI程序。子进程通过标准输出流将处理结果传递给服务器守护进程,守护进程再将处理结果作为应答消息回送到客户端。

一般的静态网页只能满足客户端浏览网页的功能,无法满足客户端与服务器端的数据交互,因此在诸如远程监控等许多场合实用性不强。而使用CGI接口,浏览器可以在HTTP内部调用函数并以网页的形式接收结果,即实现动态网页的功能,能够有效解决客户端与服务器端数据交互的问题。设计中相应的CGI文件(*. cgi)必须包含文本字符串"%xx",其中"%"是控制代码,"xx"代表两位变量标识符,其值为0~99。当HTTP服务器调用CGI文件,遇到这个文本字符串时,它将除去"%",并将"xx"提取出来,交给相应函数进行处理。本设计中浏览器使用HTML GET的方法以及多个参数来调用函数,服务器对其进行解析并使用实际方法的代码和它的参数来调用主应用程序,在服务器的应用程序中设计了相应的代码来实现回调函数,从而实现网页的的动态连接。

4 结束语

该文介绍的基于FS8610 Web服务器对TCP/IP 协议栈进行了精简,既兼顾了TCP/IP 协议的主要功能的实现,又照顾到嵌入式系统本身的弱点,利用嵌入式TCP/IP协议栈能扩展许多非智能设备的网络功能,使之方便接入Internet,具有很高的实用价值。该Web服务器还可以应用到各种网络产品中,不仅成本低廉、设计简单,而且运行稳定,可见福华公司的FS8610在网络应用方面将具有很好的前景。

参考文献:

[1] 福华先进微电子.FS8610 L4MCU Design Target Specification.

http协议范文5

关键词:自动升级;更新平台;网络更新



1 问题的提出

随着桌面应用程序新版本的不断,客户端运行的版本也越来越杂,版本、数据结构的兼容也成为后续开发必须考虑的问题,而且兼容性方面的问题越来越多,开发及维护成本越来越高。

2 问题的分析

随着因特网的普及,通过网络来实现桌面应用程序的更新升级已经成为可能。在程序中加入在线更新的功能将能有效地解决前面讨论的版本维护难题。

关于通信协议,可以编写程序实现Socket通信,也可以采用比较成熟的HTTP协议。考虑到诸多因素,笔者选择了HTTP协议。

3 HTTP协议特点

HTTP协议(超文本传输协议)的主要特点可概括如下:

(1)简单快速:客户向服务器请求服务时,只需传送请求方法和路径。请求方法常用的有GET、HEAD、POST。每种方法规定了客户与服务器联系的类型不同。 

(2)由于HTTP协议简单,使得HTTP服务器的程序规模小,因而通信速度很快。 

(3)灵活:HTTP允许传输任意类型的数据对象。正在传输的类型由Content-Type加以标记。 

(4)无连接:无连接的含义是限制每次连接只处理一个请求。服务器处理完客户的请求,并收到客户的应答后,即断开连接。采用这种方式可以节省传输时间。 

(5)无状态:HTTP协议是无状态协议。无状态是指协议对于事务处理没有记忆能力。缺少状态意味着如果后续处理需要前面的信息,则它必须重传,这样可能导致每次连接传送的数据量增大。另一方面,在服务器不需要先前信息时它的应答就较快。

另外,笔者在实验中发现很多网络都设置了防火墙,考虑到安全问题,网络管理员会屏蔽很多端口。而对于HTTP最常用的80端口通常是开放的,这也是笔者选择HTTP协议的一个重要因素。

4 数据流程及数据结构

实际应用中可以对流程进行扩展,例如自动程序线程定时启动、开始更新前检查上次留下的缓存、断点续传等。

该平台中有多个软件产品,存储在U_Products表中。每个软件产品有多个用于客户端验证的序列号,存储在U_Clients。序列号是客户端的凭证,只有授权了的序列号才能访问平台。而且序列号表还标出了该序列号允许升级的版本范围。同时,每个软件产品对应的多个文件,通过服务端脚本输出一个文件列表。客户端连接上服务器后首先要做的就是下载属于它的文件列表。

文件列表用于比较客户端文件与服务器上的各个文件的新旧。其中的时间戳是主要比较字段,文件名用于记录定位。 5 客户端工作流程

需要指出的是表1列出的是基本的流程。实际中客户端工作流程会比表1复杂的多。

主程序启动之后,创建自动升级程序的线程。该线程在后台运行,首先读出产品的序列号,通过URL参数传值的形式传到Web端。此处传值可以更加灵活,可以在用户允许的前提下,将更多的信息传给服务器。例如当前软件版本,客户端操作系统版本,客户端计算机硬件信息等等。

运行在Web端的脚本响应请求,判断序列号是否合法,即序列号是否正确,是否过期。通过之后输出与该序列号对应的软件的所有文件列表。

自动升级程序开始通过HTTP协议下载这个列表。下载完毕后读出上一次升级之后,保存下来的文件列表,并与下载下来的列表进行对比,通过时间戳对比找出新文件。通常只要时间戳不一样就将文件加入的需要下载的文件列表中,也可以采用时间戳转成浮点数后大小对比的策略。例如平台中放的是稳定的正式版,而有些客户端已经通过其他途径得到新版本更高的测试版。第二种策略就可以避免高版本文件通过升级之后版本降低。这也是为什么采用时间戳,而不是文件MD5唯一哈希值的原因。

得到新文件列表之后,再次通过HTTP协议逐一下载新文件到缓存目录中。下载新文件的URL由文件编号和序列号共同确定。每下载一个文件,更新一次本地的文件列表。这样如果出现网络中断,用户退出等异常,下次启动可以跳过已经下载过的文件。虽然这不是严格意义上的断点续传,但在一定程度上提高了程序的容错能力。

数据全部下载完毕之后询问用户是否立即应用更新。如果是则退出主程序,将缓存文件夹中的文件移动到主程序所在的目录中,并覆盖。否则保持缓存中的文件,供下次升级使用。

6 改进及结束语

网络状况很差的时候更新所需要的时间很长。对于该问题,可以对文件进行逐个ZIP压缩,通过HTTP协议传输压缩流,而不是文件本身的数据流。客户端下载之后进行解压缩。此处是对文件逐个压缩,而不是整体打包。因为整体打包之后会出现客户端只需要更新一个文件而不得不下载整个压缩包的情况。而且整体打包也对断点续传提出了更高的要求。

另外出于某种原因的考虑,有时需要更多考虑数据安全。例如未授权的序列号不能获得新版本的文件,且一个序列号只能对应一个客户端。对此可以采用动态序列号的方式,即下载完文件列表时或更新结束时,都将原有的序列号作废,动态创建一个新的值。

另外对于重大缺陷的修复更新,更希望能强制更新。对此可以在自动更新程序发现更新时,强制停止主程序的响应。通过这一策略甚至可以做到所有的新版本之后,客户端迅速跟进,并全部更新到最新版本。

笔者使用微软的C#语言来实现,经过反复测试,发现ZIP压缩之后,对网络要求低了很多,更新效率提高很多。通过动态序列号及强制更新策略也基本能保证客户端版本可控。

参考文献

[1]C.J.Date.数据库系统导论[M].北京:机械工业出版社,2000.

http协议范文6

关键词:流媒体;传输协议;系统结构

流媒体(Streaming Media)是指采用流式传输的方式在Internet播放的多媒体格式。在流媒体出现之前,人们在互联网上获取音视频信息的唯一方式就是将音视频文件下载到本地计算机进行观看。而流媒体技术把连续的影像和声音信息以数据流的方式实时,即边下边播的方式,使得用户无需等待下载或只需少量时间缓冲即可观看,大大提高了音视频信息的可观赏性,节约用户时间及系统资源。

自从1995年progressive Network公司(即RealNetwork公司)第一个流产品以来,流媒体得到巨大的发展,已经成为目前互联网上呈现音、视频信息的主要方式。

1. 流媒体传输的方法

流媒体传输技术分为两类::顺序流传输(Progressive streaming )和实时流传输(Realtime streaming)。

顺序流方式又叫渐进式下载,其传输方式是顺序下载,在下载文件的同时用户可观看在线内容,用户只能观看已下载的部分,而不能跳到还未下载的部分。由于标准的HTTP服务器可发送顺序流式传输的文件,也不需要其他特殊协议,所以顺序流式传输经常被称作HTTP流式传输。

实时流方式:实时流式传输使媒体可被实时观看到,特别适合现场广播并提供VCR 功能,具备交互性,可以在播放的过程中响应用户的快进或后退等操作。实时流式传输必须匹配网络带宽,其出错的部分一般被忽略,传输质量特别时低带宽时的质量要比顺序传输的差。实时流传输需要专门的流媒体服务器和流传输协议。

2. 流媒体技术原理

流式传输方式是指通过特定算法将音频和视频等多媒体文件分解成多个小的数据包,由服务器向客户端连续传送,用户可播放已经接收到的数据包,而不需要将整个文件下载到客户端。由于TCP协议不太适合传输多媒体数据,故在实时流媒体方案中,一般采用HTTP/TCP来传输控制信息,而用RTP/UDP来传输实时数据。

3. 流媒体技术的系统结构

目前不同公司的流媒体解决方案各不相同。但就其本质来说,一个完整的流媒体系统至少包括三个组件:编码工具、服务器及播放器。这三个组件间通过特定的通信协议相互联系,按特定的格式相互交换数据。

4. 传输协议

流媒体系统各组件通过传输协议相互通信。对于顺序流传输,可采用HTTP协议进行传输。但HTTP协议并不适合传输实时流数据。在流式传输的实现方案中,一般采用HTTP/TCP来传输控制信息,而用RTP/UDP来传输实时多媒体数据。传输协议是流媒体技术的一个重要组成部分,也是基础组成部分。它包括"RSVP(资源预留协议)"、"RTP(实时传输协议)"、"R T C P (实时传输控制协议)" 和"RTSP(实时流协议)",这四种协议构成了"rea1-time"服务的基础。

4.1 资源预留协议RSVP (Resource Reserve Protocol)

RSVP是Internet上的资源预订协议,使用RSVP可以让流数据的接收者主动请求流数据上的路由器,为该数据流预留一分网络资源(即带宽),在一定程度上为流媒体的传输提供服务质量。

4.2  实时传输协议RTP与RTCP

RTP是用于Internet/Intranet针对多媒体数据流的一种传输协议。RTP被定义为在一对一或一对多传输的情况下工作,其目的是提供时间信息和实现流同步。RTP通常使用UDP来传送数据,但它本身并不能为按顺序传送数据包提供可靠的传送机制,也不提供流量控制或拥塞控制,它依靠RTCP提供这些服务。RTCP和RTP一起提供流量控制和拥塞控制服务。RTP和RTCP配合使用,能以有效的反馈和最小的开销使传输效率最佳化,特别适合传送网上的实时数据。

4.3  实时流协议RTSP

RTSP是由Real Networks和Netscape共同提出的,该协议定义了一对多应用程序如何有效地通过IP网络传送多媒体数据。RTSP在体系结构上位于RTP和RTCP之上,它使用TCP或RTP完成数据传输。RTSP 是应用级协议,它以底层的RTP和RSVP为依托,控制实时数据的发送,它提供了可扩展框架,使实时数据的受控、点播成为可能。在客户端应用程序中对流式多媒体内容的播放、暂停等操作都是通过RTSP协议实现的。

4.4 MMS协议(Microsoft Media Server Protocol)

与QuickTime和Realsystem流媒体技术采用RTSP协议进行传输不同,微软采用专用协议MMS进行流式传输。

MMS协议是用来访问并且流式接收Windows Media服务器中流媒体文件(asf或 wmv)的一种协议。MMS协议是访问Windows Media点上的单播内容的默认方法。观众在 Windows Media Player 中必须使用 MMS 协议才能引用该流。

5. 主要的流媒体技术

5.1 四大流媒体技术

目前,互联网上流媒体主要流媒体技术方案有Real Networks公司的Real System方案,微软公司的Windows Media流式媒体解决方案,Apple公司的QuickTime流式媒体解决方案及Adobe公司的Flash流媒体解决方案。

5.1.1 Real System

Real Networks是Internet上流媒体传输的先驱者和领导者。其流媒体文件包括RealAudio,Real Video,Real Presentation和RealFlash4类文件。

5.1.2 Windows Media

Windows Media的前身是微软公司的Netshow产品,随着流媒体的广泛应用,微软推出了整套的流媒体制作、和播放产品。由于Windows Media的成本较低且简单易学,支持屏幕录制等功能,故在教育方面应用较广。其流媒体文件包括视频文件WMV/ASF,音频文件WMA等。

5.1.3 QuickTime流式媒体解决方案

Apple的QuickTime是一个跨平台的解决方法,同时支持苹果系统及Windows,其播放器支持多达40种的格式,交互性较强。由于大部分QuickTime编码器和服务器软件均运行在苹果操作系统中,故QuickTime流式媒体在PC机上应用较少。

5.2 新型流媒体技术

5.2.1 HTTP流式媒体

传统的顺序流传输(Progressive streaming )由于采用传统的HTTP协议传输,并不支持现场直播等实时流传输。而随着网络技术的发展,最新的流媒体技术已经支持采用HTTP协议传输流媒体文件和进行实时流传输。HTTP流式媒体的代表有Microsoft公司 IIS平滑流式媒体(IIS Smooth St reaming)、APPLE公司HTTP流媒体直播(HTTP Live streaming),Adobe公司最新的Flash Media Server 4.5也支持HTTP流式媒体传输。

5.2.2 P2P流媒体

P2P流媒体技术并不是一个崭新的流媒体技术。他是P2P技术同流媒体技术结合的产物。基于P2P 的流媒体服务系统并不改变现有的流媒体服务架构, 只是在现有系统的基础上, 改变传统模式下的服务方式和数据传输路径, 使请求同一媒体流的客户端组成一个P2P 网络, 使服务器只须向这个P2P 网络中的少数节点发送数据, 而这些节点可以把得到的数据共享给其余的节点。

6.总结

截至2011年6月,我国的网民人数已经达到4.85亿,其中中国家庭电脑宽带上网网民规模达到3.90亿人。如此巨大的网民数量,为流媒体的发展带来了前所未有的机遇发展机遇。随着互联网的飞速发展,人们对互联网内容多样化的需求也越来越强烈,流媒体业务的需求与只俱增。目前,流媒体已经广泛应用于网络电视,远程教育,移动设备,数字电视,安防监控,视频会议等多个领域。今后流媒体的发展趋势是:①随着流媒体技术的进步、网络带宽的增加及新型高质量编码方式的出现,流媒体的质量进一步提高,高清流媒体将成为主流。②流媒体技术的应用更加广泛。基于流媒体技术的数字电视将取代传统有线电视成为主流;同时随着3G网络基础设施的完善和移动终端功能的增强,融合语音、文字、图像等多种形态的移动实时流媒体业务,如手机流媒体直播、移动网络会议等,将使流媒体的应用达到一个新的高度。

参考文献:

[1]庄捷.流媒体原理与应用 [M].北京:中国广播电视出版社,2007:21-41.

[2]齐俊杰,胡洁,麻信洛.流媒体技术入门与提高[M].2.北京:国防工业出版社,2009:1-30.