HTTP协议基础-3-HTTP消息

HTTP基于客户端 - 服务器体系结构模型和无状态请求/响应协议,该协议通过可靠的TCP / IP连接交换消息来运行。本篇就来学习HTTP消息,可以说请求是一个消息,响应也是这个消息。通过学习HTTP消息,接下来学习HTTP请求和响应会更顺利一些。

HTTP“客户端”是为了发送一个或多个HTTP请求消息而与服务器建立连接的程序(Web浏览器或任何其他客户端)。 HTTP“服务器”是一个程序(通常是Apache Web服务器或Internet信息服务IIS等Web服务器),它接受连接以通过发送HTTP响应消息来提供HTTP请求。

 

1.HTTP消息语法格式

HTTP利用统一资源标识符(URI)来标识给定资源并建立连接。 建立连接后,HTTP消息的传递格式类似于Internet邮件[RFC5322]和多用途Internet邮件扩展(MIME)[RFC2045]所使用的格式。这种HTTP消息,不管是客户端到服务器的请求还是服务器到客户端的响应,都遵循以下消息格式。

HTTP-message   = <Request> | <Response> ; HTTP/1.1 messages

 

2.HTTP消息包含内容

一个完整的HTTP消息包含以下4部分


一个 start-line(起始行)

0或者多个标题字段后面跟着CRLF

一个空行(指示标题字段的结尾)

可选的 消息-正文

下面我们依次来详细解释每一个部分的内容。

 

3. start-line(起始行)

一个start-line通常会有以下语法:

start-line = Request-Line | Status-Line

关于Request-Line 和 Status-Line,我们分别在后面文章介绍HTTP请求和HTTP响应的时候来学习。现在来看看一个请求和一个响应的起始行例子。
 

GET /hello.htm HTTP/1.1     (请求:从客户端发出的起始行)

HTTP/1.1 200 OK             (响应:从服务器发出的起始行)

这个请求和响应的起始行,我们后边都会逐一学习和看到(截图)来分析和介绍每一行和每一个字段的含义。

 

4.Header Fields(头字段)

HTTP头字段提供有关请求或响应的所需信息,或有关在消息正文中发送的对象的信息。 有四种类型的HTTP消息头:

General-header:  一般头,这种头字段同时适用于请求和响应消息。
Request-header:    请求头,只是适用于请求消息
Response-header: 响应头,只是适用于响应消息
Entity-header:      实体头,定义关于实体主体的元信息,或者,如果不存在主体,则定义关于请求标识的资源。

以上提到的头都遵循相同的通用格式,每个头字段由一个名称后跟冒号(:)和字段值组成,就像Map中键值对,如下所示:

message-header = field-name ":" [ field-value ]

以下是一些头字段例子

User-Agent: curl/7.16.3 libcurl/7.16.3 OpenSSL/0.9.7l zlib/1.2.3
Host: www.example.com
Accept-Language: en, mi
Date: Mon, 27 Jul 2009 12:28:53 GMT
Server: Apache
Last-Modified: Wed, 22 Jul 2009 19:15:56 GMT
ETag: "34aa387-d-1568eb00"
Accept-Ranges: bytes
Content-Length: 51
Vary: Accept-Encoding
Content-Type: text/plain

 

5. Message body(消息正文)

消息正文部分对于HTTP消息是可选的,例如,请求消息很多情况下是没有请求正文,但如果它可用,则它用于携带与请求或响应相关联的实体主体。 如果实体主体是关联的,那么通常Content-Type和Content-Length标题行指定相关主体的性质。

消息体是承载来自服务器的实际HTTP请求数据(包括表单数据和上载等)和HTTP响应数据(包括文件,图像等)的消息体。 例如有些响应消息正文就是一个HTML文件,或者一张图片,如果是图片,有可能显示的是二进制数据。下面显示的是邮件正文的简单内容:

<html>
   <body>
   
      <h1>Hello, World!</h1>
   
   </body>
</html>

下面两篇文章,我们就开始来学习HTTP请求和HTTP响应,相对来说,HTTP响应内容是比较少的。

  • 3
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值