http/https
http是什么
应用层,一方面是需要自定义协议,一方面也会用到一些现成的协议
http及https是应用层重点协议
使用浏览器,打开网站,这个过程都是 http 来支持的
使用手机 app,加载数据,这个过程大概率也是 http 来支持的
http => 超文本传输协议
我们平时打开一个网站,就是通过 http 协议来传输数据的.
当我们在浏览器中输入一个 搜狗搜索的 “网址” (url) 时,浏览器就给搜狗的服务器发送了一个 http 请求,搜狗的服务器返回了一个 http 响应.
这个响应结果被浏览器解析之后,就展示成我们看到的页面内容。(这个过程中浏览器可能会给服务器发送多个 http 请求,服务器会对应返回多个响应,这些响应里就包含了页面 html,css,javascript,图片,字体等信息).
理解“应用层协议”
我们已经学过 tcp/ip ,已经知道目前数据能从客户端进程经过路径选择跨网络传送到服务器端进程[ ip+port ].
可是,仅仅把数据从a点传送到b点就完了吗?
所以,我们把数据从a端传送到b端, tcp/ip 解决的是顺丰的功能,而两端还要对数据进行加工处理或者使用,所以我们还需要一层协议,不关心通信细节,关心应用细节!
这层协议叫做应用层协议。而应用是有不同的场景的,所以应用层协议是有不同种类的,其中经典协议之一的http就是其中的佼佼者.
理解http协议的工作过程
当我们在浏览器中输入一个 “网址”, 此时浏览器就会给对应的服务器发送一个 http 请求. 对方服务器收到这个请求之后, 经过计算处理, 就会返回一个 http 响应.
事实上, 当我们访问一个网站的时候, 可能涉及不止一次的 http 请求/响应 的交互过程
注意: 当前 搜狗主页 是通过 https 来进行通信的。https 是在 http 基础之上做了一个加密解密的工作,后面再介绍。
http协议格式
学习http需要学习协议格式,就要用到抓包工具(本质上是个代理)
代理客户端的是正向代理,代理服务器的是反向代理
http是文本协议,相比之下ip、tcp、udp是二进制协议,而https加密之后就变成了二进制协议了
打开一个浏览器,涉及到多次浏览器和服务器之间的交互
学习http协议格式,也就是了解这里的各个属性及其含义
- 请求
- 响应
思考问题: 为什么 http 报文中要存在 “空行”?
发表评论