美文网首页想法
详解http报文

详解http报文

作者: StongFang | 来源:发表于2019-09-30 21:39 被阅读0次

摘要

作为一个web开发者,每天都在使用者Http协议,却总是一知半解。本文参看Http RFC7230规范,梳理了http报文部分。

http 报文构成

start-line: 起始行,描述请求或响应的基本信息
*( header-field CRLF ): 头
CRLF
[ message-body ]: 消息body,实际传输的数据

header

起始行

起始行的格式就是
start-line = request-line(请求起始行)/(响应起始行)status-line

在这里插入图片描述

header头 在这里插入图片描述

这些格式就是规则,用来解析的

顺序
理论上头字段的key顺序是无所谓的,但是最佳实践是将控制字段放在前面,比如请求的时候Host,响应的Date,这样可以尽快发现是否需要处理。

重复
除了Set-Cookie这个key,其他都不行,如果发送方发了重复的key,接收方会将它合并,值是以逗号分隔。

字段限制
协议本身对每个头字段没有限制,但是在工程实践中的得出过一些实践,没有通用的限制,和字段具体的语义有关。整体的header大小限制没有定义标准值,有些4K,有些8K。server端检查到header头超过了限制值,处于安全考虑,不会忽略掉。而是会抛出4XX错误。

只有Host字段是请求头中必须带的,其他无所谓。

字段 请求头 响应头 解释
Host 1 0 告诉服务器应该由哪个主机处理
User-Agent 1 0 标识浏览器类型,虽然已经被用烂了,不太可信,但有时候可以用来自定义类型
Accept 1 0 可以接收的body类型 mime type,比如text/html
Accept-Charset 1 0 可以接收的字符集
Accept-Encoding 1 0 可以接收的编码格式
Accept-Language 1 0 可以接收的多语言
Content-Type 1 1 发送的body类型mime type
Content-Encoding 1 1 发送的编码
Content-Language 1 1 发送的语言

这边有完整的分类
https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers

body

header是必须有要有的,但是body就不一定要用。

body就是传输的内容。因为Http是应用层协议,所以除了传输数据,还需要定义传输的数据格式。这些格式定义在header中指定。Content-Length请求或者响应的body长度,必须要带上这个字段,以便对方可以方便的分辨出报文的边界,也就是Body数据何时结束。如果Body太大,需要边计算边传输,不到最后计算结束是无法知道整个Body大小的,这个时候可以使用chunk传输,通过Transfer-Encoding指定,这两个header key是互斥的,只能指定一个,如果指定了两个,接收端优先处理Transfer-Encoding字段。通常body的数据比较多时,都使用chunk来传输,效率比较高。没有了length,怎么知道数据传输结束了,通过一个长度为 0的chunk,对应的分块数据没有内容,来表示body内容结束。

在这里插入图片描述

jetty 干了什么

jetty 是web容器,需要解析Http Request,发送Http Response。具体干了什么下回分析

关注公众号【方丈的寺院】,第一时间收到文章的更新,与方丈一起开始技术修行之路

在这里插入图片描述

参考

https://tools.ietf.org/pdf/rfc7230.pdf
https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers

相关文章

  • http报文详解

    HTTP工作原理 一、报文的组成 HTTP报文大致分为报文首部和报文主体两块,中间用空行来划分。通常,不一定有报文...

  • http报文详解

    http的报文 分为两个报文:请求报文和响应报文一、请求报文分为四部分:请求行、请求头部、空行和请求数据1、请求行...

  • HTTP报文详解

    一、HTTP协议 1.简介 HTTP协议(Hyper Text Transfer Protocol,超文本传输协议...

  • 详解http报文

    摘要 作为一个web开发者,每天都在使用者Http协议,却总是一知半解。本文参看Http RFC7230规范,梳理...

  • 详解http报文(2)-web容器是如何解析http报文的

    摘要 在详解http报文一文中,详细介绍了http报文的文本结构。那么作为服务端,web容器是如何解析http报文...

  • HTTP/1.1报文详解

    本文为《三万长文50+趣图带你领悟web编程的内功心法[https://www.itzhai.com/articl...

  • HTTP协议和socket连接

    HTTP的格式 HTTP请求、响应报文格式 HTTP请求行、请求头、请求体详解 TCP连接、HTTP连接与Sock...

  • HTTP之三:HTTP报文详解

    本文仅供笔者平日学习笔记之用,侵删原文:https://mp.weixin.qq.com/s/wZONAYSlku...

  • HTTP协议报文及Chrome Network常用功能

    HTTP协议报文 Http协议报文分为【Http请求报文】和【Http响应报文】 HTTP请求报文 Http请求报...

  • URL 和 HTTP 报文详解

    URL 的语法 :// : @: / ; ? # 报文的语法 请求报文 响应报文 方法(m...

网友评论

    本文标题:详解http报文

    本文链接:https://www.haomeiwen.com/subject/crbhpctx.html