浅谈Http协议

一、Http请求报文:

    请求报文介绍一个HTTP请求报文由请求行(request line)、请求头部(header)、空行和请求体4个部分组成,图-1给出了请求报文的一般格式。

             图-1: http请求报文的一般格式

1、请求行

   请求行由请求方法字段、URL字段和HTTP协议版本字段3个字段组成,它们用空格分隔。它的一般格式如 

 下:

       一般格式:Method Request-URI HTTP-Version CRLF

具体请求的格式:POST http://192.168.2.217:8080/index.jsp
HTTP/1.1

   (1)Method

 
      Method表示请求方法,请求方法(所有方法全为大写)有多种,各个方法的解释如下:

GET     请求获取Request-URI所标识的资源

POST    在Request-URI所标识的资源后附加新的数据

HEAD    请求获取由Request-URI所标识的资源的响应消息报头

PUT     请求服务器存储一个资源,并用Request-URI作为其标识

DELETE  请求服务器删除Request-URI所标识的资源

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

CONNECT 保留将来使用

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

 
  (2)Request-URI是一个统
一资源标识符

 
     这个字段为请求对应的URL地址,它和报文头的Host属性组成完整的请求URL。

   

   (3)HTTP-Version

        这个字段表示请求的HTTP协议版本,目前常用的是HTTP的1.1版本。

 
   

 
  特别注意:CRLF表示回车和换行(除了作为结尾的CRLF外,不允许出现单独的CR或LF字符)。

2、请求头

   请求头包含许多有关的客户端环境和请求正文的有用信息。例如,请求头可以声明浏览器所用的语言,请求正文的长度等。

Accept:image/gif.image/jpeg.*/*

Accept-Language:zh-cn

Connection:Keep-Alive

Host:localhost

User-Agent:Mozila/4.0(compatible:MSIE5.01:Windows NT5.0)

Accept-Encoding:gzip,deflate.

(1)Accept属性

        这表明客户端浏览器支持的MIME数据类型,比如案例中客户端支持jif图片和jpg图片,且优先顺序 

        为:jif--->jpg

  

    (2)

Accept-Language属性

客户端支持的语言:

zh-cn表示中文简体

(3)

Connection属性

该属性表示客户端与服务连接类型。

Keep-Alive:表示持久连接(长

连接

(4)

Host属性:域名

(5)

User-Agent属性:客户端代理(在PC端一般是浏览器类型)

(6)

Accept-Encoding属性

表示浏览器有能力解码的编码类型;

        gzip是 GNU zip 的缩写,它是一个 GNU 自由软件的文件压缩程序,也经常用来表示 gzip 这种

文件格式。

      deflate是同时使用了 LZ77 算法与哈夫曼编码(Huffman Coding)的一个无损数据压缩算法。

    更多属性请参见:https://en.wikipedia.org/wiki/List_of_HTTP_header_fields

3、空行

   最后一个请求头之后是一个空行,发送回车符和换行符,通知服务器以下不再有请求头。

4、请求实体(Request
Body:请求正文或请求实体

   请求数据不在GET方法中使用,而是在POST方法中使用。POST方法适用于需要客户填写表单的场合。与请求数据相关的最常使用的请求头是Content-Type和Content-Length。

     具体应用:

                                                                    

 图-2:请求报文

二、HTTP响应报文

    HTTP 响应报文由状态行、响应头部、空行 和 响应包体 4 个部分组成,如图-3所示:

                                                                                                       

图-3: http响应报文的一般格式

下面对响应报文格式进行简单的分析:

   1、状态行

      状态行由3部分组成,分别为:协议版本,状态码,状态码描述,之间由空格分隔,一般格式如下:

      (1)协议版本

 
         协议版本指的是服务器端与客户端的HTTP通信协议,目前一般采用HTTP/1.1版本。

 
    (2)状态码

 
          ①五大类常用状态码:
 

1xx:表示服务器已接收了客户端请求,客户端可继续发送请求;

              2xx:表示服务器已成功接收到请求并进行处理;

              3xx:表示服务器要求客户端重定向;

              4xx:表示客户端的请求有非法内容;

              5xx:表示服务器未能正常处理客户端的请求而出现意外错误;

②常用的一些具体的状态码:

100——客户必须继续发出请求

101——客户要求服务器根据请求转换HTTP协议版本

2**:操作成功收到,分析、接受

200——交易成功

201——提示知道新文件的URL

202——接受和处理、但处理未完成

203——返回信息不确定或不完整

204——请求收到,但返回信息为空

205——服务器完成了请求,用户代理必须复位当前已经浏览过的文件

206——服务器已经完成了部分用户的GET请求

3**:完成此请求必须进一步处理

300——请求的资源可在多处得到

301——删除请求数据

302——在其他地址发现了请求数据

303——建议客户访问其他URL或访问方式

304——客户端已经执行了GET,但文件未变化

305——请求的资源必须从服务器指定的地址得到

306——前一版本HTTP中使用的代码,现行版本中不再使用

307——申明请求的资源临时性删除

4**:请求包含一个错误语法或不能完成

400——错误请求,如语法错误

401——未授权

HTTP 401.1 - 未授权:登录失败

HTTP 401.2 - 未授权:服务器配置问题导致登录失败

HTTP 401.3 - ACL 禁止访问资源

HTTP 401.4 - 未授权:授权被筛选器拒绝

HTTP 401.5 - 未授权:ISAPI 或 CGI 授权失败

402——保留有效ChargeTo头响应

403——禁止访问

HTTP 403.1 禁止访问:禁止可执行访问

HTTP 403.2 - 禁止访问:禁止读访问

HTTP 403.3 - 禁止访问:禁止写访问

HTTP 403.4 - 禁止访问:要求 SSL

HTTP 403.5 - 禁止访问:要求 SSL 128

HTTP 403.6 - 禁止访问:IP 地址被拒绝

HTTP 403.7 - 禁止访问:要求客户证书

HTTP 403.8 - 禁止访问:禁止站点访问

HTTP 403.9 - 禁止访问:连接的用户过多

HTTP 403.10 - 禁止访问:配置无效

HTTP 403.11 - 禁止访问:密码更改

HTTP 403.12 - 禁止访问:映射器拒绝访问

HTTP 403.13 - 禁止访问:客户证书已被吊销

HTTP 403.15 - 禁止访问:客户访问许可过多

HTTP 403.16 - 禁止访问:客户证书不可信或者无效

HTTP 403.17 - 禁止访问:客户证书已经到期或者尚未生效

404——没有发现文件、查询或URl

405——用户在Request-Line字段定义的方法不允许

406——根据用户发送的Accept拖,请求资源不可访问

407——类似401,用户必须首先在代理服务器上得到授权

408——客户端没有在用户指定的饿时间内完成请求

409——对当前资源状态,请求不能完成

410——服务器上不再有此资源且无进一步的参考地址

411——服务器拒绝用户定义的Content-Length属性请求

412——一个或多个请求头字段在当前请求中错误

413——请求的资源大于服务器允许的大小

414——请求的资源URL长于服务器允许的长度

415——请求资源不支持请求项目格式

416——请求中包含Range请求头字段,在当前请求资源范围内没有range指示值,请求也不包含If-Range请求头字段

417——服务器不满足请求Expect头字段指定的期望值,如果是代理服务器,可能是下一级服务器不能满足请求长。

5**:服务器执行一个完全有效请求失败

HTTP 500 - 内部服务器错误

HTTP 500.100 - 内部服务器错误 - ASP 错误

HTTP 500-11 服务器关闭

HTTP 500-12 应用程序重新启动

HTTP 500-13 - 服务器太忙

HTTP 500-14 - 应用程序无效

HTTP 500-15 - 不允许请求 global.asa

Error 501 - 未实现

HTTP 502 - 网关错误

 
    (3)状态码描述

 
         上述的每个状态码后面都跟一个描述信息:就是对状态码的详细描述。

   2、响应头部(图中首部行)

         响应头(Response Header)响应头也和请求头一样包含许多有用的信息,例如服务器类型、日期时

      间、内容类型和长度等:

        

   3、空行

       最后一个响应头部之后是一个空行,发送回车符和换行符,通知服务器以下不再有响应头部。

   4、响应实体

       服务器返回给客户端的请求结果信息;

具体应用:(图-2请求的响应结果)

  图-4 响应报文

时间: 2024-07-29 18:49:00

浅谈Http协议的相关文章

【转】 浅谈Radius协议

浅谈Radius协议 2013-12-03 16:06 5791人阅读 评论(0) 收藏 举报  分类: Radius协议分析(6)  从事Radius协议开发有段时间了,小弟不怕才疏学浅,卖弄一下,从RADIUS协议谈谈对身份认证的认识,也总结一下自己. 一.RADIUS协议原理 RADIUS(Remote Authentication Dial In User Service) 用户远程拨入认证服务,它主要针对的远程登录类型有:SLIP.PPP.telnet和rlogin等.RADIUS协议

浅谈Linux协议和组成

根据自己学习Linux方面的知识,浅谈下linux的协议和组成,那首先了解下计算机的组成和功能: 计算机系统由硬件(hardware)系统和软件(software)系统两大部分组成: 1.硬件系统由主机和外部设备组成: 主机由中央处理器CPU(运算器ALU和控制器CU)和内存储器(ROM和RAM) 外部设置由输入设备和输出设备等其他设备组成 2.软件系统由系统软件和应用软件组成 接下来了解Linux的内核功能和作用:我们学习Linux的最重要就是内核(kernel),内核是什么.我用自己理解的方

浅谈HTTP协议(下)

下面来讲响应消息.响应消息也分为响应起始行.响应头部.CRLF.响应主体. 响应起始行包括协议版本.响应状态码.原因短句.这里的重点就是响应状态码,它一共分为5类,状态码准确的说是一个三位数. 1xx:表示这段信息的作用主要是提示. 2xx:成功的响应. 3xx:需要客户端重定向. 4xx:客户端请求错误. 5xx:服务器端运行错误. 下面举一些常见的例子: 100:Continue,服务器收到了请求的初始部分,请客户端继续. 101:Switching Protocols,切换协议. 200:

浅谈ARP协议以及应用

0. 前言 本章主要简单的介绍ARP的协议格式,主机如何发送和处理ARP报文,以及免费ARP. 1. ARP协议原理 ARP,全称Address Resolution Protocol,地址解析协议,在网络中,有IP地址和MAC地址,在链路层发送报文时使用的是MAC硬件地址,这时需要将IP地址转换为48bit MAC地址,这就会使用到ARP协议. 如下,有两台主机,239主机ping向238主机.当本地ARP缓存中没有238主机对应的项时,会发起ARP广播请求,之后使用arp命令查看ARP缓存,

浅谈HTTP协议(上)

今天讨论一下HTTP协议.一个做前端的,如果连HTTP协议都不了解,那实在是太不合格了. 首先,什么是HTTP?Hyper Text Transfer Protocol(超文本传输协议),用在浏览器和Web服务器之间传输超文本网页.1991年,由IETF这个团体发布了第一个版本--HTTP/0.9,但它有严重的设计缺陷,只支持"GET"方法,不支持MIME类型,很快的就被HTTP/1.0取代.而1996年发布的这个HTTP/1.0也存活的并不长久,虽然是第一个正式发布的稳定版本.199

从日常开发说起,浅谈HTTP协议是做什么的

引言 HTTP协议作为Web开发的基础一直被大多数人所熟知,不过相信有很多人只知其一不知其二.比如咱们经常用到的session会话机制是如何实现的,可能很多人都说不出来吧.其实session会话就是HTTP协议中的一个header属性cookie所支持的,在你了解了HTTP协议之后,其实这些都非常容易理解. 本文会尝试从各位的日常开发去解释一下HTTP到底是做什么的,文章篇幅有限,如果有什么本文没有提到的,各位请自行百度或者看书补脑.接下来,咱们先来看一个小A和小B的故事. 小故事:两个人的任务

从日常开发说起,浅谈HTTP协议是做什么的。

引言 HTTP协议作为Web开发的基础一直被大多数人所熟知,不过相信有很多人只知其一不知其二.比如咱们经常用到的session会话机制是如何实现的,可能很多人都说不出来吧.其实session会话就是HTTP协议中的一个header属性cookie所支持的,在你了解了HTTP协议之后,其实这些都非常容易理解. 本文会尝试从各位的日常开发去解释一下HTTP到底是做什么的,文章篇幅有限,如果有什么本文没有提到的,各位请自行百度或者看书补脑.接下来,咱们先来看一个小A和小B的故事. 小故事:两个人的任务

浅谈TCP协议(建立与断开连接)

TCP是面向连接的,可靠的进程到进程通信的协议.TCP提供全双工服务,即数据可在同一时间双向传输,每一个TCP都有发送缓存,用来临时存储数据.TCP将若干个字节构成一个分组,成为报文段(segment)TCP报文段封装在IP数据报中:TCP报文段的首部格式如图:首部长度为20--60字节,源端口号:他是16位字段,为发送方进程对应的端口号.目标端口号:他是16位字段,对应的是接收端的进程,接收端收到数据段后,根据这个端口号来确定把数据送给那个应用程序的进程.序号:当TCP从进程接收数据字节时,就

浅谈Http协议与TCP/IP协议

由于最近找工作需要准备这两个协议方面的问题,所以对这两个传输协议来总结一下自己的看.网上各路大神对这两个传输协议已经分析的非常透彻了,在下才疏学浅,仅说一下自己的想法,以供参考,同时也是对自己的一个经验总结. 1.http协议,即超文本传输协议,英文名叫做Hypertext Transfer Protocol,是一种浏览器和服务器之间沟通的一种规范,使用在应用层,用于解决如果包装数据,是一种应用层协议.是基于TCP/IP协议之上的,具体可参考OSI七层协议,这里不再赘述. Http的请求方式包括