作用的过程
当你在浏览器上的地址栏输入网址http://kids.codepku.com,按回车键,就可以访问到编程少年网站。这整个过程是由URL定位编程少年这个网站,然后服务器通过HTTP协议将网站上的资源传送到浏览器,用户按回车键后就访问到了网站,也就是获得了资源。网址在专业术语上称为URL,是Uniform Resource Locator(统一资源定位符)的缩写,用来定位网络上的网页、图片、文字等的资源。我们知道,一个网址通常是以http开头的,这个http定义的是网络资源的传送方式,称为HTTP协议。HTTP协议是HyperText Transfer Protocol(超文本传输协议)的缩写,是互联网上应用最为广泛的一种网络协议,采用了请求/响应模型来定义客户端如何从服务器请求Web页面,以及服务器如何把Web页面传送给客户端,客户端是指我们电脑上的浏览器。
HTTP协议过程包括4个步骤。
(1)建立连接:客户端的浏览器向服务端发出建立连接的请求,服务端给出响应就可以建立连接了。
(2)发送请求:客户端按照协议的要求通过连接向服务端发送自己的请求。
(3)给出应答:服务端按照客户端的要求给出应答,把结果(HTML文件)返回给客户端。
(4)关闭连接:客户端接到应答后关闭连接。
这个过程可以理解为,浏览器通过URL的定位知道了自己要的是什么,然后向服务器说我要一个东西,服务器接收到浏览器的要求,开始查找它想要的东西,找到之后回答说我找到这个东西了(有时可能找不到或者出现其他错误),然后把这个东西拿给浏览器,这时你就在浏览器上看到了相应的网页。
发送请求Request
发送请求的格式包括四个部分:请求行(request line)、请求头部(header)、空行和请求数据。
实例:
GET /hello.htm HTTP/1.1
User-Agent: Mozilla/4.0 (compatible; MSIE5.01; Windows NT)
Host: example.com
Accept-Language: en-us
Accept-Encoding: gzip, deflate
本实例中请求数据为空,也就是说,除第一行外都是请求头部的部分。
- 请求行以一个请求方法开头,然后空格分开,后面跟着请求的URL和HTTP协议的版本:
GET /hello.html HTTP/1.1
实例说明:请求方法为GET,定位的资源符是/hello.html,协议的版本是1.1版。
请求方法是用于定义操作资源的方式,HTTP/1.1 协议中定义了八种请求方法:
GET:读取资源数据
POST:新建资源数据
PUT:更新资源数据
DELETE:删除资源数据
HEAD:读取资源的元数据
OPTIONS:读取该资源所支持的所有请求方法
TRACE:回显服务器收到的请求,主要用于测试或诊断
CONNECT:HTTP/1.1 协议中预留给能够将连接改为管道方式的代理服务器。
- 请求头部用来说明服务器要使用的附加信息、传递客户端的更多信息,以及传递解析请求数据的必要信息。
- 空行,用来说明请求头部的结束和请求数据的开始。
- 请求数据,是发送请求的主体,承载数据,是可选的。
给出应答(响应消息Response)
HTTP响应由四个部分组成,分别是:状态行、消息报头、空行和响应正文。
实例:
HTTP/1.1 200 OK
Date: Fri, 22 May 2009 06:07:21 GMT
Content-Type: text/html; charset=UTF-8
<html>
<head></head>
<body>
<!--body goes here-->
</body>
</html>
- 第一部分:状态行,由HTTP协议版本号, 状态码, 状态消息 三部分组成
- 第一部分:状态行,由HTTP协议版本号, 状态码, 状态消息 三部分组成
第一行为状态行,HTTP/1.1表明HTTP版本为1.1版本,状态码为200,状态消息为ok。
常见的状态码:
200 OK //客户端请求成功
400 Bad Request //客户端请求有语法错误,不能被服务器所理解
401 Unauthorized //请求未经授权
403 Forbidden //服务器收到请求,但是拒绝提供服务
404 Not Found //请求资源不存在,比如输入了错误的URL
500 Internal Server Error //服务器发生不可预期的错误
503 Server Unavailable //服务器当前不能处理客户端的请求,一段时间后可能恢复正常
比如,当我们输错网址时就会看到404 Not Found的页面:
- 第二部分:消息报头,用来说明客户端要使用的一些附加信息
第二行和第三行为消息报头,Date:生成响应的日期和时间;
Content-Type:指定了消息内容的类型为HTML(text/html),编码类型是UTF-8
- 第三部分:空行,消息报头后面的空行是必须的
- 第四部分:响应正文,服务器返回给客户端的文本信息
空行后面的html部分为响应正文。
我表示 看不懂 菜鸟一名
可以利用漏洞查看部分服务器缓存文件