首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

为什么HTTP标准不在每条消息的开头加上“消息大小”?

HTTP标准没有在每条消息的开头加上"消息大小"是因为以下几个原因:

  1. 灵活性:HTTP是一种无状态的协议,它允许客户端和服务器之间的交互是独立的。在每条消息的开头加上消息大小会限制了消息的灵活性,使得消息的大小必须在发送之前就确定下来。这样会导致在传输过程中无法动态调整消息的大小,从而影响了协议的灵活性和可扩展性。
  2. 可变长度:HTTP消息的长度是可变的,它可以根据实际的内容进行调整。在每条消息的开头加上消息大小会导致消息的长度固定,无法适应不同大小的消息。这样会浪费网络带宽和资源,尤其是对于小型消息来说。
  3. 分块传输:HTTP支持分块传输编码(Chunked Transfer Encoding),这种传输方式允许服务器将消息分成多个块进行传输,而不需要事先知道整个消息的大小。这种方式可以提高传输效率,减少延迟,并且适用于动态生成内容的情况。
  4. 其他协议支持:HTTP是基于TCP/IP协议的应用层协议,而TCP/IP协议本身已经提供了可靠的传输和流量控制机制。在TCP/IP协议中,每个数据包都有自己的大小信息,因此在HTTP层再次添加消息大小信息会造成冗余。

综上所述,HTTP标准没有在每条消息的开头加上"消息大小"是为了保持协议的灵活性、可变长度、支持分块传输以及避免冗余。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

journalctl 日志问题

以 “System” 开头选项仅在 /var/log/journal 目录确实存在且可写时才有意义。 但以 “Runtime” 开头选项永远有意义。...TTYPath= 指定 ForwardToConsole=yes 时所使用控制台TTY, 默认值是 /dev/console LineMax= 在将日志流转化为日志记录时,每条日志记录最大允许长度(...如果将单元标准输出(STDOUT)/标准错误(STDERR)通过流套接字连接到日志中, 那么将会以换行符(“\n“, ASCII 10)与NUL字符(“\0“, ASCII 0)作为分割符, 把日志流切分成一条条独立日志记录...此选项值以字节为单位,同时也可以在数字末尾加上 K, M, G, T 后缀(以1024为基准)。 默认值 48K 是一个足够大并且也能保持与传统日志传输协议兼容值。...注意,不能设为小于 79 值(将被自动提升到79)。 四、修改存储目录 http://baijiahao.baidu.com/s?

68210

物联网神经系统

MQTT协议第一个版本由Stanford-Clark,IBM和Arlen Nipper编写。 为什么是MQTT?...数据类型不可知 · 保留消息 · 清洁会话和持久连接 · 遗嘱(LWT) MQTT与HTTP MQTT http 设计 以数据为中心 以文件为中心 模型 发布/订阅 请求/答复...复杂性 简单命令 复杂 消息大小 小,压缩二进制头大小为2字节 更大,因为标题是文本格式 服务水平 3个QoS级别 所有消息服务级别相同 分布 一对多 一对一 MQTT拓扑示例:...服务质量水平 QoS值决定每条消息传递方式,并且它是为发送每条消息设置强制值。...这就是为什么议定书中只有少数安全机制原因。但是许多MQTT实现都使用了SSL/TLS之类安全标准。 MQTT中安全性分为多层。

99110
  • 既然IP层会分片,为什么TCP层也还要分段?

    相同,同时为了分片后能在接收端把切片组装起来,还需要在分片后IP包里加上各种信息。...可以看到这上面有好几个MTU,可以简单理解为每个网卡处理能力不同,所以对应MTU也不同。当然这个值是可以修改,但不在今天讨论范畴内,不再展开。...应用通过TCP正常发送消息,传输层TCP分段后,到网络层加上IP头,DF置为1,消息再到更底层执行发送 此时链路上有台路由器由于各种原因MTU变小了 IP消息到这台路由器了,路由器发现消息长度大于自己...IP分片是不得已行为,尽量不在IP层分片,尤其是链路上中间设备IP分片。因此,在IPv6中已经禁止中间节点设备对IP报文进行分片,分片只能在链路开头和最末尾两端进行。...这种情况下,PMTU发现通过浪费N次发送机会来换取PMTU,TCP因为有重传可以保证可靠性,在UDP就相当于消息直接丢了。 文章推荐: 动图图解!GMP模型里为什么要有P?

    2.5K41

    SSE技术详解:使用 HTTP 做服务端数据推送应用技术

    EventSource 使用标准事件监听器方式,只需要在对象上添加相应事件处理方法即可。EventSource 提供了三个标准事件   如之前所述,服务器端可以返回自定义类型事件。...事件流是一个简单文本流,仅支持 UTF-8 格式编码。每条消息以一个空行作为分隔符。   在规范中为消息定义了 4 个字段:   event 消息事件类型。...一个很有意思地方是,规范中规定以冒号开头消息都会被当作注释,一条普通注释(:\n\n)对于服务器来说只占 5 个字符,但是发送到客户端上时候不会触发任何事件,这对客户端来说是非常友好。...所以为了保证数据可靠,我们需要在每条消息上带上 id 字段。 2、减少开销   在 SSE 草案中提到,"text/event-stream" MIME 类型传输应当在静置 15 秒后自动断开。...加上所有浏览器都支持,是一个不错 SSE 替代方案。   文章介绍了 SSE 用法及使用过程中一些技巧。对比 WebSocket,SSE 在开发时间和成本上占有较大优势。

    6.2K31

    【高级系列】EventSource专题

    EventSource("ssedemo.php"); 注:从Firefox 11开始,EventSource开始支持CORS.虽然该特性目前并不是标准, 但很快会 成为标准.         ...);       }          ob_flush();       flush();       sleep(1); }         上面的代码会让服务器每隔一秒生成一个事件流并返回,其中每条消息事件类型为...UTF-8格式编码.每条消息后面都由一个空行作为分隔符.以冒号开头行为注释行,会被忽略.         ...每条消息是由多个字段组成,每个字段由字段名,一个冒号,以及字段值组成. 3.3.1 字段         规范中规定了下面这些字段: event         事件类型.如果指定了该字段,则在客户端接收到该条消息时...注: 如果一行文本中不包含冒号,则整行文本会被解析成为字段名,其字段值为空. 3.3.2 例子 3.3.2.1 未命名事件         下面的例子中发送了三条消息,第一条仅仅是个注释,因为它以冒号开头

    53530

    最常见Kafka面试题及答案

    传统消息传递方法包括两种: 排队:在队列中,一组用户可以从服务器中读取消息每条消息都发送给其中一个人。 发布-订阅:在这个模型中,消息被广播给所有的用户。...Kafka服务器可以接收到消息最大大小由参数message.max.bytes决定,010版本默认值是1000012,可以配置为broker级别或者topic级别。...如果用户位于与broker不同数据中心,则可能需要调优套接口缓冲区大小,以对长网络延迟进行摊销。 9、解释一下,在数据制作过程中,你如何能从Kafka得到准确信息?...11、Kafka为什么需要复制? Kafka信息复制确保了任何已发布消息不会丢失,并且可以在机器错误、程序错误或更常见些软件升级中使用。 12、如果副本在ISR中停留了很长时间表明什么?...13、请说明如果首选副本不在ISR中会发生什么? 如果首选副本不在ISR中,控制器将无法将leadership转移到首选副本。 14、有可能在生产后发生消息偏移吗?

    1.6K30

    为什么最近每份 Android 简历都说 “熟悉 MQTT 协议”?

    HTTPS 加密 应用层对有效载荷加密 不在应用层加密 消息大小 较小 较大 1、MQTT 协议基于传输层 TCP 协议,而 HTTP 可以基于 TCP 或 UDP(HTTP/3); 2、MQTT...加密,而 HTTPS 协议不在应用层加密,在传输数据前不会加密数据; 6、MQTT 消息头较小,而 HTTP 消息头较大(HTTP/2 有头部压缩); 1.5 为什么 MQTT 协议适合物联网和移动应用场景...随着 HTTP/2 成为标准,对 websockets 需求可能会下降; MQTT 是基于发布订阅模型协议,因其带宽消耗小而被广泛应用于物联网协议。...除此之外,每条消息还会包含一个 Payload,Payload 是真正发布应用消息,载荷内容和格式由应用层决定,MQTT 协议层不关心。...需要注意:DUP 标志只对 OoS > 0 消息有效,所有 QoS = 0 消息 DUP 标志必须设置为 0; TCP 协议有报文重传机制,为什么 MQTT 协议还有消息重传机制?

    4K40

    直播评论系统分析设计

    直播评论系统是电商系统一个常用功能,即在发布新品时候,为了吸引用户参与和营造互动气氛,让参与每个人都可以发消息,发完后每个人都可以即时看到新消息,原型和 http://live.oneplusbbs.com...; B、要防刷屏,即防止某个用户单位时间发送太多评论,所以要做下频率限制; C、图片保存,我们可以算一下带宽,如果一张图片大小是5K,同时在线20W人,则一条消息需要约1G带宽,建议将图片放入CDN...2、接收消息 20W人在线,假如1秒钟会发送1000条消息每条消息平均长度是500字节,则需要100G带宽,这估计也不是我等私有云机房所能承受。...消息重复接收问题 消息推送系统很难保证消息不会重复,所以前端接收新消息时需要和已经接到消息ID进行对比,如存在则过滤掉;推送给第三方时每条消息都要加上消息ID,消息ID可用UUID生成,简单实用...可以有几个方案: 1、多选一家消息推送服务商; 2、兜底方案,如果所有第三方服务都挂了,可以让前端使用轮询方案,但轮询间隔需要后端接口给出,可以在后台配置,根据压力大小做调整。

    1.3K30

    14个最常见Kafka面试题及答案

    传统消息传递方法包括两种:   ·排队:在队列中,一组用户可以从服务器中读取消息每条消息都发送给其中一个人。   ·发布-订阅:在这个模型中,消息被广播给所有的用户。...Kafka服务器可以接收到消息最大大小是1000000字节。 6、解释KafkaZookeeper是什么?我们可以在没有Zookeeper情况下使用Kafka吗?   ...8、解释如何提高远程用户吞吐量?   如果用户位于与broker不同数据中心,则可能需要调优套接口缓冲区大小,以对长网络延迟进行摊销。...11、Kafka为什么需要复制?   Kafka信息复制确保了任何已发布消息不会丢失,并且可以在机器错误、程序错误或更常见些软件升级中使用。...13、请说明如果首选副本不在ISR中会发生什么?   如果首选副本不在ISR中,控制器将无法将leadership转移到首选副本。 14、有可能在生产后发生消息偏移吗?

    7.8K10

    【总结】HTML5之EventSource专题

    虽然该特性目前并不是标准, 但很快会 成为标准....counter = rand(1, 10); } ob_flush(); flush(); sleep(1); } 上面的代码会让服务器每隔一秒生成一个事件流并返回,其中每条消息事件类型为...- 8格式编码.每条消息后面都由一个空行作为分隔符.以冒号开头行为注释行,会被忽略....每条消息是由多个字段组成,每个字段由字段名,一个冒号,以及字段值组成. 3.3.1字段 规范中规定了下面这些字段: event 事件类型.如果指定了该字段,则在客户端接收到该条消息时,会在当前EventSource...注: 如果一行文本中不包含冒号,则整行文本会被解析成为字段名,其字段值为空. 3.3.2例子 3.3.2.1未命名事件 下面的例子中发送了三条消息,第一条仅仅是个注释,因为它以冒号开头.第二条消息只包含了一个

    2.8K20

    史上最通俗,彻底搞懂字符乱码问题本质

    1、引言 IM等社交应用开发工作中,乱码问题也很常见,比如: 1)IM聊天消息Emoji表情为什么发给后端后MySQL数据库里会乱码; 2)文件名中带有中文大文件聊天消息发送后,对方看到文名是乱码...《通俗易懂:基于集群移动端IM接入层负载均衡方案分享》 《浅谈移动端IM多点登陆和消息漫游原理》 《IM开发基础知识补课(一):正确理解前置HTTP SSO单点登陆接口原理》 《IM开发基础知识补课...《IM开发基础知识补课(三):快速理解服务端数据库读写分离原理及实践建议》 《IM开发基础知识补课(四):正确理解HTTP短连接中Cookie、Session和Token》 《IM群聊消息已读回执功能该怎么实现...简单说:字符集就规定了某个文字对应二进制数字存放方式(编码)和某串二进制数值代表了哪个文字(解码)转换关系。 那么为什么会有那么多字符集标准呢? 这个问题实际非常容易回答。...110之后所有部分(5个bit)加上后一个字节除10外部分(6个bit)代表在Unicode中序号。

    2K10

    Redis专题(四) ——Redis排序、消息队列、优化存储

    end],对列表、集合和有序集合进行排序,当加上alpha参数后,则可以按照字典顺序排序,加上desc则倒序排序,加上limit则支持分页。...2、关键参数 by参数:by key:*->val,可以指定排序标准,可以自己传入一个list,也可以指定某个列进行排序。...4、批量订阅模式 命令psubscribe,支持blob模式,即类似正则模式,如psubscribechannel.*,则订阅所有channel开头频道。...当执行多个命令时,每条命令需要执行完毕有返回时候,下一条才会执行。...当需要一起执行时,redis底层通信对管道提供了支持,当一组命令中每条命令都不依赖于前一条时,可以一起发送请求,一起返回,以减少网络通信次数。

    2.8K80

    在恋爱游戏里跟你实时聊天“AI”,其实可能是一位抠脚大汉

    其中有曾经是童星学生、时装模特、图书管理员、女演员、白领甚至姐妹,性格呢也有活泼、软萌、独立大小姐脾气…… ?...个个都挺可爱 可是很快,玩家就发现,这个和官方宣传有点不一样: 这些妹妹都好高冷,回复好慢好慢,比起宣称实时回复,让你等个半小时都不在话下。...种种迹象表明:人工装“智能回复” 不少玩家难受得直跺脚同时,突然醒悟: 人工回复人手不够了才要限流吧。为什么她总是回复那么慢?为什么她晚上从不回复我?为什么她叫错我名字?...而“墙倒众人推”,有玩家还扒出了招聘网上这样一则招聘信息: 所在岗位主要工作是在一款恋爱游戏中按照角色设定和玩家聊天,每天回复300-1000条信息,每条信息约15-30 字,工资按字数计算。...参考链接: [1]http://himasoku.com/archives/52153909.html [2]https://rootritsu.hatenablog.com/entry/pluslinks4

    61850

    扫盲消息队列 | 消息中间件 | Kafka

    Web应用程序毫无疑问有大量代码执行HTTP请求/响应周期一部分。这适用于更快任务耗费数百毫秒内或更少。...Topic每条发布到MQ集群消息都有一个类别,这个类别被称为topic,可以理解成一类消息名字。所有的消息都以topic作为单位进行归类。...image-20200420194052328 为什么使用消息队列 开头不是说了,排队能解决一个问题,就是削峰,意思就是流量洪峰来了,收银员结账速度依旧是一样,不会被累死,还有两个重要概念就是解耦、...ZeroMQ:扩展性好,开发比较灵活,采用C语言实现,实际上他只是一个socket库重新封装,如果我们做为消息队列使用,需要开发大量代码 Amazon SQS 关于消息队列常见面试题 为什么使用消息队列...消息队列有什么优点和缺点? 那为什么Kafka吞吐量远高于其他同类中间件? 比较重要关键字吗?比如Producer,Consumer,Partition,Broker,你都是怎么理解

    1.9K11

    PSR-7 HTTP 消息接口规范

    从这里开始,当描述这些接口时,命名空间 Psr\Http\Message 将会被省略。 HTTP 请求头信息 大小写不敏感字段名字 HTTP 消息包含大小写不敏感头信息。...因为一些非标准 HTTP 应用程序,可能会依赖于大小写敏感头信息,所以在此我们把主宰 HTTP 大小权利开放出来,以适用不同场景。...有效 URL 不在 HTTP 消息中传输,但它用于确定发出请求协议(Http 或 Https)、端口和主机名。 有效 URL 由 UriInterface 接口表示。...120 * 121 * 原有的报头信息会被保留,新值会作为增量加上,如果报头信息不存在的话,字段会被加上。...215 * 假设 HTTP 路径不以斜线开头,对应该程序或开发人员来说,相对于一些已知路径。

    1.1K70

    如何把Kafka消息时延秒降10倍

    用户在页面点击从而产生一个HTTP请求,这个请求发送到业务生产进程,就会启动一个投递线程(Deliver Thread)调用KafkaSDK接口,并发送3条消息到DMS(分布式消息服务),每条消息大小...当消息达到DMS后,业务消费进程调用Kafka消费接口把消息取出来,然后将每条消息放到一个响应线程(Response Thread)中进行处理,响应线程处理完后,通过HTTP请求通知投递线程,投递线程收到响应后返回回复响应...100并发访问时延500ms,未达成用户业务要求 客户提出了明确要求:每1个两核ECS要能够支撑并发访问量100,每条消息端到端时延范围是几十毫秒,即从生产者发送开始到接收到消费者响应时间。...那么问题来了,在并发访问量相同条件下,DMSKafka 队列与Pod区自建原生Kafka相比为什么时延会有这么大差异呢?我们DMS架构师 Mr....Peng发现,即使在相同并发压力下,华为云现网时延比类生产差很多。Mr.Peng意识到,现在有2个问题需要分析:为什么华为云现网时延会比类生产差?

    79161

    activeMQproducer发送和consumer消费

    producerWindowSize producerWindow主要是针对异步发送消息时,控制允许能够积压消息累计大小,这些消息没有得到brokerack,在得到ack之后会减去相应消息size...DUPS_OK_ACKNOWLEDGE,则所有的消息先放到deliveredMessages链表开头 如果当前是 事务类型会话,还需要特殊操作,判断transactedIndividualAck,如果为...批量应答, client端在消费消息后暂且不发送ACK,而是把它缓存下来(pendingACK),等到这 些消息条数达到一定阀值时,session.commit指令把它们全部确认;这比对每条消息都逐个确认...//会话是事务型,就不在这里处理,是在commit时候进行批量ack } else if (isAutoAcknowledgeEach()) { //...没有开启的话就都是马上自动发送标准ack,回传单条数据 topic延时确认(DUPS_OK_ACKNOWLEDGE):统一都是批量确认,达到设置阀值之后自动批量回传ack 手动确认方式,类似session.commit

    44610

    kafka详细教程_kafka使用教程

    JMS(Java Messaging Service)是Java平台上有关面向消息中间件(MOM)技术规范,它便于消息系统中Java应用程序进行消息交换,并且通过提供标准产生、发送、接收消息接口简化企业应用开发...partition中每条消息都会被分配一个有序 id(offset)。 3、为数据文件建索引:稀疏存储,每隔一定字节数据建立一条索引。...9、MessageSet结构: MessageSet:用来组合多条Message,它在每条Message基础上加上了Offset和MessageSize MessageSet => [Offset...MessageSize int32 表示这条Message大小。 Message – 表示这条Message具体内容,其格式见上一小节。...Message/MessageSet定义是业务层结构,类似于网络7层模型中HTTP层。

    2.1K30
    领券