zoukankan      html  css  js  c++  java
  • 简单介绍基于WEB开发的HTTP协议

             简单介绍基于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)分开。

  • 相关阅读:
    php 小试 mysql-zmq-plugin 和 pthreads
    svn:previous operation has not finished
    Http Header里的Content-Type
    sublime text使用及常见问题
    Less:优雅的写CSS代码
    gulp:更简单的自动化构建工具
    js实现『加载更多』功能实例
    JSONP浅析
    使用JSSDK集成微信分享遇到的一些坑
    JavaScript模板引擎实例应用
  • 原文地址:https://www.cnblogs.com/hehe520/p/6330239.html
Copyright © 2011-2022 走看看