http协议和https协议
http协议
简介
HTTP协议是一种基于TCP的应用层协议,它采用C/S模式,为Web客户与服务器之间通信提供一种公共的方法。使用的TCP端口号为80。
HTTP事务处理过程
(1)客户与服务器之间建立连接。
(2)客户向服务器提出服务请求。
(3)服务器接受请求,并根据请求返回相应的文件作为应答。
(4)关闭客户与服务器之间的HTTP连接。
HTTP的特点
(1)HTTP采用一次性连接策略。
即,每次连接只处理一个请求,当服务器返回本次请求的应答后立即关闭连接,下次请求再建立连接。这种一次性连接的策略主要考虑到Web服务器只能提供有限个连接,却要面对成千上万的用户。一次性连接策略避免了一个连接长时间处于等待状态而降低服务器的执行效率。
(2)HTTP是一种无状态协议。
服务器不保留与用户交易时的任何状态,这就大大减轻了服务器的存储负担,从而保证了较快的响应速度。
(3)HTTP是一种面向对象的协议。
HTTP协议允许传送任意类型的数据对象。它通过数据类型和长度来标识所传送的数据内容和大小,并允许对数据进行压缩传送。
HTTP的方法
方法 | 说明 |
---|---|
GET | 请求读取网页 |
HEAD | 请求读取网页的头 |
PUT | 请求存储网页 |
POST | 附加一个命名的资源,如一个网页等 |
DELETE | 删除网页 |
LINK | 连接两个已有的资源 |
UNLINK | 断开两个已有的资源之间的连接 |
其中,最常用的方法是GET和POST
GET
该方法的目的是取回有URL指定的资源,主要用于取回由一个超文本链接所定义的对象。如果对象是文件,则取回文件的内容,如果队形是程序或描述,则取回该程序执行的结果或该描述的输出。
POST
当客户向服务器传送大量数据,并要求服务器和公共网关接口程序做进一步处理时,要是用POST方法。
GET和POST的区别
(1)get重点在从服务器上获取资源,post重点在向服务器发送数据;
(2)get传输数据是通过URL请求,以field(字段)= value的形式,置于URL后,并用"?“连接,多个请求数据间用”&"连接,如http://127.0.0.1/Test/login.action?name=admin&password=admin,这个过程用户是可见的;
post传输数据通过Http的post机制,将字段与对应值封存在请求实体中发送给服务器,这个过程对用户是不可见的;
(3)Get传输的数据量小,因为受URL长度限制,但效率较高;
Post可以传输大量数据,所以上传文件时只能用Post方式;
(4)get是不安全的,因为URL是可见的,可能会泄露私密信息,如密码等;
post较get安全性较高;
(5)get方式只能支持ASCII字符,向服务器传的中文字符可能会乱码。
post支持标准字符集,可以正确传递中文字符。
https协议
简介
HTTPS协议 = HTTP协议 + SSL/TLS协议,在HTTPS数据传输的过程中,需要用SSL/TLS对数据进行加密和解密,需要用HTTP对加密后的数据进行传输,由此可以看出HTTPS是由HTTP和SSL/TLS一起合作完成的。
SSL的全称是Secure Sockets Layer,即安全套接层协议,是为网络通信提供安全及数据完整性的一种安全协议。
TLSTLS的全称是Transport Layer Security,即安全传输层协议。
HTTPS为了兼顾安全与效率,同时使用了对称加密和非对称加密。数据是被对称加密传输的,对称加密过程需要客户端的一个密钥,为了确保能把该密钥安全传输到服务器端,采用非对称加密对该密钥进行加密传输,总的来说,对数据进行对称加密,对称加密所要使用的密钥通过非对称加密传输。
HTTPS在传输的过程中会涉及到三个密钥:
服务器端的公钥和私钥,用来进行非对称加密
客户端生成的随机密钥,用来进行对称加密
HTTPS协议的数据传输过程
一个HTTPS请求实际上包含了两次HTTP传输,可以细分为8步。
1.客户端向服务器发起HTTPS请求,连接到服务器的443端口
2.服务器端有一个密钥对,即公钥和私钥,是用来进行非对称加密使用的,服务器端保存着私钥,不能将其泄露,公钥可以发送给任何人。
3.服务器将自己的公钥发送给客户端。
4.客户端收到服务器端的公钥之后,会对公钥进行检查,验证其合法性,如果发现发现公钥有问题,那么HTTPS传输就无法继续。严格的说,这里应该是验证服务器发送的数字证书的合法性。如果公钥合格,那么客户端会生成一个随机值,这个随机值就是用于进行对称加密的密钥,我们将该密钥称之为client key,即客户端密钥,这样在概念上和服务器端的密钥容易进行区分。然后用服务器的公钥对客户端密钥进行非对称加密,这样客户端密钥就变成密文了,至此,HTTPS中的第一次HTTP请求结束。
5.客户端会发起HTTPS中的第二个HTTP请求,将加密之后的客户端密钥发送给服务器。
6.服务器接收到客户端发来的密文之后,会用自己的私钥对其进行非对称解密,解密之后的明文就是客户端密钥,然后用客户端密钥对数据进行对称加密,这样数据就变成了密文。
7.然后服务器将加密后的密文发送给客户端。
8.客户端收到服务器发送来的密文,用客户端密钥对其进行对称解密,得到服务器发送的数据。这样HTTPS中的第二个HTTP请求结束,整个HTTPS传输完成。
浏览器中输入:“www.xxx.com” 之后都发生了什么?
(1)由域名→IP 地址
向DNS服务器发送DNS查询报文解析域名获得IP地址,寻找IP地址的过程依次经过了浏
览器缓存、系统缓存、hosts 文件、路由器缓存、 递归搜索根域名服务器。
建立 TCP/IP 连接 (三次握手具体过程)
由浏览器发送一个 HTTP 请求
经过路由器的转发,通过服务器的防火墙,该 HTTP 请求到达了服务器
服务器处理该 HTTP 请求,返回一个 HTML 文件
浏览器解析该 HTML 文件,并且显示在浏览器端