报文流

    HTTP报文在客户端、服务器和代理之间流动。“流入”、“流出”、“上游”、“下游”这些术语用来描述报文方向。

报文流入源端服务器

    流入:流向服务器
    流出:流向用户Agent代理

报文向下游流动

    所有报文都会向下游流动。对请求报文来说,客户端在服务器的上游;而对于响应报文来说,服务器在客户端的上游。
 

报文的组成部分

    三个部分:对报文进行描述的起始行、包含属性的首部块、包含数据的主体(可选)。
    起始行和首部是由行分隔的ASCII文本。每行以一个由两个字符组成的行终止符序列作为结束,包括一个回车符和一个换行符。这个行终止序列可以写作CRLF。

报文的语法

    请求报文的格式:
  1. <method><request-URL><version>
  2. <headers>
  3. <entity-body>
    响应报文的格式:
  1. <version><status><reason-phrase>
  2. <headers>
  3. <entity-body>
PS:一组HTTP首部总是应该以一个空行(仅有CRLF)结束,甚至没有首部和实体的主体部分也应该如此。

起始行

    请求报文:要做些什么;响应报文:发生了什么。

方法

    请求的起始行以方法作为开始

状态码

    状态码告诉客户端发生了什么事情,位于响应行的起始行中。

原因短语

    响应起始行最后。为状态码提供了文本形式的解释。

版本号

    说明了应用程序支持的最高HTTP版本。
    PS:版本号不会当做小数来处理,每个数字当作一个单独的数字来处理。如HTTP/2.22比HTTP/2.3的版本高。

首部

    名/值对的列表(后面具体介绍)

实体的主体部分

    图片、视频、HTML文档等等等等。

版本0.9的报文

    请求中只有方法和请求URL,响应中只包含实体。
 

方法

安全方法

    GET和HEAD都认为是安全方法,不会产生动作,意味着HTTP请求不会再服务器上产生什么结果。

GET方法

    用于请求服务器发送某个资源。

HEAD

    与GET方法类似,但服务器在响应中只返回首部,不会返回实体的主体部分。
    ●  在不获取资源的情况下了解资源的情况
    ●  查看响应中的状态码看看某个对象是否存在
    ●  测试资源是否被修改了

    PUT方法会向服务器写入文档。很多Web服务器要求在执行PUT之前用密码登录。

POST

    起初是用来向服务器输入数据的。通常会用它来支持HTML的表单。
TRACE
    客户端在发送请求时,可能要穿过防火墙、代理、网关或其他一些应用程序,每个中间节点都可能会修改原始的HTTP请求,TRACE方法允许客户端在最终把请求发送给服务器时看看它变成了什么样子。
    缺点:它假定中间应用程序对不同类型请求的处理是相同的。然而很多应用程序会根据方法的不同做出不同的事情,TRACE不提供区分这些方法的机制。

OPTIONS

    请求Web服务器告知其支持的各种功能。

DELETE

    请服务器删除URL指定的资源。但是客户端无法保证删除操作一定被执行。
扩展方法
    没有在HTTP/1.1规范中定义的方法。“对所发送的内容要求严一点,对所接收的内容宽容一些”。
 

状态码

100~199——信息状态码

    100:收到了请求的初始部分,晴客户端继续。

200~299——成功状态码

    200:请求没问题
    204:响应报文中包含若干首部和一个状态行,但没有实体的主体部分
    206:成功执行了一个部分或范围请求

300~399——重定向状态码

    304:Not Modified

400~499——客户端错误状态码

    400:客户端发送了一个错误的请求
    404:Not Found

500~599——服务器错误状态码

    500:服务遇到一个妨碍它为请求提供服务的错误
    502:作为代理或网关使用的服务器收到了一条伪响应
 

首部

●  通用首部
    客户端和服务器都可以使用的通用首部
●  请求首部
●  响应首部
●  实体首部
●  扩展首部

通用首部

通用缓存首部

请求首部

1.Accept首部

    将客户端喜好和能力告知服务器

2.条件请求首部

    为请求加上某些限制

3.安全请求首部

    对请求进行质询/响应认证

4.代理请求首部

响应首部

1.协商首部

2.安全响应首部

实体首部

1.内容首部

2.实体缓存首部

                                                                                                                                           

HTTP学习笔记--HTTP报文的更多相关文章

  1. HTTP学习笔记02-HTTP报文格式之概述

    HTTP学习笔记02-HTTP报文格式之概述 HTTP学习笔记02-HTTP报文格式之概述 HTTP报文格式 报文的语法 起始行 首部 实体部分 学习一个协议感觉最有意思的就是看包结构…在我看来这是唯 ...

  2. 《HTTP权威指南》学习笔记——HTTP报文

    HTTP报文 HTTP:互联网的信使 HTTP报文:信使用来搬东西的包裹 1.报文流 HTTP报文:HTTP应用程序之间发送的数据块 组成:元信息开头(文本形式,描述报文的内容和含义)+可选的数据部分 ...

  3. DPI (深度报文检测) 关于DPI的学习笔记

    关于DPI的学习笔记 先看一下定义 : DPI(Deep Packet Inspection)是一种基于数据包的深度检测技术,针对不同的网络应用层载荷(例如HTTP.DNS等)进行深度检测,通过对报文 ...

  4. HTTP学习笔记(一)报文和连接管理

    对TCP/IP协议簇有些了解的同学们应该都知道.TCP/IP协议通过精简ISO网络7层协议(事实上了解历史渊源的话,TCP/IP协议本来目的并非简化ISO的7层协议.仅仅是因为ISO协议簇制定速度慢于 ...

  5. ASP.Net开发基础温故知新学习笔记

    申明:本文是学习2014版ASP.Net视频教程的学习笔记,仅供本人复习之用,也没有发布到博客园首页. 一.一般处理程序基础 (1)表单提交注意点: ①GET通过URL,POST通过报文体: ②需在H ...

  6. Redis学习笔记7--Redis管道(pipeline)

    redis是一个cs模式的tcp server,使用和http类似的请求响应协议.一个client可以通过一个socket连接发起多个请求命令.每个请求命令发出后client通常会阻塞并等待redis ...

  7. TCP/IP协议学习笔记

    计算机网络基础知识复习汇总:计算机网络基础知识复习 HTTP协议的解析:剖析 HTTP 协议 一个系列的解析文章: TCP/IP详解学习笔记(1)-- 概述 TCP/IP详解学习笔记(2)-- 数据链 ...

  8. memcached学习笔记——存储命令源码分析上篇

    原创文章,转载请标明,谢谢. 上一篇分析过memcached的连接模型,了解memcached是如何高效处理客户端连接,这一篇分析memcached源码中的process_update_command ...

  9. TCP/IP详解学习笔记 这位仁兄写得太好了

      TCP/IP详解学习笔记(1)-基本概念 为什么会有TCP/IP协议 在世界上各地,各种各样的电脑运行着各自不同的操作系统为大家服务,这些电脑在表达同一种信息的时候所使用的方法是千差万别.就好像圣 ...

随机推荐

  1. Tomcat与Web服务器、应用服务器的关系

    Tomcat服务器是一个免费的开放源代码的Web应用服务器.因为Tomcat技术先进.性能稳定且免费,所以深受Java爱好者的喜爱并得到了部分软件开发商的认可,成为目前比较流行的Web应用服务器. A ...

  2. 《Pointers On C》读书笔记(第一章 快速上手)

    1.C语言是一种自由格式的程序设计语言,没有规则要求我们必须如何书写语句.然而,如果我们在编写程序时能够遵守一些约定还是非常值得的,它可以使代码更加容易阅读和修改.另外,预处理命令有较为严格的规则. ...

  3. SQL 时间戳

    一直对时间戳这个概念比较模糊,相信有很多朋友也都会误认为:时间戳是一个时间字段,每次增加数据时,填入当前的时间值.其实这误导了很多朋友. 1.基本概念 时间戳:数据库中自动生成的唯一二进制数字,与时间 ...

  4. 动态更换view类的背景----StateListDrawable的应用

    StateListDrawable可以根据View的不同状态,更换不同的背景 可以应用如EditText,Button等中,以Button为例 系统中默认的按钮被按下的颜色和未点击时的颜色不一样,该种 ...

  5. 自增字段 auto_commit的研究分析

    MySQL自增字段,自增字段计数器在主存储里面,不在硬盘上(This counter is stored only in main memory, not on disk). 1,添加表,设立自增主键 ...

  6. SPOJ 8222 Substrings(后缀自动机)

    [题目链接] http://www.spoj.com/problems/NSUBSTR/ [题目大意] 给一个字符串S,令F(x)表示S的所有长度为x的子串中,出现次数的最大值. 求出所有的F. [题 ...

  7. Java程序猿的JavaScript学习笔记(8——jQuery选择器)

    计划按例如以下顺序完毕这篇笔记: Java程序猿的JavaScript学习笔记(1--理念) Java程序猿的JavaScript学习笔记(2--属性复制和继承) Java程序猿的JavaScript ...

  8. HTML DOM 创建与修改

    修改 HTML 元素 修改 HTML DOM 意味着许多不同的方面: 改变 HTML 内容 改变 CSS 样式 改变 HTML 属性 创建新的 HTML 元素 删除已有的 HTML 元素 改变事件(处 ...

  9. linux之iptable

    转自:http://seanlook.com/2014/02/23/iptables-understand/ 一. netfilter与iptables Netfilter是由Rusty Russel ...

  10. 使用Maven完成自动化打包并部署到Linux服务器下(Tomcat7)

    最近在使用maven,顺便尝试了下tomcat部署.网上找到了很多资料但是都不是最新的,所以贴上比较新的Tomcat7部署代码和配置,方便以后回顾-->测试OK. 1. 首先是配置Tomcat ...