HTTP报文内的HTTP信息

1、HTTP报文

  用于HTTP协议交互的信息。请求端对应请求报文;响应端(服务端)对应响应报文。

  报文本身由多行数据构成的字符串文本,主要有报文首部和报文主体两块,以(CR+LF)空行来划分,报文主体不是一定要有。  

  

  报文首部包括5部分:请求行/状态行,请求首部字段/响应首部字段,通用首部字段,实体首部字段、其他。

  

  

  请求行:用于请求的方法,请求URL和HTTP版本;

  状态行:响应结果的状态码,原因短语和HTTP版本;

  首部字段:请求和响应的各种条件和属性的各类首部;

  其他:HTTP的RFC中未定义的首部,如cookie等。

2、编码提升传输效率

  2.1、报文主体和实体主体的差异

    报文:HTTP通信中的基本单位,由8位组字节流组成,通过HTTP通信传输;

    实体:作为请求和响应的有效载荷数据(补充项)被传输,组成由实体首部和实体主体;

    通常情况下,报文主体就是实体主体,只有当传输内容中进行编码操作时,实体主体的内容发生变化,才导致它和报文主体产生差异。

  2.2、压缩传输的内容编码

    HTTP协议中有一种被称为内容编码的功能,可以通过指定应用在实体内容上的编码格式,并保持实体原样压缩,内容编码后有客户端接收并负责解码。

   具体理解参见博客:https://www.cnblogs.com/tlxf-blog/p/11051976.html

·    

  2.3分块发送的分块传输编码

    HTTP通信中,请求的编码实体资源上尚未全部传输完成之前,浏览器无法显示请求界面。在传输大量数据时,通过把数据分割成多块,能够让浏览器逐步显示页面。这种把实体主体分块的功能被称为分块传输编码。

    

    分块传输编码会把实体主体分为多个部分,每一块都会用十六进制来标记块的大小,而实体主体的最后一块会使用“0(CR+LF)”来标记。使用分块传输编码的实体主体会由接收的客户端负责解码,回复到编码前的实体主体。

3、发送多种数据的多部分对象集合

   邮件发送使用了MIME(Multipurpose Internet Mail Extensions,多用途因特网邮件扩展)机制,可以处理多个不同类型的数据。

  

  具体报文信息:

  

   

  

  HTTP报文中使用多部分对象集合时,需要在首部字段里加上Content-type。使用bounddary字符串指定的各个实体的起始行前插入“--”标记,如—AaB03x、--THIS_STRING_SEPARATES,在多部分对象集合的字符串最后插入“--”标记,如—AaB03x--,--THIS_STRING_SEPARATES--。

4、获取部分内容的范围请求

  背景:以前网络带宽不高,下载较大资源时很吃力,下载过程中遇到网络中断,那就必须从头开始下载,未解决此问题,需要一种恢复机制,可以从之前的中断处恢复下载。

  解决:为实现改功能(指定下载实体范围),HTTP包括了范围请求。

  

   执行范围请求时,会用到首部字段Range来指定资源的byte范围。

   形式:

    (1)5001~10000

      Range:byte=5001-10000

     (2)从5001字节之后全部

      Range:byte=5001-

    (3)从一开始到3000字节和5000~7000字节的多重范围

      Range:byte=-3000,5000~7000

   针对范围请求:响应会在首部字段Content-type标明multipart/byteranges后返回响应报文;但是当服务端无法响应范围请求时,则会返回状态吗200ok和完整的实体内容。

5、内容协商

  客户端和服务端就响应资源内容进行交涉,然后提供给客户端最为合适的资源。内容协商包括响应资源的语言、字符集和编码方式等作为判断的基准。

  请求首部字段中内容协商字段包括; Accept;Accept-Charset: Accept-Encoding; Accept-Language: Content-Language等。

  

  协商技术:

  (1)服务器驱动协商:服务端进行内容协商,以请求字段作为参考,在服务端自动处理,但对于用户来说是以浏览器发送的信息作为判定的依据,但并不一定能筛选出最优内容。

  (2)客户端驱动协商:用户从浏览器显示的可选列表手动选择,还可以使用js脚本在页面上自动进行上述选择,如按照os类型或浏览器类型,自行切换PC版页面或手机版页面。

  (3)透明协商:服务端和客户端结合,各自进行内容协商的一种方式。

原文地址:https://www.cnblogs.com/tlxf-blog/p/11051955.html

时间: 2024-12-21 14:54:04

HTTP报文内的HTTP信息的相关文章

(第三章,第四章)http报文内的http信息,返回结果的http状态码

第三章 http报文内的http信息 用于http协议交互的信息被称为http报文,包括请求报文和响应报文. 1.编码提升传输速率,在传输时编码能有效的处理大量的访问请求.但是编码的操作是计算机完成的,会消耗更多的cpu资源. 2.压缩传输的内容编码: 内容编码后的实体由客户端接受并负责解码. 3.分割发送的分块传输编码 在传输大量数据时,通过数据分割成多块,能够让浏览器逐步显示页面. 4.获取部分内容的范围请求: 可以处理大文件突然下载中断的问题. 5.内容协商返回最合适的内容 比如根据浏览器

HTTP报文内的HTTP信息之编码提升传输速率

HTTP在传输数据时可以按照数据原貌直接传输,但也可以在传输过程中通过编码提升传输速率.通过在传输时编码,能有效地处理大量的访问请求.但是,编码的操作需要计算机来完成,因此会消耗更多的CPU等资源. 报文主体和实体主体的差异 报文(message):是HTTP通信中的基本单位,由8位组字节流组成,通过HTTP通信传输. 实体(entity):作为请求或响应的有效载荷数据被传输,其内容由实体首部和实体主体组成. HTTP报文的主体用于传输请求或响应的实体主体.通常,报文主体等于实体主体.只有当传输

HTTP报文内的HTTP信息之内容协商返回最合适的内容

同一个Web网站有可能存在着多份相同内容的页面.比如英语版和中文版的Web页面,它们内容上虽相同,但使用语言却不同.当浏览器的默认语言为英语或中文,访问相同URL的Web页面时,则会显示对应的英语版或中文版的Web页面.这样的机制称为内容协商(Content Negotiation). 内容协商机制是指客户端和服务器端就响应的资源内容进行交涉,然后提供给客户端最为适合的资源.内容协商会以响应资源的语言,字符集,编码方式等作为判断的基准. 包含在请求报文中的某些首部字段(如下)就是判断的基准(这些

HTTP知识普及系列:HTTP报文内的HTTP信息

HTTP报文是用于HTTP协议交互的信息. 请求报文和响应报文的结构: 请求行 状态行 首部字段 通用首部 请求首部 响应首部 实体首部 其他 常用内容编码的几种方式 gzip(GNU zip) compress (UNIX系统的标准压缩) deflate (zlib) identity (不进行编码) 把实体主体分块的功能成为分块传输编码,每一块都会用十六进制来标记块的大小,实体主体的最后一块会使用“0(CR+LF)” 获取部分内容的范围请求,要实现该功能需要指定下载的实体范围.如果服务器无法

HTTP报文内的HTTP信息之获取部分内容的范围请求

以前,用户不能使用现在这种高速的带宽访问互联网.当时,下载一个尺寸稍大的图片或文件就已经很吃力了.如果下载过程中遇到网络中断的情况,那就必须重头开始.为了解决上述问题,需要一种可恢复的机制.所谓恢复是指能从之前下载中断处恢复下载. 要实现这功能需要指定下载的实体范围.像这样,指定范围发送的请求叫做范围请求(Range Request).对一份10000字节大小的资源,如果使用范围请求,可以只请求5001-10000字节内的资源. 执行范围请求时,会用到首部字段Range来指定资源的byte范围.

【内网信息收集】之探测域内存活主机信息

利用NetBIOS快速探测内网 NetBIOS简介: NetBIOS,为网上基本输入输出系统(英语:Network Basic Input/Output System)的缩写,它提供了OSI模型中的会话层服务,让在不同计算机上运行的不同程序,可以在局域网中,互相连线,以及分享数据.严格来说,NetBIOS不是一种网上协议,而是应用程序接口(API). nbtscan使用: 可扫描本地或远程TCP / IP网络上的打开的NETBIOS名称服务器,但只能用于局域网. 官网链接:http://www.

通向高可扩展性之路(推特篇) ---- 一个推特用来支撑1亿5千万活跃用户、30万QPS、22MB每秒Firehose、以及5秒内推送信息的架构

原文链接:http://highscalability.com/blog/2013/7/8/the-architecture-twitter-uses-to-deal-with-150m-active-users.html 写于2013年7月8日,译文如下: “可以解决推特所面临的挑战”的玩具般的方案是一个常用在扩展性上的比喻.每个人都觉得推特很容易实现.稍微具备一些系统架构的知识我们就可以构建一个推特,就这么简单.但是根据推特软件开发部门的VP Raffi Krikorian在 Timelin

内网渗透信息收集

获取用户凭证 cmdkey /list 信息收集 gpresult /r 密码文件: unattended.xml 是无人值守是安装系统的文件,一般保存local administrators 密码 常见目录 %windir%\panther\unattend %windir%\panther

oralce sql 创建指定时间段内的日历信息

-- Create table create table TEMP_CALENDAR ( MONTH VARCHAR2(6), W_7   VARCHAR2(2), W_1   VARCHAR2(2), W_2   VARCHAR2(2), W_3   VARCHAR2(2), W_4   VARCHAR2(2), W_5   VARCHAR2(2), W_6   VARCHAR2(2), WEEK  VARCHAR2(20) ) ; -- Add comments to the table c