http/https以及请求/响应报文

1、http理论基础(一般仅用于面试程度即可)

a、OSI 7层模型

b、HTTP协议是应用层的协议,是基于TCP之上的,TCP协议是传输层的,传输层也叫协议层。

      TCP协议具有可靠性的原因是三次握手和四次挥手。

2、http

a、http协议,即Hyper Text Transfer Protocol协议,超文本传输协议,主要用来规定客户端和服务端的数据传输格式,是基于TCP的应用层协议,是基于请求与响应模式的、无状态的、应用层的协议。

b、http请求类型:

get 获取服务端数据

post 向服务端提交数据

put/patch 修改服务端的数据

delete 删除服务端数据

head 查看响应头

options 查看支持的请求方式

3、请求报文

请求报文的格式由请求行+请求头+空行+请求体构成。

请求行请求方法 + 请求URL+ Http协议版本

POST /s?ie=utf-8 HTTP/1.1

请求头:常见的请求头

User-Agent:浏览器类型
Accept:客户端可识别的响应内容类型列表。
Accept-Language:客户端可接收的自然语言。
Accept-Encoding:客户端可接收的编码压缩格式。
Accept-Charset:可接收的应答的字符集。
Host:请求的主机名,允许多个域名同处一个IP 地址,即虚拟主机。
connection:连接方式(close 或keepalive)。
Cookie:存储于客户端扩展字段,向同一域名的服务器端发送属于该域的cookie
Content-Type:请求(响应)体的内容格式类型

空行: 空行必须有
请求体:get方式的请求体为空;post方式的请求体可以不为空,如下

username=admin&password=admin

这边单独对Content-Type进行以下说明:

这个头在请求和响应中都可能出现

1、application/x-www-form-urlencoded:请求(响应)体的内容格式为普通表单  key1=val1&key2=val2

2、multipart/form-data:文件或图片

3、application/json:请求(响应)体的内容格式为json格式

4、text/xml:请求(响应)体的内容格式为xml格式,现在已经不常见了

 

4、响应报文

响应报文的格式也是由响应行+响应头+空行+响应体构成。
响应行: 报文协议及版本 + 状态码 + 状态描述

HTTP/1.1 200 OK

常见的HTTP状态码:

200 - 请求成功
301 - 资源(网页等)被永久转移到其它URL
404 - 请求的资源(网页等)不存在
500 - 内部服务器错误

HTTP状态码分类
HTTP状态码由三个十进制数字组成,第一个十进制数字定义了状态码的类型,后两个数字没有分类的作用。HTTP状态码共分为5种类型:

分类    分类描述
1**    信息,服务器收到请求,需要请求者继续执行操作
2**    成功,操作被成功接收并处理
3**    重定向,需要进一步的操作以完成请求
4**    客户端错误,请求包含语法错误或无法完成请求
5**    服务器错误,服务器在处理请求的过程中发生了错误

PS:响应状态码4开头一般为前端问题;5开头一般为后端问题
响应头:

Content-Type: application/json; charset=UTF-8
Content-length: 2048

空行: 空行必须有

响应体: 响应体一般以json形式返回

5、https

https可以理解成http+SSL/TLS,即https协议是在http协议的基础上加上SSL(安全层),用于安全的http传输。

https的请求过程:

1、客户端发送https请求

2、服务端向CA机构获取CA证书(公钥A,私钥B)。公钥用来加密,私钥用来解密

3、服务端响应请求,并携带CA证书(包含公钥A)返回给客户端

4、客户端拿到CA证书,并根据客户端预先就有的一个CA证书来进行校验,校验返回拿到的CA证书是否合法

5、若校验通过,则客户端将公钥A取出并随机生成一个key(字符串)

6、使用公钥A对key进行加密,并发送给服务端,作为接下来对称加密的密钥

7、服务端使用私钥B来解密加密后的key并获取到key

8、使用key对传输数据进行对称加密

9、服务端将对称加密后的数据传输给客户端

10、客户端使用之前生成的key来解密传输数据

11、客户端与服务端会一直通过key来进行加密传输(对称加密)

ps:第5步的校验若没有通过,则提示https警告,就此block住。

6、http与https的区别

1、http是明文传输,https是加密传输

2、http默认80端口,https默认443端口

3、https需要CA证书,一般是要收费的

4、http是简单的无状态的协议,https有状态的协议,需要验证身份

5、https是在http基础之上加上SSL安全认证

posted @ 2022-05-22 16:15  少年不太冷2  阅读(825)  评论(0)    收藏  举报