超文本传输协议(http,hypertexttransferprotocol)是互联网上应用最为广泛的一种网络协议。所有的engineeringtaskforce)共同合作研究,最终发布了一系列的rfc,其中著名的rfc2616定义了http1.1。
http是一个客户端和服务器端请求和应答的标准(tcp)。客户端是终端用户,服务器端是网站。通过使用web浏览器、网络爬虫或者其它的工具,客户端发起一个到服务器上指定端口(默认端口为80)的http请求。(我们称这个客户端)叫用户代理(useragent)。应答的服务器上存储着(一些)资源,比如html文件
http和其他几种网络协议
和图像。(我们称)这个应答服务器为源服务器(originserver)。在用户代理和源服务器中间可能存在
http和其他几种网络协议多个中间层,比如代理,网关,或者隧道(tunnels)。尽管tcpip协议是互联网上最流行的应用,http协议并没有规定必须使用它和(基于)它支持的层。事实上,http可以在任何其他互联网协议上,或者在其他网络上实现。http只假定(其下层协议提供)可靠的传输,任何能够提供这种保证的协议都可以被其使用。
通常,由http客户端发起一个请求,建立一个到服务器指定端口(默认是80端口)的tcp连接。http服务器则在那个端口监听客户端发送过来的请求。一旦收到请求,服务器(向客户端)发回一个状态行,比
http协议的网页
如"http1.1200ok",和(响应的)消息,消息的消息体可能是请求的文件、错误消息、或者其它一些信息。
http协议的网页
http使用tcp而不是udp的原因在于(打开)一个网页必须传送很多数据,而tcp协议提供传输控制,按顺序组织数据,和错误纠正。
通过http或者https协议请求的资源由统一资源标示符(uniformresourceidentifiers)(或者,更准确一些,urls)来标识。
协议功能
http协议(hypertexttransferprotocol,超文本传输协议)是用于从上的web服务器上存放的都是超文本信息,客户机需要通过http协议传输所要访问的超文本信息。http包含命令和传输信息,不仅可用于web访问,也可以用于其他因特网内联网应用系统之间的通信,从而实现各类应用资源超媒体访问的集成。
我们在浏览器的地址栏里输入的网站地址叫做url(uniformresourcelocator,统一资源定位符)。就像每
http功用
家每户都有一个门牌地址一样,每个网页也都有一个inter地址。当你在
http功用浏
览器的地址框中输入一个url或是单击一个超级链接时,url就确定了要浏览的地址。浏览器通过超文本传输协议(http),将web服务器上站点的网页代码提取出来,并翻译成漂亮的网页。
协议基础
http(hypertexttransportprotocol)是超文本传输协议的缩写,它用于传送、iis和apache,都支持httpkeep-alive。对于提供静态内容的网站来说,这个功能通常很有用。但是,对于负担较重的网站来说,这里存在另外一个问题:虽然为客户保留打开的连接有一定的好处,但它同样影响了性能,因为在处理暂停期间,本来可以释放的资源仍旧被占用。当web服务器和应用服务器在同一台机器上运行时,keep-alive功能对资源利用的影响尤其突出。
keepalivetime值控制tcpip尝试验证空闲连接是否完好的频率。如果这段时间内没有活动,则会发送保持活动信号。如果网络工作正常,而且接收方是活动的,它就会响应。如果需要对丢失接收方敏感,换句话说,需要更快地发现丢失了接收方,请考虑减小这个值。如果长期不活动的空闲连接出现次数较多,而丢失接收方的情况出现较少,您可能会要提高该值以减少开销。缺省情况下,如果空闲连接7200000毫秒(2小时)内没有活动,windows就发送保持活动的消息。通常,1800000毫秒是首选值,从而一半的已关闭连接会在30分钟内被检测到。keepaliveinterval值定义了如果未从接收方收到保持活动消息的响应,tcpip重复发送保持活动信号的频率。当连续发送保持活动信号、但未收到响应的次数超出tcpmaxdataretransmissions的值时,会放弃该连接。如果期望较长的响应时间,您可能需要提高该值以减少开销。如果需要减少花在验证接收方是否已丢失上的时间,请考虑减小该值或tcpmaxdataretransmissions值。缺省情况下,在未收到响应而重新发送保持活动的消息之前,windows会等待1000毫秒(1秒)。keepalivetime根据你的需要设置就行,比如10分钟,注意要转换成ms。xxx代表这个间隔值得大小。
2.date头域
date头域表示消息发送的时间,时间的描述格式由rfc822定义。例如,date:n,31dec200104:25:57gmt。date描述的时间表示世界标准时,换算成本地时间,需要知道用户所在的时区。
3.pragma头域
pragma头域用来包含实现特定的指令,最常用的是pragma:no-cache。在http1.1协议中,它的含义和cache-control:no-cache相同。
请求消息
请求消息的第一行为下面的格式:
methodsprequest-urisphttp-versioncrlfmethod表示对于request-uri完成的方法,这个字段是大小写敏感的,包括options、get、head、post、put、delete、trace。方法get和head应该被所有的通用web服务器支持,其他所有方法的实现是可选的。get方法取回由request-uri标识的信息。head方法也是取回由request-uri标识的信息,只是可以在响应时,不返回消息体。post方法可以请求服务器接收包含在请求中的实体信息,可以用于提交表单,向新闻组、bbs、邮件群组和数据库发送消息。
sp表示空格。request-uri遵循uri格式,在此字段为星号(*)时,说明请求并不用于某个特定的资源地址,而是用于服务器本身。http-version表示支持的http版本,例如为http1.1。crlf表示换行回车符。请
http架构
求头域允许客户端向服务器传递关于请求或者关于客户机的附加信
http架构息。请求头
域可能包含下列字段aept、aept-charset、aept-encoding、aept-language、authorization、from、host、if-dified-since、if-match、if-none-match、if-range、if-range、if-undified-since、max-forwards、proxy-authorization、range、referer、user-agent。对请求头域的扩展要求通讯双方都支持,如果存在不支持的请求头域,一般将会作为实体头域处理。
典型的请求消息:
host:download.*******.de
aept:**
pragma:no-cache
cache-control:no-cache
user-agent:zilla4.04[en](win95;i;nav)
range:bytes=554554-
上例第一行表示http客户端(可能是浏览器、下载程序)通过get方法获得指定url下的文件。棕色的部分表示请求头域的信息,绿色的部分表示通用头部分。
1.host头域
host头域指定请求资源的inte主机和端口号,必须表示请求url的原始服务器或网关的位置。http1.1请求必须包含主机头域,否则系统会以400状态码返回。
2.referer头域
referer头域允许客户端指定请求uri的源资源地址,这可以允许服务器生成回退链表,可用来登陆、优化cache等。他也允许废除的或错误的连接由于维护的目的被追踪。如果请求的uri没有自己的uri地址,referer不能被发送。如果指定的是部分uri地址,则此地址应该是一个相对地址。
3.range头域
range头域可以请求实体的一个或者多个子范围。例如,
表示头500个字节:bytes=0-499
表示第二个500字节:bytes=500-999
表示最后500个字节:bytes=-500
表示500字节以后的范围:bytes=500-
第一个和最后一个字节:bytes=0-0,-1
同时指定几个范围:bytes=500-600,601-999
但是服务器可以忽略此请求头,如果无条件get包含range请求头,响应会以状态码206(partialcontent)返回而不是以200(ok)。
4.user-agent头域
user-agent头域的内容包含发出请求的用户信息。
响应消息
响应消息的第一行为下面的格式:
http-versionspstatus-codespreason-phrasecrlf
http-version表示支持的http版本,例如为http1.1。status-code是一个三个数字的结果代码。reason-phrase给status-code提供一个简单的文本描述。status-code主要用于机器自动识别,reason-phrase主要用于帮助用户理解。status-code的第一个数字定义响应的类别,后两个数字没有分类的作用。第一个数字可能取5个不同的值:
1xx:信息响应类,表示接收到请求并且继续处理
2xx:处理成功响应类,表示动作被成功接收、理解和接受
3xx:重定向响应类,为了完成指定的动作,必须接受进一步处理
4xx:客户端错误,客户请求包含语法错误或者是不能正确执行
5xx:服务端错误,服务器不能正确执行一个正确的请求
响应头域允许服务器传递不能放在状态行的附加信息,这些域主要描述服务器的信息和request-uri进一步的信息。响应头域包含age、location、proxy-authenticate、public、retry-after、server、vary、warning、上,http通讯通常发生在tcpip连接之上。缺省端口是tcp80,但其它的端口也是可用的。但这并不预示着http协议在inter或其它网络的其它协议之上才能完成。http只预示着一个可靠的传输。
这个过程就好像我们打电话订货一样,我们可以打电话给商家,告诉他我们需要什么规格的商品,然后商家再告诉我们什么商品有货,什么商品缺货。这些,我们是通过电话线用电话联系(http是通过tcpip),当然我们也可以通过传真,只要商家那边也有传真。
超文本传输协议已经演化出了很多版本,它们中的大部分都是向下兼容的。在rfc2145中描述了http
配置http通行证版本
号的用法。客户端在请求的开始告诉服务器它采用的协议版本号,而后者则在响应中采用相同或者更早的协议版本。
0.9已过时。只接受get一种请求方法,没有在通讯中指定版本号,且不支持请求头。由于该版本不支持post方法,所以客户端无法向服务器传递太多信息。
http1.0这是第一个在通讯中指定版本号的http协议版本,至今仍被广泛采用,特别是在代理服务器中。
http1.1当前版本。持久连接被默认采用,并能很好地配合代理服务器工作。还支持以管道方式同时发送多个请求,以便降低线路负载,提高传输速度。
http1.1相较于http1.0协议的区别主要体现在:
1缓存处理
2带宽优化及网络连接的使用
3错误通知的管理
4消息在网络中的发送
5互联网地址的维护
6安全性及完整性
天网maze是北京大学网络实验室开发的一款资源和功能非常强大的pic(personalinformationcenter个人信息中心)文件系统。截至到2005年10月,天网maze已有注册用户220万,同时最高在线用户数超过10万。
天网maze的特点
天网互联公司首先推出这个pic概念,目的是为了和其他p2p软件区别开(详情请参看天网maze与其它bt软件的异同)。相比其他p2p软件,天网maze更加注重的是以人为本,诚信交流的原则。具体体现在:机制方面,我们有积分原则和排队策略,用以鼓励天网maze用户尽可能地与他人共享其资源,而处罚规则,用以对流传在天网maze上的各类非法资源进行处理,拥护国家对中国互联网上的有关法律规章,维护互联网上的合法、正常的次序,即在推崇个性化的同时,规范其个性化在天网maze上的发展;技术方面,我们努力在天网maze上实现文件的“所见即所得”,让更多精彩的、热门的文件以最快的速度呈献在广大天网maze用户面前;资源方面:在天网maze里面,有数以亿计的影视,音乐,小说等娱乐资源。不仅如此,因为在天网maze的共享资源里面具有极其多的学术文件,论文可供查询和下载,这也是天网maze在教育网内的风行的原因,天网maze还是个交友和社区化的平台,能把您周围和您有共同爱好的天网maze用户聚集到一起来;功能方面:天网maze集文件的共享、查询、下载为一身,既是网上资源搜索的强力引擎,也是资源下载的利器,您不仅可以通过天网maze的共享功能直接下载,还可以像其它bt软件一样通过“种子”的发布达到资源共享及下载的目的。
maze是北京大学深圳研究生院几位硕士研究生在2003年暑假的开发成果,目的是解决当前ftp服务器的缺陷以及它所导致的在ftp搜索引擎内找到资源却无法有效下载的问题,为广大网友提供一种文件共享的新方法、文件下载的新途径。