该用户从未签到
|
1、http协议(了解)
' y7 }5 @: T( f, ^' V/ _ 1)http协议是什么?
+ E. B* m6 `% ~" n! | 超文本传输控制协议(hypertext transport protocal)。' Z" N# o- t( @% E
是一种应用层协议,定义了浏览器(也可以是其它程序)
0 E4 w& M" A/ L: A W' C: G. F与web服务器之间通讯的过程与数据的格式。
& F9 v( \7 u+ }1 @8 R 2)通讯的过程
8 q& W6 S3 w; i( v& S2 B a,浏览器向服务器发送建立连接的请求。# r* c* N- O; W2 z5 k
b,浏览器先将请求数据打包,向服务器发送请求。
+ S2 B4 H& [, |0 @% l6 Q c,服务器处理完请求,然后将数据打包,发送给浏览器。3 |- C* h2 h4 q, M8 }+ N4 o
d,服务器发送完数据,并闭连接。
5 B1 r; S; ~, E4 ^0 Z 如果浏览器要向服务器再次发送请求,需要重新9 H% c) a3 @! z' p$ P
建立连接。也就是说,浏览器与服务器之间的连接, a) ~" m5 T6 L5 d7 {# |. r
只能处理一次请求,然后立即关闭。这种通讯方式,
9 V, P: Z# a! y. O2 H 可以让服务器以有限的资源为更多的客户端服务。
4 `( ]$ R$ v# e 3)数据包的结构6 ]" J- y- n2 H0 R7 z) U# ~7 b
a,请求数据包的结构
) q2 o0 O" O4 v) | 第一部分:
" e+ M1 p% t+ v$ Y* ^6 \ 请求行:
4 |) J& A; i* R) T% z1 m9 d 请求方式(get/post)
2 D7 `/ W5 \; B* u 请求资源路径 0 K l, W2 N2 f! S* @
协议的类型与版本
* a4 y1 Z6 _- b* o9 f 第二部分:
# X, ?5 v0 A0 S) Z. z. U& Y& Y- U9 Q 若干消息头: m! c' { L2 X
消息头由w3c定义的一些有特殊含义的键值对, `; x5 p5 f5 ~- k; [
比如:content-type= text/html;. F( W) @2 Z/ f6 L
服务器和浏览器都会遵守这些消息头的约定。4 r; K& c. } D
消息头一般由服务器或者浏览器自动生成,但是
2 w i2 d4 X8 d$ t" {. q g ,也可以通过编程的方式来生成。
6 ~" M- e) G3 X; Y* V; W/ b 第三部分:
. f1 L$ u0 d2 {: O9 e- ? 实体内容:+ x( N/ Y* d3 ]7 I
如果请求方式是post方式,请求参数及值会' N' y9 Z, c: S* Z0 o. L1 j6 M
放在这儿。如果请求方式是get方式,请求参数; P0 _# w. V" H9 J# c0 N
与值是包含在请求资源路径里面。' i4 \6 R! n# f" `
2 v" c7 C: i ^5 o. ^* P) W
b,响应数据包的结构
( [0 _& O1 x9 `/ c/ B A& | 第一部分:
* x: n( l% m* l- v2 @" d5 I$ G 状态行:' E7 X* Z7 ]1 P$ K8 |& }
协议的类型与版本5 }. @1 P" O3 s- X# \
状态码(状态码是一个数字,不同的数字代表7 _. g' j1 L8 I
不同的含义,比如
# X4 \9 }' N+ N- ?: h 500:系统错误(即程序代码有误)
: i; U5 m# O2 ?& e! x 404:找不到资源(访问路径错误)9 k( K# k4 h, G4 v
200:正确)
6 n- m: f, ]' \6 m0 o2 |6 Z' [, u 状态码的描述 o7 ~3 \4 B2 G5 T5 c6 X
第二部分:
( E5 t) h1 [+ ?) f 若干消息头:7 W. C8 x# l5 k) I8 S
第三部分: `7 P: u8 q9 o8 }3 y/ `
实体内容:
+ |, H, ` Q }1 O 服务器返回给浏览器的处理结果。
9 O! F4 r! y. x5 q6 C x- F; n1 q2 S' a; w, H2 T, P7 K
|
|