文档章节

Http 基础 之 报文

pan_1308
 pan_1308
发布于 2016/11/29 14:57
字数 1104
阅读 27
收藏 3

报文流

http 报文是在 Http 应用程序之间发送的数据块。这些数据块以一些文本形式的元信息(meta-information)开头,这些信息描述了报文的内容及含义,后面跟着可选的数据部分。这些报文在客户端、服务器和代理之间流动。术语"流入"、“流出”、“上游”及“下游”都是用来描述报文方向的。

http 报文会像河水一样流动,不管是请求报文还是响应报文,所有报文都会向下游流动。所有报文的发送者都在接收者的上游。

报文的组成部分

Http 报文是简单的格式化数据块。每条报文都包含一条来自客户端的请求,或者一条来自服务器的响应。有三部分组成:对报文进行描述的起始行(start line)包含属性的首部(header)块 以及 可选的 包含数据的 主体(body)部分。

起始行

起始行和首部就是由行分隔的 ASCII 文本,每行都以一个由两个字符组成的行终止序列作为结束。实体的主体或者报文的主体 是 一个可选的数据块,可以包含文本或者二进制,可以为 空。

所有的 HTTP 报文都以一个起始行作为开始,请求报文的起始行说明了要做些什么,响应报文的起始行说明发生了什么。

请求报文的起始行又称之为请求行,包含了一个方法和一个请求的 url,这个方法描述了服务器应该执行的操作,请求url 描述了 要对 哪个资源执行 这个方法。请求行中还包含了 http 的版本,用来告知服务器,客户端使用的是哪种 http。

响应报文承载了状态信息和操作产生的所有结果数据,将其返回给客户端。响应报文的起始行,又称之为响应行,包含了响应报文使用的 http 版本、数字状态码,以及描述操作状态的文本形式的原因短语。

所有的 http 报文都可以分为 两类:请求报文(request message) 和 响应报文(response message)。请求报文会向 web 服务器请求一个动作,响应报文会将请求的结果返回客户端。

请求报文格式:

<method> <request-url> <version> <headers> <entity-body>

响应报文格式:(注意,只有起始行的语法会有所不同)

<version> <status> <reason-phrase><headers> <entity-body>

方法(method)

客户端希望服务器对资源执行的动作。eg: get、head 或者 post。

GET  :  从服务器获取一份文档;
HEAD :   只从服务器获取文档的首部;
POST  :   向服务器发送需要处理的数据;
PUT  :   将请求的主体部分存储在服务器上;
TRACE :  对可能经过代理服务器传送到服务器上去的报文进行追踪;
OPTIONS :  决定可以在服务器上执行哪些方法;
DELETE  :   从服务器上删除一份文档;

请求url(request-url)

命名了所请求资源或者url 路径组件的完整 url。

版本(version)

报文所使用的 http 版本,格式 如: HTTP/<major>.<minor>,major 主版本号,minor 次版本号,都为整数。

状态码(status-code)

状态码是在每条响应报文的起始行中返回的,会返回一个数字状态,一般是三位数,这三位数字描述了请求过程中所发生的情况。每个状态码的第一位数字都用于描述状态的一般类别(“成功”、“出错”等)。

原因短语(reason-phrase)

原因短语和状态码是成对出现的,是响应起始行中的最后一个组件,为状态码提供了文本形式的解释,即以短语文本描述 数字状态码。

首部(header)

可以有 0个 或者 多个首部,每个首部 都包含一个名字,后面跟着一个冒号(:),然后跟着一个空格,接着跟着一个值 和换行。

实体的主体部分(entity-body)

实体的主体是 http 报文的负荷,就是 http 要传输的内容。实体的主体部分包含一个由任意数据组成的数据块。并不是所有的报文都包含实体的主体部分。

 

 

 

© 著作权归作者所有

pan_1308
粉丝 5
博文 95
码字总数 58819
作品 0
黄冈
私信 提问
计算机网络:这是一份全面& 详细 HTTP协议 学习攻略

前言 网络通信协议在任何的开发工作中都非常重要 今天,我将献上一份的说明指南,希望你们会喜欢 ps:最近在筹备一个”和我一起写Android“的活动,需要各大读者的帮忙,希望能看文章参与哦:...

Carson_Ho
03/25
0
0
Linux运维之Web基础(HTTP基础)

本次博文的主题是web服务哈。web服务也是Internet上使用最多的服务,通常被称为WWW(World Wide Web,万维网)服务。 【本次博文的主要内容】 HTTP协议基础 HTTP的报文首部 HTTP的请求报文 ...

土豆呼叫地瓜
2015/05/28
0
0
Http 基础 概述

web 内容都是存储在 web服务器上的,web服务器所使用的是 Http协议,因此经常会被称为 Http服务器.客户端向服务器发送Http请求,服务器会在 Http响应中回送所请求的数据. Http客户端和Http服...

pan_1308
2016/11/24
10
0
HTTP协议基础解读

HTTP协议简介 超文本传输协议(HTTP,HyperText Transfer Protocol)是互联网上应用最为广泛的一种网络协议。 HTTP是分布式、协作的、超媒体信息系统的应用层协议。 HTTP协议(HyperText Tra...

zhangguangyi
2015/08/04
0
0
Node.js与Golang使用感受与小结【一】

Node.js与Golang使用感受与小结 目录 一、互联网的基石TCP/IP协议 二、HTTP服务器编写与编程语言无关 三、构建HTTP服务器需要掌握的知识点 四、HTTP协议基础 五、Node.js简介 六、是前端选择...

念念之间
2013/05/22
2.7K
8

没有更多内容

加载失败,请刷新页面

加载更多

一起来学Java8(五)——接口默认方法

Java8新加入一个特性,允许在接口方法中给定一个默认实现。前提是在方法前面加一个default关键字。 public interface InterfaceMethod {default void say() {System.out.println("hello...

猿敲月下码
1分钟前
0
0
weed3-2.3.3.查询之缓存控制

Weed3 一个超轻量级ORM框架(只有0.1Mb哦) 源码:https://github.com/noear/weed3 源码:https://gitee.com/noear/weed3 缓存控制,是查询中的重点 框架提供的是控制服务。而非缓存服务本身...

刘之西东
5分钟前
0
0
Java Web 中对 ServletRequest 的一些非常规操作解决方案

1. 前言 ServletRequest 是我们搞 Java Web 经常接触的 Servlet Api 。有些时候我们要经常对其进行一些操作。这里列举一些经常的难点操作。 2. 提取 body 中的数据 前后端交互我们会在 body...

码农小胖哥
53分钟前
24
0
《Dual Encoding U-Net for Retinal Vessel Segmentation》阅读笔记-MICCAI2019

作者:Bo Wang1,2, Shuang Qiu2, and Huiguang He1,2,3 目的:Retinal Vessel Segmentation is an essential step for the early diagnosis of eye-related diseases, such as diabetes and ......

JungleKing
56分钟前
23
0
一次看懂 Https 证书认证

TLS > 传输层安全性协定 TLS(Transport Layer Security),及其前身安全套接层 SSL(Secure Sockets Layer)是一种安全协议,目的是为网际网路通信,提供安全及数据完整性保障。 如图,TLS...

极客收藏夹
今天
24
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部