|
该用户从未签到
|
1、http协议(了解)
! Q( e5 R3 n! Y3 r# m+ e" R3 l9 P7 n 1)http协议是什么?1 |2 v) L( O# i# @# o: [
超文本传输控制协议(hypertext transport protocal)。
5 ?* x% G* ~8 {+ ]1 }6 |" B是一种应用层协议,定义了浏览器(也可以是其它程序)
5 s9 }: k( p0 R2 \与web服务器之间通讯的过程与数据的格式。( ~; `& K: h; a1 [8 J# d1 z
2)通讯的过程
, _* E/ l8 w* Y1 A6 s- ~ a,浏览器向服务器发送建立连接的请求。; S( u2 w0 N# T/ A4 C
b,浏览器先将请求数据打包,向服务器发送请求。
" e$ J7 K C0 Y+ c2 T5 Z c,服务器处理完请求,然后将数据打包,发送给浏览器。
3 _! Z* A* G* f. Y$ w5 g9 ?8 N1 M d,服务器发送完数据,并闭连接。
) Y8 Z, k- t4 B2 Y4 @ 如果浏览器要向服务器再次发送请求,需要重新
+ B5 a' L$ }2 c. D 建立连接。也就是说,浏览器与服务器之间的连接,
7 o% Z) F, F9 e; Z& | 只能处理一次请求,然后立即关闭。这种通讯方式,
/ i2 H5 T- |$ q& }' o: Q 可以让服务器以有限的资源为更多的客户端服务。3 k; F: O3 q% e' p
3)数据包的结构7 L1 v2 M+ V- U; Z" t8 F
a,请求数据包的结构' @! L( x# {1 D0 ^3 E5 t
第一部分:
2 ]" d) Q: A! |2 o. U 请求行:7 h% F7 t8 R- C: I: Q5 ]( I
请求方式(get/post)
- d1 c9 q0 m8 [3 [: p7 E 请求资源路径 * K/ r$ h( |8 l
协议的类型与版本
$ p1 }) t$ q" Q1 q 第二部分:& N, Y5 `! o. ]; R' v: r
若干消息头:
* H/ N1 u# S+ z 消息头由w3c定义的一些有特殊含义的键值对,
0 d2 D3 R. D& }# H6 \& i+ Y 比如:content-type= text/html;: |! w% N, }5 s! e$ Q
服务器和浏览器都会遵守这些消息头的约定。
: x k/ b. R4 s4 j 消息头一般由服务器或者浏览器自动生成,但是) x/ L/ J4 z( s! ~. A) |% E
,也可以通过编程的方式来生成。
K# q3 G7 k) t( } 第三部分:# S9 B7 U9 x' R7 p/ a
实体内容:+ }3 W& Q8 P E5 C8 S1 v/ x
如果请求方式是post方式,请求参数及值会
. J" O4 |( Y( `- h, f4 X 放在这儿。如果请求方式是get方式,请求参数
( \% S6 v7 W& G9 T 与值是包含在请求资源路径里面。
( y% n+ D8 I" _ . K$ l' G5 n7 |) [, [. H d
b,响应数据包的结构
. k9 G. P+ D" B4 L0 W 第一部分:
/ i' o( h& c& Y) T& o' A 状态行:
3 _! e' B' e) r$ Q. ? 协议的类型与版本
" D6 r, Q( |4 Y 状态码(状态码是一个数字,不同的数字代表0 S' j- C/ B1 q/ ?1 u/ a" q
不同的含义,比如
7 D% j a8 l8 J 500:系统错误(即程序代码有误)) {- m9 w b9 G: ?. p; p
404:找不到资源(访问路径错误)5 Q, @& P+ `3 Q i8 g, g, Q
200:正确)
9 H/ [5 |% t5 X" s 状态码的描述
( R5 Q1 N" b' j/ r+ a5 E: Y: \ 第二部分:$ |9 c! [. p& x) Q2 O1 {
若干消息头:$ a% |/ l" B3 ~+ ~5 ^1 C } N7 l
第三部分:: O: X: H" f% a- v3 @: a4 t
实体内容:3 C0 H- p9 F/ a# v9 ]6 o
服务器返回给浏览器的处理结果。, q) v- x4 s P2 J8 E
d6 v5 ]8 l: ]% r9 z @5 \ |
|