前言:为了明年面试准备的博客系列的第一篇。主要目的是帮助自己学习计算机网络知识相关!做android开发大约有一年半了,感觉自己兴趣也在android上面,因此,深耕了!!!
关于面试:什么是Http,什么是Https
这段话随便看看就好了,除了文字能看懂,其他的咱也看不懂,嗐
Http (HTTP-Hypertext transfer protocol) 是一个简单的请求-响应协议,它通常运行在TCP之上。它指定了客户端可能发送给服务器什么样的消息以及得到什么样的响应。请求和响应消息的头以ASCII码形式给出;而消息内容则具有一个类似MIME的格式。这个简单模型是早期Web成功的有功之臣,因为它使开发和部署非常地直截了当。(摘自百度百科)
Https(全称:Hyper Text Transfer Protocol over SecureSocket Layer),是以安全为目标的 HTTP 通道,在HTTP的基础上通过传输加密和身份认证保证了传输过程的安全性 。HTTPS 在HTTP 的基础下加入SSL 层,HTTPS 的安全基础是 SSL,因此加密的详细内容就需要 SSL。 HTTPS 存在不同于 HTTP 的默认端口及一个加密/身份验证层(在 HTTP与 TCP 之间)。这个系统提供了身份验证与加密通讯方法。它被广泛用于万维网上安全敏感的通讯,例如交易支付等方面 。(摘自百度百科)
粗解Http、Https的区别(学疏才浅,不敢详解)
Http是超文本传输协议,数据明文传输,所以会被抓包导致信息泄露,有安全风险问题!Https 则是具有安全性的SSL加密传输协议。Http和Https使用的是完全不同的连接方式用的端口也不一样,前者是80,后者是443。Http的连接很简单,是无状态的。HTTPS协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议。Https协议需要到CA付费申请证书,
HTTP是应用层协议,同其他应用层协议一样,是为了实现某一类具体应用的协议,并由某一运行在用户空间的应用程序来实现其功能。HTTP是一种协议规范,这种规范记录在文档上,为真正通过HTTP协议进行通信的HTTP的实现程序。
HTTP是一种无状态协议,即服务器不保留与客户交易时的任何状态。这就大大减轻了服务器记忆负担,从而保持较快的响应速度。
HTTP是一种面向对象的协议。允许传送任意类型的数据对象。它通过数据类型和长度来标识所传送的数据内容和大小,并允许对数据进行压缩传送。当用户在一个HTML文档中定义了一个超文本链后,浏览器将通过TCP/IP协议与指定的服务器建立连接。
上面概述其实是很废话的,忽略吧!!!
上图是Http的工作流程图,Https会在Tcp首部这一层前加上安全层(SSL/TSL)加解密Http报文
注:TLS是SSL的升级替代版,具体发展历史可以参考传输层安全性协议。
Https解决的问题
Https协议因为采用密文传输,要比Http协议安全。
1、信任主机的问题。
采用https的server 必须从CA申请一个用于证明服务器用途类型的证书. 改证书只有用于对应的server 的时候,客户度才信任次主机。所以目前所有的银行系统网站,关键部分应用都是https的。客户通过信任该证书,从而信任了该主机。其实这样做效率很低,但是银行更侧重安全。这一点对我们没有任何意义,我们的server采用的证书不管自己issue 还是从公众的地方issue,客户端都是自己人,所以我们也就肯定信任该server。
2、通讯过程中的数据的泄密和被窜改。
(1)一般意义上的https,就是 server 有一个证书,
- 主要目的是保证server 就是他声称的server,这个跟第一点一样。
- b) 服务端和客户端之间的所有通讯,都是加密的。
-
- i. 具体讲,是客户端产生一个对称的密钥,通过server 的证书来交换密钥。一般意义上的握手过程。
-
- ii. 加下来所有的信息往来就都是加密的,第三方即使截获,也没有任何意义,因为他没有密钥,当然窜改也就没有什么意义了。
(2)少许对客户端有要求的情况下,会要求客户端也必须有一个证书。
- 这里客户端证书,其实就类似表示个人信息的时候,除了用户名/密码,还有一个CA 认证过的身份,应为个人证书一般来说上别人无法模拟的,所有这样能够更深的确认自己的身份。
- 目前少数个人银行的专业版是这种做法,具体证书可能是拿U盘作为一个备份的载体。
HTTPS 在 HTTP 与 TCP 层之间加入了 SSL/TLS 协议,可以很好的解决了上述的风险:
- 信息加密:交互信息无法被窃取,但你的号会因为「自身忘记」账号而没。
- 校验机制:无法篡改通信内容,篡改了就不能正常显示,但百度「竞价排名」依然可以搜索垃圾广告。
- 身份证书:证明淘宝是真的淘宝网,但你的钱还是会因为「剁手」而没。
可见,只要自身不做「恶」,SSL/TLS 协议是能保证通信是安全的。
感谢这些文章的作者!
TCP的3次握手4次挥手,小学生都能看懂!
GitHub-yangkun19921001-计算机网络基础知识
(建议收藏)TCP协议灵魂之问,巩固你的网路底层基础
【建议收藏】2020年中高级Android大厂面试秘籍,为你保驾护航金三银四,直通大厂
LRH1993
硬核!30 张图解 HTTP 常见的面试题
看完这篇 HTTPS,和面试官扯皮就没问题了
https解决的问题有哪些 http与https的区别有哪些【详解】
HTTP图解