http协议范文

时间:2023-03-16 14:12:10

导语:如何才能写好一篇http协议,这就需要搜集整理更多的资料和文献,欢迎阅读由公务员之家整理的十篇范文,供你借鉴。

http协议

篇1

关键词:万维网;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―),男,黑龙江庆安人。

篇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 系统总体功能结构

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

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

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

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

篇3

关键词:Adhoc网络;AODV;DSR

中图分类号:TP393 文献标识码:A 文章编号:1007-9599 (2012) 11-0000-02

一、前言

移动Adhoc网络是未来技术,移动Adhoc网络继承了灵活、快速等特点,此外也有带宽和电池能量、高度动态拓扑、可扩展性和安全性差的问题。移动Adhoc网络是一种不依赖于基础设施的高移动性网络,已广泛应用于灾难地区、犯罪跟踪、应急通信、军事战术应用、紧急医疗服务等领域。

未来信息技术不容质疑都是基于无线技术的。基础设施基础蜂窝和移动网络仍然是有限的需要,基础设施,如基站,频率分配。满足用户需求的各种方法进行了如频率重用,聚类技术,分区技术,和不同的频率分配的分配方案。特设的按需距离向量路由协议的多跳路由之间的参与使移动节点希望建立和保持一个特设的网络。路由协议是基于距离矢量算法。但由于Adhocc网络无线信道传输特性、节点位置不确定性引起的Adhoc网络拓扑结构一直处于一种不稳定的状态,传统的路由协议在Adhoc网络不能适应这些特征,因此Adhoc网络中研究的热点、重点就是路由协议。本文分析了二种Adhoc网络中按需生成路由方式的典型协议:(1)AODV,就是无线自组网按需平面距离矢量路由协议,是无线mesh网络中进行路由选择的路由协议,它可以实现单播和多播路由。(2)DSR,就是动态源路由协议,是一个专门为多跳无线Adhoc网络设计的简单且高效的路由协议。所有的路由都是由路由协议动态地、自动地确定和维护,它提供快速反应式服务,以便帮助确保数据分组的成功交付,即使在节点移动或者其他网络状况变化的条件下也是如此。

二、OPNET Modeler仿真环境

(一)OPNET Modeler仿真建模原理

本文中用来模拟Adhoc路由协议的是环境是OPNET Modeler 14.5,OPNET Modeler是业界领先、功能强大的网络开发仿真软件,支持各种类型的通信网络和分布式系统模拟和仿真,使用模块化设计和数学分析的建模方法,对各种网络设施、通信链路和各层网络协议来实现精确建模。

基于数据包,同时采用OPNET建模机制,模拟了实际的物理网络数据包的流动,包括网络设备内部变化过程和网络设备与设备间流动。同时采用OPNET离散事件驱动仿真机制,尤其,事件是指网络状态的变化,也就是说只有网络状态变化的时候,模拟机才会开始工作,而当网络状态没有进行更改的时间内是不执行任何计算,即被忽略执行。

与此同时OPNET Modeler提供了一个良好的再次开发的接口:根据网络环境和需要建立不同的协议仿真模型,仿真模型分为3层实现。进程模型在最底层,基于有限状态机来描述;节点层在中间层,由相应的协议模型组成,反映了设备的特点;网络层在最上层,反映网络拓扑结构。3层模型和实际的网络、设备、协议完全相互对应,充分体现了网络的相关性。

(二)网络模型

我们使用一个静态服务器与标准应用程序模拟采取了20个移动节点,依次为0,1,…,19,所有节点随机地分布在1000mx1000m大小的区域中,所有节点从服务器下载一个文件试图为12000000字节。这些移动节点是随机分布的,而且所有的移动节点配置是相同的。这个网络场景中,任何移动节点可以直接通信,因此,不会产生终端被暴露或是终端被隐藏的问题。

对于移动节点的移动性,为此我们设置的三个重要参数:(1)速度10米/秒;(2)暂停时间0秒;(3)开始时间为10秒。此参数表明,所有节点单向移动速度10米/秒,暂停时间所有的移动节点不执行任何计算,开始时间显示活动开始10秒后启动仿真的。

三、仿真结果及分析

网络拓扑改变的情况可以通过流动的节点来获取,当网路拓扑发生改变,路由会改变或查找路由,因此分组的转发时间变长。为了定量对AODV与DSR进行比较,在此设置两个相同的模拟仿真环境。每个仿真,只需要改变暂停时间设置,其他参数在过程中不用改变。

固定的20节点模型与移动20节点模型的平均端到端延迟进行比较,明显是越增强节点移动性,网络的平均端到端延迟变大,固定节点网络中,因为路由变化不大,平均的网络延迟几乎是不变的,而在移动模型中,网络的延迟随着节点的频繁移动,路由的不断改变而变大。AODV的分组递交率随停顿时间的增加呈增大趋势,DSR分组递交率也随停顿时间的增加而增大.且固定20节点模型与移动20节点模型的平均每路由发现时间,由于动态源路由协议的路由机制,在网络拓扑结构稳定的固定网络中和网络拓扑结构变化较快的Ad hoc网络中,AODV的路由开销随停顿时间的增加呈减小趋势,而DSR的路由开销在停顿时间不断增加的情况下则基本不变。

从仿真结果可以看出,如果从分组递交率的情况来看这二个性能差异不大。在路由开销情况来看,DSR路由开销较小,主要AODV路由频繁的交换握手消息导致路由开销增加。而由于DSR使用源路由算法,每一个节点记住整个路由;而AODV采用逐跳路由的算法,每一个节点仅仅是记住下一跳,所以DSR报文开销要大一些。

四、结论

本文介绍了两种典型Adhoc网络路由协议AODV和DSR,并通过OPNET Modeler在同样的场景对这两个路由协议进行仿真,并根据实验数据来计算路由协议的性能指标:平均端到端延迟性能参数和数据包的成功传输率,绘制出相应的图进行比较。在实验中仿真场景中可以看到,DSR网络性能指标和AODV比较接近,是一种适用于中小型网络结构且网络性能稳定的路由协议;AODV是DSR和DSDV的组合,是一种适用于大规模网络结构且效率高、适应性强的路由协议。

参考文献:

[1]陈迪.无线Mesh网络的Mac协议和路由协议研究与实现[D].南京邮电大学,2012,2,1

[2]何磊,许立,刘泽国,范力旻.移动AdHoc网络退避算法的改进与仿真研究[J].计算机仿真,2011,8,15

篇4

最好的例子是HTTP协议,这是一个负责调控浏览器和服务器之间通信的核心应用协议。目前该协议的最新版本为1.1版,而这个所谓的最新版本只是在1999年进行了一些零星优化,该协议的主要缺点皆没有被修正,这样落后的一个网络协议,自然无法适应目前的网络应用环境,也无法充分利用带宽。

此外,使用HTTP 1.1协议处理通信数据的开销庞大,将产生许多不必要的数据流量。因而,负责互联网标准的开发和推动的互联网工程任务组(Internet Engineering Task Force,简称IETF)自2012年以来,一直致力于改进这个互联网的主要协议。目前,HTTP 2.0已经基本准备就绪,IETF希望能够在2014年年底开始正式实施它,而相关的草案已于2013年8月开始进行测试。

对于HTTP 2.0的竞争提案

2012年,Google和微软分别提交了自己的HTTP 2.0建议,Google开发的是早以闻名遐迩的SPDY协议,微软与之竞争的则是HTTP Speed+Mobility,两者之间的主要争议在于HTTP 2.0是否应该完全采用加密的形式。目前,虽然SPDY已经被接受成为HTTP 2.0的基础,但是IETF免除了SPDY强制性加密的规定,因为加密将增加设备的运算负担,而对于移动设备来说,这意味着续航时间大受影响。另外,这还将要求所有的网站都要安装加密证书,对于小型网站来说,加密证书的费用是一个不小的负担。

就在HTTP 2.0整装待发之时,爱德华·斯诺登披露的消息影响了该标准的计划。2013年9月初,所有人都清楚地了解到美国国家安全局等情报机构的所作所为,而更令人震惊的是他们竟然还可以拦截和窃取HTTPS的加密数据。加密专家布鲁斯·施奈尔认为,实际上美国政府已经背叛了互联网。因而,HTTP 2.0的安全问题成了人们关注的焦点,IETF必须根据斯诺登披露的信息重新评估该协议的安全性,并收集更多关于如何完善HTTP 2.0的加密功能以确保HTTP 2.0协议安全性的建议。

国家安全局的后门

现有的HTTPS加密是利用SSL和TLS协议来建立安全连接,这种非对称加密包含一个公共和一个私有密钥。首先,服务器发送一个经过认证的公共密钥到浏览器,浏览器将检查认证证书的有效性,并使用服务器的密钥将用于接下来加密通信数据的会话密钥加密发送到服务器,服务器将使用与其公共密钥对应的私钥来提取会话密钥,并开始使用会话密钥加密通信数据。接下来,服务器和浏览器之间就可以使用相同的会话密钥来加密通信以做进一步的沟通。

然而,美国国家安全局之类的情报机构可以截取全部的通信数据,并利用其权威或者其他的手段获取服务器的私钥,例如通过法庭的命令或者通过黑客手段,在拥有服务器私钥的情况下,所有的数据都将是透明的。因此,有人建议在HTTP 2.0中部署不同的密钥生成方法,正在开发中的TLS1.3加密协议将使用不需要交换密钥的完全转发保密(Perfect Forward Secrecy,简称PFS)技术。服务器和浏览器之间通过密码系统产生一个对称密钥用于加密接下来的通信数据,密钥将在会话结束之后被删除。

不过,要确保PFS的安全,首先要求用于生成密钥的加密方法必须是安全的。很多人怀疑,过去美国国家安全局一直积极致力于参与加密方法的研发是别有用心的,因为选择一个掌握在自己手上的加密方法不难设置后门让自己可以通行无阻。众所周知,双椭圆曲线确定性随机比特生成器(dual elliptic curve deterministic random bit generator,缩写Dual_EC_DRBG)是如何被植入后门的。因而,目前所有由美国国家标准技术研究所(National Institute of Standards and Technology,简称NIST)的曲线都是受到质疑的,因而,由西蒙·约瑟夫松提交给IETF的一个名为25519的椭圆曲线,由于不是来自NIST,所以将有可能用于TLS 1.3。这样一来,TLS 1.3应该可以关上NSA的后门。

不过,光有一个新的TLS加密协议是不够的,因为人们也同样怀疑用于HTTPS的RC4加密方法中包含NAS留下的一个漏洞。RC4是TLS加密协议的一部分,根据相关的研究显示,目前Web加密数据中约有50%使用此加密方法,因而,对于了解该漏洞的人来说,他们当然不会在TLS 1.3中选择使用RC4加密方法。遗憾的是,目前的Web安全应用中具体使用什么安全协议是由服务器决定的,尽管Chrome和IE浏览器的最新版本都已经支持当前最新的TLS 1.2,但是大多数Web服务器仍然在使用过时的SSL 3.0和TLS 1.0,用户也只能被迫使用这些过时的安全协议,而这些协议存在可以被黑客利用的漏洞已经是公开的秘密。HTTP 2.0方案有可能要扭转这一局面,也就是说,未来由浏览器来确定应该使用哪一个安全协议,用户可以指定使用什么样的加密方法来保护HTTPS连接。

修补SSL、TLS中的安全漏洞

当前,SSL、TLS的数据包有可能被截取和操纵,黑客可以对SSL、TLS通信进行有效的攻击。通信过程中的每一个数据包中包含起核心作用的消息认证码(Message Authentication Code,简称MAC),MAC由会话密钥和传送的数据产生,接收者可以通过MAC确定收到的数据是否来自发送者,从而避免数据包被截取和操纵。但是目前使用的SSL、TLS采用所谓“MAC then encrypt”的方法进行处理,传输的是明文与明文的MAC值加密的结果,未加密的数据包内容被用于生成MAC,这种方法早在1999年就已经被证实是不可靠的。为此,作为对策,TLS的升级版本采用“Encrypt then MAC”的处理方法,这种方法传输的是密文与密文的MAC值,黑客很难有所作为。当然,仍然无法确定这些方法是否已经足以防止情报机构的嗅探,但是这起码修补了已知的安全漏洞。而对于互联网工程任务组来说,HTTP 2.0是否应该完全采用加密的形式,这一最具争议的话题仍然会再出现在议程上。

去除性能缺陷

IETF成员同时需要考虑的问题是新的技术标准如何消除HTTP 1.1的性能缺陷。目前,解决这一问题的基础是Google的SPDY协议,该协议将可以解决HTTP 1.1的结构性缺陷,而Chrome、IE、Firefox和Opera这些浏览器的最新版本都已经支持该协议,仅有苹果公司的Safari浏览器暂时未能支持。

在HTTP 1.1协议中,服务器需要为网页中的每个元素建立一个单独的TCP连接,因此需要启动多个并行连接,这将导致产生不必要的数据流量,并且很容易出现线头阻塞(Head of Line Blocking,HOL),影响数据包的处理速度。因为数据包的处理总是按照既有的顺序进行,而不论该请求是否出现问题或处理的时间是否太长。此外,HTTP连接是由客户建立的,浏览器必须不断地查询网站以了解内容是否发生了变化,而服务器本身不会自动发送更新内容。

一个HTTP 2.0连接一旦被建立,那么它将在浏览器和服务器之间打开数据流通道来发送它们的数据包,数据可以在同一时间并行进行传输。与HTTP 1.1相比,HTTP 2.0实现了单个TCP连接的并行处理,这意味着服务器不再需要应付大量的浏览器查询,所以可以大幅度减轻服务器的负荷。而且,数据帧标有优先顺序,解码时浏览器或服务器可以相应地调整顺序,彻底地避免线头阻塞的问题。此外,HTTP 2.0中服务器还可以将信息发送到浏览器,同时数据包报头也得到了优化。在HTTP 1.1中数据包报头以未经压缩的文本形式传输,这使得报头过大,同时在处理之前还需要转换成二进制码。而HTTP 2.0将报头压缩,以二进制代码来发送它们,这除了减少了数据量之外,也减少了处理的等待时间(响应时间)。

HTTP 1.1和TCP在许多方面是相关联的,以并行处理的问题为例,HTTP 1.1中实际上是通过TCP协议来提供HTTP中缺少的功能,但是TCP为了完成这一功能必须建立大量的连接,还需要负责确定数据的序列并完成数据传输过程中的检测和修复等工作,而这些工作都将产生一定的延迟。对于TCP连接来说,仅建立连接的过程中3个阶段的握手就已经增加了不少延迟。

而HTTP 2.0中很多工作不再需要TCP协议来承担,或者更确切地说,HTTP 2.0将接管这些任务,例如数据帧的优先级设定将确定数据包如何进行处理,不再需要TCP确定数据包的序列。因此,Google甚至建议使用基于更快但不那么可靠的用户数据报协议(User Datagram Protocol,简称UDP)作为HTTP 2.0的传输协议。Google的快速UDP互联网连接(Quick UDP Internet Connections,简称QUIC)正是基于UDP的,只是加入了纠正错误的机制。使用QUIC作为传输协议的话,TCP的错误检测等操作将不再是必要的了,TCP最为尴尬的3次握手产生的延迟也将不会再是问题,因为HTTP 2.0建立的是服务器与浏览器之间相互通信的数据流。从长远来看,Google并不打算取代TCP,而是希望将QUIC融入到TCP中。我们可以预期从HTTP 1.1到HTTP 2.0的切换是非常顺利的,用户需要做的只是更新浏览器以支持HTTP 2.0,在浏览器支持HTTP 2.0的情况下将自动向服务器发出请求,并开启一个焕然一新的互联网。

篇5

万维网WWW(World Wide web)并非某种特殊的计算机网络。万维网是一个大规模的、联机式的消息储藏所,英文简称为Web。万维网用链接的方法能非常方便地从因特网上的一个站点访问另一个站点(也就是所谓的“链接到另一个站点”),从而主动地按需获取丰富的信息。

本程序是一个简单易用、方便快捷的多页面网页浏览器。您可以通过它快速地链接到全球任何一个可浏览网站,浏览丰富的Web资源。

论文先介绍了程序编程语言Visual C++和面向对象编程的概念,以及 Microsoft Visual Studio 6.0开发环境。然后介绍了要完成这个软件必须先了解WWW所用到的协议: HTTP和TCP/IP协议。HTTP的全称是HyperText Transfer Protocol,即超文本传输协议。HTTP是一个应用层协议,它使用TCP的80端口连接进行可靠的传送。TCP/IP是用于网络的一组通信协议,包括TCP(Transmission Control Protocol)协议和IP(Internet Protocol)协议。

要访问网页还得输入它的URL(Uniform Resource Locator),即统一资源定位符。对于HTTP协议,URL的一般形式是::/。默认端口80通常省略。

当我们了解以上内容后,文章就开始介绍围绕程序进行的一系列分析和设计。介绍程序有哪些功能,是如何实现的。

使用本软件的时候,用户只需要在地址栏输入网址(URL),敲击回车就可以连接精彩的网络世界了。

关键词:万维网 网页浏览器

HTTP TCP/IP URL

录 IV

1

论 1

2

系统平台开发介绍 2

略……

3

MFC 编程 4

略……

4

HTTP与TCP/IP协议介绍 7

略……

5

需求分析和可行性研究 12

略……

6

总体设计 14

略……

7

详细设计与函数实现 17

略……

8

论 37

参考文献 39

附件1

英文翻译原文(英文) 40

附件2

英文翻译中文 45

:13000多字

有中英文摘要、目录、参考文献、程序包及运行文件

300元

另:有2100字的外文文献及3300的中文翻译

篇6

【摘要】虽然Android有SQLite的支持,但由于手机的硬件条件限制,很多数据库并没有直接运行在客户端上,因此对远程数据库的访问也是Android的必要技术。本文主要运用HttpClient组件,完成对远程数据库的访问,实现Android客户端对远程服务器数据的调用及修改。

 

【关键词】Android;HttpClient;MySQL;JSP

1.引言

虽然Android本身具有SQLite的支持,但SQLite数据只能进行简单的CRUD操作,数据类型也不能太复杂和数据容量不能太大。[1]而访问远程数据库的方法多种多样,主要分为直接和间接两种。直接访问采用JDBC连接技术,但其安全性较低,间接方法主要通过客户端向服务器发送请求,进而采用数据传输的方式进行数据库访问。

 

当下比较流行的数据传输方式主要有XML和JSON两种方式,由于HTTP协议是从WWW服务器传输超文本到本地浏览器的传送协议,使浏览器更加高效,[2]而HttpClient是支持HTTP协议的客户端编程工具包,因此HttpClient组件为实现远程数据库的连接提供了更为便捷有效的方式。

 

2.HttpClient简介

HttpClient是Apache Jakarta Common下的子项目,可以用来提供高效的、最新的、功能丰富的支持HTTP协议的客户端编程工具包。它提供的主要的功能包括:实现了所有HTTP的方法(GET,POST,PUT,HEAD等)、支持自动转向、支持HTTPS协议、支持服务器等。[3]

 

3.HttpClient在Android中的应用

3.1 工作原理

(1)客户端通过URL向服务器发送请求,建立连接;

(2)服务器接收客户端请求,并将响应信息返回客户端;

(3)客户端与服务器断开连接。[4]

3.2 服务器端的开发

服务器端采用JSP技术,通过利用JavaBean使用JDBC完成数据库连接,同时,使用Servlet实现数据传输功能。

3.3 手机客户端的开发

Android集成了org.apache.http.client.HttpClient,可以直接实现简单的htttp Get和Post操作。操作实现步骤如下:

 

(1)创建HttpClient客户端对象;

(2)生成响应的请求信息;

(3)使用execute方法发送HTTP GET(HTTP POST)请求,并返回HttpResponse对象,通过利用getStatusCode获取返回码以判断请求是否发送成功(若返回码为200,则成功); 

 

(4)解析返回信息。

关键代码如下:

public class ApacheHttpClient{

public String httpGet(String url) {

String response = null;

HttpClient httpclient = new DefaultHttpClient();

HttpGet httpGet = new HttpGet(url);

HttpResponse httpResponse;

try{

httpResponse = httpclient.execute(httpGet);

int statusCode = httpResponse.getStatusLine().getStatusCode();

if(statusCode==HttpStatus.SC_OK){

response = EntityUtils.toString(httpResponse.getEntity());

}

else{

response = “返回码:”+statusCode;

}

} catch (Exception e){}

return response;

}

public String httpPost(String url,List params) throws Exception{

String response = null;

HttpClient httpclient = new DefaultHttpClient();

HttpPost httppost = new HttpPost(url);

try{

httppost.setEntity(new UrlEncodedFormEntity(params,HTTP.UTF_8));

HttpResponse httpResponse = httpclient.execute(httppost);

int statusCode = httpResponse.getStatusLine().getStatusCode();

if(statusCode==HttpStatus.SC_OK){

response = EntityUtils.toString (httpResponse.getEntity());

}

else {

response = “返回码:”+statusCode;

}

}catch (Exception e){}

return response;

}

}

4.结束语

本文在利用JavaBean工具类对数据库进行操作的基础上,通过使用Servlet进行数据的输入输出,并结合HttpClient组件传送Http数据,顺利实现了Android与远程数据库的间接访问,同时也在一定程度上加强了对数据库的安全性保护。未来HttpClient组件技术还将在Android手机平台中越来越广泛地得以应用。

 

参考文献

[1]李洋,殷云鹏,赵勇.基于Android的网络数据存储与访问[J].中国科技信息,2013(08):92-92.

[2]林汝泽,徐媛媛,方凯等.基于HTTP协议的Android手机数据同步实现[J].信息通信,2013(01):96-96.

[3]徐婉珍.HttpClient组件及其在Android开发中的应用探讨[J].数字技术与应用,2013(01).

篇7

关键词:UPnP;数字电视机顶盒:控制点;libupnp

中图分类号:TP311 文献标识码:A 文章编号:1009-3044(2013)01-0162-03

随着越来越多的设备联入网络,对于共享设备以及共享设备提供的资源和服务的需求也越来越强烈,透明的访问各种联入网络的资源也成为了一种非常复杂的任务。UPnP(Universal Plug and Play),通用即插即用。Microsoft公司称“UPnP”将延伸到家庭中的每一个设备,它会成为个人电脑、应用程序、智能设备集成工作所必需的框架、协议和接口标准。它是一种架构在TCP/IP和HTTP技术之上的,分布式、开放的网络结构,以使得在联网的设备间传递控制和数据。UPnP 技术实现了控制点、设备和服务之间通讯的支持,并且设备和相关服务的也使用XML(Xtensible Markup Language)定义并且公布出来。对于设备的描述,使用HTML(Hypertext Markup Language)表单表述设备控制界面。它既允许设备供应商提供基于浏览器的用户界面和编程控制接口,也允许开发人员定制自己的设备界面。

UPnP论坛成立于1999年10月18日,该组织目前已吸引超过200个在消费电子、家庭自动化、计算机、家电、计算机网络和移动设备等领域的顶级供应商的参与。UPnP技术在IP层以上,应用层以下,所以与具体的物理接入手段和应用无关。使用UPnP协议不需要设备驱动程序,因此使用UPnP建立的网络是介质无关的,它可以运行在几乎所有的操作系统平台之上,可以使用C,C++,JAVA和VB等开发语言,使得在办公室、家庭和其他公共场所方便地构建设备相互联通的网络环境[1-2]。

总之,使用UPnP,设备可以动态加入网络,自动获得一个IP地址,向其他设备公布它的能力或者获知其他设备的存在和服务,所有这些过程都是自动完成的,此后设备能够彼此直接通讯。

1 SDK架构

Linux SDK for UPnP Devices(libupnp)是一个便携的、可移植的UPnP的C语言开发包。为开发者建立符合UPnP设备体系规范的控制点、设备和桥提供了一套API和开源代码。Libupnp使开发人员摆脱各种协议的细节,专心进行服务或者控制所需的具体开发。SDK各模块之间的关系如图1所示[3]。

1)Device/Control Point:客户端或服务器程序运行在整个SDK的最顶层,实现一个特定服务的功能。例如,一个网关类的服务,服务器实现能够用UPnP控制的“网络使能”功能。

2)SDK API:SDK API从控制点或服务程序中提取出核心UPnP协议的细节并给应用程序访问功能提供统一的接口。这使得开发者免于SSDP,GENA和SOAP各种协议细节的烦恼。

3)SSDP:SSDP(SimpleService Discovery Protocol)模块实现了简单服务发现协议,提供UPnP的发现阶段。该模块允许控制点发送多播信息搜索网络上的设备并接受应答。

4)Mini Web Server:迷你Web服务器模块处理标准HTTP GET请求,许多UPnP部分都用这种基本的HTTP请求服务。该模块管理那些能用GET命令获得的文档地址,并实现了使用HTTP协议的实际数据流。迷你Web服务器模块实现了HTTP/1.1的RANGE头,允许一个远程客户端请求一个文件定的一片或者多片。

5)GENA:GENA模块实现通用事件通知架构,实现UPnP的事件部分。控制点使用该模块订阅和取消订阅感兴趣的服务,服务应用程序从该模块中接受订阅和退订消息并产生相应的事件。

6)SOAP:SOAP(Simple Object Access Protocol)模块实现简单对象访问协议,提供UPnP的控制部分。控制点使用该模块产生相应的XML文档来检索一个服务的状态表,服务器使用该模块解码控制请求并产生应答。

7)HTTP:HTTP对接收信息的HTTP头进行语法分析并构建发送信息头。该模块能处理HTTP/1.0和HTTP/1.1头,也支持HTTP/1.1F分块编码语法。

2 机顶盒作为控制器的设计和实现

篇8

电脑使用技巧:以win7系统为例,若用户在使用电脑的时候想要设置电脑的桌面主题,只需在电脑桌面空白处右键单击,在弹出的选项里点击个性化,然后就可以选择一个自己喜欢的主题了。

若用户想要在电脑桌面添加天气小工具,在电脑桌面空白处右键单击后点击小工具选项,打开后就可以看到天气小工具了,点击就可以选择添加了。

在使用电脑的时候,若电脑出现卡顿的情况,用户可以选择清理一下电脑垃圾,或者说也可以直接将电脑关机重启一下,相对来说也是比较方便的。

篇9

关键词:服务器推送技术;实时Web应用;HTML5;WebSocket协议;HTTP协议

中图分类号:TP393文献标识码:A文章编号:1009-3044(2012)16-3826-03

WebSocket Based Real Time Web Application Solution

WENG Zhao-song1,YI Ren-wei2,YAO Han-bin2

(1.Wuhan Construction Project Trading Center,Wuhan 430023,China;2.Wuhan Uinversity of Technology,Wuhan 430063,China)

Abstract: Due to the improving demands on instantaneity of web information, real-time web applications is beginning to cause wide spread interest, and a lot of real-time web applications based on server-push technology has been proposed and used widely. Though these solution are effective, all those solutions suffer from problems such as great resource consumption; there is much space for improve ment. This paper introduces two popular HTTP protocol based real-time web application solutions, that is, long polling based on Ajax and streaming based on Iframe, and analysis their weaknesses. With an in-depth study on WebSocket protocol in HTML5 standard, this paper proposes a WebSocket protocol based real-time web application solution, aiming at improving the service instantaneity on a large scale, and more efficiently using the network capacity and processing power of the server.

Key words: server-push;real-time application; HTML5;WebSocket protocol;HTTP protocol

基于HTTP协议的Web应用已得到了十足的发展和应用,成为人们获取互联网上海量信息的主要途径。然而随着信息时代的发展,人们开始对Web应用提出了实时性要求,希望这些信息更新后能够立即获取到。对这项需求,多种实时Web应用解决方案被提出,其中较为成功并广泛应用的包括:基于Ajax的长轮询以及基于Iframe的流方式。基于这些解决方案,互联网上涌现出了一系列实时应用,如在线游戏、在线证券、设备监控、RSS阅读推送、邮件提示等等。

然而这些技术在广泛运用的过程中也暴露出了大量的问题,如实现复杂、资源消耗大、实时性不高等,这些问题制约了实时Web应用的性能。

随着HTML5标准的发展,该标准中提出的一项名为WebSocket的通信协议得到了广泛的关注。WebSocket可以在浏览器和服务器之间提供一条基于TCP连接的双向通道,服务器和浏览器通过这个通道可以实现双向通信。这种双向通信能力使得利用WebSocket来构建实时web应用成为可能。

该文将在总结现有的两种实时Web应用方案的基础上,提出一种基于WebSocket的解决方案,新的方案将在很大程度上解决传统方案暴露出的问题。

1传统实时Web应用解决方案

在实时Web应用出现之初,最简单的实现方案是轮询。所谓轮询就是客户端以一定的时间间隔向服务器端发出请求,以频繁请求的方式来不断刷新客户端呈现的信息。这种方案缺乏灵活性,无论服务器端是否有信息更新,请求都会不断被发送,频繁的连接请求会给服务器端带来巨大的处理压力。所以这种方案逐渐被舍弃,进而发展出了基于Ajax的长轮询方式和基于Iframe的流方式。这两种方式都在原有轮询的基础做了改进,一定程度上克服了简单轮询的不足。

1.1基于Ajax的长轮询方式和基于Iframe的流方式

篇10

网络下载多面手:跨协议下载

如今,互联网上的资源越来越丰富了,资源下载的途径从最初的HTTP和FTP下载,拓展到BT及电驴等P2P下载方式,近年来更是出现了以迅雷为代表的明显提高下载效率的P2SP下载。这时,传统的直接连接某个单一下载资源服务器的做法已经不能解决下载速度慢、下载服务器所需带宽大等弊端。为了提高下载效率,“跨协议下载”的技术应运而生。

目前,很多下载工具软件都应用了跨协议下载技术,但是对于它的定义和概念却众说纷纭,主要有以下两种:

1 兼容多种下载协议:这是跨协议下载的“初级阶段”,严格地讲不算是真正意义上的跨协议下载,称之为“多协议下载”可能更合适。它可以让下载软件从单一支持HTTP和FTP下载拓展到支持更多的协议(如MMS、RTSP、BT和电骡等)下载,其具代表性的软件为较早版本的FlashGet。

2 从多个不同协议的下载源同时下载:这种定义的基础是下载软件已经支持多种下载协议,当使用其中一种协议下载时,下载软件除了用该协议的链接下载文件,还会自动搜索其他三种协议的下载链接,以提高下载速度和成功率。例如,下载一个HTTP协议的文件时,下载软件会自动搜索到BT或Emule甚至更多协议上的相同可用文件进行下载,大大提高了文件下载的效率和成功率,最具代表的是最新版的脱兔。

“跨协议下载”如何跨协议?

为何跨协议下载文件更加流畅且成功率高呢?这都是因为使用了多个下载源(包括不同协议的下载源)的缘故。使用支持跨协议下载的工具软件下载时,软件会自动进行以下工作:

1 点击下载链接时,下载工具软件首先连接下载工具软件厂商的服务器将下载信息告知服务器。

2 如果服务器中存在该文件的相关信息,服务器就反馈更多的不同协议的下载源;如果没有相关信息,就将本次下载源的地址上传到服务器数据库中存储,便于以后更多用户下载时使用。连接的过程中,由不同客户端提供的不同下载协议的源地址,同时保存了下来,不断丰富着服务器的文件库。