HTTP详解

1 HTTP的定义

定义:超文本传输协议 (HTTP-Hypertext transfer protocol) 是分布式,协作式,超媒体系统应用之间的通信协议。

作用:是万维网(world wide web)交换信息的基础,它允许将超文本标记语言(HTML) 文档从 Web 服务器传送到 Web浏览器。HTTP是应用层协议,Internet建立在TCP协议之上。

HTTP协议包括HTTP URLHTTP请求、HTTP响应和HTTP消息。

2 HTTP的特征

l 支持客户/服务器模式

l 简单快速:客户向服务器请求服务时,只需传送请求方法和路径。请求方法常用的有GETHEADPOST。每种方法规定了客户与服务器联系的类型不同。由于HTTP协议简单,使得HTTP服务器的程序规模小,因而通信速度很快。

l 灵活:HTTP允许传输任意类型的数据对象。正在传输的类型由Content-Type加以标记。

l 无连接:无连接的含义是限制每次连接只处理一个请求。服务器处理完客户的请求,并收到客户的应答后,即断开连接。采用这种方式可以节省传输时间。

l 无状态:HTTP协议是无状态协议。无状态是指协议对于事务处理没有记忆能力。缺少状态意味着如果后续处理需要前面的信息,则它必须重传,这样可能导致每次连接传送的数据量增大。

3 HTTP的版本

HTTP常见的有三种版本:HTTP/1.0HTTP/1.1HTTP-NG

在当下的WWW使用的是HTTP/1.1

4 HTTP的工作流程

HTTP/1.1的改进

u 支持Persistent Connections(持续连接),支持流水线请求

u 支持Host字段

5 HTTP URL

HTTP URL的格式如下:

http://host[:port][abs_path]

其中abs_path 是一个URI

  HostInternet主机名或IP地址

  Abs_pathURIUniform Resource Identifier,统一资源标识符),当它为请求时默认由浏览器给出为”/”形式给出。

例如:http://www.reachgis.com/

输入:www.guet.edu.cn
浏览器自动转换成:http://www.guet.edu.cn/

提示:

URI(包括URLURN,通用资源名)是个符号结构,指定构成web资源的字符串的各个不同部分。URL为特殊的URI,它包括了查找某个资源足够的信息。

6 HTTP请求

HTTP请求由三部分组成:请求行、请求报头和正文,其中消息报头和请求正文都是可选的。

请求行:

Methor Request-URI HTTP-Version CRLF

e.g. GET /form.html HTTP/1.1 (CRLF)

HTTP/1.1协议中共定义了八种方法(有时也叫动作)来表明Request-URI指定的资源的不同操作方式:

HTTP请求的方法(HTTP中方法区分大小写,HTML文档中方法名不区分大小写)

方法

作用

GET

请求获取由RequestURI所标识的资源

POST

RequestURI所标识的资源后附加新德资源

HEAD

请求获取由RequestURI所标识的资源的响应消息报头

PUT

请求服务器存储一个资源,并用RequestURI作为其标识

DELETE

请求服务器删除由RequestURI所标识的资源I

TRACE

请求服务器回送收到的请求信息,主要用于测试或诊断

CONNECT

保留将来使用

OPTIONS

请求查询服务器的性能,或查询与资源相关的选项和需求

HTTP方法中是区分大小写的,但是在HTML文档中是不区分大小写的

常用的HTTP方法:HEADGETPOST

GET:在浏览器中输入地址栏中输入地址访问网页的时候,使用的是GET方法

POST:向目的服务器发送数据,常用于提交表单

HEAD:与GET的方法类似,但是只能返回请求消息报头。通常用于测试URL的有效性等。

请求正文:eg:user=zhangzz&password=123456

7 HTTP响应

三个部分:状态行、消息报头、响应正文

状态行:HTTP-Version Status-Code Reason-Phrase CRLF

Eg:HTTP/1.1 200 OK (CRLF)

状态代码

1XX

指定信息——标识请求已接收,继续处理

2XX

成功——表示请求已经被成功接收、理解、接受

3XX

重定向——要完成请求必须进行更进一步的操作

4XX

客户端错误——请求有语法错误或请求无法实现

5XX

服务器端错误——服务器未能实现合法的请求

常见状态代码与状态描述

状态代码

状态描述

说明

200

Ok

客户端请求成功

400

Bad Request

由于客户端请求有语法错误,不能被服务器所理解

401

Unauthorized

请求未经授权,这个状态代码必须和WWWAuthenticate报头域一起使用

403

Forbidden

服务器收到请求,但是拒绝服务,并常在响应正文中给出拒绝原因

404

Not  Found 

请求的资源不存在,例如输入了错误的URL

500

Internal  Server  Error

服务器发生不可预期的错误,导致无法完成客户端的请求

503

Service  Unavailable

服务器当前不能够处理客户端的请求,一段时间后可能恢复

8 HTTP消息

消息报头 空行(CRLF) - 消息正文

消息报头:普通报头、请求报头、响应包头、实体报头

每个报头域组成: 名字+”:”+空格+值组成,消息报头域的名字与大小写无关的。

普通报头中,有少数报头域应用于所有的请求和响应消息,但并不用于传输的实体,这些报头域只用于传输的消息。

常用普通报头:

报头名

说明

CacheControl

指定缓存指令,分为请求或响应时的缓存指令,缓存指令是单向的,C

例如JSP代码:response.setHeader(“CacheControl”,”nocache”);

Date

消息产生的日期和时间,客户端只有在发送消息中包含了消息正文的时候,才发送Date报头域,服务器端响应总是包含Date报头域。

Connection

允许发送者指定连接的选项,服务器响应后的状态

Pragmatic

用于包含特定实现(implementationspecific)的指令,PragmanocacheHTTP1.1版的CacheControlnocache作用相同

常用请求报头域

报头名

作用

Accept

指定客户端接受哪些类型的信息,例如:Acceptimage/gif

AcceptCharset

指定客户端接受的字符集,例如:AcceptCharsetgb2312

AcceptEncoding

指定客户端可接受的内容编码,例如:AcceptEncodinggzip

AcceptLanguage

指定客户端可接受的一种自然语言,例如:AcceptLanguagezhcn

Authorization

用于证明客户端有权查看某个资源

Host

指定被请求资源的Internet主机和端口号,它是必须得报头域,例如:Hostwww.baidu.com

UserAgent

允许客户端将它的操作系统、浏览器和其它属性告诉服务器。它不是必须的。

常用响应报头:允许服务器传递不能放在状态行中附加响应信息,以及服务器信息和对RequestURI所标识的资源进行下一步访问的信息

报头名

作用

Location

用于重定向接受者到一个新德位置。如当域名更换时。

Server

包含服务器用来处理请求的软件信息。与UserAgent相对应。例如:ServerApacheCoyote/1.1

WWWAuthenticate

必须被包含在401(未授权的)响应消息中,与Authorization请求报头域是相关的。当客户端收到401响应时,如果要求服务器对其进行验证,客户端就发送一个包含了Authorization报头域的请求,

例如:WWWAuthorizationBasic realm=”Basic  Auth  Test!”

常用实体报头:请求和响应消息都可以传送一个实体,实体由实体报头域和实体正文组成,实体正文常务请求消息的请求正文或响应消息的响应正文。实体报头域和实体正文并不一定在一起发送。

实体报头定义了实体正文和请求所标识的资源的元信息(元信息指描述其他信息的信息)

实体报头名

作用

ContentEncoding

媒体类型的修饰符,常用于文档压缩方法,例如:ContentEncodinggzip

ContentLanguage

实体报头域描述了资源所用的自然语言,

ContentLength

指明实体正文的长度,没有包括实体报头的长度

ContentType

指明发送给接收者的实体正文的媒体类型

例如:ContentTypetext/htmlcharset=GB2312

LastModified

指示资源最后的修改日期和时间

Expires

给出响应过期的日期和时间,非法的日期时间格式(包括零)当做已经过期。

例如:ExpiresThu.15 Sep 2005 16:00:00  GMT 

9 HTTPS - 安全超文本传输协议

HTTPSSecure Hypertext Transfer Protocol--安全超文本传输协议

   它是由Netscape开发并内置于其浏览器中,用于对数据进行压缩和解压操作,并返回网络上传送回的结果。HTTPS实际上应用了Netscape的完全套接字层(SSL)作为HTTP应用层的子层。(HTTPS使用端口443,而不是象HTTP那样使用端口80来和TCP/IP进行通信。)SSL使用40 位关键字作为RC4流加密算法,这对于商业信息的加密是合适的。HTTPSSSL支持使用X.509数字认证,如果需要的话用户可以确认发送者是谁。

10 FAQ

F:如何在浏览器上启用/关闭HTTP 1.1

QInternet 选项 高级 使用HTTP 1.1

F显示友好HTTP错误信息

QInternet 选项 高级 使用HTTP 1.1

实习:利用telnet观察HTTP协议的通讯过程

    实验目的及原理:
    利用MStelnet工具,通过手动输入http请求信息的方式,向服务器发出请求,服务器接收、解释和接受请求后,会返回一个响应,该响应会在telnet窗口上显示出来,从而从感性上加深对http协议的通讯过程的认识。

    实验步骤:

1、打开telnet
1.1 打开telnet
运行-->cmd-->telnet

1.2 打开telnet回显功能
set localecho

2、连接服务器并发送请求
2.1 open www.guet.edu.cn 80  //注意端口号不能省略

    HEAD /index.asp HTTP/1.0
    Host:www.guet.edu.cn
    
   /*我们可以变换请求方法,请求桂林电子主页内容,输入消息如下*/
    open www.guet.edu.cn 80 
   
    GET /index.asp HTTP/1.0  //请求资源的内容
    Host:www.guet.edu.cn   

2.2 open www.sina.com.cn 80  //在命令提示符号下直接输入telnet www.sina.com.cn 80
    HEAD /index.asp HTTP/1.0
    Host:www.sina.com.cn
 

实验结果:

3.1 请求信息2.1得到的响应是:

HTTP/1.1 200 OK                                              //请求成功
Server: Microsoft-IIS/5.0                                    //web服务器
Date: Thu,08 Mar 200707:17:51 GMT
Connection: Keep-Alive                                 
Content-Length: 23330
Content-Type: text/html
Expries: Thu,08 Mar 2007 07:16:51 GMT
Set-Cookie: ASPSESSIONIDQAQBQQQB=BEJCDGKADEDJKLKKAJEOIMMH; path=/
Cache-control: private

//资源内容省略

3.2 请求信息2.2得到的响应是:

HTTP/1.0 404 Not Found       //请求失败
Date: Thu, 08 Mar 2007 07:50:50 GMT
Server: Apache/2.0.54 <Unix>
Last-Modified: Thu, 30 Nov 2006 11:35:41 GMT
ETag: "6277a-415-e7c76980"
Accept-Ranges: bytes
X-Powered-By: mod_xlayout_jh/0.0.1vhs.markII.remix
Vary: Accept-Encoding
Content-Type: text/html
X-Cache: MISS from zjm152-78.sina.com.cn
Via: 1.0 zjm152-78.sina.com.cn:80<squid/2.6.STABLES-20061207>
X-Cache: MISS from th-143.sina.com.cn
Connection: close


失去了跟主机的连接

按任意键继续...

===========================================

转载请注明来自http://blog.csdn.net/dongyu1009/article/details/8873199

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值