HTTP请求详解及HTTPS协议

  • Post author:
  • Post category:其他




HTTP



关于HTTP

超文本传输协议(HyperText Transfer Protocol)

一种无状态的,以请求/应答方式运行的协议,它使用可扩展的语义和自描述消息格式,与基于网络的超文本信息系统灵活的互动



HTTP报文格式

HTTP协议的请求报文和响应报文的结构基本相同,有三大部分组成:

  • 起始行(start line):描述请求或响应的基本信息,例如:GET/index.html/HTTP/1.1 HTTP/1.1 200 OK,其中,GET表示为请求方式(此处为读取数据,index.html为源文件,HTTP/1.1为HTTP协议版本,200为响应状态码,响应状态字符串为OK)

  • 头部字段集合(header):使用key-value形式更详尽的说明报文,例如:connection:keep-alive

  • 消息正文(evtity):实际传输的数据,他不一定是文本,可能是图片,视频等二进制数据,比如html代码等

    ###请求报文格式

  • 请求方法:如GET,HEAD,PUT,POST等,表示对资源的操作

  • 请求目标:通常是一个url,标记了请求方法要操作的资源

  • 版本号:表示报文使用的HTTP协议版本

    在这里插入图片描述



响应报文格式

  • 版本号:表示HTTP协议版本
  • 状态码:一个三位数,用代码的形式表示处理结果,404表示找不到,403表示被禁止,500表示服务器错误,200表示成功(以2开头的三位数都表示成功)
  • 原因:作为梳子状态码的补充,帮助理解原因

    在这里插入图片描述



HTTP头字段

头部字段是key-value 的形式, key和value 之间用“:”分隔,最后用CRLF换行表示字段结束。比如前后分离时经常遇到的要与后端协商传输数据的类型“Content-type applcationjson’,这里key就是Contentype ,value就是applcaton/son’,HTP头字段非常灵活,不仅可以使用标准里的Host、Comnecion等已有头,也可以任意添加自定义头,这就给HTTP协议带来了无限的扩展可能。



头字段的注意事项

  • 字段名不区分大小写,字段名里不允许出现空格,可以使用连字符“-”,但不能使用下划线。”(有的服务器不会解析带_的头字段)。字段名后面必须紧接着“:”,不能有空格,而”:”后的字段值前可以有多个空格;
  • 字段的顺序是没有意义的,可以任意排列不影响语义;
  • 字段原则上不能重复,除非这个字段本身的语义允许,例如Set-Cookie.



常用头字段

HTTP中有非常多的头字段,基本分为三大类:

  • 请求字段:请求头中的头字段,如:Host,Referer
  • 响应字段:响应头中的头字段,如:Server,Date
  • 通用字段:再请求头和响应头中都可以出现,如:Content-type,Connection



HTTP请求的完整过程

当用户在浏览器输入网址回车之后,网络协议都做了哪些工作呢?

  • 1.首先干活的是浏览器应用程序,他要解析出URL中的域名
  • 2.根据域名获取对应的ip地址,首先从浏览器缓存中查看,以Chrome为例,如下可以查看浏览器中域名对应ip的解析:chrome : //net-internals/#events,如果没有则从本机域名解析文件hosts (letchosts)中查看,还没有则从LDNS (Localdnssever) 、 Rootsever域名服务器、国际顶级域名服务商的DNS的层层解析
  • 3.拿到IP地址后,浏览器就可以发起与服务器的三次握手
  • 4.握手建立之后,就开始组装http请求报文,发送报文
  • 5.服务器收到请求报文之后开始,请求报文解析,生成响应数据,发送响应数据
  • 6.浏览器收到响应之后,开始渲染页面

    在这里插入图片描述



HTTPS

由于HTTP天生“明文”的特点,整个传输过程完全透明,任何人都能够在链路中截获、修改或者伪造请求/响应报文,数据不具有可信性。因此就诞生了为安全而生的HTTPS协议。使用HTTPS时,所有的HTTP请求和响应在发送到网络之前,都要进行加密。

在这里插入图片描述



SSL/TLS

SSL即安全套接层(Secure Sockets Layer),由网景公司于1994年发明,IETF在1999年把它改名为TLS(传输层安全,Transport Layer Security)正式标准化,到今天TLS已经发展出了主流的三个版本,分别是2006年的1.1、2008年的1.2,2018的1.3,每个新版本都紧跟密码学的发展和互联网的现状,持续强化安全和性能,已经成为了信息安全领域中的权威标准。



两种加密方法



对称密钥加密算法

编、解码使用相同密钥的算法,如(AES,RC4,ChaCha20)



非对称密钥加密算法

非对称密钥加密算法:它有两个密钥,一个叫“公钥”,一个叫“私钥”。两个密钥是不同的,公钥可以公开给任何人使用,私钼必师严格保盘停。非对称加密可以解决“密钥交换””的问题。网站秘密保管私钥,在网上任意分发公钥,你想要登录网站只要用公钥加密就行了,密文只能由私钥持有者才能解密。而黑客因为没有私钥,所以就无法破解密文。非对称密钥加密系统通常需要大量的数学运算,比较慢。如(DH、DSA、RSA、ECC )



数字证书的申请和验证



如何申请

1.生成自己的公钥和私钥,服务器自己保留私钥

2.向CA机构提交公钥,公司,域名信息等待认证

3.CA机构通过线上,线下多种途径验证你提交信息的真实性,合法性

4.信息审核通过,CA机构则会向你签发认证的数字证书,包含了公钥,组织信息,CA信息,有效时间,证书序列号,同时生成一个签名;

5.签名步骤: hash(你用于申请证书所提交的明文信息)=信息摘要;CA再使用私钥对信息摘要进行加密,密文就是证书的数字签名



数字证书的组成:

CA信息,公钥用户信息,公钥,权威机构签名,有效期等



作用:

1.通过数组证书想浏览器证明身份

2.数字证书里面包含了公钥



验证数字证书

在这里插入图片描述



版权声明:本文为weixin_51235620原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。