聊聊HTTP协议 | 8月更文挑战

152 阅读4分钟

这是我参与8月更文挑战的第9天,活动详情查看:8月更文挑战

一、HTTP有哪些方法?

1、HTTP1.0定义了三种请求方式:GET,POST,HEAD

2、HTTP2.0新增了五种请求方式:options,put,delete,trace和connect

二、这些方法的具体作用

GET:通常用于请求服务器发送某些资源

POST:发送数据给服务器,相比GET更安全

HEAD:请求资源头部传送的信息,可以传递TOKEN或者判断文件大小确定是否下载

OPTIONS:获取目的资源所支持的通信选项

PUT:用于新增功能的请求,可以有效负载替换目标资源的表现形式

DELETE:用于删除功能的请求

Connect:HTTP1.1协议中预留给能将请求改为管道方式的代理服务器

Trace:回显服务器收到的请求,用于测试或诊断

三、GET和POST请求的区别

1)GET通过URL传输数据,POST通过请求体传输

2)GET请求在URL中可以通过历史记录,缓存很容易查到数据信息;POST请求在主体中所有相比GET来说更安全一些。

3)GET请求只允许ASCII字符,POST无限制

4)刷新和后退等浏览器操作对GET请求是无害的,POST可能会重复提交表单

5)GET具有只读性,不会引起服务器状态的变化,并且是幂等(指请求同一个方法和只执行一次的效果完全相同);而POST是非安全幂等的

四、PUT和POST都是发送新增请求,他们的区别是什么?

1)PUT是幂等的,POST非幂等

2)PUT的请求路径URL是单一的资源,POST可以指向资源集合

五、HTTP的请求组成

1、请求行:请求方法字段、URL字段、HTTP协议版本字段,这些使用空格分隔

2、请求头部:由关键字/值对组成,每行一对,

          例如:User-Agent:产生请求的浏览器类型

          Accept:客户端可识别的内容类型列表

          Host:请求的主机名,允许多个域名同处一个IP地址,即虚拟主机

3、空行

4、请求体:PUT或POST请求体的数据

六、HTTP响应报文组成

1、响应行:由协议版本,状态码和状态码的原因组成,例如:HTTP/1.1 200 OK

2、响应头:响应部首组成

3、空行

4、响应体:服务器响应的数据

七、HTTP的Keep-alive的作用

在HTTP1.0的时候每次请求都会创建一个连接,而创建连接会很耗费资源和时间,为了减少资源消耗,就需要用复用连接。所以在后期引用了重用连接的机制,就是在HTTP请求头中加入Connect: keep-alive来告诉服务器请求响应后不要关闭连接,从而保持长连接。

优点:

1、不占用CPU内存(因为创建连接次数少)

2、允许请求和响应的HTTP管线化

3、减少后续请求的延迟(无需再进行握手)

4、请求错误不会关闭TCP连接

5、降低拥塞控制

八、HTTP和HTTPS

简介:HTTPS是安全版本的HTTP,因为HTTP协议是明文传输,所以如果由敏感信息传出就不安全,HTTPS则不会。

HTTPS原理:

先说两种加密方式:

1、对称加密:通信双方都使用同一个密钥进行加解密,但是无法把首次的密钥告诉对方,就会被黑客拦截密钥

2、非对称加密:私钥+公钥=密钥对;使用私钥加密的数据,只有对应的公钥才能解密,用公钥加密的时候,只有对应的私钥才能解密;因为通信双方的手里都有一套自己的密钥对,所以可以放心的把公钥对发给对方,然后到各自解密的时候拿着自己的私钥解密即可。

看了以上两种加密方式,应该都能看出来非对称加密比较安全,但是非对称加密熟读更慢,耗费性能。所以又进行的优化,可以加入一个中间人进行管理,把每次通过中间人把双方通信的公钥换成自己的私钥,这样就可以轻松解密通信双方的所有数据,所以就产生一个CA证书,用来证明身份,防止黑客攻击;但是也为了防止中间人篡改信息,又新增了数字签名,就是用自带Hash算法对证书内容进行Hash得到摘要,再用私钥解密得到数字签名。

证书内容:签发者、证书用途、使用者私钥、使用者公钥、使用者的Hash算法、证书到期时间、数字签名等,通常阿里云和腾讯云买域名的时候可以买。

HTTP的知识真的好多,又可以分好几天写啦,算了一下,每天都要写两个小时以上的文章,白天工作,晚上写文章,加油。