HTTP基础介绍
上一篇 / 下一篇 2014-06-06 14:30:22 / 个人分类:网络
51Testing软件测试网:^,Q/S(w-yO9z$D
HTTP基础介绍51Testing软件测试网&g_!E~a8B
1 术语IcS:wMUm0u 连接(Connection):两个应用程序以通讯为目的在传输层建立虚拟电路。51Testing软件测试网C0C|#]] |ev#RB
QR/Q1ljOw.Z8`0u 消息(Message):HTTP通讯的基本单元,在连接中传输结构化的、有顺序的字节。
pM3Vf\(p }r0V02GPFkQ[2v0u 请求(Request):客户端发送到服务器的请求信息包括,应用于资源的方法、资源标识符和协议版本号。
.xiA~#m051Testing软件测试网wNR%@jLu 响应(Response):服务器返回给客户端的信息包括,HTTP协议版本号、请求状态(如“成功”或“未找到”)和文档的MIME类型。51Testing软件测试网!wsqT~F
51Testing软件测试网0jC u^;TWJ&Zu 资源(Resource):由URI标识的网络数据对象或服务。
7FF Kgy051Testing软件测试网$xz8op$Q-N[ \[u 实体(Entity):作为请求或响应的载货(payload),实体包含实体标题(entity-header)和实体主体(entity-body)。51Testing软件测试网~IU_KTM.t6c
51Testing软件测试网X5z)V5g'a gm(YPu 客户端(Client):以发送请求目的而建立连接的应用程序。
P#c#V^&RyPC0'C"EQY!Z.cF0u 用户代理(User agent):发起请求的客户端。通常是浏览器、编辑器、蜘蛛(web爬行机器人)或其它终端用户工具。
1R;H&N-f3k ty0il!A7fXk0u 服务器(Server):接受连接、并发送响应来服务请求的应用程序。任何特定的应用程序即可以是客户端、也可是服务器。因此服务器可充当源服务器、代理、网关、或通道
K~ m1y-ls8Jo-u1|051Testing软件测试网 iG]lp&iu 源服务器(Origin server):驻留或创建给定资源的服务器。
V&Fs,k)Y5Vsmd051Testing软件测试网'a,L p7y1PZu 代理(Proxy):充当客户端和服务器的中间程序,可以代替其它客户端发起请求。可由内部提供服务,或通过转换传递请求。代理必须实现客户端和服务器的要求。透明代理不修改除代理认证和鉴定外的请求或响应;非透明代理修改请求或响应来提供其它附加服务,比如媒介类型、协议精简或匿名过滤。51Testing软件测试网@FTt/mGU
51Testing软件测试网nd]2AHcu 网关(Gateway):作为其它服务器中间媒介。与代理不同,网关接受请求就好比它就是源服务器;请求的客户端不会意识到它在同网关进行通信。51Testing软件测试网0D;T'T(@AK;G
/Ww.]9k!?-eW0_ aKKJ0u 通道(Tunnel):中继两个连接的中间程序。一旦激活,通道不会认为是HTTP通信参与方,尽管是由HTTP请求发起通道的。当两端的中继连接两端关闭时,通道便停止。51Testing软件测试网 pMj;X[Sl
51Testing软件测试网0n*M)r;G+Isu 缓存(Cache):程序的响应消息本地存储,和控制消息存储、获取和删除的子系统。对于未来相同的请求,为了减小响应时间和网络带宽消耗,使用缓存来存储可缓存响应信息。任何客户端或服务器都可能包含缓存。
!OkwFK*{,T^0iAeW,Mz0u 可缓存(Cacheable):如果缓存允许存储响应消息的拷贝(以便回应后续的请求),就认为响应是可缓存的。51Testing软件测试网3P*N+gC]"c
51Testing软件测试网 {~5GC}p#F8lu 直接地(First-hand):如果响应直接来自源服务器、而没有经过不必要的中继;或它的有效性是直接由源服务器进行检查,就认为响应是直接响应。51Testing软件测试网7f1Lt8XYH
51Testing软件测试网 NJ6e4AQau 明确过期时间(Explicit expiration time):源服务器认为没有进一步确认、缓存不在返回实体的时间。51Testing软件测试网)oW(T~%tUc
51Testing软件测试网7X1t"sIp4iu 启发过期时间(Heuristic expiration time):当明确过期时间不可用时、由缓存分配的过期时间。51Testing软件测试网'_n*I&H GzrL?
.P7cia |*^3?0u 年龄(Age):从源服务器发送或成功验证以来、响应的年龄。51Testing软件测试网j PU,Fo8m
51Testing软件测试网z8s/oS}lu 新寿命(Freshness lifetime):响应产生和它的过期时间之间时间长度。51Testing软件测试网)V0Z&K+['\0Yh7eX
5\YI)N/Q l0u 新鲜的(Fresh):如果响应的年龄没有超过它的新寿命,响应就是新鲜的。
}(~ q pDM,L0?&_]k)T'[6ADqH!v6fO0u 陈旧的(Stale):如果响应的年龄已超过它的新寿命,响应就是陈旧的。
h.o B~)x02 WWW服务与HTTP协议介绍51Testing软件测试网iF| SQg xWeb的应用层协议HTTP是Web的核心。HTTP在Web的客户程序和服务器程序中得以实现。运行在不同端系统上的客户程序和服务器程序通过交换HTTP消息彼此交流。HTTP定义这些消息的结构以及客户和服务器如何交换这些消息。在介绍HTTP之前,先来讨论一些web中的术语。51Testing软件测试网D0XPnbL6G
51Testing软件测试网\+Ha:j$iTos/~Web页面(web page,也称为文档)由多个对象构成。对象(object)仅仅是可由单个URL寻址的文件,例如HTML文件、JPG图像、GIF图像、JAVA小应用程序、语音片段等。大多数Web页面由单个基本HTML文件和若干个所引用的对象构成。例如,如果一个Web页面包含HTML文本和5个JPEG图像,那么它由6个对象构成,即基本HTML文件加5个图像。基本HTML文件使用相应的URL来引用本页面的其他对象。每个URL由存放该对象的服务器主机名和该对象的路径名两部分构成。例如,在如下的URL中:
}S4~h P%Y3A,A0T5T0G }6n+f1`8r0www.yesky.com/urlpath/picture.qif51Testing软件测试网O'FYWiU
51Testing软件测试网q PAxQ]Mwww.yesky.com是一个主机名,/urlpath/picture.qif是一个路径名。浏览器是Web的用户代理,它显示所请求的Web页面,并提供大量的导航与配置特性。Web浏览器还实现HTTP的客户端,因此从进程意义上可互换使用“浏览器”和“客户”两词。流行的Web浏览器有Netscape Communicator,firefox和微软的IE等。Web服务器存放可由URL寻址的Web对象。web服务器还实现HTTP的服务器端。流行的Web服务器有Apache、微软的IIS以及Netscape Enterprise Server。
2Y/LKkbL8bLv,J051Testing软件测试网;P|1d4X3^aHTTP定义Web客户(即浏览器)如何从Web服务器请求Web页面,以及服务器如何把Web页面传送给客户。图1展示了这种请求-响应行为。当用户请求一个Web页面(譬如说点击某个超链接)时,浏览器把请求该页面中各个对象的HTTP请求消息发送给服务器。服务器收到请求后,以发送含有这些对象的HTTP响应消息作为响应。到1997年底,基本上所有的浏览器和Web服务器软件都实现了在RFC 1945中定义的HTTP/1.0版本。1998年初,一些Web服务器软件和浏览器软件开始实现在RFC 2616中定义的HTTP/1.1版本。HTTP/1.1后向兼容HTTP/1.0;运行1.1版本的Web服务器可以与运行1.0版本的浏览器“对话”,运行1.1版本的浏览器也可以与运行1.0版本的Web服务器“对话”。
UG3n2x#EA6y051Testing软件测试网Y Dv+J#Oa _*l| ]N51Testing软件测试网-]Q!QH}H3`S
g[tP&j'L+U0图1 HTTP请求与响应行为51Testing软件测试网I9hW _0Zoup
*I-a9nI'AI3w0HTTP/1.0和HTTP/1.1都把TCP作为底层的传输协议。HTTP客户首先发起与服务器建立TCP连接。一旦建立连接,浏览器进程和服务器进程就可以通过各自的套接字来访问TCP。客户端套接字是客户进程和TCP连接之间的“门”,服务器端套接字是服务器进程和同一TCP连接之间的“门”。客户往自己的套接字发送HTTP请求消息,也从自己的套接字接收HTTP响应消息。类似地,服务器从自己的套接字接收HTTP请求消息,也往自己的套接字发送HTTP响应消息。客户或服务器一旦把某个消息送入各自的套接字,这个消息就完全落入TCP的控制之中。TCP给HTTP提供一个可靠的数据传输服务;这意味着由客户发出的每个HTTP请求消息最终将无损地到达服务器,由服务器发出的每个HTTP响应消息最终也将无损地到达客户。从中看到分层网络体系结构的一个明显优势——HTTP不必担心数据会丢失,也无需关心TCP如何从数据的丢失和错序中恢复出来的细节。这些是TCP和协议栈中更低协议层的任务。
7T*Xjq-Q4h&U&Cv03 WWW基本结构51Testing软件测试网?&`Jn/ofWWW与HTTP在Internet/Intranet上的基本结构如图2所示。Web Server中包括了公共网关接口CGI,提供了与网上其他资源(包括数据库资源)的可能性,通过设计一个中间件来实现Web Server与数据库资源的连接。中间件的基本功能是:由于HTML的静态页面中包括了数据库访问的检索项,中间件把检索项转换成SQL语句访问数据库,而回送的数据库资源经中间件转换成浏览器能解释的HTML页面。51Testing软件测试网+vv#\)j~%N
hW yqd!h(iQ051Testing软件测试网SpI_(ku*aS
51Testing软件测试网#_k IZ/^ gu9U图2 WWW与HTTP基本结构51Testing软件测试网S7d:b'G0A
4 HTTP协议通信过程51Testing软件测试网0Z BR9dBhv,F.o0bzX,[HTTP是一种请求/响应协议。客户机发送请求给服务器,请求的形式为:统一资源标识符、协议版本号、后边是相似的MIME信息包括请求修饰符、客户机信息和可能的主体内容。服务器接到请求后,对请求进行响应,响应的内容为:包括信息协议版本号、成功或错误代码,后边是MIME信息包括服务器信息、实体信息和可能的实体主体内容。
!A1Q+?&^bz%Ep5i1e'_8_051Testing软件测试网l x,oxG\.KE wZ许多HTTP通信是由用户代理发起,请求源服务器上的资源。最简单的情况可能是在用户代理和源服务器之间通过单个连接来完成。
K5xi/f_ ~051Testing软件测试网9yv W!P#{+\mob51Testing软件测试网FE#r"VLf*v
;eVG2gju[)j3T0图3 无代理的情况
W#b0Y&a8I.b+^4uJ051Testing软件测试网l r6@:mKiT,~ jv{当一个或多个中介出现在请求/响应链中时,情况就变得复杂一些。中介的形式有三种:代理(Proxy)、网关(Gateway)和通道(Tunnel)。代理接收绝对形式的URI请求,重写全部或部分消息,并转发重新格式化的请求到URI指定的服务器。网关是一个接收代理,作为其它服务器的上层,并且如果必须的话,转化请求给下层的服务器协议。通道作为不改变消息的两个连接之间的中继点,当通讯需要通过中介(如防火墙)或者是中介不能识别消息内容时,常使用通道。
eDvk|1[A1UD)R051Testing软件测试网 U3No JrM ?2t`^_,y7B/Iz051Testing软件测试网:K,dMWv.W图4 多个代理的情况
+]8^K1hrN]0b N EAx:n0上图表明了在用户代理(UA)和源服务器(O)之间有三个中介(A,B和C)。通过整个链的请求或响应消息必须经过四个连接段。需要理解,一些HTTP通信选项只能应用于最近的、非通道的邻居的连接,一些只能应用于链终点或链中的所有连接。尽管上图是单线的,但实际上每个参与者都可能从事多个并发的通信。例如,除了A之外,B可能还从许多客户机接收请求,和/或转发请求给C之外,还转发给其它服务器,同时还要处理A的请求。51Testing软件测试网#E!UF'a5@.Hl+L
51Testing软件测试网e1pHZ N G任何通信方(不是通道)可以采用内部缓存来处理请求。如果通信方对请求有已缓存的响应可用,则使用缓存可缩短请求/响应链。如下图所示,如果B有先前来自于源服务器的缓存拷贝(用户代理和A还没有缓存该拷贝),则最终由B对用户代理的请求进行响应。
M)j(s n$Ig051Testing软件测试网IUjbQ8JK)a5v@ln09T'Y/Y&T}0图5 响应的缓存拷贝
S p!l)AP8i051Testing软件测试网wh;m%] A*xv2K以上简要介绍了HTTP协议的宏观运作方式,下面介绍一下HTTP协议的内部操作过程。51Testing软件测试网P2gL9A5Ew+u D
+DW.Y `3f"c?0首先,简单介绍基于HTTP协议的客户/服务器模式的信息交换过程,如图6所示,它分四个过程:建立连接、发送请求、发送响应、关闭连接。
.Rp]{9Yt051Testing软件测试网H8SU0Xx51Testing软件测试网&Ig3|ZVw*].n-V
xc)u-iY vy0图6 协议通信框架
1h.B)b H4l;N2Hol`02L[n Y{$D0在WWW中,“客户”与“服务器”是一个相对的概念,只存在于一个特定的连接,即在某个连接中的客户在另一个连接中可能作为服务器。WWW服务器运行时,一直在TCP80端口(WWW的缺省端口)监听,等待连接请求。客户端发起连接,与服务器建立连接后,发送HTTP请求给服务器,服务器把请求的资源响应给客户机,资源请求完成后,一般由客户端请求关闭TCP连接。
y'vJq$kBd05 HTTP协议详解 5.1 什么是HTTP51Testing软件测试网}.CPQ&eN'Oa4s+FHTTP是一种WWW(World Wide Web)应用协议,WWW调用HTTP协议来处理Web事务。HTTP处理Web文档或图片请求、超文本链接点击以及表单提交。51Testing软件测试网q Y4_y V'B ur i4G9A
'RYL.Gm7\0g4X9E0HTTP提供计算机相互之间标准化的通信方式,HTTP规定客户端如何请求数据,以及服务器如何响应客户端的请求。(web客户端包括:浏览器、robots、搜索引擎)。
Y"Y3HB'v-["LM(E05.2 HTTP事务 5.2.1 请求(Requests)rpg2K+U'tkD0给定如下URL:51Testing软件测试网1hb:F5`*tu$e\
A5WX;A m R$bI%g0http://hypothetical.ora.com:80/51Testing软件测试网jDB1q9F$i[(_PSj
51Testing软件测试网uEe9?1g/H+g浏览器对URL的解释如下:
+i~EB(?w$lB051Testing软件测试网_PxttD+}.F)Ihttp:// 使用HTTP超文本传输协议。
?L.Ct(T W?0\%]Zk3IcI7f0hypothetical.ora.com 通过网络与主机名为hypothetical.ora.com的主机联系。51Testing软件测试网X c;IJK'P
51Testing软件测试网oT0Bul#L w%S1V:80 连接计算机端口80。端口号范围为1~65535。如果忽略冒号和端口号,则采用HTTP的默认端口号80(IPv4)。51Testing软件测试网"yy3u3g"F;L$D@s
51Testing软件测试网'RK`ip%zn ] y/ 在主机名和可选端口号之后是文档路径。本例中,文档路径为/。51Testing软件测试网u t4w4vnvB
51Testing软件测试网m'i7mL&]I因此,浏览器使用HTTP协议与主机hypothetical.ora.com的80端口进行通信。浏览器发送给服务器的请求消息为:51Testing软件测试网*vnTTN,u*_-h1X
GET / HTTP/1.1Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, */*Accept-Language: en-usAccept-Encoding: gzip, deflateUser-Agent: Mozilla/4.0 (compatible; MSIE 5.01; Windows NT)Host: hypothetical.ora.comConnection: Keep-Alivet`2EJAx0以上各行的含义如下:51Testing软件测试网1ac"pB0F(Xj7U
8XP"Wf%DB(R't5m01, 请求的第一行(GET / HTTP/1.1)向服务器请求“/“路径下的文档(路径可以是绝对路径,比如“hypothetical.ora.com/”;也可以是相对路径“/”)。HTTP/1.1说明浏览器使用的HTTP协议版本为1.1。请求行的格式:
H(B&j y r3]}oAy0(]Um#Z'Uy0方法(Method)<空格>请求URI<空格>HTTP版本
|5k$EX j n)pp0$J,Fr#GeOOS^M}02, 第二行告诉服务器:浏览器接收的文档类型。51Testing软件测试网6]8?&\SLX1Uoo1E1|5m6r
51Testing软件测试网QJT Pc(v;g3o3, 第三行表明客户端首选的语言是英语。在服务器同一文档有多种语言的情况下,该标题允许客户端指定一种或多种语言。51Testing软件测试网/v(zV!IZ/{+[ W
?v~%z?I04, 第四行指明客户端可以识别使用gzip或deflate算法压缩的服务器响应。51Testing软件测试网Ef;} {#P
51Testing软件测试网L I A3F;u N}m5, 以字符串User-Agent开始的第五行,客户端表明自身是运行在Windows NT上的Mozilla Ver 4.0。括号内说明客户端实际上为Microsoft Internet Explorer Ver 5.01。51Testing软件测试网Zx^^v$d
51Testing软件测试网 z]_ G8j6, 第六行告知服务器,客户端认为服务器的主机名是什么。该标题在HTTP 1.1中是强制的,但在HTTP 1.0中是可选的。由于服务器可能有多个主机名,客户端指明向哪一个主机名请求。如果Web服务器可能有多个名字,不同的名字可能对应不同的文档目录,如果客户端不指定服务器主机名,服务器可能不确定使用哪一个文档目录。51Testing软件测试网quJ&d)m[u
51Testing软件测试网$h/d7T,E Er N5xH})O7, 第七行(Connection:)告诉服务器保持TCP连接开放,直到明确告知服务器关闭连接。对于HTTP 1.1,服务器默认是保持连接开放,直到客户端指明连接应当关闭。标准的HTTP 1.0是在客户端请求后,就关闭连接。
Vw\kC,iA-Ia0%{$[AP GIKW0以上七行构成一条请求消息,第二行到第七行是请求标题(request headers)。
t]Vz0z vbXos05.2.2 响应(Responses)51Testing软件测试网b y'p H+L!H!VvF对于前面所述的请求,服务器查找“/“对应的服务器资源,并返回给浏览器,在响应中添加相应的标题信息。URL资源依赖于服务器的实现,资源可能是静态文档,也可能是动态产生的。上例中,服务器返回:
P%zk!zgfyd05R3b6X/L T%LM0HTTP/1.1 200 OK51Testing软件测试网*nb}D3|+hM
O?n7B-d/YP+n0Date: Mon, 06 Dec 1999 20:54:26 GMT51Testing软件测试网6f L|6t(m"Os
$E;E}O3wAT0Server: Apache/1.3.6 (Unix)
%VB&z |S051Testing软件测试网"LRm'V\m~eBpVLast-Modified: Fri, 04 Oct 1996 14:06:11 GMT51Testing软件测试网HN ?Hw
|y o f(w-Y0ETag: "2f5cd-964-381e1bd6"
A B'X1[T7N'Q:m5W ?z0KD$tc,O0Accept-Ranges: bytes
YuH?E9QU"h[)E051Testing软件测试网,t3U%s`;n _Content-length: 32751Testing软件测试网!S1}aqD
9^.Rd*nX;t\G0Connection: close
~)cCb%PMp0`N-q)s"D0q2r _*v\4y0Content-type: text/html
vuG'v Tw M |0%b;J'] AmTa/`$r0
O+h|"fk8[0~Ed8ny*j0<title>Sample Homepage</title>51Testing软件测试网5Ag$c4x-R]
8{'W'wPrx{)O ~ P0<img src="/images/oreilly_mast.gif">51Testing软件测试网%N/bVHH EC$z
W*[W;Wf0<h1>Welcome</h1>
}]I:s~051Testing软件测试网$c&\d \*]Hi there, this is a simple web page. Granted,
2Y s V Ta5wB0F%zg2ez0it may not be as elegant as some other web51Testing软件测试网(Ri ko yP `9{
G'[-a^!X"b ~M2x0pages you've seen on the net, but there are51Testing软件测试网v&^"W2vO-wJjz6bc7G
.v!W3v)Tb2M0some common qualities:
U:]$o6H%^pu051Testing软件测试网9d$LIk O0vqN%k%~P:L~3V,}1H'?0)g egH6QD,^P0<ul>51Testing软件测试网%KAXqagB
51Testing软件测试网"Q%~ qs;m'U!ZK<li> An image,
G:r3\m9@'k1Ty,g0y5v)tSHq X_0<li> Text,
(]*dI1R3^(y8HA0v7h*UF/],KK|O2wk{0<li> and a <a href="/example2.html"> hyperlink. </a>
F+P)v$x EE051Testing软件测试网m r!d a)`/n</ul>51Testing软件测试网L!l7q7h'rwq k'i
51Testing软件测试网IV x1jj(P响应的结构为:开始的一系列行指明文档信息和服务器信息,然后是空行,最后是返回的文档。行2-9是响应标题(response header),空行之后是主体(body)或实体(entity),或实体主体(entity-body)。标题信息如下:51Testing软件测试网8B7CA z0j@.n
51Testing软件测试网3bQ3o"PX4T} b,pK1, 第一行,HTTP/1.1 200 OK,告诉客户端服务器使用的HTTP协议版本。更重要的是,返回状态码(status code)200,状态码说明文档已找到,将在响应中传送该文档。响应行的格式为:HTTP版本<空格>状态码<空格>原因短语(Reason-Phrase)51Testing软件测试网y6^nzy!@%i
51Testing软件测试网_O#q8f3^*t2H9s9u2, 第二行指明服务器的当前日期。时间是格林威治平均时间(GMT)。
4X7bf([vfE051Testing软件测试网&{w2P+J#};{s!l8a3, 第三行告知服务器运行的软件类型。本例中,服务器是Unix的Apache Ver 1.3.6。51Testing软件测试网)^w0g6F"C6V
k'rpV8]ZLT04, 第四行指明被请求文档的最近修改时间。该修改时间常作为缓存(caching)用途-如果修改时间没有改变,浏览器可不需要再次请求整个HTML文件。
q!|"w5Ck6k!T`P0e!^R6J5S)M;{05, 第五行指明一个实体标签(entity tag)。对于服务器资源向Web客户端提供一个唯一的标识符。不同的服务器资源不可能有相同的实体标签。该标签提供了强有力的缓存机制。51Testing软件测试网6^]u1gA6ei
b?'e[ @[I06, 第六行向浏览器指明,服务器拥有返回文档分段的能力,而不是每次返回整个文档。这对于获取文档中的记录是有用的,比如数据库和流媒体应用。
!~ ]nr3q:K!\+V0/iV)HiA5Bc$@07, 第七行告知客户端,在标题下的实体主体有多少字节。本例中,实体主体长度为327字节。
N;xN%zNRuu0'J:V6adS$T9`08, 第八行指明在服务器响应后,连接将关闭。如果客户端需要再次发送请求,它需要打开另外的连接。51Testing软件测试网,vjq6Y}0L$T
Z-X'd;{i?Y.p{09, 第九行(Content-type)告诉浏览器响应中包含什么类型的文档。本例中,文档类型为HTML。
K$b lWd&M1Kk+@6oB+I051Testing软件测试网2f7P}8q3e~在这之后,是一个空行和文档文本。事务处理如下:51Testing软件测试网"U Y CDKsG
51Testing软件测试网co)R\|?:C51Testing软件测试网(xhK*CY
51Testing软件测试网}E]Rz4akq图7 简单的事务处理
*} fQ6fL"T1Y0u0分析HTML51Testing软件测试网NB[7V%M?9W_文档是HTML格式的(在Content-type行说明),浏览器获取文档后,根据需要进行格式化显示-例如,<img>标记将在屏幕上显示一个图片。
.d"g)F9C4Oui#aWp*K0pRs2C3S@(w0为了处理图片标记,浏览器实际上要发起第二次HTTP请求来获取该图像。当服务器返回图形时,它包含Content-type标题来指示图片的格式(如image/gif)。从声明的内容类型中,浏览器知道它将接收什么类型的图像,并根据需要显示它。浏览器不应该基于文档的路径来猜测内容的类型,而是由服务器告知客户端。
*yX\VX\)m051Testing软件测试网kJ Td_w0eX5k需要注意的是,HTML格式化和图像描述是由浏览器来完成的,服务器只是返回文档。
r S YP u?\8N+B05.2.3 HTTP事务构造51Testing软件测试网.R\.uvt0Z,N一般来讲,所有客户端请求和服务器响应都遵循上图中的一般结构。51Testing软件测试网 P1Wy e ~4V Wt
9s'xhwU6Tv9?}0下图为客户端请求的结构51Testing软件测试网0UR/h+i7L'Wnh1m
51Testing软件测试网@)H UP.X9u5gF N+Bq k.K%n051Testing软件测试网&`6d1HWj`gH+l图8 客户端请求消息51Testing软件测试网_8r9I1h z!zd+h
51Testing软件测试网D"S/E5IW BX;aHTTP事务并不需要使用所有的标题。事实上,执行一些HTTP请求,可以不提供任何的标题信息。例如,在许多简单场合中,GET / HTTP/1.0请求中不提供任何标题,服务器就能理解客户端的请求。
L:M9d?3_4fe1q2k!e0Y0Gscw{L0HTTP请求消息一般由以下部分构成:51Testing软件测试网0sR/]#c,Q,M
7[kr q%[w1k;PI!M01, 第一行告诉客户端使用哪种方法、应用该方法到哪种实体对象(文档)、以及客户端使用的HTTP版本。HTTP 1.1中可用的方法有GET、POST、HEAD、PUT、LINK、 UNLINK、DELETE、OPTIONS和TRACE。HTTP 1.0不支持OPTIONS和TRACE方法。服务器不是所有方法都支持。51Testing软件测试网v#BO+q~]y
n6l/U-n1Yu0URL指明文档位置。每台服务器可能有自己的方式来转化URL字符串为可用资源形式。例如,URL可能表示传送一个文档给客户端,或者URL映射为一个程序、发送程序到客户端。51Testing软件测试网;?Ewn|J:gh
,B5Dl7m4]5EQ0第一行的最后一项指明客户端的HTTP版本。
m&C-[!P.[051Testing软件测试网4Q"j:@zma&I+m2, 普通消息标题(General message headers)是可选标题,可用于客户端请求和服务器响应中。它们说明普通信息,比如当前时间或穿越网络的路径。51Testing软件测试网4W1C%j t/A2[
51Testing软件测试网wo1G5s2XQHcVt3, 请求标题(Request headers)告诉服务器更多关于客户端的信息。客户端可能向服务器表明身份、和指定首选文档格式。