《图解HTTP》阅读笔记--第二章 简单的HTTP协议--第三章 HTTP报文信息
第二章、简单的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报文信息的更多相关文章
- CSAPP阅读笔记-汇编语言初探(控制类指令)-来自第三章3.6的笔记-P135-P163
1.正溢出与负溢出: 首先,一个正数与一个负数相加,不可能溢出,因为结果的绝对值一定小于两个加数的绝对值,既然两个加数能合理表示出来,结果一定也能合理表示出来. 其次,正溢出是由于两个很大的正数相加, ...
- [计算机网络]图解HTTP阅读笔记
总述 书的定位:一本十分浅显的HTTP书籍,主要介绍了HTTP与HTTPS.适合入门了解,很多地方都是蜻蜓点水,但稍微深入的地方能让人了解重点在哪,后面应该有针对性地阅读深入书籍. 主要内容:介绍了T ...
- 图解HTTP——阅读笔记
基础部分 第1章 了解Web及网络基础 重点了解HTTP协议在网络中的作用,扮演了什么角色,以及网络传输中相关的一些角色. 3项重要的web构建技术:HTML,URL,HTTP HTTP协议位于应用层 ...
- 第二章 简单的HTTP协议
第二章 简单的HTTP协议 针对HTTP协议结构进行讲解 1.通过请求和响应的交换来达成通信目的 应用HTTP协议时,必定是一端担任客户端角色,另一端担任服务器端角色. [请求报文]是由请求方法.UR ...
- 深入理解 C 指针阅读笔记 -- 第二章
Chapter2.h #ifndef __CHAPTER_2_ #define __CHAPTER_2_ /*<深入理解C指针>学习笔记 -- 第二章*/ /* 内存泄露的两种形式 1.忘 ...
- 【图解HTTP】第二章 简单的http协议
简单的HTTP协议 针对HTTP协议结构进行讲解,主要使用HTTP/1.1版本. HTTP协议用于客户端和服务器端之间的通信 通过请求和响应的交换达成通信(从客户端开始建立通信,服务器端在没有接收到请 ...
- 图解Http阅读笔记(二)
简单的HTTP协议 HTTP是一种不保存状态,即无状态(stateless)协议.HTTP 协议自身不对请求和响应之间的通信状态进行保存.也就是说在 HTTP 这个级别,协议对于发送过的请求或响应都不 ...
- 图解HTTP阅读笔记2
TCP协议:三次握手,C端——>SYN——>S端: S端——>SYN/ACK——>C端: C端——>ACK——>S端. 特点:字节流服务,把大块数据分割成以报文段为 ...
- 第二章(java程序设计)第三章(语言基础)
第二章 2.1 对象 对象的概念是由现实世界引入问题模型: 对象包含有:状态和行为.具体地来说是: 数据封装:对象的方法的作用就是:将内部变量封装起来,提供给外界交互的窗口.(实现对数据的隐藏) 继承 ...
随机推荐
- SQL 从身份证号得到出生日期、年龄、男女
), CONVERT(smalldatetime, SUBSTRING(b.IDCard, , )), ) AS BrithDate_Name, DATEDIFF(year, CONVERT(smal ...
- Angular常犯的错误
ng-app="name名称" name名称 == 一定要写对 其次 angular.min导入一定要正确,一定要导入正确的angular.min的库 再次js中要写自调用 (f ...
- TCG卡牌游戏研究:《炉石战记:魔兽英雄传》所做的改变
转自:http://www.gameres.com/665306.html TCG演进史 说到卡牌游戏,大家会联想到什么呢? 是历史悠久的扑克牌.风靡全球的<MTG 魔法风云会>与< ...
- kubernetes 学习 创建cronjob
POM.xml <?xml version="1.0" encoding="UTF-8"?> <project xmlns="htt ...
- 解决django不能以本机ip地址访问
在使用django框架来架设网站时,我们测试一般是通过django的开发服务器来完成,但是我们可以看到生成的地址是127.0.0.1:8000这样的话,我们在外网就无法访问了. 解决办法是通过传入第三 ...
- 简单叙述一下MYSQL的优化
一个面试题.每次没能完全答对.各位补充一下.或者发表自己的答案:cry: 现在大概列出如下:(忘各位补充)1.数据库的设计尽量把数据库设计的更小的占磁盘空间.1).尽可能使用更小的整数类型.(medi ...
- 第八章 Java中的并发工具类
等待多线程完成的CountDownLatch countDownLatch允许一个或多个线程等待其他线程完成操作. public class CountDownLatchTest { static C ...
- C#改变LInqToSQL的引用地址,读取config的数据库字符串
C#改变LInqToSQL的引用地址,读取config的数据库字符串修改Properties 下 Settings.Settings 下 Settings.Designer.cs 下 return ( ...
- leetcode657
bool judgeCircle(string moves) { ;//垂直位移 ;//水平位移 for (auto m : moves) { if (m == 'U') { V++; } else ...
- JavaScript实现重置表单(reset)的方法
转自:https://www.jb51.net/article/63305.htm <!DOCTYPE html> <html> <head> <script ...