HTTP协议基础
一 http协议
url 完整结构
< screme>://< user>:< pwd>@< host>:< port>/< path>< params>?< query>#< frag>
(1.1)scheme 协议
常见协议 | 默认端口号 | 协议基本作用 |
---|---|---|
FTP | 21 | 文件上传下载 |
SSH | 22 | 完全的远程登录 |
TELNET | 23 | 远程登录 |
SMTP | 25 | 邮件传输 |
DNS | 53 | 域名解析 |
HTTP | 80 | 超文本传输 |
POP3 | 110 | 邮件接收 |
HTTPS | 443 | 加密传输的HTTPS |
(1.2)< user>< pwd>
(1.3)< host>
主机名称:
127.0.0.1 IP地址
www.baidu.com 域名
表示了你要访问的服务器在网络上的具体的门牌号码
(1.4) port 端口号
127.0.0.1:8080
主机名 端口号
任何一个程序安装在电脑上都会自动生成一个端口号
在主机上,程序开启服务会对应一个唯一的端口号
端口号理论最大值:2^16-1(65535),0-1024系统占用了
(1.5)path 路径
资源在服务器上存放的具体位置
(1.6)params
跟踪状态的参数:cookie/session 保存跟踪状态的参数
(1.7)query:
get 方法提交请求时,问号后面的查询字符串
(1.8)# frag
锚点
2 HTTP协议
超文本传输协议---hypertext transform protocol
规范了数据如何打包和传递的(专门用于传输html文件)
目前使用的版本---http/1.1
3 WEB请求的原理
浏览器DNS查询发送请求,DNS服务器把域名转换成IP地址发回给请求的浏览器.这时浏览器开始向服务器发送请求,服务器请求文件夹系统,或者请求数据库,又或者向其他服务器请求数据,最终发送给浏览器.
4 消息/报文message
是客户端与服务器端相关传递的数据块
这个数据块必须符合特定的格式,才能被彼此理解
(4.1)请求消息: Request Message(客户端发送给服务器的数据块)
(4.1.1)请求起始行
(4.1.1.1)请求方法
方法 | 特点 |
---|---|
get | 无请求主体.客户端向服务器请求数据的时候使用.地址栏明文传参,查询字符串,后台req.query.uname. |
post | 有请求主体.客户端向服务器提交数据的时候使用.通过请求主体传递数据,后台req.body.uname |
put | 向服务器发送文件的时候使用 |
delete | 从服务器上删除资源的时候使用 |
option |预请求(询问访问)
Restful API规则,利用http已有的4个方法(不算option)的四个方法定义了4个行为,使用这4个行为发送请求.
方法 | 特点 |
---|---|
get | 查询数据时,无请求主体 |
post | 新建时,有请求主体 |
put | 修改时,有请求主体 |
delete | 删除时,无请求主体 |
(4.1.1.2)协议版本号
HTTP1.1
(4.1.1.3)请求的URL
url
(4.1.2)请求头
①host:www.baidu.com
告诉服务器,我请求的主机名称
②Connection:Keep-alive
告诉服务器,请开启持久链接
③User-Agent:
告诉服务器,我这个浏览器的类型和版本号
④Accept-Encoding:
告诉服务器,浏览器可以接收的压缩文件的类型
⑤Accept-Language:zh-CN
告诉服务器,我这个浏览器可以接收的自然语言的类型
⑥refer:http://www.tmooc.cn
告诉服务器,当前请求是源于哪个页面
(4.1.3)请求主体
form-data:
uname=abc&upwd=123456
加上问号就是查询字符串
(4.2)响应消息: Response Message
服务器发送给客户端的数据块
(4.2.1)响应起始行
①协议版本号:http/1.1
②响应状态码:响应状态码
③原因短句:对响应状态码的简短解释
(4.2.2)响应头信息
①Date:告诉浏览器,响应的时间
Tue, 31 Dec 2019 05:05:15 GMT
②Connection:Keep-alive
告诉服务器,已经开启持久链接
③Content-Type:告诉浏览器,响应的主体类型是什么
类型 | 对应 |
---|---|
text/html | 响应回来的数据是html文本 |
text/css | 响应回来的数据是css文本 |
text/plain | 响应回来的是普通文本 |
application/javascript | 响应回来的是一个js文件 |
application/xml | 响应回来的是xml字符串 |
application/json | 响应回来的是json字符串 |
image/jpg | png | gif | 响应回来的是图片 |
(4.2.3)响应主体
服务器传送给浏览器的数据
5 缓存
客户端将服务器响应回来的数据进行自动保存,再次访问时就直接使用缓存的数据.
缓存的优点:
①减少冗余的数据传输,节省客户端流量
②节省服务器带宽
③降低了对服务器资源的消耗和运行的要求
④降低了由于远距离传输而造成的加载延迟
缓存的原理
①请求--无缓存--连接服务器--存缓存--客户端渲染
②请求--有缓存--够新鲜--使用缓存--客户端渲染
③请求--有缓存--不够新鲜--链接服务器确认是否过期--没过期--更新缓存新鲜度--客户端渲染
④请求--有缓存--过期--链接服务器--存缓存--客户端渲染
(1)与缓存相关的消息头
(需要前后端配合)
Catch-Control:max-age=0s
从服务器将文档传到客户端上时起,此文档处于新鲜的秒数,0就是不缓存
前端设置缓存消息:
< meta http-equiv="Catct-Control" content="max-age=3600">
所有的请求消息都可以通过meta设置:
语法: < meta http-equiv="消息头属性名称" content=>
6 HTTP性能优化
http的链接过程
发起请求--建立链接--服务器处理请求--访问资源--构建响应--发送响应--记录日志
http链接优化原则:
①减少链接创建的次数(开启持久链接)
②减少请求的次数(代码设计更合理)
③提高服务器端的运行速度
④尽可能减少响应数据的长度
7 HTTPS:安全的http协议
S:ssl
①客户端发送请求---ssl层加密---服务器接收到加密文件---ssl层解密---服务器端得到请求明文,对请求做出处理
②服务器响应数据---ssl层加密---客户端接收到加密文件---ssl层解密---客户端得到响应明文,解析执行响应的内容