该用户从未签到
|
1、http协议(了解)
$ J1 G. ]. r5 W% ] W7 w0 B 1)http协议是什么?" u8 n L+ O1 m' E& [/ j
超文本传输控制协议(hypertext transport protocal)。
1 ~' Z- s- B5 F. X是一种应用层协议,定义了浏览器(也可以是其它程序)
" L) w$ Z2 b' a# b与web服务器之间通讯的过程与数据的格式。+ R1 f" d+ P3 |# U P2 G
2)通讯的过程
3 n6 c2 R( L) M a,浏览器向服务器发送建立连接的请求。8 w1 `- `- [' `9 m& K
b,浏览器先将请求数据打包,向服务器发送请求。
5 g' B& e. W& H c,服务器处理完请求,然后将数据打包,发送给浏览器。
$ ~0 s+ i: r ~# M! J) w d,服务器发送完数据,并闭连接。
5 X1 h8 U% i5 g8 D7 O/ g9 } 如果浏览器要向服务器再次发送请求,需要重新
* I6 l; a" o \4 C 建立连接。也就是说,浏览器与服务器之间的连接, U+ O" K( t* m' M8 V9 z- q
只能处理一次请求,然后立即关闭。这种通讯方式,
6 {( ?# ?# p( G, N1 c3 i6 Z 可以让服务器以有限的资源为更多的客户端服务。% W, S9 f2 |. [" R B8 G5 q
3)数据包的结构
; G4 Y" N# O [0 B# u a,请求数据包的结构
7 P, D) s' O. |. V. y 第一部分:3 j% i- q- a3 o( a' Z) U( r5 u8 R
请求行:
- K8 R1 w {/ S" M. F 请求方式(get/post) ' S8 m' } e$ @! A& o
请求资源路径
2 ]# H" G m$ m7 y; d2 z4 F K 协议的类型与版本7 H( ?" e5 a4 }! a k: Z+ p' W
第二部分:: ~. }! R# {% n1 h0 P7 F
若干消息头:
o1 c% v+ x, {3 `6 N 消息头由w3c定义的一些有特殊含义的键值对,( `$ Y5 Y4 z8 t" x/ x+ p5 F
比如:content-type= text/html;
" A1 i7 m Y% R' U. ~$ n7 |: u8 r$ l 服务器和浏览器都会遵守这些消息头的约定。
" w1 ^+ k8 j- ] 消息头一般由服务器或者浏览器自动生成,但是
# w; Y) n1 J! Q, D$ @9 Z9 x ,也可以通过编程的方式来生成。- A& P7 y' q$ o& N- i
第三部分:: f; O* }7 X1 O. z/ S: x6 K5 I% A
实体内容:$ T, V2 U* r/ F# @
如果请求方式是post方式,请求参数及值会 e" y5 @% m5 s+ |7 p* K
放在这儿。如果请求方式是get方式,请求参数
7 v& ]% L/ G' R1 e6 c2 y 与值是包含在请求资源路径里面。# D Q- t! ~/ {" ], b3 c6 g& U+ h& |
7 Y) I' ]. c! R
b,响应数据包的结构
) z+ H8 \ e0 H- t- h, M9 w 第一部分:
6 k+ T% C o- t) V4 i5 Z 状态行:
) |1 Z6 a& e/ ?6 y 协议的类型与版本3 F! H! w _7 \+ d: p0 R
状态码(状态码是一个数字,不同的数字代表
/ y- a1 Z, `0 U+ X6 g- }- I 不同的含义,比如
* `$ w: t% t0 { 500:系统错误(即程序代码有误)! Z- O4 ^3 s, o
404:找不到资源(访问路径错误)
: T* f% h( J f& p1 V) w 200:正确)) i$ C3 R" S0 J# {$ v1 T8 w+ }
状态码的描述, v, ?1 d$ P$ S+ X" t& @
第二部分:
* `2 a9 a9 u- |& D) N/ c" Y 若干消息头:
/ L7 u0 v8 _- l9 D. {$ M 第三部分:2 e6 s4 \" D5 C# g
实体内容:# k ?* L) W" F- D. x
服务器返回给浏览器的处理结果。/ r8 |0 T' P. h: E$ V* R
5 ^" N0 J4 W& u |
|