HTTP协议与HTTPS协议的解析
HTTP协议解析
HTTP即超文本传输协议,是一种详细规定了浏览器和万维网服务器之间互相通信的基础,它允许将HTML文档从WEB服务器传输到WEB浏览器。
URL介绍
URL(统一资源定位符)也被称为网页地址,是互联网标准的地址。
URL的标准格式:
协议://服务器ip:端口 / 路径 / ?查询
浏览器可以发起HTTP请求,也可以借助其他工具发起HTTP请求,比如,liunx系统的curl命令
HTTP协议详解
HTTP是一种无状态的协议。无状态是指WEB浏览器与WEB服务器之间不需要建立持久的连接,这意味着当一个客户端向服务器发出请求,然后WEB服务器返回响应(Response),连接就被关闭了,在服务器端不保留连接的有关信息。也就是说,HTTP请求只能由客户端发起,而服务器不能主动向客户端发送数据。
HTTP请求
(1)HTTP请求
HTTP请求包括三部分,分别是请求行(请求方法),请求头(消息报头),和请求正文
(2)HTTP响应
与HTTP请求对应的是HTTP响应,HTTP响应也由三个部分内容组成,分别是响应行,响应头(消息报头)和响应正文(消息主题)。
请求方法
请求方法 | 解释 |
---|---|
GET | 请求获取Request-URL所标识的资源,GET请求存在于URL之中。 |
POST | 在Request-URL所标识的资源后附加新的数据。 |
HEAD | 请求获取由Request-URL所标识的资源后附加新的数据。 |
PUT | 请求服务器储存一个资源,并用Request-URL作为标识。 |
DELETE | 请求服务器删除Request-URL所标识的资源。 |
TRACE | 请求服务器回送收到的请求信息,主要用于测试或诊断。 |
CONNECT | 保留将来使用。 |
OPTIONS | 请求查询服务器的性能,或者查询与资源相关的选项和需求。 |
HTTP状态码
状态码 | 介绍 |
---|---|
1xx | 指示信息–表示请求已接收,继续处理 |
2xx | 成功–表示请求已被成功接收,理解,接受 |
3xx | 重定向–要完成请求必须进行更进一步的操作 |
4xx | 客户端错误–请求有语法错误或请求无法实现 |
5xx | 服务器端错误–服务器未能实现合法的请求 |
常见状态码,状态描述,说明。
状态码 | 状态描述 | 说明 |
---|---|---|
200 | OK | 客户端请求成功 |
400 | Bad Request | 客户端请求有语法错误,不能被服务器所理解 |
401 | Unauthorized | 请求未经授权,这个状态代码必须和WWW-Authenticate报头域一起使用 |
403 | Forbidden | 服务器收到请求,但是拒绝提供服务 |
404 | Not Found | 请求资源不存在,eg:输入了错误的URL |
500 | Internal Server Error | 服务器发生不可预期的错误 |
503 | Server Unavailable | 服务器当前不能处理客户端的请求,一段时间后可能恢复正常 |
HTTP消息(HTTP头)
HTTP消息又称HTTP头(HTTP header),由四部分组成,分别是请求头,响应头,普通头和实体头。
请求头
请求头只出现在HTTP请求中,请求报头允许客户端向服务器端传递请求的附加信息和客户端自身的信息。常用的HTTP请求头如下:
请求头 | 解释 |
---|---|
HOST | 主要用于指定被请求资源的Internet主机和端口号,例如:host:www.test.com:8080 |
User-agent | 允许客户端将它的操作系统、浏览器和其他属性告诉服务器 |
Referer | 代表当前访问URL的上一个URL,简单的说,用户是从什么地方来到本页面。 |
Cookie | 它是一段文本,常用来表示请求者身份等。 |
Range | 多线程下载一定会用到此请求头。 |
X-forward-for | 它代表请求端的IP,可以有多个,中间以逗号隔开。 |
Accept | 用于指定客户端接收那些MIME类型的信息,如Accept: text/html,表明客户端希望接收html文本。 |
Accept-Charset | 用于指定客户端接收的字符集。(告诉服务器能够发送哪些字符集) |
响应头
响应头是服务器根据请求向客户端发送的HTTP头。
响应头 | 解释 |
---|---|
Server | 服务器所使用的WEB服务器名称。避免攻击者探测可以修改此头的信息。 |
Set-Cookie | 向客户端设置Cookie,通过查看此头,可以清楚地看到服务器向客户端发起的Cookie信息。 |
Last-Modified | 服务器通过这个头告诉浏览器,资源的最后修改时间。 |
Location | 服务器通过这个头告诉浏览器去访问哪个页面,浏览器接收到这个请求之后,通常会立刻访问Location头所指的页面。这个头通常配合302状态码使用。 |
Refresh | 服务器通过Refresh头告诉浏览器定时刷新浏览器。 |
普通头
在普通报头中,有少数报头域用于所有的请求和响应消息,但并不用于被传输的实体,只用于传输的消息。
实体头
请求和响应消息都可以传送一个实体。实体头定义了关于实体正文和请求所标示的资源的元信息。元信息也就是实体内容
的属性,包括实体信息类型、长度、压缩方法、最后一次修改时间等。常见的实体头如下:
实体头 | 解释 |
---|---|
Content-Type | 实体报头域用语指明发送给接收者的实体正文的媒体类型。 |
Content-Length | 实体报头域用于指明实体正文的长度,以字节方式存储的十进制数字来表示。 |
Last-Modified | 实体报头域用于指示资源的最后修改日期和时间。 |
HTTP与HTTPS的区别
HTTPS协议它是以安全为目标的HTTP通道,其实就是HTTP的"升级"版本,只是它比单纯的HTTP协议更加安全。
HTTPS的安全基础是SSL,既在HTTP下加入SSL层。也就是HTTPS通过安全传输机制进行传送数据,这种机制可保护网络传送的所有数据的隐秘性与完整性,可以降低非入侵性拦截攻击的可能性。
HITPS和IHTTP的区别主要如下:
1.https协议需要到ca申请证书,一般免费证书较少,因而需要一定费用。
2、http是超文本传输协议,信息是明文传输,https则是具有安全性的ssl加密传输协议。
3.http和https使用的是完全不同的连接方式,用的端口也不一样,前者是80,后者是443.
4、http的连接很简单,是无状态的:HTTPS协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议,比.http协议安全。
HTTPS的优点
尽管HTTPS并非绝对安全,掌握根证书的机构、掌握加密算法的组织同样可以进行中间人形式的攻击,但HTPS仍是现行架构下最安全的解决方案,主要有以下几个好处:
(1)使用HTTPS协议可认证用户和服务器,确保数据发送到正确的客户机和服务器;
(2) HTTPS协议是由SSL+HTTP协议构建的可进行加密传翰、身恰认证的网络协议,要比HTTP协议安全,可防止数据在传输过程中不被窃取、改变,确保数据的完整性。
(3)HTTPS是现行架构下最安全的解决方案,虽然不是绝对安全,但它大幅增加了中间人攻击的成本。
(4)谷歌曾在2014年8月份调整搜素引擎算法,并称"比起同等HTTP网站,采用HTTPS加密的网站在搜索结果中的排名将会更高"。
HTTPS的缺点
虽然说HTTPS有很大的优势,但其相对来说,还是存在不足之处的:
(1)HTTPS协议握手阶段比较费时,会使页面的加载时间延长近50%,增加10%到20%的耗电:
(2)HTTPS连接缓存不如HTTP高效,会增加数据开销和功耗,甚至已有的安全措施也会因此而受到影响;
(3)SSL证书需要钱,功能越强大的证书费用越高,个人网站、小网站没有必要一般不会用。
(4)SSL证书通常需要绑定IP,不能在同一IP上绑定多个城名,IPV4资源不可能支撑这个消耗。
(5)HTTPS协议的加密范围也比较有限,在黑客攻击、拒绝服务攻击、服务器劫持等方面几乎起不到什么作用。最关键的,SSL证书的信用链体系并不安全。特别是在某些国家可以控刚CA根证书的情况下,中间人攻击一样可行。