深入分析Http协议

来源:互联网 发布:新开的淘宝店怎么找货 编辑:程序博客网 时间:2024/05/22 01:02

基本介绍

HTTP协议(HyperText Transfer Protocol,超文本传输协议)是用于从WWW服务器传输超文本到本地浏览器的传送协议。

HTTP是一个应用层协议,通常承载于TCP协议之上,有时也承载于TLS或SSL协议层之上,这个时候,就成了我们常说的HTTPS。


HTTP协议是一个标准的客户端服务器模型


HTTP是一个无状态的协议。http协议是无状态的,同一个客户端的这次请求和上次请求是没有对应关系,对http服务器来说,它并不知道这两个请求来自同一个客户端。 为了解决这个问题, Web程序引入了Cookie机制来维护状态.

HTTP消息的结构

request

Request 消息分为3部分,第一部分叫Request line, 第二部分叫Request header, 第三部分是body. header和body之间有个空行,习惯称之为请求行、请求头、请求体。
为了清楚的说明这些东西,我们使用专门的HTTP抓包器Fiddler

如图所示,请求行以一个方法符号开头,以空格分开,后面跟着请求的URI和协议的版本,图中是一个Get请求,常用的还有POST请求,下图是一个POST请求的request格式


关于请求头的详细信息,下文给出链接

在POST请求中,请求体主要是一些参数


response

HTTP响应报文与HTTP请求报文是对应的,也是分为三个部分。

  1、响应行

  2、响应头

  3、响应体



响应行,也称之为状态行(status line)通过提供一个状态码来说明所请求的资源情况。

状态代码由三位数字组成,第一个数字定义了响应的类别,且有五种可能取值。

  • 1xx:指示信息--表示请求已接收,继续处理。
  • 2xx:成功--表示请求已被成功接收、理解、接受。
  • 3xx:重定向--要完成请求必须进行更进一步的操作。
  • 4xx:客户端错误--请求有语法错误或请求无法实现。
  • 5xx:服务器端错误--服务器未能实现合法的请求。
具体的状态码请自行查阅

关于响应头的详细信息,下文给出链接

响应体就是服务器返回的资源的内容 



HTTP响应头和请求头信息对照表

一些重要的头信息


在http1.1,request和reponse头中都有可能出现一个connection的头,此header的含义是当client和server通信时对于长链接如何进行处理。

在http1.1中,client和server都是默认对方支持长链接的, 如果client使用http1.1协议,但又不希望使用长链接,则需要在header中指明connection的值为close;如果server方也不想支持长链接,则在response中也需要明确说明connection的值为close。不论request还是response的header中包含了值为close的connection,都表明当前正在使用的tcp链接在当天请求处理完毕后会被断掉。以后client再进行新的请求时就必须创建新的tcp链接了。




原创粉丝点击