Http和Https属于计算机网络范畴,但作为开发人员,不管是后台开发或是前台开发,都很有必要掌握它们 。
在学习Http和Https的过程中,主要是参考了阮一峰老师的博客《阮一峰:HTTP 协议入门》,讲的很全面,并且通俗易懂,有兴趣的同学可以去学习学习 。
这篇文章主要是按照自己的思路来讲解对Http和Https的理解 。文章将会从以下几个方面介绍 。
目录树:
- 一、网络层结构
- 二、Http协议
- 三、Tcp三次握手
- 四、Https协议/SSL协议
- 五、SSL证书
- 六、RSA加密和DH加密
- 七、Http和Https对比
一、网络层结构
网络结构有两种主流的分层方式:OSI七层模型和TCP/IP四层模型 。
OSI七层模型和TCP/IP四层模型
OSI是指Open System Interconnect,意为开放式系统互联 。
TCP/IP是指传输控制协议/网间协议,是目前世界上应用最广的协议 。

文章插图
两种模型区别
1、OSI采用七层模型,TCP/IP是四层模型
2、TCP/IP网络接口层没有真正的定义,只是概念性的描述 。OSI把它分为2层,每一层功能详尽 。
3、在协议开发之前,就有了OSI模型,所以OSI模型具有共通性,而TCP/IP是基于协议建立的模型,不适用于非TCP/IP的网络 。
4、实际应用中,OSI模型是理论上的模型,没有成熟的产品;而TCP/IP已经成为国际标准 。
二、HTTP协议
Http是基于TCP/IP协议的应用程序协议,不包括数据包的传输,主要规定了客户端和服务器的通信格式,默认使用80端口 。
Http协议的发展历史
1、1991年发布Http/0.9版本,只有Get命令,且服务端直返html格式字符串,服务器响应完毕就关闭TCP连接 。
2、1996年发布Http/1.0版本,优点:可以发送任何格式内容,包括文字、图像、视频、二进制 。也丰富了命令Get,Post,Head 。请求和响应的格式加入头信息 。缺点:每个TCP连接只能发送一个请求,而新建TCP连接的成本很高,导致Http/1.0新能很差 。
3、1997发布Http/1.1版本,完善了Http协议,直至20年后的今天仍是最流行的版本 。
优点:a. 引入持久连接,TCP默认不关闭,可被多个请求复用,对于一个域名,多数浏览器允许同时建立6个持久连接 。b. 引入管道机制,即在同一个TCP连接中,可以同时发送多个请求,不过服务器还是按顺序响应 。c. 在头部加入Content-Length字段,一个TCP可以同时传送多个响应,所以就需要该字段来区分哪些内容属于哪个响应 。d. 分块传输编码,对于耗时的动态操作,用流模式取代缓存模式,即产生一块数据,就发送一块数据 。e. 增加了许多命令,头信息增加Host来指定服务器域名,可以访问一台服务器上的不同网站 。
缺点:TCP连接中的响应有顺序,服务器处理完一个回应才能处理下一个回应,如果某个回应特别慢,后面的请求就会排队等着(对头堵塞) 。
4、2015年发布Http/2版本,它有几个特性:二进制协议、多工、数据流、头信息压缩、服务器推送 。
Http请求和响应格式
Request格式:
GET /barite/account/stock/groups HTTP/1.1 QUARTZ-SESSION: MC4xMDQ0NjA3NTI0Mzc0MjAyNg.VPXuA8rxTghcZlRCfiAwZlAIdCA DEVICE-TYPE: Android API-VERSION: 15 Host: shitouji.bluestonehk.com Connection: Keep-Alive Accept-Encoding: gzip User-Agent: okhttp/3.10.0 Response格式:
HTTP/1.1 200 OK Server: Nginx/1.6.3 Date: Mon, 15 Oct 2018 03:30:28 GMT Content-Type: Application/json;charset=UTF-8 Pragma: no-cache Cache-Control: no-cache Expires: Thu, 01 Jan 1970 00:00:00 GMT Content-Encoding: gzip Transfer-Encoding: chunked Proxy-Connection: Keep-alive说明一下请求头和响应头的部分字段:
- Host:指定服务器域名,可用来区分访问一个服务器上的不同服务
- Connection:keep-alive表示要求服务器不要关闭TCP连接,close表示明确要求关闭连接,默认值是keep-alive
- Accept-Encoding:说明自己可以接收的压缩方式
- User-Agent:用户代理,是服务器能识别客户端的操作系统(Android、IOS、WEB)及相关的信息 。作用是帮助服务器区分客户端,并且针对不同客户端让用户看到不同数据,做不同操作 。
- Content-Type:服务器告诉客户端数据的格式,常见的值有text/plain,image/jpeg,image/png,video/mp4,application/json,application/zip 。这些数据类型总称为MIME TYPE 。
推荐阅读
- 非常全面的无线网桥知识
- 生育政策全面放开最新消息2019 2021三孩生育政策全面放开最新消息
- 抖音账号初期运营:这些技巧你要了解一下!
- 让我们来了解下浮梁功夫茶的历史。
- 传奇世界|传奇世界:你真的了解道士吗?看看下面的你就知道了。
- 红茶百科:红茶的九大常识 看下你了解多少
- 一文带你了解TDD和FDD有什么区别
- 程序员如何学习计算机视觉?你需要了解这五大技术!
- 保护数据安全,从HTTPS加密开始
- 电源选购攻略了解一下
