《图解HTTP》读感
《图解HTTP》读感
- 前言
- 一、HTTP各版本
- 二、URL、URI
- 三、HTTP存在的问题
- 四、对称加密和非对称加密
- 五、数字证书
- 六、SSL握手过程
前言
如果有一定的计算机网络基础,这本书读起来会比较快,下文是我个人的一些收获和补充,之前博文里写过的内容这里不赘述。
一、HTTP各版本
- HTTP/0.9于90年问世,是HTTP协议的最初版本,请求方式只支持GET,并且只能请求HTML格式的资源。
- HTTP/1.0在96年公布,至今还被广泛使用着。新增了POST和HEAD请求方式。任何格式的内容都可以发送,包括图像、视频、二进制文件等。HTTP/1.0是短连接的,每次TCP连接只能发送一个请求,当服务器响应后就会关闭这次连接,下一个请求需要再次建立TCP连接。但是网页的内容越来越丰富,需要加载的资源越来越多,多次请求都重新建立TCP连接的成本比较高。为了解决这个问题,有些浏览器在请求时,用了一个非标准的Connection:keep-alive字段,要求服务器不要关闭TCP连接,服务器的响应也要包含这个字段。
- HTTP/1.1在97年公布,是目前主流的HTTP版本。新增了一些请求方法,引入了长连接,引入了管道机制,在同一个TCP连接里,客户端可以同时发生多个请求。
- HTTP/2.0的目标是改善用户的速度体验。它使用了多路复用的技术。在一个TCP连接里,客户端和服务端都可以同时发送多个请求或响应。增加了服务器推送,服务器可以对一个客户端的请求,发起多个响应,可以推送额外的资源,这样可以减少请求的次数。HTTP/2.0客户端和服务端都要维护一个首部字段表,记录见过的首部字段,如果下次发送报文首部没有变化就不发送首部,如果变化只发送变化了的那部分并且更新表,减少了重复发送。
二、URL、URI
URI是统一资源标识符,用来标识互联网某一资源,URL是统一资源定位符,URL是URI的一种(子集),具有标识功能的同时可以获取资源路径。
三、HTTP存在的问题
- 通信使用未加密的明文,内容容易被窃听
- 不验证对方身份,可能出现伪装
- 无法验证报文完整性,报文可能被篡改
解决方法:
使用HTTPS,在HTTP和TCP之间加一层SSL安全协议(HTTPS使用了SSL和TLS两个协议,有时候统一叫做SSL协议)。SSL协议具有加密、证书、完整性保护的功能。
报文采用对称加密,对称加密的密钥采用非对称加密
通过数字证书验证对方身份
通过消息摘要验证报文完整性
四、对称加密和非对称加密
对称加密:
对称加密指加密和解密使用相同密钥的加密算法。大多数的对称算法中,加密密钥和解密密钥是相同的。对称算法的安全性依赖于密钥,泄漏密钥就意味着任何人都可以对他们发送或接收的消息解密,所以密钥的保密性对通信的安全性至关重要。
非对称加密:
非对称加密算法中加密、解密的密钥不同,发送方使用接收方公开的公钥加密,接收方使用自己的私钥解密,除了接收方,其他人根据接收方的公钥计算出他的私钥是不可行的,通常非对称加密算法的设计建立在数学难题上。
SSL利用两者的优势,通信的报文用对称加密,为了防止对称加密密钥在传输过程中被窃听,采用非对称加密算法对对称加密密钥进行处理。
五、数字证书
只有加密算法还不够,因为服务器可能是别人伪装的,SSL使用数字证书验证对方的身份
六、SSL握手过程
- 客户端发送client_hello报文,服务端回应server_hello报文。
作用是:双方协商SSL协议的版本、加密算法、密钥长度。 - 服务端发送certificate报文,报文里包括服务端的公钥证书。
- 服务端发送server_hello_done报文给客户端,hello消息阶段就此结束。
- 客户端检查服务器证书的合法性,然后发送client_key_exchange报文,报文通过服务端的密钥进行加密,报文内容是之后会用到的对称加密的密钥。
- 客户端继续发送change_cipher_spec报文,作用是提示服务器之后的消息使用对称加密密钥加密。
- 客户端再发送一个finished报文,报文利用协商好的加密算法、对称密钥进行加密和摘要计算(MAC计算,保证报文完整性),会包含连接开始到现在全部报文的校验值。
- 如果服务端可以正确解密客户端发来的finished报文,服务端就也发送change_cipher_spec报文和finished报文给客户端,SSL握手完成。之后就可以进行HTTP请求了。
《图解HTTP》读感相关推荐
- 《程序员修炼之道》读感
利用春节假期的机会看了两遍<程序员修炼之道>,其实书中说的大多是浅显易懂的道理,但是多年的工作感受,多个项目的经历让我对这些道理有了更深的理解. "我的源码让猫吃了", ...
- 读《程序员修炼之道——从小工到专家》(The Pragmatic Programmer: From Journeyman to Master)
花了几天时间略读完了<程序员修炼之道--从小工到专家>(The Pragmatic Programmer: From Journeyman to Master).总体感觉就像是一位多年开发 ...
- 读不完《程序员修炼之道》,至少可以读完这70条
文章目录 推荐一.领悟程序员的哲学 推荐二.再次阅读,感受颇多 推荐三.一切阅读都是误读 推荐四.程序员升级必备 推荐五.程序员心底的小声音 推荐六.专业人士对<程序员修炼之道>的赞誉 T ...
- 《程序员修炼之道:从小工到专家》六千字读后总结
<程序员修炼之道:从小工到专家>六千字读后总结 读完这本书,其实花的时间并不多,因为我自己有些基本的认知.这里主要是记录了一下当时的思考和总结,仅是我个人思考与经验. 这本书和极客时间的& ...
- 曳光弹 曳光代码 原型制作 读《读程序员修炼之道》
最近读书<程序员修炼之道:从小工到专家>,看书到第2章 注重实效的途径中,从第10小节曳光弹,到11小节 原型与便笺这两节,相对于整本书中一直都比较顺畅的理解,相对而言这一节可以说是翻译的 ...
- 读《程序员修炼之道》
不能记住过去的人,被判重复过去. --<程序员修炼之道> 这句引言,一直被我用作座右铭,当在书中读到这句的时候,感触颇深,也是我打算开始写博客记录生活的开始.跟这本书的机缘巧合,来自于之前 ...
- [拇指飞动]读《程序员修炼之道:从小工到专家》
在很多Must Read推荐书目中,<The.Pragmatic.Programmer_From.Journeyman.to.Master[1999][CHS][PDF]>(<程序员 ...
- 《Ruby程序员修炼之道》(第2版)目录—导读
版权 Ruby程序员修炼之道(第2版) • 著 [美] David A. Black 译 钟凤鸣 陈雪静 责任编辑 杨海玲 • 人民邮电出版社出版发行 北京市丰台区成寿寺路11号 邮编 100164 ...
- 做靠谱的程序员--《程序员修炼之道》读书报告
这两天花了点时间把<程序员修炼之道>这本书读了,本来估计要一周时间才能读完,读了才发现作者绝对是人才啊,书写的生动有趣,一口气就读完了.随便摘录一下. 1.做一个靠谱的程序员,纯粹的程序员 ...
- 《程序员修炼之道(第2版)》!屹立20年王者归来!
推荐语:收到博文视点的新书<程序员修炼之道(第2版),反复拜读,确实非常全面,涵盖编程,并发,架构,程序员个人修炼,团队,项目等方面 标题已经完全代表博文菌想说的话了! <程序员修炼之道( ...
最新文章
- matlab中rat=1函数,matlab中的format rat是什么意思
- 随机查询N条记录MySQL、SQLServer、Oracle、postgreSQL
- Windows上安装Apache
- 【CF582E】Boolean Function 树形DP+FWT
- 神策数据全面支持苹果 ASA,全域归因方案再升级
- hot编码 字符one_Python机器学习:特征编码的两种方式
- BZOJ3589 动态树(树链剖分+容斥原理)
- HttpContext 来源(System.Web.HttpContext.Current值为null的问题)
- Linux errno 列表
- C++类指针类型的成员变量的浅复制与深复制
- Dubbo+Zookeeper 基础讲解
- 如果找活跃IP段!抓肉鸡必须的!
- idea创建项目异常导致项目创建失败
- [转] ThreeJS中,那些会让阴影失效的操作
- 【QT数字图像处理】(三)QSlider滑块学习
- Ajax请求传递中文参数
- 学习笔记-零基础学习人工智能(0)
- 欧姆龙NX1P2编程学习(1)-编写功能块注意事项
- 【*◆Win8用户名微软ID和管理员账户详解*◆】
- linux修改文件夹的访问权限,linux setfacl chmod g+s 修改文件夹和文件的默认访问权限和所属组...