1.什么是网络协议?

网络协议,是计算机之间为了实现网络通信而达成的一种 “约定” 或者” 规则 “,有了这种” 约定 “,不同厂商的生产设备,以及不同操作系统组成的计算机之间,就可以实现通信。

2.HTTP 协议是什么?

HTTP 协议是超文本传输协议的缩写,英文是 Hyper Text Transfer Protocol。它是从 WEB 服务器传输超文本标记语言 (HTML) 到本地浏览器的传送协议。

设计 HTTP 最初的目的是为了提供一种发布和接收 HTML 页面的方法。

HTTP 有多个版本,目前广泛使用的是 HTTP/1.1 版本。

3.HTTP 原理

HTTP 是一个基于 TCP/IP 通信协议来传递数据的协议,传输的数据类型为 HTML 文件,、图片文件, 查询结果等。

HTTP 协议一般用于 B/S 架构。浏览器作为 HTTP 客户端通过 URL 向 HTTP 服务端即 WEB 服务器发送所有请求。

我们以访问百度为例:

4.HTTP 特点

  1. http 协议支持客户端/服务端模式,也是一种请求/响应模式的协议。
  2. 简单快速:客户向服务器请求服务时,只需传送请求方法和路径。请求方法常用的有 GET、HEAD、POST。
  3. 灵活:HTTP 允许传输任意类型的数据对象。传输的类型由 Content-Type 加以标记。
  4. 无状态:无状态是指协议对于事务处理没有记忆,后续处理需要前面的信息,则必须重传(浏览器 cookie 可以解决这个问题)。

5.URI 和 URL 的区别

HTTP 使用统一资源标识符(Uniform Resource Identifier)来传输数据和建立连接。

URI 是用来标示 一个具体的资源,我们可以通过 URI 知道一个资源是什么,是一个抽象的相对概念。

URL 则是用来定位具体的资源的,标示了一个具体的资源位置。属于 URI 的一个子集,算是 URI 在的具体实现方式互联网上的每个文件都有一个唯一的 URL。

下面是 URL 的一个具体实例,各部分含义如下:

6.HTTP 报文组成

请求报文构成

响应报文构成

img

常见响应头字段:

7.长连接与短连接

我们知道一次 HTTP 请求,需要经过 TCP 三次握手才能建立连接,如果多次请求资源开销就会很大。

HTTP/1.1 之前默认是短连接,而 HTTP/1.1 之后,就提出了一个长连接的概念,一次 TCP 连接可以进行多次 http 请求,使用 Connection 字段控制,默认开启长连接 Connection:keep-Alive。

8.常见请求方法

get 请求

img

post 请求

img

post 和 get 的区别:

9.响应状态码

访问一个网页时,浏览器会向 web 服务器发出请求。此网页所在的服务器会返回一个包含 HTTP 状态码的信息头用以响应浏览器的请求。

状态码分类

常见状态码

10.为什么要用 https?

实际使用中,绝大说的网站现在都采用的是 https 协议,这也是未来互联网发展的趋势。下面是通过 wireshark 抓取的一个博客网站的登录请求过程。

博客登录抓包

可以看到访问的账号密码都是明文传输, 这样客户端发出的请求很容易被不法分子截取利用,因此,HTTP 协议不适合传输一些敏感信息,比如:各种账号、密码等信息,使用 http 协议传输隐私信息非常不安全。

一般 http 中存在如下问题:

11.什么是 HTTPS?

为了解决上述 HTTP 存在的问题,就用到了 HTTPS。

HTTPS 协议(HyperText Transfer Protocol over Secure Socket Layer):一般理解为 HTTP+SSL/TLS,通过 SSL 证书来验证服务器的身份,并为浏览器和服务器之间的通信进行加密。

那么 SSL 又是什么?

SSL(Secure Socket Layer,安全套接字层):1994 年为 Netscape 所研发,SSL 协议位于 TCP/IP 协议与各种应用层协议之间,为数据通讯提供安全支持。

TLS(Transport Layer Security,传输层安全):其前身是 SSL,它最初的几个版本(SSL 1.0、SSL 2.0、SSL 3.0)由网景公司开发,1999 年从 3.1 开始被 IETF 标准化并改名,发展至今已经有 TLS 1.0、TLS 1.1、TLS 1.2 三个版本。SSL3.0 和 TLS1.0 由于存在安全漏洞,已经很少被使用到。TLS 1.3 改动会比较大,目前还在草案阶段,目前使用最广泛的是 TLS 1.1、TLS 1.2。

12.浏览器在使用 HTTPS 传输数据的流程是什么?

总体来说,https 属于混合加密,使用非对称秘钥加密密文通信的对称秘钥,使用对称秘钥进行密文通信,保证了通信的效率。

  1. 首先客户端通过 URL 访问服务器建立 SSL 连接。
  2. 服务端收到客户端请求后,会将网站支持的证书信息(证书中包含公钥)传送一份给客户端。
  3. 客户端的服务器开始协商 SSL 连接的安全等级,也就是信息加密的等级。
  4. 客户端的浏览器根据双方同意的安全等级,建立会话密钥,然后利用网站的公钥将会话密钥加密,并传送给网站。
  5. 服务器利用自己的私钥解密出会话密钥。
  6. 服务器利用会话密钥加密与客户端之间的通信。

13.HTTPS 的缺点

14.总结 HTTPS 和 HTTP 的区别

欢迎关注公众号【吾非同】,关注测试技术、Python 知识、程序员资源、职场成长


↙↙↙阅读原文可查看相关链接,并与作者交流