ldd儆儆
这个作者很懒,什么都没留下…
展开
-
HTTP/2特性概览
文章目录为什么不是 HTTP/2.0兼容 HTTP/1头部压缩二进制格式虚拟的“流”强化安全协议栈总结在第 14 讲里,我们看到 HTTP 有两个主要的缺点:安全不足和性能不高。刚结束的“安全篇”里的 HTTPS,通过引入 SSL/TLS 在安全上达到了“极致”,但在性能提升方面却是乏善可陈,只优化了握手加密的环节,对于整体的数据传输没有提出更好的改进方案,还只能依赖于“长连接”这种“落后”的技术(参见第 17 讲)。所以,在 HTTPS 逐渐成熟之后,HTTP 就向着性能方面开始“发力”,走出了另一原创 2021-11-29 18:36:02 · 275 阅读 · 0 评论 -
我应该迁移到HTTPS吗?
文章目录迁移的必要性迁移的顾虑申请证书配置 HTTPS服务器名称指示重定向跳转总结“HTTPS 这么复杂,我是否应该迁移到 HTTPS 呢?它能带来哪些好处呢?具体又应该怎么实施迁移呢?”这些问题不单是你,也是其他很多人,还有当初的我的真实想法,所以今天我就来跟你聊聊这方面的事情。迁移的必要性如果你做移动应用开发的话,那么就一定知道,Apple、Android、某信等开发平台在 2017 年就相继发出通知,要求所有的应用必须使用 HTTPS 连接,禁止不安全的 HTTP。在台式机上,主流的浏览器原创 2021-11-29 18:35:42 · 251 阅读 · 0 评论 -
连接太慢该怎么办:HTTPS的优化
文章目录硬件优化软件优化协议优化证书优化会话复用会话票证预共享密钥总结你可能或多或少听别人说过,“HTTPS 的连接很慢”。那么“慢”的原因是什么呢?通过前两讲的学习,你可以看到,HTTPS 连接大致上可以划分为两个部分,第一个是建立连接时的非对称加密握手,第二个是握手后的对称加密报文传输。由于目前流行的 AES、ChaCha20 性能都很好,还有硬件优化,报文传输的性能损耗可以说是非常地小,小到几乎可以忽略不计了。所以,通常所说的“HTTPS 连接慢”指的就是刚开始建立连接的那段时间。在 TCP原创 2021-11-29 18:35:21 · 1840 阅读 · 0 评论 -
TLS1.3特性解析
文章目录最大化兼容性强化安全提升性能握手分析总结TLS1.2 已经是 10 年前(2008 年)的“老”协议了,虽然历经考验,但毕竟“岁月不饶人”,在安全、性能等方面已经跟不上如今的互联网了。于是经过四年、近 30 个草案的反复打磨,TLS1.3 终于在去年(2018 年)“粉墨登场”,再次确立了信息安全领域的新标准。在抓包分析握手之前,我们先来快速浏览一下 TLS1.3 的三个主要改进目标:兼容、安全与性能。最大化兼容性由于 1.1、1.2 等协议已经出现了很多年,很多应用软件、中间代理(官方称原创 2021-11-29 18:35:00 · 464 阅读 · 0 评论 -
TLS1.2连接过程解析
文章目录HTTPS 建立连接TLS 协议的组成抓包的准备工作ECDHE 握手过程RSA 握手过程双向认证总结HTTPS 建立连接当你在浏览器地址栏里键入“https”开头的 URI,再按下回车,会发生什么呢?回忆一下第 8 讲的内容,你应该知道,浏览器首先要从 URI 里提取出协议名和域名。因为协议名是“https”,所以浏览器就知道了端口号是默认的 443,它再用 DNS 解析域名,得到目标的 IP 地址,然后就可以使用三次握手与网站建立 TCP 连接了。在 HTTP 协议里,建立连接后,浏览器会原创 2021-11-29 18:34:33 · 621 阅读 · 0 评论 -
数字签名与证书
文章目录摘要算法完整性数字签名数字证书和 CA证书体系的弱点总结我们讲到了对称加密和非对称加密,以及两者结合起来的混合加密,实现了机密性。但仅有机密性,离安全还差的很远。黑客虽然拿不到会话密钥,无法破解密文,但可以通过窃听收集到足够多的密文,再尝试着修改、重组后发给网站。因为没有完整性保证,服务器只能“照单全收”,然后他就可以通过服务器的响应获取进一步的线索,最终就会破解出明文。另外,黑客也可以伪造身份发布公钥。如果你拿到了假的公钥,混合加密就完全失效了。你以为自己是在和“某宝”通信,实际上网线的另原创 2021-11-29 15:30:39 · 214 阅读 · 0 评论 -
对称加密与非对称加密1_安全
文章目录对称加密加密分组模式非对称加密混合加密总结我们初步了解了 HTTPS,知道 HTTPS 的安全性是由 TLS 来保证的。你一定很好奇,它是怎么为 HTTP 增加了机密性、完整性,身份认证和不可否认等特性的呢?先说说机密性。它是信息安全的基础,缺乏机密性 TLS 就会成为“无水之源”“无根之木”。实现机密性最常用的手段是“加密”(encrypt),就是把消息用某种方式转换成谁也看不懂的乱码,只有掌握特殊“钥匙”的人才能再转换出原始文本。这里的“钥匙”就叫做“密钥”(key),加密前的消息叫“原创 2021-11-29 15:29:32 · 248 阅读 · 0 评论 -
SSL/TLS又是什么_安全
文章目录为什么要有 HTTPS?什么是安全?什么是 HTTPS?SSL/TLSOpenSSL总结为什么要有 HTTPS?简单的回答是“因为 HTTP 不安全”。由于 HTTP 天生“明文”的特点,整个传输过程完全透明,任何人都能够在链路中截获、修改或者伪造请求 / 响应报文,数据不具有可信性。比如,前几讲中说过的“代理服务”。它作为 HTTP 通信的中间人,在数据上下行的时候可以添加或删除部分头字段,也可以使用黑白名单过滤 body 里的关键字,甚至直接发送虚假的请求、响应,而浏览器和源服务器都没有原创 2021-11-28 18:29:23 · 160 阅读 · 0 评论 -
HTTP的缓存代理_进阶
文章目录缓存代理服务源服务器的缓存控制客户端的缓存控制实验环境其他问题总结我介绍了 HTTP 的缓存控制,第 21 讲我介绍了 HTTP 的代理服务。那么,把这两者结合起来就是这节课所要说的“缓存代理”,也就是支持缓存控制的代理服务。之前谈到缓存时,主要讲了客户端(浏览器)上的缓存控制,它能够减少响应时间、节约带宽,提升客户端的用户体验。但 HTTP 传输链路上,不只是客户端有缓存,服务器上的缓存也是非常有价值的,可以让请求不必走完整个后续处理流程,“就近”获得响应结果。特别是对于那些“读多写少”的原创 2021-11-28 18:25:18 · 918 阅读 · 0 评论 -
HTTP的代理服务_进阶
文章目录代理服务代理的作用代理相关头字段代理协议总结在前面讲 HTTP 协议的时候,我们严格遵循了 HTTP 的“请求 - 应答”模型,协议中只有两个互相通信的角色,分别是“请求方”浏览器(客户端)和“应答方”服务器。今天,我们要在这个模型里引入一个新的角色,那就是HTTP 代理。引入 HTTP 代理后,原来简单的双方通信就变复杂了一些,加入了一个或者多个中间人,但整体上来看,还是一个有顺序关系的链条,而且链条里相邻的两个角色仍然是简单的一对一通信,不会出现越级的情况。链条的起点还是客户端(也就是浏原创 2021-11-28 16:10:40 · 132 阅读 · 0 评论 -
HTTP的缓存控制_进阶
缓存(Cache)是计算机领域里的一个重要概念,是优化系统性能的利器。由于链路漫长,网络时延不可控,浏览器使用 HTTP 获取资源的成本较高。所以,非常有必要把“来之不易”的数据缓存起来,下次再请求的时候尽可能地复用。这样,就可以避免多次请求 - 应答的通信成本,节约网络带宽,也可以加快响应速度。试想一下,如果有几十 K 甚至几十 M 的数据,不是从网络而是从本地磁盘获取,那将是多么大的一笔节省,免去多少等待的时间。实际上,HTTP 传输的每一个环节基本上都会有缓存,非常复杂。基于“请求 - 应答”原创 2021-11-28 15:53:08 · 94 阅读 · 0 评论 -
HTTP的Cookie机制_进阶
文章目录什么是 Cookie?Cookie 的工作过程Cookie 的属性Cookie 的应用总结曾经说过,HTTP 是“无状态”的,这既是优点也是缺点。优点是服务器没有状态差异,可以很容易地组成集群,而缺点就是无法支持需要记录状态的事务操作。好在 HTTP 协议是可扩展的,后来发明的 Cookie 技术,给 HTTP 增加了“记忆能力”。什么是 Cookie?不知道你有没有看过克里斯托弗·诺兰导演的一部经典电影《记忆碎片》(Memento),里面的主角患有短期失忆症,记不住最近发生的事情。比如,原创 2021-11-28 15:47:54 · 1110 阅读 · 0 评论 -
四通八达:HTTP的重定向和跳转_进阶
为了实现在互联网上构建超链接文档系统的设想,蒂姆·伯纳斯 - 李发明了万维网,使用 HTTP 协议传输“超文本”,让全世界的人都能够自由地共享信息。“超文本”里含有“超链接”,可以从一个“超文本”跳跃到另一个“超文本”,对线性结构的传统文档是一个根本性的变革。能够使用“超链接”在网络上任意地跳转也是万维网的一个关键特性。它把分散在世界各地的文档连接在一起,形成了复杂的网状结构,用户可以在查看时随意点击链接、转换页面。再加上浏览器又提供了“前进”“后退”“书签”等辅助功能,让用户在文档间跳转时更加方便,有原创 2021-11-28 15:34:49 · 1336 阅读 · 0 评论 -
排队也要讲效率:HTTP的连接管理_进阶
文章目录短连接长连接连接相关的头字段队头阻塞性能优化总结我曾经提到过 HTTP 的性能问题,用了六个字来概括:“不算差,不够好”。同时,我也谈到了“队头阻塞”,但由于时间的限制没有展开来细讲,这次就来好好地看看 HTTP 在连接这方面的表现。HTTP 的连接管理也算得上是个“老生常谈”的话题了,你一定曾经听说过“短连接”“长连接”之类的名词,今天让我们一起来把它们弄清楚。短连接HTTP 协议最初(0.9/1.0)是个非常简单的协议,通信过程也采用了简单的“请求 - 应答”方式。它底层的数据传输基于原创 2021-11-28 15:13:23 · 920 阅读 · 0 评论 -
HTTP的实体数据_进阶
文章目录数据类型与编码数据类型使用的头字段语言类型与编码语言类型使用的头字段内容协商的质量值内容协商的结果动手实验总结在前面里我们了解了 HTTP 报文的结构,知道一个 HTTP 报文是由“header+body”组成的。但那时我们主要研究的是 header,没有涉及到 body。所以,这次就从 HTTP 的 body 谈起。数据类型与编码在 TCP/IP 协议栈里,传输数据基本上都是“header+body”的格式。但 TCP、UDP 因为是传输层的协议,它们不会关心 body 数据是什么,只要把数原创 2021-11-28 13:29:42 · 74 阅读 · 0 评论 -
把大象装进冰箱:HTTP传输大文件的方法_进阶_2
文章目录数据压缩分块传输范围请求多段数据总结额外知识上次我们谈到了 HTTP 报文里的 body,知道了 HTTP 可以传输很多种类的数据,不仅是文本,也能传输图片、音频和视频。早期互联网上传输的基本上都是只有几 K 大小的文本和小图片,现在的情况则大有不同。网页里包含的信息实在是太多了,随随便便一个主页 HTML 就有可能上百 K,高质量的图片都以 M 论,更不要说那些电影、电视剧了,几 G、几十 G 都有可能。相比之下,100M 的光纤固网或者 4G 移动网络在这些大文件的压力下都变成了“小水管”原创 2021-11-28 13:29:20 · 111 阅读 · 0 评论 -
HTTP有哪些优点?又有哪些缺点?
文章目录优点简单、灵活、易于扩展应用广泛、环境成熟缺点无状态明文不安全性能总结额外知识今天的讨论范围仅限于 HTTP/1.1,所说的优点和缺点也仅针对 HTTP/1.1。实际上,后续要讲的 HTTPS 和 HTTP/2 都是对 HTTP/1.1 优点的发挥和缺点的完善。优点简单、灵活、易于扩展首先,HTTP 最重要也是最突出的优点是“简单、灵活、易于扩展”。初次接触 HTTP 的人都会认为,HTTP 协议是很“简单”的,基本的报文格式就是“header+body”,头部信息也是简单的文本格式,用的原创 2021-11-28 13:29:55 · 203 阅读 · 0 评论 -
HTTP有哪些特点
文章目录灵活可扩展可靠传输应用层协议请求 - 应答无状态其他特点总结额外知识灵活可扩展首先, HTTP 协议是一个“灵活可扩展”的传输协议。HTTP 协议最初诞生的时候就比较简单,本着开放的精神只规定了报文的基本格式,比如用空格分隔单词,用换行分隔字段,“header+body”等,报文里的各个组成部分都没有做严格的语法语义限制,可以由开发者任意定制。所以,HTTP 协议就随着互联网的发展一同成长起来了。在这个过程中,HTTP 协议逐渐增加了请求方法、版本号、状态码、头字段等特性。而 body 也原创 2021-11-27 20:26:26 · 88 阅读 · 0 评论 -
响应状态码该怎么用
文章目录状态码1××2××3××4××5××总结额外知识前面讲了HTTP 报文里请求行的组成部分,包括请求方法和 URI。有了请求行,加上后面的头字段就形成了请求头,可以通过 TCP/IP 协议发送给服务器。服务器收到请求报文,解析后需要进行处理,具体的业务逻辑多种多样,但最后必定是拼出一个响应报文发回客户端。响应报文由响应头加响应体数据组成,响应头又由状态行和头字段构成。我们先来复习一下状态行的结构,有三部分:开头的 Version 部分是 HTTP 协议的版本号,通常是 HTTP/1.1,用处原创 2021-11-27 20:22:13 · 71 阅读 · 0 评论 -
如何写出正确的网址呢
文章目录URI 的格式URI 的基本组成URI 的查询参数URI 的完整格式URI 的编码总结额外知识刚刚讲到 HTTP 协议里的请求方法,其中最常用的一个是 GET,它用来从服务器上某个资源获取数据,另一个是 POST,向某个资源提交数据。那么,应该用什么来标记服务器上的资源呢?怎么区分“这个”资源和“那个”资源呢?是的。用的是 URI,也就是统一资源标识符(Uniform Resource Identifier)。因为它经常出现在浏览器的地址栏里,所以俗称为“网络地址”,简称“网址”。严格地说,原创 2021-11-27 20:13:24 · 923 阅读 · 0 评论 -
应该如何理解请求方法
文章目录标准请求方法GET/HEADPOST/PUT其他方法扩展方法安全与幂等总结额外知识标准请求方法HTTP 协议里为什么要有“请求方法”这个东西呢?这就要从 HTTP 协议设计时的定位说起了。还记得吗?蒂姆·伯纳斯 - 李最初设想的是要用 HTTP 协议构建一个超链接文档系统,使用 URI 来定位这些文档,也就是资源。那么,该怎么在协议里操作这些资源呢?很显然,需要有某种“动作的指示”,告诉操作这些资源的方式。所以,就这么出现了“请求方法”。它的实际含义就是客户端发出了一个“动作指令”,要求服务原创 2021-11-27 20:01:27 · 78 阅读 · 0 评论 -
HTTP报文是什么样子的?
HTTP 协议的核心部分是什么呢?答案就是它传输的报文内容。HTTP 协议在规范文档里详细定义了报文的格式,规定了组成部分,解析规则,还有处理策略,所以可以在 TCP/IP 层之上实现更灵活丰富的功能,例如连接控制,缓存管理、数据编码、内容协商等等。报文结构你也许对 TCP/UDP 的报文格式有所了解,拿 TCP 报文来举例,它在实际要传输的数据之前附加了一个 20 字节的头部数据,存储 TCP 协议必须的额外信息,例如发送方的端口号、接收方的端口号、包序号、标志位等等。有了这个附加的 TCP 头原创 2021-11-27 19:55:47 · 103 阅读 · 0 评论 -
这次聊聊域名的那些事
文章目录域名的形式域名的解析域名的“新玩法总结额外知识IP 协议的职责是“网际互连”,它在 MAC 层之上,使用 IP 地址把 MAC 编号转换成了四位数字,这就对物理网卡的 MAC 地址做了一层抽象,发展出了许多的“新玩法”。例如,分为 A、B、C、D、E 五种类型,公有地址和私有地址,掩码分割子网等。只要每个小网络在 IP 地址这个概念上达成一致,不管它在 MAC 层有多大的差异,都可以接入 TCP/IP 协议栈,最终汇合进整个互联网。但接入互联网的计算机越来越多,IP 地址的缺点也就暴露出来了,原创 2021-11-27 19:36:22 · 88 阅读 · 0 评论 -
常说的“四层”和“七层”到底是什么?“五层”“六层”哪去了?
文章目录TCP/IP 网络分层模型第一层叫“链接层”(link layer)第二层叫“网际层”或者“网络互连层”(internet layer)第三层叫“传输层”(transport layer)协议栈的第四层叫“应用层”(application layer)OSI 网络分层模型两个分层模型的映射关系TCP/IP 协议栈的工作方式总结额外知识TCP/IP 网络分层模型还是先从 TCP/IP 协议开始讲起,一是因为它非常经典,二是因为它是目前事实上的网络通信标准,研究它的实用价值最大。TCP/IP 当初原创 2021-11-27 19:24:56 · 214 阅读 · 0 评论 -
与HTTP相关的各种协议2
TCP/IPTCP/IP 协议是目前网络世界“事实上”的标准通信协议,即使你没有用过也一定听说过,因为它太著名了。TCP/IP 协议实际上是一系列网络通信协议的统称,其中最核心的两个协议是TCP和IP,其他的还有 UDP、ICMP、ARP 等等,共同构成了一个复杂但有层次的协议栈。这个协议栈有四层,最上层是“应用层”,最下层是“链接层”,TCP 和 IP 则在中间:TCP 属于“传输层”,IP 属于“网际层”。协议的层级关系模型非常重要,我会在下一讲中再专门讲解,这里先暂时放一放。IP 协议是“I.原创 2021-11-27 19:09:47 · 140 阅读 · 0 评论 -
与HTTP相关的各种概念
网络世界你一定已经习惯了现在的网络生活,甚至可能会下意识地认为网络世界就应该是这个样子的:“一张平坦而且一望无际的巨大网络,每一台电脑就是网络上的一个节点,均匀地点缀在这张网上”。这样的理解既对,又不对。从抽象的、虚拟的层面来看,网络世界确实是这样的,我们可以从一个节点毫无障碍地访问到另一个节点。但现实世界的网络却远比这个抽象的模型要复杂得多。实际的互联网是由许许多多个规模略小的网络连接而成的,这些“小网络”可能是只有几百台电脑的局域网,可能是有几万、几十万台电脑的广域网,可能是用电缆、光纤构成的固.原创 2021-11-27 18:51:04 · 68 阅读 · 0 评论 -
HTTP是什么?HTTP又不是什么
文章目录HTTP是什么协议第一点,协议必须要有两个或多个参与者,也就是“协”。第二点,协议是对参与者的一种行为约定和规范,也就是“议”。传输第一点,HTTP 协议是一个“双向协议”。第二点,数据虽然是在 A 和 B 之间传输,但并没有限制只有 A 和 B 这两个角色,允许中间有“中转”或者“接力”。超文本HTTP 不是什么HTTP 不是互联网。HTTP 不是编程语言。HTTP 不是 HTML,这个可能要特别强调一下,千万不要把 HTTP 与 HTML 混为一谈,虽然这两者经常是同时出现。HTTP 不是一个孤原创 2021-11-27 18:33:26 · 97 阅读 · 0 评论 -
HTTP的前世今生
史前时期20 世纪 60 年代,美国国防部高等研究计划署(ARPA)建立了 ARPA 网,它有四个分布在各地的节点,被认为是如今互联网的“始祖”。然后在 70 年代,基于对 ARPA 网的实践和思考,研究人员发明出了著名的 TCP/IP 协议。由于具有良好的分层结构和稳定的性能,TCP/IP 协议迅速战胜其他竞争对手流行起来,并在 80 年代中期进入了 UNIX 系统内核,促使更多的计算机接入了互联网。创世纪1989 年,任职于欧洲核子研究中心(CERN)的蒂姆·伯纳斯 - 李(Tim Berner原创 2021-11-22 12:21:56 · 117 阅读 · 0 评论