HTTP(二)HTTP消息结构


HTTP是基于 客户端/服务端(C/S)的架构模型,通过一个可靠的链接来交换信息,是一个无状态的请求/响应协议。

一个HTTP客户端”是一个应用程序(Web浏览器或其他客户端),通过连接到服务器达到向服务器发送一个或多个HTTP的请求的目的。

一个HTTP服务器”同样也是一个应用程序(通常是Web服务,如TomCat服务器),通过接受客户端的请求并向客户端发送HTTP响应数据。
HTTP使用统一资源标识符(Uniform Resource Identifiers, URI)来传输数据和建立连接(TCP)。

HTTP 协议基本特性:

  • HTTP 是无连接的: HTTP客户端,即浏览器发出请求后,客户端等待响应。服务器处理该请求并发送回响应,然后客户端断开连接。客户端和服务器仅在当次请求中互相了解,至于上一次是否有连接或者连接的信息是无从得知的。
  • HTTP是独立于媒体的: 这意味着,只要客户端和服务器都知道如何处理数据内容,任何类型的数据都可以通过HTTP发送。客户端和服务器都需要使用适当的 MIME 类型 指定内容类型。
  • HTTP是无状态的: 如上所述,HTTP 是无连接的,这是 HTTP 是无状态协议的直接结果。服务器和客户端仅在当前请求期间彼此知道,之后他们俩彼此忘记。由于协议的这种性质,客户端和浏览器都无法在整个网页的不同请求之间保留信息。

1. 客户端请求消息(HTTP请求报文)

img

HTTP 会话由 HTTP 客户端(即用户的浏览器)通过用户代理打开,并且连接请求消息被发送到 HTTP 服务器(即Web服务器)。

请求消息也称为“客户端请求”,由以下几行组成:

  • 请求行(Request Line):由请求方法URL(包含参数)和协议版本组成
  • 请求头(Request Header):由多个key-value组成
  • 空行:请求报文使用空行将请求头部和请求数据分离
  • 请求数据(Request Data):Get()方法没有携带数据,Post()方法会携带一个body

img

img

传递响应后,Web 服务器将关闭连接。这种连接称为无状态连接,因为它仅在数据交换期间存在。

1.1 请求行

请求行以一个方法符号开头,以空格分开,后面跟着请求的URI和协议的版本,格式如下:

Method`     `Request-URI`   `HTTP-Version`     `CRLF
  • Method :表示请求方法;
  • Request-URI: 是一个统一资源标识符;
  • HTTP-Version:表示请求的 HTTP 协议版本;
  • CRLF:表示回车和换行(除了作为结尾的 CRLF 外,不允许出现单独的CRLF 字符)。

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

GET : 请求获取Request-URI所标识的资源

POST :在Request-URI所标识的资源后附加新的数据

HEAD :请求获取由Request-URI所标识的资源的响应消息报头

PUT : 请求服务器存储一个资源,并用Request-URI作为其标识

DELETE :请求服务器删除Request-URI所标识的资源

TRACE :请求服务器回送收到的请求信息,主要用于测试或诊断

CONNECT:保留将来使用

OPTIONS :请求查询服务器的性能,或者查询与资源相关的选项和需求

1.2 请求头

HTTP 消息报头包括:普通报头请求报头响应报头实体报头,每一个报头域都是由名字 + : + 空格 + 值组成,消息报头域的名字是大小写无关的。

1.2.1 普通报头

在普通报头中,有少数报头域用于所有的请求和响应消息,但并不用于被传输的实体,只用于传输的消息。

字段名说明
Cache-Control控制缓存行为
Connection连接的管理
Date普通报头域表示消息产生的日期和时间
PragmaHTTP 1.0 中的保温指令控制
1.2.2 请求报头

请求报头允许客户端向服务器端传递请求的附加信息以及客户端自身的信息。常见的请求报头包括:

字段名说明
Accept客户端可处理的媒体类型:Accept:image/gif
Accept-Charset客户端可处理的字符集
Accept-Encoding客户端的编码方式
Accept-Langulage客户端指定的语言类型
Authrizationweb认证信息
Expect期待服务器的特定行为
Host请求报头域主要用于指定被请求资源的 Internet 主机和端口号
User-Agent请求报头域允许客户端将它的操作系统、浏览器和其它属性
Referer请求中的 url 上一跳地址
1.2.3 响应报头

响应报头允许服务器传递不能放在状态行中的附加响应信息,以及关于服务器的信息和对Request-URI所标识的资源进行下一步访问的信息。常见的响应报头包括:

字段名说明
Age资源的创建时间
Location客户端重定向至指定的URL
Retry-After再次发送请求的时机
www-Authenticate服务器对客户端的认证
1.2.4 实体报头

请求和响应消息都可以传送一个实体。一个实体由实体报头域和实体正文组成,但并不是说实体报头域和实体正文要在一起发送,可以只发送实体报头域。实体报头定义了关于实体正文和请求所标识的资源的元信息。

字段名说明
Allow资源所支持的HTTP请求类型
Content-Encoding数据编码方式
Content-Language数据的语言类型
Content-Length实体的内容大小
Content-Location替代对应资源的URI
Content-Type实体报头域用语指明发送给接收者的实体正文的媒体类型
Expires数据过期时间
Last-Modified资源的最后修改时间

2. 服务器响应消息(HTTP响应报文)

HTTP响应也由四个部分组成,分别是:

  • 状态行
  • 消息报头
  • 空行
  • 响应正文

img

img

  • 3
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
zbus核心是一个独立实现的小巧极速的消息队列(MQ),支持持久化与内存队列, 支持单播、广播、组播等多种消息通信模式;在MQ之上zbus完备地支持了RPC服务,RPC支持独立伺服,基于总线两种模式;同时zbus支持代理服务,基于MQ的HttpProxy实现了类Nginx的HTTP代理服务(支持DMZ网络结构),TcpProxy则支持透明的TCP协议代理,可以代理任何基于TCP的协议,比如代理MySQL数据库。 zbus内建分布式高可用(HA),解决单点问题;Java/.NET/JS/C++/PHP等主流语言接入能力为zbus充当SOA服务总线提供跨平台支持; 在设计上,zbus拥抱KISS准则,所有特性浓缩在一个小小的400K左右的jar包中(非常少的依赖);轻量,MQ核心,方便次开发,zbus为微服务架构、系统整合、弹性计算、消息推送等场景提供开箱即用的功能支持。 ZBUS主要特性: 1、高速磁盘/内存MQ,支持单播,广播,组播,订阅多种消息模式 2、RPC开箱即用,支持同步异步,动态类代理 3、多语言客户端,Java/.NET/JavaScript/PHP/Python/C++/Go(服务器) 4、轻量级,发行大小 ~3M, 核心 ~400K, 极少依赖 5、高可用无应用故障单点,分布式高可用的内置支持 6、简洁的协议设计,类HTTP头部扩展协议,长短连接,WebSocket支持 7、内置监控,不断丰富的监控指标 ZBUS以轻量弹性著称,目前已知的应用主要分布在证券金融行业,在各大券商内部使用,因为开源同时也有不少次开发定制的项目存在。 ZBUS可以有多种工作角色: 1、MQ服务器 2、RPC服务器 3、Proxy HTTP/TCP代理 4、服务标准化总线服务器
### 回答1: A-XDR是一种跨平台的数据格式,可以用于在不同操作系统之间传输数据。A-XDR编码器将数据转换为A-XDR格式,而解码器则将其转换回原始数据格式。A-XDR使用ASN.1标记语言来定义数据格式。 在A-XDR编码过程中,数据被拆分为基本数据类型,例如整数、字符串和布尔值,并转换为A-XDR规范的进制格式。这些基本数据类型可以递归组合以创建更复杂的数据结构,例如结构体和数组。 A-XDR消息消息头和消息体组成。消息头包含元数据,例如消息类型和版本信息。消息体包含消息的实际数据,使用A-XDR编码格式进行编码。 在A-XDR解码过程中,进制数据被解码为A-XDR数据类型,然后转换回原始数据格式。在解码过程中,A-XDR编码器和解码器必须具有相同的ASN.1定义,以确保数据可以正确传输。 ### 回答2: 基于A-XDR编码的消息结构是一种用于数据传输的通信协议,它通过定义一种特定的数据帧格式来实现消息的传输和解码。 消息结构一般由头部和数据部分组成。头部包含了一些标识和控制信息,用于指示消息的类型、长度和其他必要的元数据。数据部分则是实际传输的消息内容。 A-XDR编码是一种扩展的外部数据表示编码格式,用于将不同数据类型在网络上进行传输。它支持多种常见数据类型,如整型、字符串、数组和结构体等。A-XDR编码将这些数据类型进行规范化和压缩,以节省带宽并提高传输效率。 基于A-XDR编码的消息结构的设计可以确保消息的可靠传输和解码。发送方在发送消息时,首先将要发送的数据进行A-XDR编码,以确保数据可以在接收方进行解码。接收方在接收到消息时,会根据头部信息解析出数据类型和长度,并进行相应的A-XDR解码操作,将数据还原为原始的数据格式。 通过基于A-XDR编码的消息结构,可以实现不同平台和不同语言之间的数据交换和通信。它具有较高的兼容性和可扩展性,并且能够适应多种网络环境下的数据传输需求。 总之,基于A-XDR编码的消息结构是一种有效的通信协议,可以确保消息的传输和解码的可靠性和高效性,同时也提供了对多种数据类型的支持和扩展能力。它在数据传输和通信领域具有广泛的应用价值。 ### 回答3: 基于A-XDR编码的消息结构是一种通信协议,用于在不同的计算机系统之间传输数据。A-XDR(Abstract eXternal Data Representation)是一种抽象的外部数据表示方法,它定义了数据的编码方式和结构,使得不同的计算机系统可以理解和解析传输的数据。 基于A-XDR编码的消息结构通常由以下几个部分组成: 1. 消息头(Message Header):消息头包含了一些基本的信息,如消息的长度、发送者和接收者的标识等。这些信息可以帮助接收者正确地解析消息。 2. 消息体(Message Body):消息体是实际的数据载荷,它包含了要传输的具体数据。数据的类型和结构由A-XDR编码规定,可以包括整型、浮点型、字符串等不同的数据类型。 3. 消息(Message Footer):消息一般包含了一些校验信息,如校验和或者CRC校验,用于确保传输的数据的完整性和准确性。 在基于A-XDR编码的消息结构中,发送端会按照约定的编码规则对数据进行编码,并按照消息结构组装消息。接收端则需要按照相同的编码规则解析消息,并提取出所需的数据。 基于A-XDR编码的消息结构具有以下优点: 1. 独立性:A-XDR编码是与具体的系统和平台无关的,可以在不同的操作系统和计算机系统之间进行数据传输和共享。 2. 可扩展性:A-XDR编码规则可以根据需要进行扩展和定制,以满足不同应用场景下的数据传输需求。 3. 可靠性:由于消息结构中包含校验信息,可以提供对数据传输过程中的错误和丢失进行检测和纠正的能力,提高数据传输的可靠性和稳定性。 总之,基于A-XDR编码的消息结构是一种灵活、可扩展、可靠的数据传输协议,可以用于不同计算机系统之间的数据交互。该编码规则定义了数据的结构和类型,从而实现了数据的传输和解析。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值