HTTP知识总结

1.网络模型 应用层、传输层、网络层、数据链路层、物理层

网络层:HTTP协议、FTP协议、DNS 协议 传输层:TCP协议、UDP协议 网络层: IP(internet protocol)协议 数据链路层:硬件 注意: TCP/IP协议是互联网各类协议族的总称

2.一个HTTP请求的过程

1045569A-DFB9-4DE5-976F-EC77791A49CD.png
  • 首先作为发送端的客户端在应用层 (HTTP 协议)发出一个想看某个 Web 页面的 HTTP 请求。

接着,为了传输方便,在传输层(TCP 协议)把从应用层处收到的数 据(HTTP 请求报文)进行分割,并在各个报文上打上标记序号及端 口号后转发给网络层。 在网络层(IP 协议),增加作为通信目的地的 MAC 地址后转发给链 路层。这样一来,发往网络的通信请求就准备齐全了。 接收端的服务器在链路层接收到数据,按序往上层发送,一直到应用 层。当传输到应用层,才能算真正接收到由客户端发送过来的 HTTP 请求。 TCP协议通信的三次握手 syn synchronize ack acknowledgement [图片上传失败...(image-102eb-1583985222182)]

3.代理、网关、隧道

代理 代理是一种有转发功能的应用程序,它扮演了位于服务器和客户 端“中间人”的角色,接收由客户端发送的请求并转发给服务器,同时 也接收服务器返回的响应并转发给客户端。 每次通过代理服务器转发请求或响应时,会追加写入 Via 首 部信息 [图片上传失败...(image-90cc7d-1583985222181)]

缓存代理 代理转发响应时,缓存代理(Caching Proxy)会预先将资源的副本 (缓存)保存在代理服务器上。 当代理再次接收到对相同资源的请求时,就可以不从源服务器那里获 取资源,而是将之前缓存的资源作为响应返回。 透明代理 转发请求或响应时,不对报文做任何加工的代理类型被称为透明代理 (Transparent Proxy)。反之,对报文内容进行加工的代理被称为非 透明代理。 网关 网关是转发其他服务器通信数据的服务器,接收从客户端发送来的请 求时,它就像自己拥有资源的源服务器一样对请求进行处理。有时客 户端可能都不会察觉,自己的通信目标是一个网关。网关的工作机制和代理十分相似。而网关能使通信线路上的服务器提供非 HTTP 协议服务。 隧道 隧道是在相隔甚远的客户端和服务器两者之间进行中转,并保持双方 通信连接的应用程序。

4.HTTP 首部字段(请求头)

  • 通用首部字段

    F11F5BD4-B3F2-4010-B5B0-66128349D6C2.png

  • 请求首部字段

    45FF5A64-61A9-4A26-AF7A-FF741FFD2EB0.png

  • 响应首部字段


    75EF701D-6246-43FC-9B34-EA3C57DDA73F.png
  • 实体首部字段

    FF12C53A-F402-4E18-A0E7-D771F68F9419.png

Cache-Control 缓存指令

  • 请求指令


    8999D9C6-6B13-4210-BE1B-5674C84BBFA3.png
  • 响应指令


    7A3ECCC2-23D6-433C-9821-6B819E5F48CA.png

Connecttion 持久连接 不再转发给代理

  • Connection: 不再转发的首部字段名

  • Connection: close 请求后断开链接

  • connection: Keep-Alive HTTP/1.1默认链接是持久连接

Pragma 向后兼容缓存的 HTTP/1.1中直接使用Cache-Control

Trailer

Transfer-Encoding 规定了传输报文主体采用的编码,仅对分块传输编码有效

Upgrade 检测HTTP协议及其他协议是否可以使用更高的版本进行通信

Via 追踪客户端与服务器之间的请求和响应报文的传输路径

3F0C6628-3E91-4D74-9EE0-2E2ABE5C1923.png

Content-Type 报文主体的对象类型

  • text/html

Accept 用户代理能够处理的媒体类型及媒体 类型的相对优先级

Accept-Charset 通知服务器用户代理支持的字符集及 字符集的相对优先顺序

Accept-Encoding 告知服务器用户代理支持的内容编码及 内容编码的优先级顺序

Accept-Language 用来告知服务器用户代理能够处理的自然 语言集(指中文或英文等),以及自然语言集的相对优先级。可一次 指定多种自然语言集。

Host 首部字段 Host 会告知服务器,请求的资源所处的互联网主机名和端 口号。Host 首部字段在 HTTP/1.1 规范内是唯一一个必须被包含在请 求内的首部字段。

If-Match 首部字段 If-Match,属附带条件之一,它会告知服务器匹配资源所用 的实体标记(ETag)值

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

如果在If-Modified-Since 字段指定的日期时间后,资源发生了 更新,服务器会接受请求

Max-Forward: 请求被转发的次数,每次减1,到0后直接返回

Proxy-Authorization 接收到从代理服务器发来的认证质询时,客户端会发送包含首部字段 Proxy-Authorization 的请求,以告知服务器认证所需要的信息。

Range Range: bytes=5001-10000

Referer 首部字段 Referer 会告知服务器请求的原始资源的 URI。

ETag 服务器返回的实体标识,将资源以字符串形式做唯一性标识的方式

Location: http://www.test.com 重定向指定的url

Retry-After: 120 服务端告知客户端在多久之后再次发送请求

Server: Apache/2.2.17 (Unix) 服务器上HTTP服务器应用程序的信息

Vary 当代理服务器接收到带有 Vary 首部字段指定获取资源的请求时,如果使用的 Accept-Language 字段的值相同,那么就直接从缓存返回响应。反之,则需要先从源服务器端获取资源后才能作为响应返回

Allow: GET, HEAD 告知客户端服务器支持的HTTP请求方式

Content-Encoding: gzip 告知客户端服务器对实体的主体部分的编码方式

Content-Location: http://abc.html 返回的资源对应的URI

Content-Type: text/html; charset=UTF-8 实体主体内对象的媒体类型 和 Accept 字段使用形式一样 Expires: Wed, 04 Jul 2020 08:33:22 GMT 资源失效日期,超过该时间后,请求会转向源服务器 优先级低于Cache-Control

Set-Cookie: status=enable; expires=Tue, 04 Jul 2020 07:22:22

22D0E694-01F6-4D4A-9E91-BBC8F86A33A5.png

Cookie: status=enable 首部字段 Cookie 会告知服务器,当客户端想获得 HTTP 状态管理支 持时,就会在请求中包含从服务器接收到的 Cookie。接收到多个 Cookie 时,同样可以以多个 Cookie 形式发送。

5.HTTP请求的安全机制

1.加密通道 SSL(Secure Socket Layer) 安全套接层 TLS (Transport Layer Security) 安全层传输协议

2.加密报文内容

3.HTTPS:

  • HTTP加上加密处理和认证以及完整性保护后即是HTTPS(HTTP secure)

  • 通常,HTTP 直接和 TCP 通信。当使用 SSL 时,则演变成先和 SSL 通 信,再由 SSL 和 TCP 通信了。简言之,所谓 HTTPS,其实就是身披 SSL 协议这层外壳的 HTTP。

  • 和使用 HTTP 相比,网络负载可能会变慢 2 到 100 倍。除去和 TCP 连接、发送 HTTP 请求 • 响应以外,还必须进行 SSL 通信, 因此整体上处理通信量不可避免会增加。

  • 另一点是 SSL 必须进行加密处理。在服务器和客户端都需要进行 加密和解密的运算处理。因此从结果上讲,比起 HTTP 会更多地 消耗服务器和客户端的硬件资源,导致负载增强。

6.确认访问用户身份的认证

1.Basic认证(基本认证)

  • 客户端请求浏览器后,浏览器会返回状态码401 Authorization Required 并且返回WWW-Authenticate 的首部字段的响应。

  • 客户端将用户ID和密码(以冒号链接,并且经过Base64编码处理)发送给服务器。Authorization: Basic xxxxxxxxx

  • 服务端对Authorization进行解析并验证用户,正确则返回一条包含Request-URI资源的响应

2.Digest认证

  • 客户端请求服务器后,服务器返回状态码401 和 Authorization Required 并且返回WWW-Authenticate 的首部字段的响应。

  • 客户端将包含DIGEST认证必须的首字段Authorization信息。首部字段包含usernamerealmnonceuriresponse的字段信息。

  • 服务端对Authorization进行解析并验证用户,正确则返回一条包含Request-URI资源的响应。并且会在首部字段Authentication-Info写入一些认证成功的相关信息。

    3.SSL客户端认证

    SSL 即是HTTPS请求的认证过程,客户端必须事先将可证书安装。

  • 服务器接收到需要认证资源的请求,发送Certificate Request报文,要求客户端提供客户端证书。

  • 客户端将证书信息以Client Certificate报文方式发送给服务器。

  • 服务端验证通过后方可领取证书内客户端的公开密钥,开始HTTPS通信。

    4.基于表单验证

    多数web程序使用的认证方式,通过表单登录服务器,通过sessioncookie的方式进行验证。

1.HTTP的瓶颈
  • 一条链接上只能发送一个请求
  • 请求只能从客户端开始,服务器进行响应
  • 请求、响应的首部未经压缩,内容越多,传输越慢
  • 每次发送相同的首部信息,造成资源的浪费
  • 压缩格式可以任选,不是强制压缩发送
2.解决办法
  • Ajax(Asynchronous JavaScript and XML) 请求,通过异步加载的方式,来局部的更新web应用的页面

  • Comet客户端向服务器发起请求后,服务器不会立即响应,而是先将响应挂起,等到有内容更新的时候,才会向客户端返回响应。但是这样会消耗服务器的资源。

  • SPDY 在TCP/IP的应用层与传输层之间通过新加会话层的形式运作。通信中使用SSL加密。它有以下功能:

    多路复用:单一的TCP链接可以无限制的处理多个HTTP请求,TCP处理的效率得到提高。

    赋予请求优先级:可以给请求分配优先级顺序。

    压缩HTTP首部:压缩请求和响应的首部,提高效率。

    支持推送功能:服务器可以直接发送数据到客户端。

    服务器提示功能:服务器可以主动提示客户端请求所需的资源。

3.WebSocket协议

WebSocket通信协议建立后,客户端和服务端可以互相发送任意格式的数据。

主要特点:

  • 推送功能
  • 减少通信量 建立连接后会一直保持连接,且首部信息很小。建立连接只需要一次握手。
4.HTTP2.0

HTTP/2协议是基于HTTPS的,所以它的安全性有保障。相比HTTP/1.1性能上的改进

  • 头部压缩:会压缩头部,如果同时发出多个请求,他们的头是一样的或者相似的,协议会帮你消除重复的部分
  • 二进制格式: 不再采用HTTP/1.1中的纯文本形式的报文,全面采用了二进制的格式,把头和请求体称为头信息帧和数据帧。二进制增加了数据传输的效率。
  • 数据流:数据包不是按照顺序发送的,同一个连接里面连接的数据包,可能属于不同的回应。每个请求或回应的所有数据包称为一个数据流。客户端还可以指定数据流的优先级。
  • 多路复用:可以在一个连接中并发的发送多个请求,而不用按照顺序一一对应的响应。降低了延迟,大幅度的提高了连接的利用率。
  • 服务器推送:服务器可以主动向客户端发送数据。
5.HTTP/3
  • 把传输层的TCP协议改成了UDP协议,TCP协议是可靠的,UDP不是可靠的协议,但是基于UPD的QUIC协议可以实现类似TCP的可靠性传输。

  • HTTPS 要建立一个连接,要花费 6 次交互,先是建立三次握手,然后是 TLS/1.3 的三次握手。QUIC 直接把以往的 TCP 和 TLS/1.3 的 6 次交互合并成了 3 次,减少了交互次数

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 205,386评论 6 479
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,939评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,851评论 0 341
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,953评论 1 278
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,971评论 5 369
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,784评论 1 283
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,126评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,765评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 43,148评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,744评论 2 323
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,858评论 1 333
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,479评论 4 322
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,080评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,053评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,278评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,245评论 2 352
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,590评论 2 343

推荐阅读更多精彩内容

  • 本文是《图解HTTP》读书笔记的第二篇,主要包括此书的第六章内容,因为第六章的内容较多,而且比较重要,所以单独写为...
    lijiankun24阅读 1,356评论 0 6
  • Web 页面的实现 Web 基于 HTTP 协议通信 客户端(Client)的 Web 浏览器从 Web 服务器端...
    毛圈阅读 1,072评论 0 2
  • 作者:李成文;标签: http首部 HTTP报文首部 HTTP协议的请求和响应报文中必定包含HTTP首部。首部内容...
    广州芦苇科技web前端阅读 1,085评论 0 0
  • http协议有http0.9,http1.0,http1.1和http2三个版本,但是现在浏览器使用的是htt...
    一现_阅读 1,855评论 0 3
  • 今天忙了一天的事务,下午同一个朋友到汉马酒店去看会场。在路上我给他讲了一些自己的收获,同时也告诉他这次学习会有一些...
    黎时_e029阅读 403评论 4 5