HTTP读书笔记

一.HTTP1.1 主要问题

        页面加载延迟

二.HTTP2 新概念:

       HTTP2解决延迟问题,核心策略是提升数据发送效率

    1.二进制协议

           HTTP2是一个二进制的、基于数据包的协议。

          HTTP1是完全基于文本的。

 2.多路复用

         HTTP1:一个请求一个连接,重复创建、启动连接消耗时间。很多浏览器对同时创建的连接个数限制是6(虽然看起来有多个连接,但是通常在网络层只有一个连接,所以最终会在网络层排队发送每个请求)打破一个域名6个链接的限制方案:域名分片(尽管通常这些域名指向同一个服务器)

        优点:一个链路上的流量窗口限制不会影响其他链路上的资源请求效率。

        缺点:重复创建、启动连接浪费时间(打开TCP连接需要时间,维护连接需更多的内存和CPU)。

        HTTP2:同域名下只创建一个链接,用于请求该域名下的所有资源。避免重复创建链接浪费时间。

        优点:节省了创建多个请求的时间。

        缺点:该链路上的流量窗口控制会影响所有的资源请求效率。

 3.流量控制功能

           网络丢包对Http2影响很大,因为会大幅缩小链接上的可发送流量。

 4.数据流优先级

          HTTP2定义了两种不同的方法来设置优先级:流依赖和流权重。 目前的web服务器和浏览器,部分支持优先级设置。

 5.首部压缩:

         几种压缩算法:静态表、动态表

6.服务端推送

         应用不多,可能被砍掉 

三.一些概念

1.对头阻塞问题(HOL)

        在队列首部的消息会阻塞后面消息的发送。

2.SSL、TLS、HTTPS(加密)

        SSL是Netscape发明的,并非正式的互联网标准,但很差一段时间内SSLv3被认为是事实上的标准,直到2014年SSLv3被发现了重大漏洞,于是人们才开始大量向TLS迁移,但许多人仍将加密成为SSL,其他的有成为SSL/TLS或TLS。

3.CA

        Certificate Authorities,证书颁发机构。

4.端口

        HTTP默认端口是80,HTTPS默认端口是443

5.HTTPS

        TLS 加密层握手(密钥协商)

        TCP 传输层握手

6.常用的服务器

        Apach :httpd

        IIS :windows系统

        Nginx :

        Jetty  :java web

        Apach Tomcat :java web

        Node.js 应用服务器

7.CWND

        Congestion Window,拥塞窗口

        TCP慢启动控制算法。

        连接启动一开始只发送较少的数据包,确认网络没问题,数据包数量再随着时间的推移逐渐增加。

8.Http 优化

        优化方法之一是,发送更少的请求,一次请求更多的资源,如精灵图(图片打包技术)

        Https才能使用HTTP2标准

9.QUIC

        1.Google发明的一个基于UDP的协议,目标时替换TCP和HTTP栈中的某些部分,已解决低效率因素。

        2.TCP存在5个主要的问题,影响到了HTTP(HTTP需要可靠传输,与视频流协议不同,视频可以丢弃少量数据包,没有影响):

             1)有一个连接创建的延迟。要在连接开始时协商发送方和接收方可以使用的序列号。

             2)TCP慢启动算法限制了TCP的性能,它小心翼翼地处理发送的数据量,以尽可能防止重传。

             3)不充分使用连接会导致限流阈值降低。如果连接未被充分使用,TCP会将拥塞窗口的大小减小,因为它不确定在上个最优的拥塞窗口之后网络参数有没有发生变化。

             4)丢包也会导致TCP的限流阈值降低。TCP认为所有的丢包都是由窗口拥堵造成的,但其实并不是。

             5)数据包可能被排队。乱序接收到的数据包会被排队,以保证数据时有序的。

        3.QUIC的特性

            1)大量减少连接创建时间

            2)改善拥塞控制

            3)多路复用,但不要带来队头阻塞

            4)前向纠错

            5)连接迁移

10.如何使用HTTP2

        1.浏览器支持,现今绝大部分浏览器支持

        2.服务器支持,可能要升级操作系统

        3.若服务器不支持,则考虑以下方案

            3.1 增加反向代理(CDN等)

            3.2 在容器中运行Web服务器,如Docker

            3.3 CDN(Content Delivery Network)实现(与使用反向代理类似)

            通过DNS解析,请求连接到最近的CDN服务器(HTTP2,距离近则可快速处理客户端连接如TCP连接和HTTPS协商),请求再被路由到源服务器(HTTP1.1)。CDN服务器可缓存响应。

11.代理

        代理将一个连接拆分为两部分

        1.服务降级,如果代理不支持HTTP2,则拆分后的两个连接都需要降级为HTTP1.1

        2.代理(标准拦截代理):标准代理保护网络免受外部影响,并给需要与外网通信的出站流量提供路由很多企业通过中间代理限制直接访问互联网,比如扫描威胁,并组织访问某些站点(出)。家庭用户,许多防病毒产品创建代理,扫描进入的web流量(入)

        3.反向代理(如CDN)

            反向代理处理来自外网的传入流量,允许访问不直接对外的服务器。

            主要两种场景:

             1.作为负载均衡服务器(F5/Citrix Netscaler/HAProxy)

            2.用以卸载一些功能,如HTTPS或者HTTP2,有时不需要在整个链路都实现HTTP2,如反向代理进入内网环境可降级为HTTP

12.HTTP2的两个基本原理:

        1.HTTP2使用多个二进制帧发送HTTP请求和响应,使用单个TCP连接,以流的方式多路复用。

        2.HTTP2与HTTP1的不同主要在消息发送的层面上,在更上层,HTTP的核心概念不变。

13.HTTPS握手

        使用HTTPS意味着使用SSL/TLS来加密一个标准的HTTP1连接或者HTTP2连接。公钥私钥加密被称为非对称加密,因为它加密和解密消息时,使用不同的密钥。这种类型的加密,在你连接到一个新的服务器时非常有必要,但它比较慢,所以这种加密方式用于协商一个对称加密的密钥。

        除了用来生成对称加密密钥以外,这里的公钥和私钥也用于确认服务器身份。消息通过服务器端才有的私钥加密,使用证书中的公钥解密消息,通过这种方式来确认服务器身份。当HTTPS会话建立完成后,后续的连接(不管是并发的额外连接,还是后来重新打开的连接)可以跳过其中的某些步骤——如果它复用上次的加密密钥,这个过程叫TLS会话恢复。

参考文献:《HTTP/2 in Action 中文版》【美】Barry Pollard

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

推荐阅读更多精彩内容