通用首部字段
Cache-Control:
指令:public private 别的用户能不能用这个缓存。
no-cache/no-store 第一个是每次从缓存服务器中取资源,都要和服务器确认下是否是过期资源。第二个是有机密数据不能缓存。
Connection:
连接管理,close 指令来关闭连接,,,后边写某个首部字段代表这个字段不再转发。
Date:
表示HTTP报文创建的日期和时间。
请求首部字段:
accept:告诉服务器可以处理的媒体类型。text/html等
Accept-Charset:告诉服务器希望接收到的字符集
Accept-Encoding:内容的编码格式
Accept-Language:使用的自然语言
From:邮箱地址
Host:请求的资源所在的主机名和端口号,和单个服务器有多个域名有关,虚拟主机。
Max-Forwards: 10报文段在代理服务器最大转发次数,为零时,由当前的代理响应
响应首部字段:
age:600 响应字段在600秒前创建的。
Location:使用页面重定向时指定重定向路径
Server:当前http服务器的信息
实体首部字段:
content-type
content-language
content-encoding
content-length
HTTPS:
http协议存在的问题:1.通信使用明文,内容可能被窃听。2.通信双方不验证身份可能遭遇伪装的服务器。3。无法验证报文的完整性,报文内容可能已经被篡改。
SSL就是解决了以上三个问题:SSL使用了加密、证书、
加密方式:采用公开密钥和共享密钥混合加密的方式。
过程: 客户端获取服务器的公开密钥,然后使用公开密钥加密传输共享密钥的报文,服务器收到报文后,使用私有密钥解密,获得共享密钥。
然后客户端发送使用共享密钥加密的报文,服务器收到后进行解密。
优点:只使用共享密钥加密的话,攻击者会拦截到报文获取密钥然后解密。只使用公开密钥的方式,由于公开密钥的加密算法更复杂,传输效率低,所以采用两者混合的方式。
但是还有个问题:就是在传输开始时要获得服务器的公开密钥,将公开密钥传过来,这个过程可能遭遇篡改密钥。
所以要解决这个问题使用数字证书认证机构(威瑞信)颁发的公开密钥证书。
过程:服务器运营人员向数字证书认证机构申请公开密钥,机构判别申请者的身份后,使用机构的私有密钥向服务器的密钥进行数字签名,然后将密钥放入公钥证书后绑定在一起,服务器将公钥证书(数字证书)传给客户端,然后客户端使用认证机构的公开密钥对数字签名进行验证,如果验证通过,则证明机构真实有效并且公开密钥真实有效。
**机构的密钥要想安全的交给客户端太困难,大多数的浏览器厂商会事先在内部植入认证机构的公开密钥。
HTTPS的认证:
通过证书来实现,客户端和服务器都有认证机构颁发的证书,客户端是基于双因素认证,即表单认证(账号密码)和证书认证。
HTTPS报文完整性保护:
当使用了共享密钥和公开密钥结合的加密方式就实现了报文不可篡改。
原文:https://www.cnblogs.com/gmzqjn/p/11878369.html