《工欲善其事,必先利其器》
我们的计算机网络体系实际上分为3种:TCP/IP、OSI 和五层协议体系。五层体系是结合前两者的优点形成的一个理论体系,我们不加赘述。OSI 它是一个理论上的网络通信模型,概念清晰,理论完善且健壮,可事实上却十分复杂且不实用;TCP/IP 才是我们实际运行在计算机网络上的网络协议,这也是 OSI 和 TCP/IP 的区别。
一、请阐述一下什么是HTTP?
HTTP,就是架构在TCP/IP体系上的一种超文本传输协议。
它是一种简单的请求-响应协议,指定了客户端可能发送给服务器什么样的消息以及得到什么样的响应,而请求和响应消息的头以 ASCII 形式发出。这个简单模型是早期 Web 成功的有功之臣,因为它使开发和部署非常地直截了当。
总结:HTTP 是架构在 TCP/IP 网络体系上的一种超文本传输协议,它规定了服务器与浏览器之间信息传递的规范,是二者共同遵守的协议。
二、请介绍一下什么是HTTPS?
HTTPS不同于HTTP,它叫做超文本传输安全协议。
如果说 HTTP 是建立在 TCP/IP 默认端口和服务器之间的一个通道,那 HTTPS 就是在这个通道之间添加了一层身份验证和加密通讯,俗称 SSL。HTTPS 是以安全为目标的 HTTP 通道,在 HTTP 的基础上通过传输加密和身份认证保证了传输过程的安全性。
总结:HTTPS 是架构在 TCP/IP 网络体系上的一种超文本传输安全协议,它既遵循服务器与浏览器之间的信息传递规范,又提供了身份验证和加密通讯的方法,达到安全数据传输的目的。
三、说一说HTTP和HTTPS之间的区别?
- 端口不同
- 传输消息方式不同
- 连接服务器的方式不同
- 所需证书不同
1. 端口不同
HTTP 的默认 TCP 端口是 80,而 HTTPS 的默认端口是 443。
2. 传输消息的方式不同
HTTP 是明文传输的,而 HTTPS 是经过 SSL 加密传输的。
3. 连接服务器的方式不同
客户端的浏览器首先要通过网络与服务器建立连接,该连接是通过 TCP 来完成的。根据规则,只有低层协议建立之后才能进行更高层协议的连接,因此,首先要建立 TCP 连接。建立 TCP 连接需要找到连接主机,所以需要先解析域名得到 IP 再找到主机进行 3 次握手建立 TCP 连接。
HTTP 的连接服务器方式:
-
建立
TCP连接后,客户机发送一个请求给服务器,请求方式的格式为:统一资源标识符(URL)、协议版本号,后边是MIME信息包括请求修饰符、客户机信息和许可内容。 -
服务器接到请求后,给予相应的响应信息,其格式为一个状态行,包括信息的协议版本号、一个成功或错误的代码,后边是
MIME信息包括服务器信息、实体信息和可能的内容。
HTTPS 的连接服务器方式:
-
建立
TCP连接后,客户端将它所支持的算法列表和一个用作产生密钥的随机数发送给服务器。 -
服务器从算法列表中选择一种加密算法,并将它和一份包含服务器公用密钥的证书发送给客户端;该证书还包含了用于认证目的的服务器标识,服务器同时还提供了一个用作产生密钥的随机数。
-
客户端对服务器的证书进行验证,并抽取服务器的公用密钥;然后,再产生一个称作 pre_master_secret 的随机密码串,并使用服务器的公用密钥对其进行加密,并将加密后的信息发送给服务器。
-
客户端与服务器端根据 pre_master_secret 以及客户端与服务器的随机数值独立计算出加密和 MAC密钥。
-
客户端将所有握手消息的 MAC 值发送给服务器。
-
服务器将所有握手消息的 MAC 值发送给客户端。
4. 所需证书不同
HTTP 连接服务器不需要任何证书,而 HTTPS 则需要 SSL 证书。