HTTP 超文本传输协议

目录

1、简介

2、HTTP 工作原理

3、HTTP 消息结构

4、HTTP 请求方法


1、简介

HTTP(Hyper Text Transfer Protocol,超文本传输协议)是一种应用层协议,用于从万维网(WWW:World Wide Web )服务器传输超文本到本地浏览器的传送协议。HTTP 基于 TCP/IP 通信协议来传递数据(HTML 文件,图片,多媒体等)。HTTP 由两部分组成:请求(Request)和响应(Response)。

HTTP(超文本传输协议)是利用 TCP 在两台电脑(通常是Web服务器和客户端)之间传输信息的协议。客户端使用 Web 浏览器发起 HTTP 请求给 Web 服务器,Web 服务器发送被请求的信息给客户端。

2、HTTP 工作原理

HTTP 协议工作于客户端-服务端架构上。浏览器作为 HTTP 客户端通过 URL 向 HTTP 服务端(WEB服务器)发送所有请求。Web 服务器根据接收到的请求后,向客户端发送响应信息。HTTP 有三点注意事项:

(1)HTTP是无连接:无连接的含义是限制每次连接只处理一个请求。服务器处理完客户的请求,并收到客户的应答后,即断开连接。采用这种方式可以节省传输时间。

(2)HTTP是媒体独立的:这意味着,只要客户端和服务器知道如何处理的数据内容,任何类型的数据都可以通过 HTTP 发送。客户端以及服务器指定使用适合的 MIME-type 内容类型。

(3)HTTP是无状态:HTTP 协议是无状态协议。无状态是指协议对于事务处理没有记忆能力。缺少状态意味着如果后续处理需要前面的信息,则它必须重传,这样可能导致每次连接传送的数据量增大。另一方面,在服务器不需要先前信息时它的应答就较快。

3、HTTP 消息结构

3.1、客户端请求消息

客户端发送一个 HTTP 请求到服务器的请求消息包括以下格式:请求行(request line)、请求头部(header)、空行和请求数据四个部分组成:

 

实例(1)、在浏览器地址栏种输入 www.baidu.com,则 GET 请求如下:

GET / HTTP/1.1
Host: www.baidu.com
User-Agent: Mozilla/5.0(Windows;U;Windows NT 5.1;zh-CN;rv:1.9.0.8)Gecko/2017093609 Firefox/13.0.8
Connection:Keep-Alive

请求行的第1部分说明了该请求是GET请求。该行的第2部分是一个斜杠(/),用来说明请求的是百度域名的根目录。该行的最后一部分说明使用的是HTTP1.1版本,另一个可选项是HTTP1.0。

第2行是请求的第一个消息报头,HOST头部指出请求的域名结合HOST头部和上一行中的统一资源标识符(即斜杠),就可以确定请求服务器的具体地址。

第3行包含的是User-Agent头部,服务器端和客户端脚本都能够访问它,该头部包含的信息由浏览器来定义,并且在每个请求中将会自动发送。JavaScript和服务器通过User-Agent头部信息,可以了解客户端的本地情况。

最后一行是Connection 头部,通常将浏览器操作设置为 Keep-Alive,在最后一个头部后有一个空行(即使不存在请求主体)。

实例(2)、如果在 GET 请求种附带参数,则必须将这些参数信息附在 URL 后面,这个信息也被称为查询字符串(Query String),发送时将被附加在请求行中,格式如下:

GET /bbs/?user=css8%20 HTTP/1.1
Host: www.mysite.com
User-Agent: Mozilla/5.0(Windows;U;Windows NT 5.1;zh-CN;rv:1.9.0.8)Gecko/2017093609 Firefox/13.0.8
Connection:Keep-Alive

实例(3)、POST 方法要求被请求服务器接收附在请求后面的数据,常用于提交表单。

POST / form.asp HTTP/ (CRLF)
HOST:www.mysite.cn (CRLE)
Usex-Agent:Mozi1la/5.0(Windows; U; Windows NT 5.1; zh-CN; rv:1.9.0.8)Gecko/2017032609 Firefox/13.0.8
Content-Type:application/x-www-form-urlencoded
Content-Length:22 (CRLF)
Connection:Keep-Alive (CRLE)
Cache-Control:no-cache (CRLF)
(CRLF)                            //该CRLF表示消息报头已经结束,在此之前为消息报头
user=css8&pwd=111111              //此行以下为提交的数据

POST请求与GET请求之间略有区别。首先,请求行开始处的GET变为POST,在后面有两个新行。其中Content-Type 说明了请求主体的内容是如何编码的。测览器始终以application/x-www-form-urifencoded的编码格式来传送数据,这是针对简单URL编码的MIME类型。

Content-Length说明了请求主体的字节数。在Connection后是一个空行,再后面就是请求主体。与大多数浏览器的POST请求一样,都以“名称/值”对的形式表示的。POST方法与GET方法的数据传输形式几乎是一样的。

3.2、服务器响应消息

HTTP 响应也由四个部分组成,分别是:状态行、消息报头、空行和响应正文,具体如下图所示:

状态行包括:表示服务器HTTP协议的版本、表示服务器返回的响应状态码、表示状态码的文本描述。其中状态码有三位数字组成,第一个数字定义了响应的类别,且有如下5种可能的取值。

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

常见的状态码、状态描述如下:

200    OK                       //客户端请求成功
400    Bad Request              //客户端请求有语法错误,不能被服务器所理解
401    Unauthorized             //请求未经授权,这个状态代码必须和WWW-Authenticate报头域一起使用
403    Forbidden                //服务器收到请求,但是拒绝提供服务
404    Not Found                //请求资源不存在,例如,输入了错误的URL
500    Internal Server Error    //服务器发生不可预期的错误
503    Server Unavailable       //服务器当前不能处理客户端的请求,一段时间后,可能恢复正常

实例(1)、下面是一个HTTP响应的示例:

HTTP/1.1 200 OK
Date:Wed, 08 Apr 2017 03:35:50 GMT
Content-Type:text/html; charset=gb2312
Content-Length:1700

<html>
<head>
<title>百度一下,你就知道</title>
</head>
<body>
<!--body-->
</body>
</html>

在状态行之后是消息头。一般服务器会返回一个名为 Data 的信息,用来说明响应生成的日期和时间。接下来就是与POST请求中一样的Content-Type和Content-Length。响应主体所包含的就是所请求资源的HTML源文件。

4、HTTP 请求方法

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

方法描述
GET请求指定的页面信息,并返回实体主体。
HEAD类似于 GET 请求,只不过返回的响应中没有具体的内容,用于获取报头
POST向指定资源提交数据进行处理请求(例如提交表单或者上传文件)。数据被包含在请求体中。POST 请求可能会导致新的资源的建立和/或已有资源的修改。
PUT从客户端向服务器传送的数据取代指定的文档的内容。
DELETE请求服务器删除指定的页面。
CONNECTHTTP/1.1 协议中预留给能够将连接改为管道方式的代理服务器。
OPTIONS允许客户端查看服务器的性能。
TRACE回显服务器收到的请求,主要用于测试或诊断。
PATCH

是对 PUT 方法的补充,用来对已知资源进行局部更新 。

以上几种方法的抓包分析可以参考下面这篇文章:传送门

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值