下面是宣传员给大家整理的8篇http协议范文,希望可以启发您对于http协议的写作思路。
http协议 篇一
程序实现过程:
1.分析链接关系(限于篇幅,这里只介绍对锚标记〈a〉的分析)。
在html中〈a〉标记的基本语法为:〈ahref=″...″name=″...″target=″...″〉。其中参数href的值就是欲获取的url值。
2.下载。
在http协议中常用的请求方法有两种:get和post。本实现使用get方法。最简化的get请求包如下:
get/index.htmhttp/1.1
“/index.htm”表示客户端欲下载的文件路径;“http/1.1”表示协议版本。
程序生成get请求包,在成功连接对应web服务器的80或其它端口后,使用基于tcp协议的同步模式套接字发送请求包并等待返回信息。
服务器将返回一个应答包,大致如下:
http/1.0200ok
...
[数据。]
第一行是应答信息。如果成功,服务器将返回“http/1.0200ok”。
第三行是一个空行,用以分隔http包头和包体(数据)。
第四行开始就是以字节流的方式返回的数据。
如果使用http,则与上述有两点不同。
第一,连接时应连接服务器,而不是连接web服务器。
第二,在生成请求包时,下载文件的url必须写全url。对上例而言,请求应为“getnetsport/index.htmhttp/1.1”,而不是“get/index.htmhttp/1.1”。
具体程序和类(程序使用delphi3.0编制):
1.初始化winsock。
proceduretform1.formcreate(sender:tobject);
var
wversionrequired:word;
wsdata:twsadata;
begin
ismultithread:=true;
//置″支持多线程″为″真″
wversionrequired:=makeword(2,0);
casewsastartup(wversionrequired,wsdata)of//初始化winsock
wsasysnotready:
(′网络系统未准备′,′信息′,mb_ok);
wsavernotsupported:
(′未提供网络接口′,′信息′,mb_ok);
wsaeinval:
(′网络版本不被支持′,′信息′,mb_ok);
end;
end;
2.文件下载线程。
tdownfilethread=class(tthread)
private
fileurl:string;
//记录文件的url
protected
procedureexecute;override;
publicconstructorcreate(url:string);
end;
c(url:string);
begin
fileurl:=url;
freeonterminate:=true;
inheritedcreate(false);
end;
proceduretdownfilethread.execute;
var
mysocket:tsocket;myclient:tsockaddr;
recvbuf:array[0..332]ofchar;mycmdstr:string;
ptemp:pchar;
myhandle,index_ch,reccount,i:integer;
begin//创建本地socket
mysocket:=socket(af_inet,sock_stream,0);
if(mysocket=socket_error)thenbegin
(′初始化失败!′,′信息′,mb_ok);
exit;
end;//生成连接主机的结构
myclient.sin_family:=af_inet;
myclient.sin_port:=htons(connectedport);
//connectedport:全局变量,记录连接端口号
strpcopy(recvbuf,getserverip(fileurl));
//getserverip(fileurl):返回服务器的ip
myclient.sin_addr.s_addr:=inet_addr(recvbuf);//连接服务器
if(connect(mysocket,myclient,sizeof(myclient))〈〉0)thenbegin
closesocket(mysocket);
exit;
end;//发请求
if(q_useproxy=0)then
mycmdstr:=′get′+extracturlpath(fileurl)+′http/1.1′
//extracturlpath(fileurl)返回相对url
elsemycmdstr:=′get′+fileurl+′http/1.1′;//使用写全url
strpcopy(recvbuf,mycmdstr);
i:=length(mycmdstr);
recvbuf[i]:=#13;inc(i);recvbuf[i]:=#10;inc(i);
recvbuf[i]:=#13;inc(i);recvbuf[i]:=#10;inc(i);
recvbuf[i]:=#0;
send(mysocket,recvbuf,i,0);
//发送请求读返回数据
reccount:=recv(mysocket,recvbuf,sizeof(recvbuf)-1,0);//判断是否成功
i:=0;
whilei〈10dobegin
i:=i+1;
//′http/1.0200ok′是成功标志
if((recvbuf[i]=′′)and(recvbuf[i+1]=′2′)and(recvbuf[i+2]=′0′)
and(recvbuf[i+3]=′0′)and(recvbuf[i+4]=′′))theni:=200;
end;
ifi〈〉200thenbeginclosesocket(mysocket);exit;end;
//得到数据起始位置
ptemp:=strpos(recvbuf,#13+#10+#13+#10)+4;
index_ch:=ptemp-recvbuf;
//建立下载目录
tryforcedirectories(extractfilepath(getfillocalpath(fileurl)));
except
end;//创建文件
deletefile(getfillocalpath(fileurl));
myhandle:=filecreate(getfillocalpath(fileurl));//如果未接收完则继续
while(reccount〈〉0)do
begin
filewrite(myhandle,recvbuf[index_ch],reccount-(index_ch));
index_ch:=0;
reccount:=recv(mysocket,recvbuf,sizeof(recvbuf)-1,0);
end;//关闭文件句柄和套接字
fileclose(myhandle);
closesocket(mysocket);
http协议 篇二
关键词:万维网;WWW;HTTP;FTP;Web服务器
WWW(World Wide Web,3W,Web)中文译名为万维网,环球信息网等。是欧洲核物理研究中心(CERN)为全球范围的科学家利用Internet建立在客户机/服务器模型之上,为了方便地进行通信、交流和查询所建立的。Internet采用超文本和超媒体的信息组织方式,将信息的链接扩展到整个Internet上。万维网是一个分布式的超媒体(Hypermedia)系统,它是超文本(Hypertext)系统的扩充,所谓超文本是包含指向其他文档的链接文本,超文本是万维网的基础,在万维网中,主要使用了两个协议,分别是HTTP协议和FTP协议。
1 HTTP协议
超文本传输协议(Hypertext Transfer Protocol,HTTP)提供了访问超文本信息的功能,是万维网与Web服务器之间的通信协议,属于应用层。HTTP协议是用于分布式协作超文本信息系统的、通用的、面向对象的协议。可以用于传输各种超文本页面和数据。
HTTP协议包括以下4个步骤:
第一,建立连接。客户端向服务器发出建立连接HTTP报文的请求,服务端将响应发送回客户端,连接建立。
第二,发送请求。客户端按照HTTP协议通过连接线路向服务端发送请求。
第三,给出应答。服务器按照客户端的要求给出应答,将结果HTML文件返回给客户端。
第四,关闭连接。客户端接到HTTP报文请求后关闭连接。
HTTP协议是基于TCP/IP之上的协议,它不仅保证是否能够正确传输超文本文档,而且还要确定传输文档中的哪一部分,以及哪部分内容首先显示等。通常HTTP报文消息包括客户向服务器的请求报文和服务器向客户的响应报文。这两种类型的报文消息由一个起始行,一个或者多个头域,一个指示结束的空行和消息体组成。HTTP的报文结构包括通用首部、请求首部、响应首部、实体首部和实体主体五个部分。每个头域由,和三部分组成。(注意:域名与大小写无关,可以在域值前添加任何数量的空格符,可将万维网的头域扩展为多行。)
通用域名首部包含请求和响应报文,其中的头域还包含Cache-Control、Connection、Date、Pragma、Transfer-Encoding、Upgrade、Via等。对通用头域的扩展要求通讯双方都支持,如果存在不支持的通用头域,一般将会作为实体处理。
一次HTTP操作其工作过程可分为以下几步:
第一,浏览器分析链接指向页面的URL。
第二,浏览器向DNS请求解析IP地址。
第三,域名系统DNS解析出微软服务器的IP地址。
第四,浏览器与该服务器建立TCP链接。
第五,浏览器发出HTTP请求GET。
第六,服务器通过HTTP响应把文件index.heml发送给浏览器。
第七,TCP连接释放。
第八,浏览器将文件index.heml进行解释,并将Web页显示给用户。
如果在以上过程中的某一步出现错误,那么产生错误的信息将返回到客户端,由显示屏输出。对于用户来说,这些过程是由HTTP自己完成的,用户只要用鼠标点击,等待信息显示就可以了。HTTP采用TCP作为运输层协议,保证了数据的可靠传输,HTTP不需要考虑数据在传输过程中丢失后是怎样重传的,但是HTTP协议本身是无连接的,即通信双方在交换HTTP报文之前不需要先建立HTTP链接。
2 FTP协议
文件传输协议(File Transfer Protocol,FTP)是因特网上使用最广泛的文件传输协议,FTP运行在TCP上采用客户/服务器模型,包括两个组成部分,分别为FTP服务器、FTP客户端。其中FTP服务器用来存储文件,用户可以使用FTP客户端通过FTP协议访问位于服务器上的资源。FTP使用20和21这两个端口,如果采用主动模式,那么数据传输端口就是20;如果采用被动模式,数据传输端口就是21。
FTP提供以下功能:
第一,提供不同种类的主机系统之间的传输。
第二,使用户对远程服务器上的文件进行管理。
第三,提供文件共享能力。
另FTP还有两种模式,主动方式Standard(PORT方式),被动方式Passive(PASV方式)。Standard模式下FTP客户端发送PORT命令到服务器。Passive模式下FTP的客户端发送PASV命令到FTP Server。
Port:FTP客户端与服务器的21端口建立控制连接,用来传输控制信息,客户端发送请求,通过控制连接发送给服务器端的控制进程。服务器通过自己的数据连接端口连接至客户端的指定端口并发送数据。
FTP服务器在很多情况下是不支持PASV模式的,因为很多防火墙在设置时,是不允许接受外部发起连接的,因而位于防火墙后或内网的客户端无法穿过防火墙打开FTP服务器的高端端口,故许多内网的客户端不能用PORT模式登陆FTP服务器,造成无法连接。
文件交换协议(File Exchange Protoco,FXP)相当于是FTP的控制器,也可以认为FXP本身其实就是FTP的一个子集,使一个FTP客户端控制两个FTP服务器,在两个服务器之间传送文件。FTP协议的任务是使计算机将文件传送至另一台计算机,它与这两台计算机所处的位置、联接的方式、是否使用相同的计算机操作系统均没有关系。例如,两台计算机通过FTP协议连接,并且能够成功地访问Internet,用户就可以使用FTP命令来传输文件。
其传输方式可分为两大类:ASCII传输和二进制数据传输。
ASCII传输模式:若客户端当时正在拷贝的文件中包含的简单ASCII码,在机器上运行的是不同的操作系统,当文件传输时,FTP协议通常会自动地调整文件的内容以便于将文件“翻译”成另一台计算机存储的文本文件格式,就是我们通常所说的翻译。但是时常会有这样的情况发生,用户正在传输的文件包含的不是文本文件,它们可能是程序、数据库、字处理文件或者压缩文件等信息。那么这时,ASCII传输模式则会消耗大量的时间、资源进行翻译,与我们所希望的相去甚远,于是,出现了第二种传输方式,二进制传输。
参考文献:
[1] 沈红,李爱华。计算机网络(第二版)[M].清华大学出版社,2010.
[2] 谢希仁。计算机网络(第5版)[M].电子工业出版社,2011.
作者简介:周开强(1993―),男,黑龙江庆安人。
张广旭(1994―),男,辽宁建昌人。
http协议 篇三
关键词:TTCN-3;LoongTesting;HTTP;SA;CD
The Design and Implementation of the HTTP Test Adapter Based on TTCN-3
Su Guanghao,Tan Xiaoyu,Lei Yu
(Software Institute of Hunan Vocational College of Science and Technology,Changsha410118,China)
Abstract:This paper introduces the test system framework of TTCN-3,and according to the characteristics of the HTTP protocol,design and development test adapter in LoongTesting platform.And make a simple test to a web site on this platform.
Keywords:TTCN-3;LoongTesting;HTTP;SA;CD
一、TTCN-3简介
TTCN-3(Testing and Test Control Notation version 3,测试和测试控制表示法第三版)是ETSI(European Telecommunications Standards Institute,欧洲电信标准协)推出的协议和软件测试标准,是目前主流的协议测试标准系统。图1显示了TTCN-3测试系统的整体架构,以及该系统与用户和被测系统之间的交互示意。
图1.测试系统框架
其中CD(Coding and Decoding,编码解码)是编解码模块,负责对测试数据进行编码和解码工作。SA(System Adapter,系统适配器)是系统适配器,负责针对每一种测试系统的执行平台,使TTCN-3测试系统与SUT(System Under Test,被测系统)之间可以建立基于消息或者过程的通信。SA可以实现与SUT之间基于过程的通信操作。SA和TE模块之间拥有一个接口TRI(TTCN-3 Runtime Interface,TTCN-3运行时接口),该接口用来向SA发送SUT消息,并负责在通信操作中交换SUT与TE之间相应编码之后的测试数据。
LoongTesting是由中国科学技术大学TTCN-3实验室自主开发的,也是国内唯一一个完整的TTCN-3测试平台,是一款C++语言实现的免费、开源的TTCN-3测试工具。可以动态加载CD,SA,目前该工具加载的CD和SA必须在Microsoft Visual Studio 2005环境下使用C++语言设计开发。
二、HTTP简介
HTTP(Hypertext Transfer Protocol,超文本传输协议)是应用级协议,被广泛应用于WWW全球信息服务系统。它是一种请求/响应式的协议,一个客户和服务器建立连接后,发出一个请求给服务器,服务器接到请求后给于相应的响应。HTTP协议格式比较简单:HTTP请求分为请求头和请求体,HTTP响应分为响应头和响应体。在测试时主要对这两部分的信息进行验证,测试请求信息的反馈(响应信息)与期望值是否一致。
三、基于HTTP的适配器设计
(一)主要的类及方法方法介绍。在VS2005开发平台中,CAtlHttpClientT类为HTTP客户端提供服务,需要作为一个模板参数的类,它提供基本的网络接口功能的名称,是一个轻量级的HTTP客户类,可以发出请求并获得响应。Navigate()调用此方法来执行HTTP请求,GetRawResponseHeader()调用此方法可以获得HTTP响应头信息,GetBody()调用此方法可以获得HTTP响应体信息。
CAtlNavigateData类用于设置除网址外的HTTP请求信息,封装了ATL_NAVIGATE_DATA结构,增加初始化和访问和检索功能。该ATL_NAVIGATE_DATA结构是用来提供设定到CAtlHttpClientT类。除了本身的网址,几乎需要执行HTTP请求的所有设置也提供了ATL_NAVIGATE_DATA结构。SetMethod ()此方法可以设置数据传输的方法,SetPostData()调用此方法可以设置请求传送的数据。
(二)TRI主要接口介绍。TRI定义了在TTCN-3测试系统实现内的TE(TTCN-3 executable,TTCN-3执行实体)、SA和PA之间的交互。
triMap()接口:建立测试组件端口和测试系统端口之间的映射,同时也可以在此进行一些初始化的工作;triSend()接口:用来实现测试系统向被测系统发送PDU,并且对PDU进行编码。
在LoongTesting测试平台中实现TTCN-3适配器,需要通过triExcuteTestCase接口创建了执行测试模块(TE)和被测系统模块(SUT)的端口,此适配器中将被测系统模块端口指向HTTP服务器。triMap接口实现了两模块通信端口的映射。trisend 接口可以实现执行测试模块(TE)发送消息,利用VC++2005开发平台CAtlHttpClientT类,此类为HTTP客户端提供服务,可以向服务器发出请求并获得相应的响应。
通过trisend接口的实现,就实现了TE与HTTP服务器之间的数据通信了。当端口映射完成数据通信后,可以利用triUnmap 接口释放映射关系。
四、测试实例
用户在登录网站时,需要和服务器端按照规定的协议进行交互.我们在此只列出了其中一个协议交互,即用户登录,被测实现为浏览器中登录页面。在此消息的交互过程中,用户输入用户名和密码后按照指定的协议格式提交到服务器端的Servlet中,如果提交的信息正确,则Servlet返回login-OK,否则login-fail。
五、结束语
将TTCN-3应用于HTTP应用协议的测试中,它不但解决了HTTP应用开发中协议测试难的问题,而且使得测试覆盖协议的各个方面,本文所实现的适配器,可以加快TTCN-3测试套的开发和实施.但在此过程中,我们也发现有些问题还有待于进一步研究,比如:响应的数据类型比较多,验证比较复杂,需要工作量。
参考文献:
[1]ETSI ES 201 873-1 V3.2.1 (2007-02) Methods for Testing and Specification (MTS);The Testing and Test Control Notation version 3; Part 1: TTCN-3 Core Language
http协议 篇四
>> 基于HTTP协议的无线AP远程配置实现方法 基于HTTP协议的服务器程序分析 浅析HTTP协议下的隧道技术 HTTP Tunnel在基于SIP协议的即时通信系统中的应用 如何实现无线AP的直接通讯 基于HTTP协议下自动更新平台的构建 基于多层协议理解的HTTP数据还原技术研究 基于零配置的瘦AP组网模式在X公司办公楼的应用与实现 基于H.323协议族技术标准远程监控系统的实现 基于Xilinx器件的CPRI协议实现方法 HTTP协议技术浅析 成套仪表远程无线通信协议的研究 基于位置信息的无线传感器网络路由协议的设计与实现 基于OpenWrt和TCP/IP协议的的Android远程无线智能机械弹琴手系统 基于ZigBee协议的无线键盘软件设计与实现 基于ZigBee的微气象无线监测系统通讯协议实现 基于ARM的无线传感器网络MAC协议设计与实现 基于DCS的无线数据传输控制协议设计与实现 基于802.11协议无线网络的嵌入式远程测控系统研究 基于TTCN-3的HTTP测试适配器的设计与实现 常见问题解答 当前所在位置:l语句,可把该页面设为主页,通过访问服务器即可看到该页面。
2.3 修改服务器访问权限
启动服务器后,如果要在客户端通过html页面执行服务器命令是不被允许的,因为apache的客户端的权限不是根用户级别,而系统的网络命令(如ifconfig)须在根用户权限下才能执行。解决方法是使用sudo,即在非根用户的情况下执行根用户权限的命令。但使用sudo时需密码,而http服务器在远程控制时不可能每执行一个命令就输入一次密码,因此需要更改sudo配置文件/etc/sudoers,即可实现这一目的。
3 远程修改无线AP配置
3.1 CGI程序结构图
本文CGI程序的总体框架:如图3 。
3.2 用户登录模块
用户登录模块有效的防止了非法用户对AP进行恶意地修改。其实现方法如下:
http协议 篇五
引 言
超文本传输协议(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而引入的三向握手的时间,从而减少了浏览的延迟时间。
对于服务器而言,由于所需的TCP的链接数量减少,从而降低了由于建立、维护、撤销TCP链接所带来的服务器的负荷。
http协议 篇六
现实世界中的很多过程都具有多条线索同时动作的特性。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协议 篇七
【关键词】HTTP2Sock,Sock2HTTP,隧道
1 引言
基于SIP协议的即时通信系统在企事业单位使用较多,而随着单位保密意识的提高,对数据安全和网络安全的重视,人们对防火墙访问规则等安全策略的要求越来越严格,同时也限制了其基于计算机的各种应用,阻碍了其业务的发展。本文采用HTTP Tunnel实现对防火墙的穿越,将TCP、UDP等非HTTP数据类型进行HTTP伪装和加密,在不改变单位的防火墙等安全策略的前提下,以隐蔽通信的方式完成应用程序的数据传输。
本文重点探讨了HTTP Tunnel技术在以SIP协议为基础的即时通信系统中的应用,并提出相应解决方案和参考应用框架。旨在提升HTTP Tunnel技术的应用范围,加强应用业务的数据安全与网络安全。
2 应用系统框架
HTTP Tunnel被称之为HTTP暗道,原理是将数据伪装成 HTTP的数据形式来穿过防火墙。
基于SIP协议的即时通信系统是以SIP为信令交互协议的即时通信系统,其应用包括HTTP访问、即时消息、语音通信、视频通信等。该系统通过HTTP Tunnel可以不用改变防火前的安全策略,即可实现自由通信。其框架基本包括四个主要方面:
1) 基于SIP协议的即时通信系统,该系统实现基于TCP、UDP、HTTP等协议的即时通信功能;
2) Sock2HTTP服务器,该服务器实现非HTTP协议数据包的HTTP格式转换,通信端口映射,拥塞控制等功能;
3) HTTP Tunnel系统,该系统实现基于HTTP协议的双向的虚拟数据连接,从而穿越防火墙;
4) HTTP2Sock服务器,该服务器实现需要转换为其他格式的HTTP数据,通信端口的映射,拥塞控制等。
其拓扑图如图1:
图1.基于SIP协议的即时通信系统的HTTP Tunnel应用
3应用系统设计
3.1基于SIP协议的即时通信系统
基于SIP协议的即时通信系统主要有两部分组成。OpenSIPS服务器和oSIP客户端。
3.1.1 OpenSIPS
OpenSIPS是成熟的开源SIP服务器,结构非常灵活,其核心路由功能完全通过脚本来实现,可灵活定制各种路由策略,可灵活应用于语音、视频通信、IM以及Presence等多种应用。
其主要功能如下:
SIP注册服务器/服务器/重定向服务器
SIP presence agent
SIP IM Server
3.1.2 oSIP
oSIP是使用标准c编写的SIP协议栈。
主要包括两部分的内容:状态机模块、解析器模块。
状态机模块的功能:完成对某个事务(注册过程,呼叫过程等等)状态记录,并在特定状态下触发相应的事件或回调函数。
解析器模块的功能:该模块主要完成对SIP消息结构剖析、SDP消息的结构剖析以及URI结构的剖析;
图2.oSIP结构
oSIP为SIP协议的客户端,OpenSIPS为SIP协议的服务器,二者共同搭建基于SIP协议的即时通信系统。
3.2 Sock2HTTP服务器和HTTP2Sock服务器
当位于内网的SIP终端访问外网,则终端建立连接的端口不一定被防火墙开放,尤其是UDP端口,若使TCP与UDP等消息穿越防火墙则需要相应的协议转换服务器,即Sock2HTTP和HTTP2Sock。
图3.Sock2HTTP与HTTP2Sock
3.2.1功能描述
主要负责分配对应的UDP端口;接收HTTP消息、解码、以UDP的形式发送至目的地址;接收UDP消息、编码、接收终端分配UDP端口的HTTP消息,返回生成的UDP端口;UDP端口与终端的对应管理机制。
3.2.2设计说明
a.建立TCP套接字,与某端口绑定(可配置),监听该端口;
b.接收到请求后,fork子进程处理该请求,请求包括要求分配端口的请求和其他请求两类;
c.处理要求分配端口的请求,将分配的端口返回给终端,保持该TCP链接不断开,直至通话结束或者终端注销。
4结论
基于SIP协议的即时通信系统使用HTTP Tunnel技术,在企事业单位网内外实现自由通信。该应用不仅提升HTTP Tunnel技术的应用范围,更加强应用业务的数据安全与网络安全。系统采用分布式设计,为系统升级和集成提供很好的构架基础,是企事业单位业务和数据穿越防火墙的一种安全和高效的应用。
参考文献
[1] RFC 2543 3261SIP: Session Initiation Protocol.
[2] RFC 2616Hypertext Transfer Protocol -- HTTP/1.1.
[3] W.Richard Stevens TCP/IP详解卷1、卷2、卷3.
http协议 篇八
[关键词]SCORM运行时环境,流式视频,点播
[中图分类号]G40-057 [文献标识码]A [论文编号]1009-8097(2011)01-0129-03
一 引言
SCORM运行时环境(SCORM Run-Time EnvironmenttSCORM-RTE)一项重要的任务就是完成对内容对象的,暨把具体的学习内容对象涉及到的各类媒体文件传输到浏览器上,使得浏览器能够正确的展示。内容对象是SCORM运行时环境基础要求,当前流行的各种SCORM系统在这方面都进行了实现,能传输几乎所有的媒体类型,但其在对流式多媒体支持上都还存在不足,特别是对流式视频媒体来说,这些系统大都只能采用提供下载的方式来展示,不利于较大的视音频在线浏览体验。本文就将对此原因进行分析,以期找到解决方案来实现SCORM运行时环境支持流式视频点播,提升SCORM系统媒体展现能力。
二 问题分析
当前SCORM运行时环境不能很好支持流式视频的原因来自于两个方面:
1 是流式视频实现技术的原因
当前主要的流式视频技术在浏览时需要专有技术支持,这不仅包括了浏览器方面的技术要求,大多还包括了专有网络传输协议的要求,例如RealMedia流式视频技术需要RTSP协议支持,微软的流式视频技术需要MMS协议支持,完整功能的FLASH流式视频技术也推荐采用RTMP协议。而要在SCORM运行时环境中部署这些协议的支持本身就是一件十分复杂的事情,这不仅是实现这些协议需要专门的服务器端软件,而且还要使得这些服务软件和基于HTTP协议的SCORM运行时环境协调一致的来提供内容对象。这其中的难点在于协议变化时确定内容对象的URL问题,这又涉及了原因的另一个方面。
2 SCORM内容包装模型自身要求
SCORM内容包装模型要求限定了打包在内的资源实体访问路径是相对于清单文件的相对路径。当然对不打包在资源包中的引用类资源不在此限,即对链接引用方式提供的资源你可以直接提供完整的URL路径(可包括协议头)。因为打包在内的内容对象实体路径是相对于清单文件的相对路径,而且一般SCORM运行时环境都是基于HTTP协议的普通WEB服务,所以最终的内容对象实体路径普遍表现为HTTP协议URL,这使得其天生就比较排斥其他协议。
三 解决思路
解决SCORM运行时环境支持流式视频的关键就是能够正确的定位流式视频的URL,并提供传输服务,对此可以从以下方面探寻解决问题方案。
1 稳定URL链接方案
对流式视频采用链接引用的方式这样可以提供稳定的URL链接,从而解决定位流式视频的问题。但这个方案的局限性很大,因为URL是外部链接引用,使得SCORM运行环境提供的内容对象服务支持不完整,受限于其他外部服务的稳定性。试想在SCORM内容访问时,若有一个外部链接失效造成学习内容不能正确访问,学习者是否会把它归罪于当前这个SCORM运行时环境(系统)?另外对这样的SCORM内容供应商来说,其生产SCORM的成本也会增加,因为其还需要对流式视频提供长期稳定的流式点播服务。由此这个思路不可取。
2 整合流式视频支持服务方案
让SCORM运行时环境整合流式视频支持服务,这又包括了两个可选的具体方案。
(1)整合原生流式视频服务子方案
这个方案就是让SCORM运行时环境中整合进流行原生流式视频支持服务,如在SCORM-RTE中整合RTSP/MMS/RTMP协议中的一种或者多种,在请求资源时由一种算法把原来基于HTTP协议的请求转换为基于某种流协议的资源请求实现播放。当前可以通过客户端脚本动态替换来转换,例如一个SCO主展示页面中需要一段视频点播,它是基于RTSP协议的,点播的文件和主展示web页面相对路径为mediaPatl/filename.ext,主展示web自身的URL是http://serverhost/seoPatlffweb,ext,则媒体文件真实的http协议下URL为http://serverhost/scoPath/mediaPath/filename.ext,这时通过协议头替换,把http协议头转换为具体要求的rtsp协议头就可以了,这个计算是一个简单文本替换,完全可以在客户端中利用javascript脚本语言方便实现。但这并不是一个完美的解决方案,它有较大的局限性。这种转换的前提条件是SCORM运行时环境提供了对应的服务协议支持,而且路径关系和http协议服务路径关系一致或者按一定规则进行固化。这加大了SCORM运行时环境部署的难度和成本。因为很好实现这些协议的服务都是成本高昂的商业软件,要完全支持所有的协议必然使得SCORM运行时环境部署成本急剧增大。从SCORM生产商来说这种解决方案下产生的SCORM包是和特殊SCORM运行时环境耦合度很高的特殊SCORM包,这违背了SCORM设计就是要尽量解除SCORM包与具体SCORM运行时环境耦合的初衷。试想一个这样的SCORM产品只能适应某些昂贵的专有SCORM运行时环境,它的应用范围必将受到很大限制。
(2)整合支持HTTP协议的流式视频点播实现技术方案
这个方案的要点是找一种支持HTTP协议的流式视频点播实现技术,这样就从根本解决了SCORM运行时环境支持流式视频点播的问题。流式视频点播技术的要点就是所有内容的传输都是基于HTTP协议的,不涉及其它协议,而且它不同于普通http内容传输,允许视音频内容边下载边展示,而不需要等到所有内容下载完后再展示(极大减少了下载缓冲时间),从而提高了用户体验。当前还没有完全的HTTP协议流式视频技术实现,但仅从支持流式点播来说还是有系列技术有这样的雏形或者说是实现。一种是基于flash Video技术的实现,它包括了flash Video媒体http协议服务器端支持和对应的客户端实现要点,这两个要点当前都已成熟的技术,大多数视频点播网站都采用了这类技术,它其支持flashVideo和H.264的mp4视频格式。另外一种是新兴的HTML5技术,但这类技术还不如flashVideo HTTP流式技术成熟,比如其支持的编码格式还没有确定,而且支持的浏览器还都处在开发阶段。由此可见采用基于flash Video技术来实现HTTP协议
流式视频点播从而解决SCORM运行时环境支持流式视频点播问题更可取。
四 基于flash Video技术SCORM运行时环境支持流式视频点播实现介绍
1 实现介绍与举例
实现SCORM运行时环境支持流式视频点播包括了两个方面,其一是SCORM运行时环境对应的http协议服务支持flashVideo技术流式播放,其二是SCORM打包中以flash Video技术流式播放支持的格式集成相应的视音频内容,并且提供客户端播放支持。对于第一点已有成熟的实现方式,例如常见的SCORM运行时环境提供软件Moodle在部署到Nginx平台时,就可以利用Nginx的ngx_http_flv_module模块实现的flashVideo技术流式点播支持,从而提供流式视频点播服务;再利用nginx_mod h264 streaming模块扩展支持mp4流式点播,类似还有基于lighttpd的部署实现。对于第二要求,则只需要在客户端实现中集成(开发)一个flash Video客户端播放应用程序,并把需要展示的内容都转换成flv格式或者mp4格式来打包即可;这都有成熟的实现,比如采用JW-player这样的开源flash Video播放应用程序来集成,对于格式转换也可以采用Mplayer开源项目中的Mencoder工具或者FFMPEG开源项目中的转码工具转化成nv格式或者mp4格式。
2 方案优势介绍
这种基于flash Video技术SCORM运行时环境实现支持流式视频点播方案有较多的优势,主要体现在以下几个方面。
(1)涉及技术成熟
无论是服务器端技术还是客户端技术,这一方案中涉及的技术都比较成熟,对于内容的产生打包来说也是这样,而且开源实现比较多,部署和维护成本都容易控制。这在前面介绍中已经举例了具体实现技术,就不再展开了。
(2)案兼容性好
它充分发挥flash Video技术自身一个特性使得方案兼容性十分好:这个特性就是当前flash Video对HTTP协议流式播放有两种程度的支持,一个是渐进式流式播放支持。更高程度的是可重定位流式播放支持。前面提到的Nginx利用ngx_http_fly_module模块和nginx_mod_h264_streaming模块支持流式点播实现到可重定位流式播放支持,而渐进式流式播放支持几乎所有HTTP协议服务器都直接支持了。这样打包的视音频点播就不存在环境兼容性问题了,都能正常观看,只是依据不同SCORM运行时环境对flash Video流式点播支持程度的不同观看效果不同,而这个不同也仅仅是是否支持随机点播定位而己,不影响完整的观看内容。从这个意义上来说这样的打包实现才是真正运行时环境无关的,是完全符合SCORM内容打包要求的。
(3)网络穿透性好
这种技术方案网络穿透性能最好,因为只涉及http协议,而只要能应用SCORM运行时环境的网络条件都提供了HTTP协议支持。
3 方案局限性
这种基于flash Video技术SCORM运行时环境实现支持流式视频点播方案的主要局限有两个方面,其一在于其流式视频点播支持性能上一般没有专门技术优良,毕竟这种方案不像那些专有流式视频支持技术在实现流式点播支持上进行了专门优化。此外就是只支持flv或者rap4格式,其他类型视频需要转换成这两种类型,这一定程度增加了SCORM生产成本:但这个转换成本相对于一般视频内容生产总成本来说所占比例较小,而且也不是一直都会有,如果采用的可直接输出为这两种格式视频生产工具就没有了再次转换成本。
五 小结
考括坟籍,博采群议。宣传员为大家整理的8篇http协议范文到这里就结束了,希望可以帮助您更好的写作http协议。