该用户从未签到
|
1、http协议(了解)
' `7 ` F& W0 Y/ L4 u 1)http协议是什么?
( }2 a( N* a. W H5 f0 Z4 I 超文本传输控制协议(hypertext transport protocal)。
! q9 ~: I4 H4 _7 j是一种应用层协议,定义了浏览器(也可以是其它程序)% h5 \. `2 }. W. o
与web服务器之间通讯的过程与数据的格式。
: @" R# a8 Q* I* T/ U6 N8 F* J 2)通讯的过程
6 d p, V8 l# F a,浏览器向服务器发送建立连接的请求。' F0 U, ]% _7 }8 g$ B1 z! t
b,浏览器先将请求数据打包,向服务器发送请求。. N6 V1 H' E5 H9 }& G* N1 N
c,服务器处理完请求,然后将数据打包,发送给浏览器。3 f$ |. F7 S" M
d,服务器发送完数据,并闭连接。
$ L+ w6 \: E$ V: t/ F" R 如果浏览器要向服务器再次发送请求,需要重新
+ J$ q; c6 w, }, P# s 建立连接。也就是说,浏览器与服务器之间的连接,8 y( P/ A) g/ w6 D0 `' c ^
只能处理一次请求,然后立即关闭。这种通讯方式,
# Y& p- z- {3 h 可以让服务器以有限的资源为更多的客户端服务。5 E$ G: n: V" ?+ [* n4 \
3)数据包的结构. \. J% {. [: ^' z* ]. B: |
a,请求数据包的结构
' Z$ n9 \6 F* {) V$ d1 d" N N 第一部分:
0 l' z. L6 X8 M' }) W# o; G9 L 请求行:4 h' e) w; n( L) w E; N3 ^
请求方式(get/post)
1 Z" o5 d8 S8 X4 B1 u5 n 请求资源路径 |7 g* l( q1 T6 ?, E
协议的类型与版本1 g- L) y* t9 P, w
第二部分:
+ U8 j, G" W6 L9 a0 t8 { 若干消息头:& O$ q. I: i: D; R6 G
消息头由w3c定义的一些有特殊含义的键值对,! k% R7 s) K' i
比如:content-type= text/html;3 [6 U+ J" U# N; d$ b% M
服务器和浏览器都会遵守这些消息头的约定。
! `& X$ S- s) [ N% w2 P: r4 L 消息头一般由服务器或者浏览器自动生成,但是1 Y, P9 k2 v- Z. c6 `( O
,也可以通过编程的方式来生成。
$ j# w" @, x; L6 R2 ^( M 第三部分:% m) s8 m& d$ y" j, D* G( Q M& G
实体内容:( s4 \) v3 ?: c: ?* d! \9 g
如果请求方式是post方式,请求参数及值会" C- _: U: B# A3 y5 A
放在这儿。如果请求方式是get方式,请求参数
) y& D9 l$ U- w( P# T 与值是包含在请求资源路径里面。
- ^+ e9 T* e: u/ L; I$ W 8 d0 e L% }2 h- ~
b,响应数据包的结构
& ~8 k! ?1 w& m 第一部分:" \- n0 i6 [+ B* I8 O: a& D2 S
状态行:; D; m" s2 e9 S" Q
协议的类型与版本
7 B- w1 n6 n9 U2 j( V+ P7 ~3 Y* [* K 状态码(状态码是一个数字,不同的数字代表
8 \6 X+ X; T: H6 A8 N. P" \ 不同的含义,比如; F6 F0 R6 Y x" D
500:系统错误(即程序代码有误). D) ] U5 f) x
404:找不到资源(访问路径错误)
* k5 y" |; w4 ]% p; }! { 200:正确)4 T) [- w5 l" e- y! o) f! T2 o. K
状态码的描述) B( X6 |2 B1 ]$ |( W
第二部分:1 P3 }4 V% Z1 I1 n
若干消息头:
' Z$ q0 q: m; } 第三部分:
; _8 Y0 C( w7 ^2 J# r$ M2 T( O 实体内容:$ g5 o! x, q( V9 K: y
服务器返回给浏览器的处理结果。
1 L) r) {2 B5 Y; Z
: p. ]3 `1 d1 Z6 m |
|