湘潭网站设计,画册设计制作,合肥做网站开发多少钱,沧州网站运营公司1.什么是HTTP#xff1f;
HTTP全称是超文本传输协议#xff0c;是一种基于TCP协议的应用非常广泛的应用层协议。
1.1常见应用场景
一.浏览器与服务器之间的交互。 二.手机和服务器之间通信。 三。多个服务器之间的通信。
2.HTTP请求详解
2.1请求报文格式
我们首先看一下…1.什么是HTTP
HTTP全称是超文本传输协议是一种基于TCP协议的应用非常广泛的应用层协议。
1.1常见应用场景
一.浏览器与服务器之间的交互。 二.手机和服务器之间通信。 三。多个服务器之间的通信。
2.HTTP请求详解
2.1请求报文格式
我们首先看一下协议格式图再来详细描述各个部分。 2.2认识请求行
2.2.1认识方法
在HTTP中常用的方法一般有两个GET和POST。
GET方法用于获取资源 POST方法用于提交一些数据到服务器
GET方法和POST方法的区别 1.语义不同GET方法一般用于获取数据POST数据一般用于输出数据。 2.GET的body(正文)一般为空需要传递数据通过query string传递 【GET的URL长度无限制如果有也是浏览器或者应用程序规定的】 POST的query string一般为空需要传递数据通过body传递。 3.GET请求一般是幂等的POST请求一般不是幂等的 4.GET可以被缓存在本地下次访问时就无需联网而直接从本地缓存获取POST不可以 【这就是为什么联网时点开看过的手机图片断网后也可以加载出来而没看过的就不可以】
2.2.2认识URL
URL其实就是统一资源定位符俗称网址 例如https;//www.baidu.com就是一个URL仅此而已。
2.2.3认识Version
请求行中的version就是指HTTP协议的版本号用于标识客户端使用的HTTP协议版本。
2.3认识请求报头header
HOST表示服务器主机的地址 和端口号 Content-Length:表示Body中数据长度单位是字节在空行后就读取多长 Content-Type:表示Body中的数据长度 User-Agent(简称UA):表示浏览器/操作系统的属性 Referer:表示当前页面是从那个页面跳转来的
Cookie:它的作用是存储用户在此网站的一些数据比如登录信息和操作记录这样用户下次登陆时就不用重新输入账号密码之类的每个网站都有自己的Cookie,各自之间不能访问。
2.4认识空行
空行就是将请求正文和以上内容分开但是因为大多数请求都是使用GET方法的而GET方法的正文一般为空所以…当我们用抓包工具例如Fidder去看请求报文时一般到报头就结束了
3.HTTP响应详解
3.1响应报文格式 3.2认识状态码
状态码表示访问一个页面的结果。 常见状态码 200 OK 表示访问成功 404 Not Found 表示没有找到资源【URL写错了】 403 Forbidden 表示无权访问一般是企业内部网址
状态码总结; 1xx 信息行状态码 接收的请求正在处理 2xx 成功状态码 请求正常处理完毕 3xx 重定向状态码 需要进行附加操作以完成请求 4xx 客户端错误状态码 服务器无法处理请求 5xx 服务器错误状态码 服务器处理请求出错
3.3其余
和请求部分差不多只不过正文部分不是空是客户端请求的数据。
4.什么是HTTPS
HTTPS跟HTTP差不多只是在其基础上引入了一个“加密层”。HTTP虽然传输效率高但是数据传输是采用明文形式的随着互联网技术的发展这种方式容易造成数据泄露造成经济损失。
5.对称加密和非对称加密
那么HTTPS是如何给数据进行加密的呢 有两种方式分别是对称加密和非对称加密。
5.1对称加密
客户端生成一个密钥发给服务器两方使用这个密钥对数据进行加密进行数据传输。 对称加密是指数据加密和解密的密钥是相同的 优点 数据传输效率高当然跟明文传输比还差点 缺点一旦密钥被掌握安全性这块也基本等于明文传输了
5.2非对称加密
客户端使用公钥加密数据变成密文服务器使用私钥解密密文 公钥用来加密私钥用来解密。 优点相对对称加密安全性高点 缺点传输效率低下
如何加密数据
是的我们合二为一具体思路为 首先使用非对称加密的方式将密钥使用公钥加密发送给服务器服务器使用私钥解密拿到密钥然后双方使用密钥来通信具体如图
6.中间人攻击
即使采用了合二为一法看似天衣无缝但其实黑客还是有办法去破解的欸我草黑客怎么这么坏。中间人攻击就是典型的方法之一 具体如图 为什么会造成这种情况呢
其实主要原因就是公钥这玩意不是客户端自带的是在客户端向服务器发送连接请求后服务端发给客户端的明文发送很容易被截获而服务器私钥也是根据发给客户端的公钥生成的。
那公钥加密一下不就好了 这就扯成先有蛋还是先有鸡的问题了那加密公钥的密钥怎么让服务端知道服务端不知道怎么解密
7.破局关键——证书
问题的关键就在于关键的问题的关键嗯…那么防止中间人攻击的关键就在于鉴别收到公钥的真假如果鉴别到假公钥我就不传数据了嗯…那么最终的解决办法就是把公钥放在证书里然后传证书证书由权威机构颁发
7.1简单介绍证书
证书长这样 可以把它理解为一个结构化的字符串。
那么有没有可能黑客截获证书将其中公钥修改成自己生成的公钥欸我草黑客怎么这么坏进行中间人攻击 啊还真是有可能的那么问题就变成了 如何验证证书有没有被修改 权威机构将证书中所有信息生成一个字符串然后进行运算如MD5算法得到一个值这个值就是数据签名客户端拿到证书首先将除签名外所有信息进行运算算出来值与证书中的数据签名一样即可证明没有被修改。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。真的可以证明吗有没有可能黑客根据算法去修改公钥只要保证最后值不变就行了欸我草黑客怎么这么坏可行吗 还真可行那么问题又变成了 如何验证证书中的数字签名有没有被修改 那么我们就需要给数字签名加密具体过程权威机构用私钥给数字签名加密公钥则由客户端自带当客户端收到证书时使用自带的公钥解密数字签名再自己根据证书内容算一个数字签名两者相同则表示数字签名没有被修改。至此HTTPS数据传输安全就得到了保证。
8.小结
8.1HTTPS中涉及的三个密钥
1.正常通讯使用的密钥 2.用于保证发送密钥安全的非对称加密的公钥和私钥 3.证书机构和客户端使用的用于保证证书真伪的公钥和私钥
8.2HTTPS的通讯过程
1.三次握手 2.客户端发送连接请求 3.服务器发送证书包含公钥 4.客户端使用自带私钥解密数字签名的值并验证证书真伪 5.若证书为真则发送之后通讯用的密钥用公钥加密 6.服务器用私钥解密获得密钥发送响应用密钥加密。
.