您的位置:首页 > 理论基础 > 计算机网络

Http协议学习笔记

2012-10-24 17:04 441 查看

Http协议学习笔记

一.什么是http协议

http是Hypertext transfer protocol(超文本传输协议)的简写,它是TCP/IP协议的一个应用层协议,用于定义web浏览器与web服务器之间交换数据的过程。

http协议的版本: HTTP/1.0、HTTP/1.1

在HTTP/1.0协议中,客户端与web服务器建立连接后,只能获取一个web资源.

在HTTP/1.1协议中,客户端与web服务器建立连接后,可以获取多个web资源.

二.http协议内容

1.http请求

http请求包括:请求行、请求消息头、请求数据.

http请求的格式:

GET /manager/status HTTP/1.1 // 请求行: 描述客户端的请求方式,请求的资源名称及请求的HTTP协议版本号.

Accept */* //|

Accept-Encoding gzip,deflate //|

Accept-Language zh-CN //|

Connection Keep-Alive //|多个请求消息头: 描述客户端请求哪台主机及客户端的一些环境信息.

Host localhost:8080 //|

Referer http://localhost:8080/ //|

User-Agent Mozilla/4.0 //|

// 空行

Data // 请求数据(请求的实体内容): 表单等数据信息

2.请求方式

常用的请求方式: GET, POST

不常用的请求方式: HEAD, OPTONS, DELETE, TRACE, PUT

用于如没有设置,默认情况下浏览器向服务器发送的都是get请求,例如在浏览器直接输入地址访问,点超连接访问等都是get,用户如要把请求方式改为post,可通过更改表单的提交方式来实现.

不管POST或GET,都用于向服务器请求某个web资源,这两种方式的区别主要表现在数据传递上:

·如请求方式为GET,则可以在请求的URL地址后以?的形式带上交给服务器的数据,多个数据之间可以&进行分割,例如:

GET /mail/i.html?name=abc&password=123456 HTTP/1.1

GET方式的特点: 在URL地址后附带的参数是有限制的,其数据容量通常不能超过1K.

·如请求方式为POST,则可以在请求的实体内容中向服务器发送数据,传送的数据量无限制.

3.常用请求消息头

Accept: 用于告诉服务器,客户机支持的数据类型: text/html,image/* (*/*所有类型)

Accept-Charset: 用于告诉服务器,客户机支持的编码

Accept-Encoding: 用于告诉服务器,客户机支持的压缩格式: gzip,deflate

Accept-Language: 用于告诉服务器,客户机的语言.

Host: 用于告诉服务器,客户机想访问的服务器.

If-Modified-Since: 用于告诉服务器,资源的缓存时间.

Referer: 用于告诉服务器,客户机是从哪个资源来访问服务器的,可以用于防盗链.

User-Agent: 用于告诉服务器,客户机的软件环境.

Cookie: 客户机通过这个头,可以向服务器带数据.

Connection: 访问完之后是断开连接还是保持连接: Close/Keep-Alive

Date: 当前时间

4.http响应

http响应包括: 响应状态行、响应消息头、响应数据.

http响应的格式:

HTTP/1.1 200 OK // 响应状态行,描述服务器的处理结果: http协议 响应状态代码 响应状态描述

Server: Apache-Coyote/1.1 //|

Cache-Control: private //|

Expires: Thu, 01 Jan 1970 08:00:00 CST //|

Content-Type: text/html;charset=utf-8 //|多个响应消息头,描述服务器的基本信息,以及数据的描述,服务器通过这些数据的描述信息,

Content-Length: 6343 //|可以通知客户端如何处理等一会儿它回送的数据.

Date: Wed, 24 Oct 2012 06:15:58 GMT //|

// 空行

<html>

// 响应数据(实体内容),服务器向客户端回送的数据.

<head> //

5.响应状态行

格式: HTTP版本号 状态码 状态描述

示例: HTTP/1.1 200 OK

状态码用于表示服务器对请求的处理结果,它是一个三位的十进制数,有5类响应状态码:

·100-199: 表示成功接收请求,要求客户端继续提交下一次请求才能完成整个处理过程.

·200-299: 表示成功接收请求并已完成整个处理过程,常用200.

·300-399: 为完成请求,客户需进一步细化请求。例如: 请求的资源已经移动到一个新地址.常用302,307和304.

302: 指向别处,307/304: 指向缓存,不回送资源.

·400-499: 客户端的请求有错误,常用404.

·500-599: 服务端出现错误,常用500.

6.常用响应消息头

Location: 这个头配合302指向别处的资源位置.用Location与302于实现请求重定向.

Server: 服务器通过这个头,告诉服务器的类型: Apache-Coyote/1

Content-Encoding: 服务器通过这个头,告诉浏览器回送数据的压缩格式:gzip

Content-Length: 服务器通过这个头,告诉浏览器回送数据的长度.

Content-Language: 服务器通过这个头,告诉浏览器回送的语言环境.

Content-Type: 服务器通过这个头,告诉浏览器回送数据的类型: text/html,image, Tomcat服务器conf/web.xml文件列出了所有的类型.

Last-Modified: 服务器通过这个头,告诉浏览器当前资源缓存时间.

Refresh: 服务器通过这个头,告诉浏览器隔多长时间刷新一次.

Content-Disposition: 服务器通过这个头,告诉浏览器以下载方式打开数据.

Transfer-Encoding: 服务器通过这个头,告诉浏览器数据的传送格式: chunked

Set-Cookie: Cookie相关的头.

ETag: 与缓存相关的头.生成的资源数据的唯一标识符.

Expires: 服务器通过这个头,告诉浏览器把回送的资源缓存多长时间,-1或0则不缓存

Cache-Control: 控制缓存: no-cache

Pragma: 控制缓存: no-cache

Connection: 响应完之后是断开连接还是保持连接: Close/Keep-Alive

Date: 当前时间

三.HTTP实用的消息头字段:

1.HTTP请求消息头字段

Range: 指示服务器只传输一部分Web资源.实现断点续传功能.Range字段可以通过三种格式设置要传输的字节范围:

·Range: bytes=1000-2000 传输范围从1000到2000字节

·Range: bytes=1000- 传输从1000个字节以后的所有内容.

·Range: bytes=1000 传输最后1000个字节.

2.HTTP响应消息头字段

Accept-Ranges: 这个字段说明Web服务器是否支持Range,支持则返回Accept-Ranges: bytes,不支持则返回Accept-Ranges: none.

Content-Range: 指定了返回的Web资源的字节范围,字段值格式: 例: Content-Range: 1000-3000/5000
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: