
1.HTTP
1.1 HTTP--概念
HTTP (全称为 "超文本传输协议" )是一种应用非常广泛的应用层协议


HTTP诞生于1991年,目前已经发展为最主流使用的⼀种应用层协议。
HTTP2.0及其之前是基于传输层的TCP协议 实现的,HTTP3.0基于UDP实现。
当前我们主要使用 的版本 还是HTTP1.1 和 HTTP2.0(一个技术不是越新越好)
我们平时打开一个网站 ,就是通过 HTTP协议 来传输数据的。


1.2 应用层协议--概念


1.3 HTTP协议的工作过程
非常经典的"一问一答"模型

注意: 当前搜狗主页是通过https 来进行通信的,https 是在 http 基础 之上做了一个加密解密的工作,后面再介绍。
1.4 HTTP 协议格式
HTTP是一个文本格式的协议 ,可以通过Fiddler 抓包, 分析 HTTP 请求/响应的细节。

(1)安装抓包工具--Fiddler
先安装,下载地址:https://www.telerik.com/fiddler/





(2)抓包结果


刚才已经获取到HTTP请求/响应的抓包结果
双击 左边蓝色部分www.sogou.com ,观察右侧上方 HTTP请求报文 ,切换到Raw 页,点击View in Notepad 通过记事本打开。


观察右侧下方 HTTP响应报文



(3)协议格式总结



1.5 HTTP 请求(Request)
(1)认识URL
URL基本格式
平时我们俗称的 "网址" 其实就是说的URL (Uniform Resource Locator 统一资源定位符)。
互联网上的每个文件都有一个唯一的URL ,它包含的信息 指出文件的位置 以及浏览器应该怎么处理它。



关于 URL encode


URL decode 就是 URL encode 的逆过程
URL encode工具
https://tool.chinaz.com/Tools/urlencode.aspx
https://tool.chinaz.com/Tools/urlencode.aspx
(2)认识"方法"(method)


GET方法
GET 是最常用 的 HTTP 方法,常用于获取服务器上的某个资源。

POST方法
POST 也是一种常见的方法 ,多用于提交用户输入的数据给服务器 (例如登陆页面)。

经典面试题:谈谈 GET和 POST 的区别


PUT和DELETE方法

(3)认识请求"报头"(header)





Cookie 中存储了一个字符串, 这个数据可能是客户端 / 浏览器(网页)自行 通过JS写入的,也可能来自于服务器 (服务器在 HTTP 响应的 header 中通过 Set-Cookie 字段给浏览器返回数据), 往往可以通过这个字段 实现 "身份标识" 的功能.
每个不同****的 域名下都可以有不同的 Cookie ,不同网站 之间的 Cookie 并不冲突。






(4)认识请求"正文"(body)
正文中的内容格式和header 中的Content-Type密切相关

1.6 HTTP 响应(Response)
(1)认识"状态码"(status code)
状态码表示访问一个页面的结果,访问成功、失败 ,还是其他情况。



(2)认识响应"报头"(header)与"正文"(body)


1.7 构造 HTTP 请求



2.HTTPS
2.1 HTTPS概念
HTTPS也是一个应用层协议 ,在HTTP协议的基础上引入了一个加密层。
HTTP 协议内容都是按照文本的方式明文传输(不安全) 的,这就导致在传输过程中出现⼀些被篡改的情况。
举例:"运营商劫持"
下载A 软件,未 被劫持的效果,点击下载按钮,就会弹出A软件的下载链接。
已 被劫持的效果,点击下载按钮,就会弹出B软件的下载链接。

不止运营商 可以劫持,其他的黑客 也可以用类似的手段进行劫持 ,来窃取 用户隐私信息,或者篡改内容。
试想一下,如果黑客在用户登陆支付宝的时候获取到用户账户余额,甚至获取到用户的支付密码.....
在互联网上,明文传输是比较危险的事情!!!
HTTPS 就是在HTTP 的基础上进行了加密,进一步的来保证用户的信息安全。
2.2 "加密"概念

加密和解密的过程中,往往需要一个或者多个中间的数据 ,辅助进行这个过程,这样的数据称为密钥。

2.3 HTTPS的工作过程(经典面试题)
既然要保证数据安全 ,就需要进行**"加密"**。
网络传输 中不 再直接传输明文 了,而 是加密之后的"密文"。
(1)对称加密
对称加密其实就是通过同一个"密钥",把明文加密成密文 ,并且也能把密文解密成明文。



比较理想的做法 ,就是能在客户端和服务器建立连接的时候,双方协商确定这次的密钥是啥。

(2)非对称加密




(3)中间人攻击
黑客可以使用中间人攻击 ,获取到对称密钥。


(4)引入证书
服务端 在使用HTTPS 前,需要向CA机构 申领⼀份数字证书,数字证书里含有证书申请者信息、公钥信息等。
服务器 把证书 传输给浏览器 ,浏览器从证书里获取公钥 就行了,证书就如身份证,证明服务端公钥的权威性。




(5)总结
完整流程 :左侧都是客户端做的事情,右侧都是服务器做的事情。


