|
该用户从未签到
|
1、http协议(了解)
2 a1 \' S# |+ a& d& ^; h0 s( a 1)http协议是什么?, h$ B' m% u Z: U
超文本传输控制协议(hypertext transport protocal)。
/ y* H/ ^9 w) _/ B0 O是一种应用层协议,定义了浏览器(也可以是其它程序)* ?: u4 Z0 @8 H s3 l* @
与web服务器之间通讯的过程与数据的格式。0 Z3 n+ _! G! C6 m
2)通讯的过程
; p$ Z W) |+ C# l% V5 z* E a,浏览器向服务器发送建立连接的请求。
8 @! j3 l+ \+ K* @+ q b,浏览器先将请求数据打包,向服务器发送请求。
% I- g1 n5 \* N# d' e. I c,服务器处理完请求,然后将数据打包,发送给浏览器。
2 ~" u) h3 }1 M d,服务器发送完数据,并闭连接。
. p- s: B& P1 E 如果浏览器要向服务器再次发送请求,需要重新' Y% d( @3 W7 d& o2 Y
建立连接。也就是说,浏览器与服务器之间的连接,
* C. `& @6 }( q& C* ~ 只能处理一次请求,然后立即关闭。这种通讯方式,
- X: C2 d+ } z* _ 可以让服务器以有限的资源为更多的客户端服务。
$ a f3 D4 b6 A, p( p) Q 3)数据包的结构$ ^& C0 @7 a* V4 ], r
a,请求数据包的结构! f a+ b) W$ t( G2 E% w
第一部分:4 |1 D4 j8 c; y0 G" s! E
请求行:' ~9 u; H# G$ J1 s- c n
请求方式(get/post)
* j- H- T- t J/ |" n: v3 v0 Y: P 请求资源路径
5 J( L; z. \9 j9 h w4 B 协议的类型与版本( m2 Z2 r9 @( r4 M+ x
第二部分:" [0 n* M+ I) u: P) y+ X8 X
若干消息头:
' l' S( }7 e$ N- T& t) c 消息头由w3c定义的一些有特殊含义的键值对,
- s. r8 F8 j) ]4 v& M 比如:content-type= text/html;% Z6 G" h0 H! E$ h0 W) p
服务器和浏览器都会遵守这些消息头的约定。
3 T# [& B4 w$ R; R( z$ }3 C$ t; S+ y 消息头一般由服务器或者浏览器自动生成,但是
( a/ v4 E; _" z4 V ,也可以通过编程的方式来生成。# t/ r) l: a5 Y" b; h, @; f
第三部分:
! H0 b* C" \1 D! l4 N; V 实体内容:6 ` k7 b# C- O% U* N ~& u* q/ f2 y
如果请求方式是post方式,请求参数及值会
, u0 Q' m3 ~, B3 ? 放在这儿。如果请求方式是get方式,请求参数( B6 n5 x8 |7 p: E' Z. m6 E/ p; t
与值是包含在请求资源路径里面。
3 U* t& u& T; V s1 F9 E8 K6 D# U; j
b,响应数据包的结构
$ C! e$ {1 _, d/ a4 G6 D 第一部分:6 G7 H' q5 R. C( |, n' X
状态行:" o! n9 n( C8 ^$ [
协议的类型与版本0 k9 K* I4 K2 I! n
状态码(状态码是一个数字,不同的数字代表
- }: K" k" ]3 X3 d 不同的含义,比如
6 U/ i' w1 Z' \ 500:系统错误(即程序代码有误)
6 i2 L" a, \6 Y( f) X2 b0 n 404:找不到资源(访问路径错误)3 w" U6 ^; a* X$ e
200:正确)
; ?4 O- B" \3 k+ J' C0 H 状态码的描述 T; z5 B5 g# c+ e" S6 V- q
第二部分:
+ S4 T \, ?3 H, W 若干消息头:
- N3 b6 z2 B9 N 第三部分:
0 [, c, p( L: ^/ }8 @4 \% l/ z 实体内容:
) V- n* Q; H* ]9 e$ H" u 服务器返回给浏览器的处理结果。; D* s4 u9 o6 J5 M9 @/ }
( U! c: e5 N" j% Y; C& m: a2 N/ g
|
|