http报文结构

1.HTTP报文

那么什么是HTTP报文呢?

HTTP报文是用于HTTP协议交互的信息,HTTP报文本身是由多行数据构成的字符串文本。

请求报文和响应报文

HTTP通信过程包括客户端往服务器端发送请求以及服务器端给客户端返回响应两个过程。

客户端往服务器端发送请求时的报文叫做请求报文。

服务器端接受客户端请求后,返回给客户端的报文叫做响应报文

2.请求报文及响应报文的结构

不管是请求报文还是响应报文,都由起始行,报文头域, 空行, 报文主体构成

HTTP报文结构如图:

起始行
报文头域
空行
报文主体

请求报文起始行叫请求行

响应报文的起始行叫状态行

报文头域往往由多个头域构成,每个头域由一个域名,冒号(:)和域值三部分组成。域名是大小写无关的,域值前可以添加任何数量的空格符

请求报文的报文头域又分为请求头域,通用头域,实体头域

响应报文的报文头域又分为响应头域,通用头域,实体头域

空行的作用就是分割报文头域和报文主体,它告诉接收方报文头域到此为止。

报文主体又称为报文实体或者实体,即所要传输的数据,主体中可以包含文本或者二进制数据,也可以为空

请求报文结构

请求报文实例

响应报文实例

请求行

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

HTTP中的请求方法包括:GET、POST、HEAD、PUT、DELETE。一般常用的为GET和POST方式。

HTTP协议版本有两种:HTTP1.0 和 HTTP1.1

HTTP1.0/HTTP1.1的区别:

HTTP1.0对于每个连接都只能传送一个请求和响应,请求完服务器返回响应就会关闭,HTTP1.0没有Host字段。

而HTTP1.1在同一个连接中可以传送多个请求和响应,多个请求可以重叠和同时进行,HTTP1.1必须有Host字段。

状态行

响应行一般由协议版本、状态码及其状态码的简单描述3个字段组成,它们也用空格分隔 比如 HTTP/1.1 200 OK

常见状态码:

100~199:表示成功接收请求,要求客户端继续提交下一次请求才能完成整个处理过程。

200~299:表示成功接收请求并已完成整个处理过程。常用200

300~399:为完成请求,客户需进一步细化请求。例如:请求的资源已经移动一个新地址、常用302(意味着你请求我,我让你去找别人),307和304(我不给你这个资源,自己拿缓存)

400~499:客户端的请求有错误,常用404(意味着你请求的资源在web服务器中没有)403(服务器拒绝访问,权限不够)

500~599:服务器端出现错误,常用500

通用头域

通用头域包含请求和响应消息都支持的头域,对通用头域的扩展要求通讯双方都支持此扩展,如果存在不支持的通用头域,一般将会作为实体头域处理。

通用头域包含Cache-Control、 Connection、Date、Pragma、Transfer-Encoding、Upgrade、Via。

实体头域

请求消息和响应消息都可以包含实体信息,实体信息一般由实体头域和实体(所谓的实体就是上面所说的报文主体,也就是想要传输的原始数据)组成。

实体头域包含关于实体的原信息。

实体头包括Allow、Content- Base、Content-Encoding、Content-Language、 Content-Length、Content-Location、Content-MD5、Content-Range、Content-Type、 Etag、Expires、Last-Modified、extension-header。

请求头域

请求头域允许客户端向服务器传递关于请求或者关于客户机的附加信息。对请求头域的扩展要求通讯双方都支持,如果存在不支持的请求头域,一般将会作为实体头域处理

请求头域可能包含下列字段Accept、Accept-Charset、Accept- Encoding、Accept-Language、Authorization、From、Host、If-Modified-Since、If- Match、If-None-Match、If-Range、If-Range、If-Unmodified-Since、Max-Forwards、 Proxy-Authorization、Range、Referer、User-Agent。

响应头域

响应头域主要描述服务器的信息和Request-URI进一步的信息。对响应头域的扩展要求通讯双方都支持,如果存在不支持的响应头域,一般将会作为实体头域处理。

响应头域包含Age、 Location、Proxy-Authenticate、Public、Retry-After、Server、Vary、Warning、WWW- Authenticate。

原文地址:https://www.cnblogs.com/gaoBlog/p/11547243.html

时间: 2024-07-30 22:45:41

http报文结构的相关文章

http的报文结构和状态码的含义

HTTP响应报文解剖 响应报文结构 HTTP的响应报文也由三部分组成(响应行+响应头+响应体): 以下是一个实际的HTTP响应报文: ①报文协议及版本: ②状态码及状态描述: ③响应报文头,也是由多个属性组成: ④响应报文体,即我们真正要的“干货”. 响应状态码 和请求报文相比,响应报文多了一个“响应状态码”,它以“清晰明确”的语言告诉客户端本次请求的处理结果. HTTP的响应状态码由5段组成: 1xx 消息,一般是告诉客户端,请求已经收到了,正在处理,别急... 2xx 处理成功,一般表示:请

TCP报文结构和长短连接

参考博文: https://www.cnblogs.com/onlysun/p/4520553.html https://blog.csdn.net/zxy987872674/article/details/52653101 一.报文结构介绍 在开始讲TCP连接过程时,还是先看看TCP报文的格式如图1所示.IP数据报此时由IP头部+TCP头部+TCP数据组成.不带选项的TCP头部是20字节长,而带选项的,TCP头部最长可达60字节.常见的选项包括最大的大小(MSS),时间戳(传输控制时使用).窗

HTTP报文结构及Cookie、session区别

目录 万维网 HTTP超文本传输协议 特点 HTTP的报文结构. 下面介绍http请求报文最主要的一些特点 在服务器上存放用户的信息(Cookie) 实例: 工作原理: cookie中的主要内容: Cookie的作用: Cookie的缺陷: Session详解 简介: 工作原理: 作用 Cookie和session的区别 万维网 HTTP超文本传输协议 为了使万维网客户程序与万维网服务器程序之间的交互遵守严格的协议,因此诞生了HTTP超文本传输协议. 特点 位于OSI七层模型的应用层,http是

HTTP 报文结构

HTTP位于五层模型中的应用层,是传输层(代表为TCP协议)的上层协议. 之前我们通过 socket 实现了使用 TCP 协议进行数据收发:手写一个模块化的 TCP 服务端客户端 ,对 TCP 协议的使用有了一个初步的认识. 简单的说,IP 协议 帮助我们的数据包在复杂的网络环境下进行寻址,但并不能保证数据包一定可以到达目的地.因为传输环境或网络可能会非常复杂,我们并不能保证路由算法在所有场景下都可以准确的到达目的地,加上为了避免冗余数据包滞留网络对网络造成破坏,IP 协议中还存在最大跃点数等数

网络协议报文结构与抓包示例

TCP/IP的分层 OSI的分层 以太网帧抓包看到的结构如下图: IP数据报文 以太网帧抓包看到的结构如下图: TCP数据报文 TCP报文抓包看到的结构如下图: UDP数据报文 UDP报文抓包看到的结构如下图:

学习整理——以太帧、ip帧、udp/tcp帧、http报文结构

从最简单的一个http请求开发,根据TCP/IP协议,分开来看每一层的数据帧结构,以及它们是怎样承担起网络服务的. 协议栈 因特网协议栈共有五层: 1.应用层,是网络应用程序及其应用层协议存留的地方.因特网的应用层包括许多协议,常见的有HTTP(它为web文档提供了请求和传送).SMTP(它提供了电子邮件报文的传输)和FTP(它提供了两个端系统之间的文件传送). 2.传输层,负责为信源和信宿提供应用程序进程(包括同一终端上的不同进程)间的数据传输服务,这一层上主要定义了两个传输协议,传输控制协议

TCP报文结构

固定首部长度为20字节,可变部分0~40字节,各字段解释: source port number:源端口,16bits,范围0~65525. target port number:目的端口,16bits,范围同上. sequence number:数据序号,32bits,TCP 连接中传送的数据流中的每一个字节都编上一个序号.序号字段的值则指的是本报文段所发送的数据的第一个字节的序号. acknoledgement number:确认号,32bits,期望收到对方的下一个报文段的数据的第一个字节

HTTP报文结构和内容(转)

HTTP请求报文格式就如下图所示: 1. 请求报文 一个HTTP请求报文由请求行(request line).请求头部(header).空行和请求数据4个部分组成. 大致结构是这样的: <request-line> //请求行 <headers> //首部行 <blank line> //空行 <request-body> //请求体 一个简单的例子: POST /user HTTP/1.1 //请求行 Host: www.user.com Content-

HTTP协议的报文结构

HTTP 有两类报文: (1) 请求报文----从客户向服务器发送请求报文,见图6-12(a). (2) 响应报文----从服务器到客户的回答,见图6-12(b). 由于 HTTP是面向文本的(text-oriented),因此在报文中的每一个字段都是一些ASCII码串,因而每个字段的长度都是不确定的. HTTP请求报文和响应报文都是由三个部分组成.可以看出,这两种报文格式的区别就是开始行不同. (1) 开始行 用于区分是请求报文还是响应报文.在请求报文中的开始行叫做请求行(Request-Li