该用户从未签到
|
1、http协议(了解)" V1 d- w. d; w2 ~$ |
1)http协议是什么?
4 _# ]+ Q/ q9 f% l6 Z 超文本传输控制协议(hypertext transport protocal)。# i! h5 @3 D! h) K7 H8 t) {
是一种应用层协议,定义了浏览器(也可以是其它程序)
" C8 M7 k; p0 d4 r与web服务器之间通讯的过程与数据的格式。/ L9 V/ h9 o( }) }! W
2)通讯的过程
) n2 f4 E" ]! X Z( l a,浏览器向服务器发送建立连接的请求。
" z4 m( J% L. L$ i6 x9 U% n% [ b,浏览器先将请求数据打包,向服务器发送请求。5 }, S0 E% v3 C7 l" I1 u" |) ?+ R8 q
c,服务器处理完请求,然后将数据打包,发送给浏览器。 o& B1 X+ ?$ Z1 ?. `( J5 \' ?# A
d,服务器发送完数据,并闭连接。
- F. e: O% M K& n# u5 w4 H 如果浏览器要向服务器再次发送请求,需要重新/ ~" s5 U$ |$ y+ c S Y# g
建立连接。也就是说,浏览器与服务器之间的连接,
* z3 N: R. q- p 只能处理一次请求,然后立即关闭。这种通讯方式,
, {! D W% w4 z1 r. N 可以让服务器以有限的资源为更多的客户端服务。 B. J. y- V: O1 X3 e
3)数据包的结构' J9 o! p( Q2 I9 h
a,请求数据包的结构
w* l% k3 M9 m" L: U 第一部分:
& v2 u! ~8 R& H, d, f# f- Q 请求行:
! V$ x! g4 Z2 L% z0 ` 请求方式(get/post)
" i8 l3 R& Z3 d 请求资源路径 4 J* L0 ]" T! D4 P- G1 e3 `
协议的类型与版本8 @3 b% `; Z# Q l( w
第二部分:; l3 D7 g3 i( i" A1 V& M. C5 r& M
若干消息头:! L/ s8 g8 W' O6 o& g
消息头由w3c定义的一些有特殊含义的键值对,0 I; a3 i$ Y+ C9 a9 y: N% n
比如:content-type= text/html;' t8 u% p5 j. U* U. {5 P- G
服务器和浏览器都会遵守这些消息头的约定。
! W- T# o& q3 r' K- y C6 N0 @ 消息头一般由服务器或者浏览器自动生成,但是8 d( c' O% X+ t. W& v3 [# t
,也可以通过编程的方式来生成。1 ^& M: }% D9 }2 ~+ u9 a1 ]
第三部分:
4 v2 e* _+ G' p; @7 J' S 实体内容:
8 @! p7 x' D: S 如果请求方式是post方式,请求参数及值会
+ q/ @6 I0 L4 r 放在这儿。如果请求方式是get方式,请求参数/ R: ^: A& D, |' f' M: k) i
与值是包含在请求资源路径里面。
4 g5 B& V( b: s
- Y& Y' u' n7 Z& ?+ ^3 ^0 T b,响应数据包的结构
5 ]7 l l2 W- a5 |$ Y# q% k- y 第一部分:
& ]8 A( z4 {- \' y 状态行:
7 N' z& X% p/ ] 协议的类型与版本4 a% Z: c0 z& U! T# |: H# Z: }
状态码(状态码是一个数字,不同的数字代表
% x5 L+ C4 j, l# z5 s) i 不同的含义,比如$ k" V' y" N3 s0 \$ O9 ?
500:系统错误(即程序代码有误)/ E, g4 Y4 I9 \6 g v
404:找不到资源(访问路径错误)2 U9 t" }* C8 s
200:正确)) P: q) @" s' j6 g! k. r% m, L
状态码的描述/ O5 V) `7 n& U
第二部分:
0 |* a& L3 z, j! Z* x 若干消息头:
) `: }: ?3 e/ ~' t& M6 @% k 第三部分:
: U& Q# Q: z. _ 实体内容:3 @% l; W% m5 y, X
服务器返回给浏览器的处理结果。# e' y5 i8 L/ M& B2 Q) v
0 s/ Z% K; {4 s( A8 W3 K5 X
|
|