赞
踩
HTTP 协议是被我们广泛使用的应用层协议,我们平时使用浏览器时,就可以都看到浏览器网址前面有一个 http:// 表示我们使用的是 HTTP 协议。目前 HTTP 协议大多是基于 TCP 协议实现的,只有最新的少部分版本是基于 UDP 实现。本文会通过 Fiddler 抓包来简单介绍 HTTP 协议内容,并介绍 HTTPS 的加密方式
提示:以下是本篇文章正文内容,下面案例可供参考
HTTP 请求大概可以分为四个部分:首行、请求头、空行、body。
上面两图,第一行的内容就是首行,可以看到第一张图是 GET 开头,第二张是 POST 开头,GET 和 POST 就表示这个 HTTP 请求使用的方法类型,从首行下面一行开始,一直到空行,是请求头,在第二张图中可以明显的看到一个空白的换行,这个就是空行,第一张图的最下面也能看到,但是因为没有 body 被隔开,所以不算明显 ,空行下面就是 body,是 HTTP 请求的内容。
首行:首行大概可以分为三个部分,HTTP 请求的方法、URL 和 HTTP 版本号。版本号是首行最后面的部分,例如上图中的 HTTP / 1.1 就表示 HTTP 的 1.1 版本。 HTTP 请求的方法,下面再做简单介绍,它就表示这个请求大概是要做什么。然后是一个 URL,URL 就是网络资源唯一定位符,通过一个 URL 就能访问到网络中一个具体的资源。一个 URL 大概包括这些内容:
以上只介绍了个大概,还有部分 URL 内容并没有介绍到。首行的最后一个部分是版本号,也就是图中query string 后面的 HTTP/1.1,表示这个请求使用 HTTP 版本是 1.1。
HTTP响应同样可以分为四个部分:首行、响应头、空行、body。
首先我们要知道,HTTPS 和 HTTP 之间基本只有加密与未加密的区别。网络上传输的数据很多都设计隐私或机密,所以对网络传输加密是非常有必要的。接下来就是对 HTTPS 加密方式的简要介绍。以下内容仅涉及基本的加密方式,不涉及具体的加密方法。
对称加密:客户端和服务器持有相同的密钥:公钥,公钥就是大家都能获取到的密钥,加密和解密都由这个公钥完成,公钥由客户端生成,当一个服务器同时连接了多个客户端时,每个客户端持有的公钥都是不相同的。
非对称加密:客户端和服务器持有不同的密钥,公钥和私钥,,私钥就是只有自己知道的,一般是服务器持私钥,并由服务器给每个客户端分发公钥,使用非对称加密的成本比对称加密高很多。
只使用对称加密:如果只使用对称加密,就会出现如下情况
这样的加密看起来好像很不错,但黑客很容易就能从第一次交互中截获公钥,这样,之后的每次数据传输,就都会被黑客解密。
只使用非对称加密:那如果只使用非对称加密,是否就能安全呢?答案是可以的,因为非对称加密的私钥是只有自己知道的,不管是使用私钥加密,公钥解密,还是使用公钥加密,私钥解密,拿不到私钥的黑客都是获取不到明文数据的,但使用非对称加密的成本是非常高的,如果所有的数据传输都是用非对称加密,就会造成非常大的资源浪费。
使用非对称加密对对称加密的公钥进行加密:看起来有点绕,但并不难理解,既然对称加密的公钥很容易被截获,非对称加密又能保证安全,那使用非对称加密将对称加密的公钥进行加密,不就可以既能保证安全,又能最大程度降低成本了吗。这个加密过程大致如下:
这个加密方法看起来就非常完美了,但其实,还存在一个致命的问题。
以上就是对 HTTP 请求、响应内容以及 HTTPS 加密的简要介绍,希望能对你有帮助。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。