HTTP 和 HTTPS
HTTP 介绍
HTTP 协议也被称为超文本传输协议,是一种无状态的协议。是基于 TCP/IP 协议的一种,位于网络架构当中的应用层。
HTTP URL
HTTP URL 包含了用于查找某个资源的详细信息,URL 的组成如下:
协议 + 主机名 + 端口号 + 资源路径 + 查询参数
例如:
http://www.baidu.com:80/index.html?name=zhangsan&age=18
查询参数和资源路径使用?来进行拼接,查询参数为键值对的形式,键值之间使用=进行拼接,多个查询参数使用&来进行拼接。
HTTP 请求与响应
-
HTTP 请求 HTTP 请求包含了客户端发送给服务端的数据,包含了请求方法、请求 URL、HTTP 协议的版本、请求首部(请求附属的属性与条件)、请求体。 HTTP 请求的格式如下:
起始行 <方法>、、<版本> 首部 <请求首部> 请求体 -
HTTP 响应 HTTP 响应包括服务端返回给客户端的数据,包含:HTTP 版本、响应状态码、原语短语、响应首部(响应报文附属的属性与条件)、响应资源。
起始行 <版本>、<响应状态码>、<原因短语> 首部 <响应首部> 请求体 <响应资源>
HTTP 请求方法
-
GET
一般用于检索与获取,是 HTTP 请求的默认方法。请求参数一般放在 URL 当中,浏览器一般会对 URL 的大小进行限制,不同的浏览器限制的大小不一样,chrome 是 2MB。
-
POST
一般用于创建/更新数据,请求参数存放在请求主体当中。浏览器也会对请求主体进行限制,但是一般的请求是够用的。
-
PUT
从客户端向服务器传送的数据取代指定的文档的内容。
-
DELETE
请求服务器删除指定的页面。
-
GET 与 POST 的区别
-
GET 是请求资源,请求资源的数据会被返回给客户端,而 POST 是向服务器提交数据,服务器会根据请求参数进行处理,并返回处理结果。
-
我们在网页当中收藏页面,收藏的其实是将 URL 和参数、资源一起缓存起来,到时候再打开网页,会直接从缓存当中读取资源,并且会向服务器发送请求询问缓存是否过期,如果过期,则会向服务器发送请求,获取最新的资源。而 POST 请求一般不会做缓存。
-
HTTP 状态码
| 状态码 | 原因短语 | 例子 |
|---|---|---|
| 2xx | 请求成功 | 200 请求成功,请求的资源已经成功返回。 |
| 3xx | 重定向 | 304 可以使用缓存内容 |
| 4xx | 客户端错误 | 404 被服务器拒绝,或找不到请求资源 |
| 5xx | 服务器错误 | 500 表示服务器内部发生错误或者故障 |
持久和非持久连接
HTTP 0.9 和 HTTP 1.0 是非持久连接,而 HTTP1.1 是持久连接。非持久连接表示发送完一个请求之后,会断开 TCP 连接,下一次发送请求会重新进行 TCP 的链接。
持久化连接则是发送完一次请求后,TCP 连接在一段时间内不会断开,下一次请求还是使用这个 TCP 连接。如果没有需要发送的请求了,客户端会发送Connection: close,表示不再需要这个连接。
TCP 的三次握手和四次挥手
-
IP 地址:端口号 = 套接字 Socket
-
三次握手
- 第一次握手
客户端发送随机生成的序列号和
SYN(数据同步)请求给服务端 - 第二次握手
服务端根据客户端发送的序列号生成确认号,确认号为服务端发送的序列号 + 1,然后根据 IP 地址与端口号使用算法生成服务端序列号,然后发送确认号和服务端序列号和
ASK(数据请求)给客户端. - 第三次握手
客户端收到服务端传过来的序列号和确认号,对序列哈和确认号都 + 1 然后发送给服务端
ASK
- 第一次握手
客户端发送随机生成的序列号和
-
四次挥手
客户端向服务端发送
FIN + ACK表示断开 TCP 连接,服务端收到以后,向客户端回复ACK表示确认收到,然后服务端会将没有传输完成的资源传输完,然后向客户端发送FIN + ACK表示断开 TCP 连接,客户端收到后,向服务端回复ACK表示收到,连接断开。
HTTP 和 HTTPS 的区别
-
HTTPS
HTTPS 是基于 HTTP 协议的加密协议,它在 HTTP 的基础上使用 SSL/TLS 进行加密。
-
SSL/TLS
SSL 是 TLS 的前身,他们都是加密协议,但现在绝大部分浏览器都不支持 SSL 了而支持 TLS。
-
对称加密
发送方和接收方使用同样的算法进行加密/解密。也就是说,同一个密钥可以进行加密/解密。
在对称加密中,数据发送方将明文(原始数据)和加密密钥一起经过特殊加密算法处理后,使其变成复杂的加密密文发送出去。接收方收到密文后,若想解读原文,则需要使用加密密钥及相同算法的逆算法对密文进行解密,才能使其恢复成可读明文。在对称加密算法中,使用的密钥只有一个,发收信双方都使用这个密钥对数据进行加密和解密。
常用的对称加密算法有:DES\3DES\TDEA\IDEA
- 非对称加密 对称加密算法在加密和解密时使用的是同一个秘钥;而非对称加密算法需要两个密钥来进行加密和解密,这两个密钥是公开密钥(public key,简称公钥)和私有密钥(private key,简称私钥)。
常用非对称加密算法:RSA\DSA\ECDSA