HTTP 协议介绍


HTTP IntroductionHTTP IntroductionHTTP IntroductionHTTP Introduction 2009年12月 主讲:孟宁 电话:0512-68839302 E-mail:mengning@ustc.edu.cn 主页:http://staff.ustc.edu.cn/~mengning 地址:苏州工业园区独墅湖高等教育区仁爱路166号明德楼A302室 HTTP 介绍 HTTP协议(Hyper Text Transfer Protocol,超文本传输协议) 用于从WWW服务器传输超文本到本地浏览器的传送协议。 HTTP Overview ♦ 应用层协议 – 基于TCP协议 – 通常使用 TCP Port 80 – 请求/响应模式、无状态的协议 ♦ B/S 模式 – Browser :浏览器 (IE,Firefox..) – Server : Web服务器 (Apache,IIS..) ♦ RFC: – RFC1945 HTTP 1.0 描述 – RFC2068 HTTP 1.1 初步描述 – RFC2616 HTTP 1.1 标准 HTTP History ♦ HTTP/0.9——Pre 1982 – Simple-Request & Simple-Responsed – 客户无法使用内容协商,服务器无法返回实体的媒体类型 ♦ HTTP/1.0 ——1982 – 事务的应用层协议,每次请求/响应,建立/拆除一次连接 – 缺点:对用户请求响应慢、网络拥塞严重、安全性等 ♦ HTTP/1.1——1997 – 持续连接机制:实现流水线请求方式(客户端可以发送多个请 求,而不用等待每个响应的到来) – Cache缓存机制:HTTP/1.0的改进,减少时间延迟、节省了带 宽 – 内容协商机制:选择最合适的用户的内容表现形式 Internet现行的标准协议 Browser/Server 模式 HTTP协议会话流程 1. 2222.... 3333.... 4. HTTP 请求报文 GET /test/HelloTest.html HTTP/1.1 \r\n Host 172.22.102.20 User-Agent Mozilla/5.0... Accept text/xml,application/xml ... Accept-Language zh-cn,zh;q=0.5 Accept-Encoding gzip,deflate Accept-Charset UTF-8,* Cookie user=someone If-Modified-Since Wed, 14 Nov 2007 If-None-Match "2a541d-5b45-efde6f00" \r\n ..... HTTP 请求行 & 请求方法 GET /index.html HTTP/1.1 URIHTTP sp sp 请求行由三个标记组成,它们之间用空格分隔 •请求方法 •请求URI •HTTP版本 8种可能的请求方法: 1. GET 检索URI中标识资源的一个简单请求 2. HEAD 与GET相同,服务器只返回状态行和头标,并不返回请求文档 3. POST 服务器接受被写入客户端输出流中的数据的请求 4. PUT 服务器保存请求数据作为指定URI新内容的请求 5. DELETE 服务器删除URI中命名的资源的请求 6. OPTIONS 关于服务器支持的请求方法信息的请求 7. TRACE Web服务器反馈Http请求和其头标的请求 8. CONNECT 已文档化但当前未实现的一个方法,预留做隧道处理 请求方法——GET vs POST 1.get是从服务器上获取数据,post是向服务器传送数据。 2.get是把参数数据队列加到提交表单的ACTION属性所指的 URL中,值和表单内各个字段一一对应,在URL中可以看到。 post是通过HTTP post机制,将表单内各个字段与其内容 放置在HTML HEADER内一起传送到ACTION属性所指的URL地 址。用户看不到这个过程。 3.对于get方式,服务器端用Request.QueryString获取变量 的值,对于post方式,服务器端用Request.Form获取提交 的数据。 4.get传送的数据较小,不能大于2KB。post传送的数据量较 大,一般被默认为不受限制。但理论上,IIS4中最大量为 80KB,IIS5中为100KB。 5.get安全性非常低,post安全性较高。 HTTP 响应报文 HTTP/1.1 200 OK Server: Microsoft-IIS/5.1 Date: Thu, 22 Jan 2009 03:25:10 GMT X-Powered-By: ASP.NET Content-Length: 515 Content-Type: text/html Cache-control: private \r\n



URL :

Post : "hello,this is post mothod"
在接受和解释请求消息后,服务器会返回一个HTTP响应消息。 HTTP 响应状态行 & 状态码 HTTP/1.1 200 OK HTTP sp sp �1xx:指示信息:表示请求已接收,继续处理. �2xx:成功:表示请求已经被成功接收,理解,接受.  �3xx:重定向:要完成请求必须进行更进一步的操作. �4xx:客户端错误:请求有语法错误或请求无法实现. �5xx:服务器端错误:服务器未能实现合法的请求. 200—交易成功 206—Server完成了部分GET请求 302—在其他地址发现请求数据 304—但文件未修改 401—请求授权失败 404—没有发现文件、查询或URl 500—服务器产生内部错误   HTTP POST请求Example POST /http/get_post.asp HTTP/1.1 Accept: */* Referer: http://localhost/http/get_post.asp Accept-Language: zh-cn Content-Type: application/x-www-form-urlencoded UA-CPU: x86 Accept-Encoding: gzip, deflate User-Agent: Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; CIBA) Host: localhost Content-Length: 37 Connection: Keep-Alive Cache-Control: no-cache Cookie: ASPSESSIONIDAQQTRRBS=CDNPLCPDLCGHMBOHELAHIHFB post_data=hello%2Cthis+is+post+mothod HTTP 响应Example HTTP/1.1 100 Continue Server: Microsoft-IIS/5.1 Date: Thu, 22 Jan 2009 09:45:16 GMT X-Powered-By: ASP.NET HTTP/1.1 200 OK Server: Microsoft-IIS/5.1 Date: Thu, 22 Jan 2009 09:45:16 GMT X-Powered-By: ASP.NET Content-Length: 515 Content-Type: text/html Cache-control: private
…… HTTP 消息报头 • 普通报头 • 请求报头 • 响应报头 • 实体报头 每一个报头域都是由名字+“:”+空格+值 组成 Accept-Language: zh-cn : sp 消息报头域的名字是大小写无关的 Cache-Control 在普通报头中,有少数报头域用于所有的请求和响应消息,但并不用于 被传输的实体,只用于传输的消息。  打开新窗口 � private、no-cache、must-revalidate,那么打开新窗口访问时都会重新访问服务器。 � max-age,那么在此值内的时间里就不会重新访问服务器Cache-control: max-age=5表示当访问此网 页后的5秒内再次访问不会去服务器 在地址栏回车 � private或must-revalidate,则只有第一次访问时会访问服务器,以后就不再访问 � no-cache,那么每次都会访问 � max-age,则在过期之前不会重复访问 按后退按扭 � private、must-revalidate、max-age,则不会重访问, � no-cache,则重复访问 按刷新按扭 � 无论为何值,都会重复访问 � no-cache,访问此页面不会在Internet临时文章夹留下页面备份 • Cache-Control ——用于指定缓存指令 普通报头(Cont.) ♦ Date——表示消息产生的日期和时间 ♦ 时间的描述格式由rfc822定义,Date描述的时间表示世界标准时间,如: ♦ Date: Thu, 22 Jan 2009 06:18:14 GMT ♦ Connection——允许发送指定连接的选项 ♦ Connection: Keep-Alive 通知服务器,响应完成后,不要关闭连接 ♦ Connection: close 通知服务器,响应完成后,关闭连接 ♦ Pragma——包含实现特定的指令 ♦ 常用的是Pragma: no-cache 在HTTP/1.1协议中,它的含义和Cache-Control: no-cache相同。 请求报头 ♦ Accept:指定客户端接受哪些类型的信息 – Accept: image/gif 表明客户端希望接受GIF图象格式的资源 – Accept: text/html 表明客户端希望接受html文本 ♦ Accept-Charset:指定客户端接受的字符集 – Accept-Charset: iso-8859-1 (gb2312) 缺省是任何字符集都可以接受 ♦ Accept-Encoding:指定可接受的内容编码 – Accept-Encoding: gzip.deflate 默认,服务器假定客户端对各种内容编码都可 以接受。 ♦ Accept-Language:指定一种自然语言 – Accept-Language: zh-cn 默认,服务器假定客户端对各种语言都可以接受。 ♦ Authorization:证明客户端有权查看某个资源 – 当浏览器访问一个页面时,如果收到服务器的响应代码为401(未授权),可以发 送一个包含Authorization请求报头域的请求,要求服务器对其进行验证. ♦ User-Agent :允许客户端将它的操作系统、浏览器和其它属性告诉服务器 – User-Agent: Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; CIBA) ♦ Host:指定被请求资源的Internet主机和端口号,通常从URL中提取出来 – Host: localhost 响应报头 ♦ 响应报头允许服务器传递不能放在状态行中的附加响应信息,以及关 于服务器的信息和对Request-URI所标识的资源进行下一步访问的信 息。 ♦ 响应头域包含Age、Location、Proxy-Authenticate、Public、 Retry-After、Server、Vary、Warning、WWW-Authenticate。对响应 头域的扩展要求通讯双方都支持,如果存在不支持的响应头域,一般 将会作为实体头域处理。 ♦ Location :重定向接收者到一个新URI地址 ♦ Server:包含处理请求的原始服务器的软件信息 ♦ Server: Microsoft-IIS/5.1此域能包含多个产品标识和注释,产品 标识一般按照重要性排序。 实体报头 ♦ 请求和响应消息都可以传送一个实体。 ♦ 一个实体由实体报头域和实体正文组成, 但并不是说实体报头域和实体正文要在一 起发送,可以只发送实体报头域。 ♦ 实体报头定义了关于实体正文和请求所标 识的资源的元信息。 实体报头 ♦ Content-Encoding:用作媒体类型的修饰符 – 它的值指示了已经被应用到实体正文的附加内容的编码,因而要获得 Content-Type报头域中所引用的媒体类型,必须采用相应的解码机制。 – Content-Encoding: gzip 用于记录文档的压缩方法 ♦ Content-Language:描述了资源所用的自然语言。默认给所有的语言 阅读  – Content-Language: da ♦ Content-Length:指明实体正文的长度,以字节方式存储的十进制数 字来表示 – Content-Length: 1096644 ♦ Last-Modified:指示资源的最后修改日期和时间  – Last-Modified: Fri, 07 Nov 2008 05:50:00 GMT ♦ Expires:指出响应过期的日期和时间。 – 为了让代理服务器或浏览器在一段时间以后更新缓存中(再次访问曾访问过 的页面时,直接从缓存中加载,缩短响应时间和降低服务器负载)的页面, 我们可以使用Expires实体报头域指定页面过期的时间。 – Expires:Thu,15 Sep 2006 16:23:12 GMT 实体报头 ♦ Content-Type: 指明实体正文的媒体类型 – Content-Type: application/octet-stream – text/html:HTML文档 – text/plain:纯文本文件 – image/jpeg:jpeg图像文件 – image/GIF:gif图像文件 – image/TIFF:TIFF格式的图形文件 – application/rtf:多信息文本格式文档 – application/zip:PKZIP或WinZIP压缩文件 – video/mpeg:mpeg视频文件 – video/quicktime:QuickTime视频文件 – application/octet-stream: 声明二进制流 例如:applet中的class文 件 – application/x-octet-stream: 告诉浏览器,待下载的文件 HTTP 消息报头总结 *Authorization *From *If-Modified-Since *Referer *User-Agent *Location *Server *WWW-Authenticate *Expires *Last-Modified **Pragma **Date *Content-Type *Content-Length *Content-Encoding *Allow Entit y? Respons e? Request?Field Name General Header Request Header Response Header Entity Header 总结 ♦ 目标: – 了解HTTP请求、响应的过程 – 了解HTTP请求的方法(get & post) – 理解常用消息报头的使用 ♦ Web服务器:IIS,Apache,BOA,thttp ♦ 抓包工具: – Httpwatch – Ethereal 谢谢大家! 谢谢大家! 谢谢大家! 谢谢大家!
还剩23页未读

继续阅读

下载pdf到电脑,查找使用更方便

pdf的实际排版效果,会与网站的显示效果略有不同!!

需要 5 金币 [ 分享pdf获得金币 ] 7 人已下载

下载pdf

pdf贡献者

motadou

贡献于2012-07-16

下载需要 5 金币 [金币充值 ]
亲,您也可以通过 分享原创pdf 来获得金币奖励!
下载pdf