图解HTTP笔记

一、URI格式

image.png

二、Http协议请求和响应

1、请求报文是由请求方法、请求URI、协议版本、可选的请求首部字段和内容实体构成
image.png

2、响应报文的组成
image.png

HTTP是一种不保存状态,即无状态协议。自身不对请求和响应之间的通信状态进行保存

三、HTTP协议支持的方法

image.png

持久连接

使用cookie来管理状态。

Cookie会根据从服务器端发送的响应报文内的一个叫做Set-Cookie的首部字段信息,通知客户端保存Cookie。当下次客户端在往该服务器发送请求时,客户端会自动在请求报文中加入Cookie值后发送出去。
服务器端发现客户端发送过来的Cookie后,会去检查究竟是从哪一个客户端发来的连接请求,然后对比服务器上的记录,最后得到之前的状态信息。

  • 没有Cookie信息状态下的请求
    image.png
  • 第二次以后,存有Cookie信息状态的请求
    image.png
  • HTTP请求报文和响应报文的内容如下
    image.png

压缩编码

内容编码指明应用在实体内容上的编码格式,并保持实体信息原样压缩。内容编码后的实体用客户端接收并负责解码。
常见的内容编码有以下几种

  • gzip (GNU zip)
  • compress(UNIX 系统的标准压缩)
  • deflate (zlib)
  • identity(不进行编码)

返回结果的HTTP状态码
image.png

保存资源的缓存

缓存是指代理服务器或客户端本地磁盘内保存的资源副本,利用缓存可以减少对源服务器的访问,因此能节省通信流量和通信时间。
缓存服务器是代理服务器的一种,并归类在缓存代理类型中

image.png

缓存的有效期

即使存在缓存,也会因为客户端的要求、缓存的有效期等因素,向源服务器确认资源的有效性。若判断缓存失效,缓存服务器将会再次从源服务器上获取“新”资源。

image.png

HTTP报文首部

Content-Type字段表示报文主体的对象类型
Content-Type: text/html
Keep-Alive: timeout=15,max=100

HTTP首部字段根据实际用途被分为以下4类

  • 通用首部字段
    请求报文和响应报文两方都会使用的首部

  • 请求报文字段
    客户端向服务端发送请求报文时使用的首部

  • 响应首部字段
    服务端向客户端返回响应报文时使用的首部

  • 实体首部字段
    针对请求报文和响应报文的实体部分使用的首部

HTTP/1.1首部字段一览

  • 通用首部字段


    image.png
  • 请求首部字段
    image.png
  • 响应首部字段
    image.png
  • 实体首部字段
    image.png

Accept

Accept首部字段可通知服务器,用户代理能够处理的媒体类型以及媒体类型的相对优先级。可使用type/subtype这种形式,一次指定多种媒体类型。
比如:

  • 文本文件
    text/html, text/plain, text/css...
  • 图片文件
    image/jpeg, image/gif, image/png..
  • 视频文件
    video/mpeg, video/quicktime...
  • 应用程序使用的二进制文件
    application/octet-stream, application/zip...
    给显示的媒体类型增加优先级,使用q=0.3来表示权重值,用分号分隔。权重值q的范围是0~1,不指定时,默认权重为q=1.0

Accept-Charset

Accept-Charset: iso-8859-5, unicode-1-1;q=0.8
告诉服务器用户支持的字符集及字符集的相对优先顺序

Accept-Encoding

Accept-Encoding:gzip,defate
Accept-Encoding首部字段用来告知服务器用户代理支持的内容编码及内容编码的优先级顺序。可一次性指定多种内容编码。

Accept-Language

Accept-Language: zh-cn,zh;q=0.7,en-us,en;q=0.3
告知服务器客户端能够处理的自然语言集(指中文或英文)

Authorization

Authorization:Basic dwvub3N1bjpwXYZVBBB==
告知服务器用户代理的认证信息

其他首部字段

Expect,期望出现的某种特定行为
From,告诉服务器用户代理的用户的电子邮件地址

Host
image.png

虚拟主机运行在同一个IP上,因此使用首部字段Host加以区分
Host:www.hackr.jp

条件请求

  • If-Match: 告知服务器匹配资源所用的实体标记(ETag)值
  • If-Modified-Since: 如果在If-Modified-Since字段指定的日期时间之后,资源发生了更新,服务器会接受请求
  • If-None-Match:和If-Match作用相反
  • If-Range:告知服务器若指定的If-Range字段值和请求资源的Etag值一致时,则作为范围请求处理,如下图


    image.png
  • If-Unmodified-Since
    形如if-xxx这种样式的请求首部字段,都可称为条件请求。服务器收到附带条件的请求后,只有判断指定条件为真时,才会执行请求。
  • Max-Forwards
    image.png

    指定最大转发请求次数,当服务器接收到Max-Forwards值为0的请求时,则不再进行转发,而是直接返回响应。

  • Proxy-Authorization
    接收到从代理服务器发来的认证质询时,客户端会发送包含首部字段Proxy-Authorization的请求,以告知服务器认证所需要的信息
  • Referer
    告知服务器请求的原始资源的URI
  • TE
    TE:gzip,deflate;q=0.5
    告知服务器客户端能处理响应的传输编码方式及相对优先级
  • User-Agent
    用于传达浏览器的种类
    User-Agent:Mozilla/5.0

响应首部字段

1.Accept-Ranges
2.Age
3.ETag
4.Location 提供重定向的URI
5.Proxy-Authenticate
6.Retry-After
7.Server 告知客户端当前服务器上安装的HTTP服务器应用程序的信息
8.Vary
9.WWW-Authenticate 告知客户端适用于访问请求URI所指定资源的认证方案

实体首部字段

1.Allow 所有支持的HTTP方法
2.Content-Encoding 告知客户端,服务器对实体的主体部分选用的内容编码方式
3.Content-Language 告知客户端,实体主体使用的自然语言
4.Content-Length 表明实体主体部分的大小(单位是字节)
5.Conten-Location 表示报文主体返回资源对应的URI
6.Content-MD5 首部字段Content-MD5是一串由MD5算法生成的值,其目的在于检查报文主体在传输过程中是否保持完整,以及确认传输到达。
客户端会对接收的报文主体执行相同的MD5算法,然后与首部字段Content-MD5的字段值比较。
7.Content-Range:bytes 5001-10000/10000 告知客户端返回实体的哪个部分符合范围请求。
8.Content-Type: text/html; charset=UTF-8 实体主体对象媒体类型
9.Expires:Wed, 04jul 2012 08:26:05 GMT 资源失效日期
10.Last-Modified 资源最终修改的时间

HTTPS

  • HTTP的缺点

    • 通信使用明文(不加密),内容可能会被窃听
    • 不验证通信方的身份,可能遭遇伪装
    • 无法证明报文的完整性,可能被篡改
  • HTTP + 加密 + 认证 + 完整性保护 = HTTPS

  • 建立HTTPS通信的过程图
    image.png
  • 为什么不一直使用HTTPS

一个原因,是因为与纯文本通信相比,加密通信会消耗更多的CPU及内存资源。如果每次通信都加密,会消耗相当多的资源,平摊到一台计算机上时,能够处理的请求数量必定会随之减少。
因此,如果是非敏感信息则使用HTTP通信,只有在包含个人信息等敏感数据时,才利用HTTPS加密通信。
节约购买证书的开销

确认访问用户

1、HTTP 使用的认证方式

  • BASIC 认证(基本认证)
  • DIGEST认证(摘要认证)
  • SSL客户端认证
  • FormBase认证(基于表单认证)

2、BASIC认证

image.png

BASIC认证不够安全,不常用

3、DIGEST认证

质询响应方式是指,一开始一方会先发送认证要求给另一方,接着使用从另一方那接收到的质询码计算生成响应码。最后将响应码返回给对方进行认证的方式。

image.png

4、SSL客户端认证

步骤1:接收到需要认证资源的请求,服务器会发送Certificate Request报文,要求客户端提供客户端证书。
步骤2:用户选择将发送的客户端证书后,客户端会把客户端证书信息以

5、基于表单认证

输入已事先登录的用户ID(通常是任意字符串或邮件地址)和密码等登录信息后,发送给web应用程序,基于认证结果来决定认证是否成功。

  • 认证多半为基于表单认证
    因为HTTP协议标准提供的BASIC认证和DIGEST认证几乎不怎么使用。另外,SSL客户端认证虽然具有高度的安全等级,但因为导入及维持费用等问题,还尚未普及。
  • Session管理及Cookie应用
    一般使用Cookie来管理Session(会话)
    基于表单认证本身是通过服务器端的web应用,将客户端发送过来的用户ID和密码与之前登录过的信息做匹配来进行认证的。
    但鉴于HTTP是无状态协议,所以使用Cookie管理Session
image.png
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,530评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 86,403评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,120评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,770评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,758评论 5 367
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,649评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,021评论 3 398
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,675评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,931评论 1 299
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,659评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,751评论 1 330
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,410评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,004评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,969评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,203评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,042评论 2 350
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,493评论 2 343

推荐阅读更多精彩内容

  • 本文是《图解HTTP》读书笔记的第二篇,主要包括此书的第六章内容,因为第六章的内容较多,而且比较重要,所以单独写为...
    lijiankun24阅读 1,356评论 0 6
  • 第一章 IP协议 ip协议里重要的是IP地址和MAC地址 使用 ARP 协议凭借 MAC 地址进行通信 “(Add...
    杰米阅读 795评论 0 1
  • 第一章:Web及网络基础 TCP/IP是互联网相关的各类协议族的总称,包含TCP、UDP、HTTP、FTP、IP、...
    loneyzhou阅读 384评论 0 1
  • 1. 网络基础TCP/IP HTTP基于TCP/IP协议族,HTTP属于它内部的一个子集。 把互联网相关联的协议集...
    yozosann阅读 3,435评论 0 20
  • 呵呵,天知道我为什么要写这个。 Http基础简述http协议(超文本传输协议)为了Web上的信息共享而诞生三个版本...
    转交遇见陈绮贞阅读 1,728评论 2 6