第二章、简单的HTTP协议
HTTP协议:
HTTP协议用于客户端(请求资源的一端)和服务器端(响应回复提供资源的一端)的通信,是一种无状态协议
HTTP1.1默认TCP持久连接,管线化发送(并行发送多个请求)

=======================客户端发送请求报文===========================
GET /index.html /HTTP/1.1                                                 ----表示请求访问某台HTTP服务器上的/index.html页面资源,1.1是版本号
Host : hackr.jp                                                                     -----指明了请求访问的资源对象/请求URI(request-URI)
<请求报文一般是由请求方法、请求URI、协议版本、可选的请求首部字段和请求内容组成>
POST + /form/entry + HTTP/1.1                                        ---方法+URI+协议版本
Host: hackr:jp                                                                   ---请求首部字段
Connection: keep-alive                                                        ---请求首部字段
Content-Type: applocation/x-www-form-urlencoded           ---请求首部字段
Content-Length: 16                                                              ---请求首部字段
name=ueno&age =37                 ---内容实体

========================服务器发送响应报文===============================
HTTP /1.1 + 200 + OK                                                                 ---协议版本+状态码+状态码的原因短语
Date: Tue, 10 Jul 2012 06:50:15 GMT                                       ---响应首部字段---显示了创建响应的日期
Content-Length: 362                                                                   ---响应首部字段
Content-Type: text/html                                                               ---响应首部字段
<空行>
<html>                                                                                         ---主体
…                                                                                                   ---主体

==========================HTTP方法==================================
GET:请求访问已被URL识别的资源呢
POST:传输实体的主体
PUT:传输文件
DELETE:删除文件
HEAD:获取报文首部
OPTIONS:询问支持的方法
TRACE:追踪路径---Max-Forwards=x,每经过一个服务器端就减一,x=0是停止
CONNECT:要求用隧道协议连接代理【CONNECT 代理服务器名:端口号 HTTP版本】
LINK:建立与资源之间的联系(1.1废弃)
UNLINK:断开连接关系(1.1废弃)
=====================================================================

cookie技术:解决HTTP的无状态协议
根据服务器发送的响应报文中的Set-Cookie的首部字段信息停止客户端保存cookie,当下次客户端再往该服务器发送请求时,客户端会自动在请求报文中加入cookie值再发送出去,服务器接收后检查是哪个客户端的连接请求,对比服务器上的记录可以得到之前的状态信息。

第三章、HTTP报文内的HTTP信息
HTTP报文:
用于HTTP协议交互的信息叫做HTTP报文(请求报文+响应报文),它是由多行数据构成的字符串文本,大致分为报文首部和报文主体两个部分,两者由一行空行(回车/CR+换行/LF)分隔,通常并不一定要有报文主体。

HTTP报文结构:
---请求报文:请求行+请求首部字段+通用首部字段+实体首部字段+其他+空行+报文主体
---响应报文:状态行+响应首部字段+通用首部字段+实体首部字段+其他+空行+报文主体
请求行:用于请求的方法:GET /HTTP/1.1
状态行:相应结果的HTTP版本,状态码和原因短语:HTTP/1.1 200 OK
首部字段:表示请求和响应的各种条件和属性的各类首部。分类:请求/响应/通用/实体首部字段
其他:包含HTTP的RFC例未定义的首部字段,如cookie

报文主体和实体主体:(报文实体是箱子,实体主体是货物)
通常报文主体==实体主体,只有当实体主体在传输过程中进行编码操作,实体的内容发生变化时两者才不相等

内容编码---压缩传输
内容编码指明应用在负责解码内容上的编码格式,并保持实体信息原样压缩,编码之后的实体由客户端接收并解码
常用的内容编码为以下四种:
gzip(GNU zip) ; compress(UNIX 系统的标准压缩) ; deflate(zlib) ; identity(不进行编码)

分块传输编码---分割发送的编码
把实体主体分块的功能称为分块传输编码,确保在HTTP通信过程中,传播的数据过大时浏览器能够逐步显示页面。
分割后的每一块数据会用十六进制来表示大小,实体的最后一块数据会使用0(CR+LF)来标记结尾。
分割后的数据块最后会由接收到的客户端进行解码恢复成原来的实体主体。

多部分对象集合---容纳多份不同类型的数据
包含如下对象:multipart/form-data ; multipart/byteranges 。
在HTTP报文中使用多部分对象集合时要在首部字段中加上Content-type。

范围请求---获取部分内容
范围请求服务于HTTP可恢复的机制,,所谓恢复是指从之前下载的中断处恢复下载。
要实现该功能需要指定下载的实体范围:
    Range: bytes=5001-10000//表示5001到10000字节
    Range: bytes=5001-//表示5001字节之后全部的
    Range: bytes=0-3000,5000-7000//表示一开始到3000字节和5000到7000字节的多重范围
---响应---
针对范围请求,响应会返回状态码为206 Partial Content的响应报文,对于多重范围,响应会在首部字段Content-Type标明multipart/byteranges后返回响应报文。
若服务器端无法响应范围请求,则会返回状态码200 OK和完整的实体内容??

内容协商---返回最合适的内容,以语言、字符集、编码方式等为基准判断合适的响应的资源
类型*3:服务器驱动协商(服务器自行处理);客户端驱动协商(用户自行选择);透明协商(前两个的结合体)

《图解HTTP》阅读笔记--第二章 简单的HTTP协议--第三章 HTTP报文信息的更多相关文章

  1. CSAPP阅读笔记-汇编语言初探(控制类指令)-来自第三章3.6的笔记-P135-P163

    1.正溢出与负溢出: 首先,一个正数与一个负数相加,不可能溢出,因为结果的绝对值一定小于两个加数的绝对值,既然两个加数能合理表示出来,结果一定也能合理表示出来. 其次,正溢出是由于两个很大的正数相加, ...

  2. [计算机网络]图解HTTP阅读笔记

    总述 书的定位:一本十分浅显的HTTP书籍,主要介绍了HTTP与HTTPS.适合入门了解,很多地方都是蜻蜓点水,但稍微深入的地方能让人了解重点在哪,后面应该有针对性地阅读深入书籍. 主要内容:介绍了T ...

  3. 图解HTTP——阅读笔记

    基础部分 第1章 了解Web及网络基础 重点了解HTTP协议在网络中的作用,扮演了什么角色,以及网络传输中相关的一些角色. 3项重要的web构建技术:HTML,URL,HTTP HTTP协议位于应用层 ...

  4. 第二章 简单的HTTP协议

    第二章 简单的HTTP协议 针对HTTP协议结构进行讲解 1.通过请求和响应的交换来达成通信目的 应用HTTP协议时,必定是一端担任客户端角色,另一端担任服务器端角色. [请求报文]是由请求方法.UR ...

  5. 深入理解 C 指针阅读笔记 -- 第二章

    Chapter2.h #ifndef __CHAPTER_2_ #define __CHAPTER_2_ /*<深入理解C指针>学习笔记 -- 第二章*/ /* 内存泄露的两种形式 1.忘 ...

  6. 【图解HTTP】第二章 简单的http协议

    简单的HTTP协议 针对HTTP协议结构进行讲解,主要使用HTTP/1.1版本. HTTP协议用于客户端和服务器端之间的通信 通过请求和响应的交换达成通信(从客户端开始建立通信,服务器端在没有接收到请 ...

  7. 图解Http阅读笔记(二)

    简单的HTTP协议 HTTP是一种不保存状态,即无状态(stateless)协议.HTTP 协议自身不对请求和响应之间的通信状态进行保存.也就是说在 HTTP 这个级别,协议对于发送过的请求或响应都不 ...

  8. 图解HTTP阅读笔记2

    TCP协议:三次握手,C端——>SYN——>S端: S端——>SYN/ACK——>C端: C端——>ACK——>S端. 特点:字节流服务,把大块数据分割成以报文段为 ...

  9. 第二章(java程序设计)第三章(语言基础)

    第二章 2.1 对象 对象的概念是由现实世界引入问题模型: 对象包含有:状态和行为.具体地来说是: 数据封装:对象的方法的作用就是:将内部变量封装起来,提供给外界交互的窗口.(实现对数据的隐藏) 继承 ...

随机推荐

  1. Mongodb 分片与副本集

    测试搭建192.168.3.110mongos 30000,30001,30002config 40000,40001,40002shard1 50001,50002,50003shard2 5000 ...

  2. 通过phpMyAdmin拿webshell

    general_log默认为关闭的,root权限开启后,general_log_file会保存所有的查询语句 所以可以开启general_log,然后设置general_log_file为一个php文 ...

  3. C语言学习笔记--数组指针和指针数组

    C 语言中的数组有自己特定的类型,数组的类型由元素类型和数组大小共同决定.(如 int array[5]类型为 int[5]) 1.定义数组类型 C 语言中通过 typedef 为数组类型重命名:ty ...

  4. 关于FILL_PARENTE和match_parent布局属性

    在观看早期的代码的时候,经常会看到FILL_PARENT属性,但是新的代码中却有了MATCH_PARENT 那么,两者有何区别呢? 答案是,没有,只是换了个名字而已,均为-1

  5. Struts2 结合 Freemarker 实例

     Freemarker 是一个不依赖 web 容器的模板引擎,一个基于模板生成文本输出的工具.其工作的原理如下图: freemarker 不是一个 web 应用的框架,而适合作为 web 应用的一个组 ...

  6. [bzoj2460] [BeiJing2011]元素(线性基+贪心)

    题目大意: 有一些矿石,每个矿石有一个a和一个b值,要求选出一些矿石,b的和最大且不存在某个矿石子集它们的a的异或和为0. 解题关键:对魔力进行由大到小排序,依次加入线性基,统计即可. #includ ...

  7. JavaScript 书籍推荐(转)

    作者:宋学彦链接:https://www.zhihu.com/question/19713563/answer/23068003来源:知乎著作权归作者所有.商业转载请联系作者获得授权,非商业转载请注明 ...

  8. POJ 1191 棋盘分割 (区间DP,记忆化搜索)

    题面 思路:分析公式,我们可以发现平均值那一项和我们怎么分的具体方案无关,影响答案的是每个矩阵的矩阵和的平方,由于数据很小,我们可以预处理出每个矩阵的和的平方,执行状态转移. 设dp[l1][r1][ ...

  9. Struts2框架06 ValueStack

    原文地址:点击前往 1 什么是ValueStack 称为值栈,Struts提供的共享数据的数据结构 2 为什么要使用ValueStack 从控制器向浏览器传递数据 存储与请求相关的对象信息(sessi ...

  10. Condition实现多线程顺序打印

    Condition实现多线程顺序打印: import java.util.concurrent.locks.Condition; import java.util.concurrent.locks.R ...