Android开发Android开发Android技术知识

HTTP协议

2019-04-26  本文已影响3人  正规程序员

HTTP(超文本传输协议) 是基于TCP/IP协议的应用层协议,通信方式为“请求—响应方式”,即在请求时建立连接通道,当客户端向服务器发送请求后,服务器端才能向客户端返回数据。

HTTP协议特点

请求报文和响应报文

请求报文分为:请求行、请求报头、空行、请求数据。如下:

POST http://meme.php/home/user/login HTTP/1.1 //请求行:方法名 Request-URI 协议版本    
Host: 114.215.86.90                                 
Cache-Control: no-cache                                 
Postman-Token: bd243d6b-da03-902f-0a2c-8e9377f6f6ed     
Content-Type: application/x-www-form-urlencoded     
    
tel=13637829200&password=123456                     

如上1行为请求行,2-5行为请求报头,6为空行(回车符/换行符),7行为请求数据。

响应报文分为:状态行、响应报头、空行、响应数据。如下:

HTTP/1.1 200 OK                                                         
Date: Sat, 02 Jan 2016 13:20:55 GMT                                 
Server: Apache/2.4.6 (CentOS) PHP/5.6.14                                    
X-Powered-By: PHP/5.6.14                                            
Content-Length: 78                                      
Keep-Alive: timeout=5, max=100                      
Connection: Keep-Alive                                  
Content-Type: application/json; charset=utf-8           

{"status":202,"info":"\u6b64\u7528\u6237\u4e0d\u5b58\u5728\uff01","data":null}

如上 1行为状态行,2-8行为响应报头,9行为空行,10行为响应数据。

空行处的回车符或换行符用于告知服务器以下部分不会有请求报头。

HTTP常用方法

Get与Post区别

本质就是参数是放在请求行中还是放在请求数据中。当然无论用哪种都能放在请求行中,但一般在请求行中放一些发送端的常量。

HTTPS和HTTP的区别

HTTP是应用层协议,TCP是传输层协议。在应用层和传输层之间,增加了一个安全套接层SSL/TLS,就是Https的产生。

HTTPS主要作用:

HTTPS请求步骤

一个HTTPS请求实际上包含了两次HTTP传输,如下:

  1. 客户端向服务器发起Http请求,连接到服务器的443端口;
  2. 服务器将非对称加密的密钥对的公钥发送给客户端;
  3. 客户端检验服务器传回的公钥(即数字证书)的合法性。
    若公钥合格,客户端生成一个随机值的对称加密的密钥,即客户端密钥,并用服务器公钥加密该密钥;
  4. 客户端发起HTTPS中的第二个Http请求,将非对称加密后的客户端密钥发送给服务器;
  5. 服务器收到客户端发送的密钥后,用服务器的非对称加密的私钥解密,得到客户端密钥;
  6. 服务器用客户端密钥加密数据,并发送给客户端;
  7. 客户端接收服务器返回的数据,并用客户端密钥解密,最终得到服务器发送的数据。

服务端密钥用来非对称加解密客户端密钥,客户端密钥用来对称加解密数据。

我们可以看到服务器端会有一个证书,在交互过程中客户端需要去验证证书的合法性,对于权威机构颁发的证书当然我们会直接认为合法。对于自己造的证书,那么我们就需要去校验合法性了。

Cookie和Session

Cookie是服务器生成的,存储在客户端的用于辨识用户身份。Session是存储在服务器用于跟踪用户状态。

  1. 客户端将身份信息以报文形式发送到服务器;
  2. 服务器验证客户端身份信息,并将认证状态与Session ID绑定后记录在服务器,通过响应报文的Set-Cookie传给客户端;
  3. 客户端接收服务器传回的Session ID,将其作为Cookie 保存在客户端。后续向服务器发送请求,会自动发送Cookie,服务器通过检验Session ID区分用户身份;

Cookie和Session的区别:

上一篇 下一篇

猜你喜欢

热点阅读