分享

简单介绍基于WEB开发的HTTP协议

 昵称2807 2007-09-26

简单介绍基于WEB开发的HTTP协议

        今天搜索socket时找到一篇文章 <基于Java的web服务器工作原理>,却在里面看到了部分介绍HTTP协议的,虽然简单,但是读完之后,还是对HTTP有一点新的理解,所以摘录了一下(部分内容经过笔者更改).

  HTTP(The Hypertext Transfer Protocol) 是一种让 Web 服务器与浏览器(客户端)通过 Internet 发送与接收数据的协议。它是一个请求、响应协议.客户端发出一个请求,服务器响应这个请求。HTTP 运用可靠的 TCP 连接,通常用的 TCP 80 端口。它的第一个版本是 HTTP/0.9 ,然后被 HTTP/1.0 取代。当前的版本是 HTTP/1.1 ,由RFC2616(.pdf) 定义。

  本节主要对应 HTTP 1.1 ,足够使你充分理解由 Web 服务器程序发出的消息。如果你对更加详细的知识有兴趣,可以参考 RFC2616 。

  在 HTTP 中,客户端总是通过建立一个连接,并发送一个 HTTP 请求来发起一个事务。服务器不能主动去与客户端联系,也不能给客户端发出一个回叫连接。客户端与服务器端都可以提前中断一个连接。例如,当用一个浏览器下载一个文件时,你可以通过点击“停止”键来中断文件的下载,关闭与服务器的 HTTP 连接。

  HTTP 请求

  一个 HTTP 请求包含三个部分:

  Method-URI-Protocol/Version方法-地址-版本

  Request header请求头

  Entity body请求实体

  下面是一个 HTTP 请求实例

  POST /servlet/default.jsp HTTP/1.1

  Accept: text/plain; text/html 

  Accept-Language: en-gb 

  Connection: Keep-Alive 

  Host: localhost 

  Referer: http://localhost/ch8/SendDetails.htm 

  User-Agent: Mozilla/4.0 (compatible; MSIE 4.01; Windows 98) 

  Content-Length: 33 

  Content-Type: application/x-www-form-urlencoded 

  Accept-Encoding: gzip, deflate 

  LastName=Franks
&FirstName=Michael

The Method-URI-Protocol/Version 在这个请求的第一行:

POST /servlet/default.jsp HTTP/1.1

 

        其中 POST 是请求的类型。每个客户端 HTTP 请求可以是 HTTP 规范中指定的许多请求类型中的一种。HTTP 1.1 支持七种类型的请求,它们是 GET,POST,HEAD,OPTIONS,PUT,DELETE,TRACE。其中 GET 与 POST 是 Internet 应用中经常用到的二种请求类型。

  URI 完整地指定了 Internet 资源。一个 URI 通常被解析为相对服务器的根目录。这样,它应该总是以一个 '/' 前缀开始。一个 URL 实际上是 URI 的一种类型。

  Version 指的是该 HTTP 请求所用到的 HTTP 协议版本。

  请求头包含了客户端环境与请求实体的一些有用的信息。例如它包含浏览器设定的语言、实体的长度等等。每条请求头用回车换行符(CRLF)分开。

  一个非常重要的空行分开了请求头与实体,它标志着实体内容的开始。一些 Internet 开发书籍认为这个 CRLF 空行是 HTTP 请求的第四个部分。

  在上面的 HTTP 请求中,实体只是简单以下的一行:

          LastName=Franks&FirstName=Michael

  在一个典型的 HTTP 请求中,请求实体内容会长得多。

  HTTP 响应

  与请求相似,HTTP 响应也由三部分组成:

  Protocol-Status code-Description协议状态 描述代码

  Response headers响应头

  Entity body响应实体

  以下是一个 HTTP 响应的实例:

  HTTP/1.1 200 OK

  Server: Microsoft-IIS/4.0

  Date: Mon, 3 Jan 1998 13:13:33 GMT

  Content-Type: text/html

  Last-Modified: Mon, 11 Jan 1998 13:23:42 GMT

  Content-Length: 112

  
<html>

  
<head>

  
<title>HTTP Response Example</title></head><body>

  Welcome to Brainy Software

  
</body>

  
</html>

        响应头的第一行类似请求头的第一行,告诉你所用的协议是 HTTP 1.1 ,请求成功(200=success),以及没有任何问题。

  响应头类似请求头也包含了一些有用的信息。响应的实体响应本身的 HTML 内容。头与实体之间由回车换行的空行(CRLF)分开。


Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=1614718

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多