http笔记——http原理与实践
http原理与实践
经典五层模型
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传
低三层
- 物理层主要作用是定义物理设备如何传输数据
- 电脑的网卡端口硬件设备
- 数据链路层在通讯的实体之间建立数据的链路连接
- 网络层为数据在节点之间传输创建逻辑链路
传输层
- 向用户提供可靠的端到端服务
- 传输层向更高层屏蔽了下层数据通讯的细节
应用层
为应用软件提供了很多服务
构建于tcp协议之上
屏蔽网络传输相关细节
http协议发展历史
- http/0.9
- 只有一个命令get
- 没有header等描述数据的信息
- 服务器发送完毕就关闭tcp
- http/1.0
- 增加了很多命令
- 增加了status code 和header
- 多字符集支持,多部分发送,权限,缓存等
- http/1.1
- 持久连接
- pipeline
- 增加host和其他一些命令
- http2
- 所有数据已二进制传输
- 同一个连接里面发送多个请求不在需要按照顺序来
- 头信息压缩以及推送等提高效率的功能
http的三次握手
客户端发送创建连接
服务端确认连接
客户端确认连接 建立连接
URI,URL,URN
- URI
- Uniform Resource Identifier/统一资源标识符
- 为了定位一个网址具体的某个页面
- 用来唯一表示互联网上的信息资源
- 包括URL和URN
URL
Uniform Resource Locator/统一资源定位器
http://user:[email protected]:80/path?query=string#hash
此类格式的都叫URL,比如ftp协议
URN
永久统一资源定位符
在移动之后还能被找到
目前行业没有应用方案
http报文
http方法
用来定义对于资源的操作
常有的有get和post
从定义上讲有各自的语义
http code
- 定义服务器对请求的处理结果
- 各个区间的code有各自的语义
- 好的http服务可以通过code判断结果
CORS预请求
在cors的限制
- 只有get,head ,post方法其他的需要用一个方法去验证
- 允许Content-Type
- text/plain
- multipart/form-data
- application/x-www-form-urlencoded
- 其他的限制
- 请求头的限制
- XMLHttpRequesUpload 对象均没有任何事件监听器
- 请求中没有使用ReadableStream对象
缓存Cache-Control
- 可缓存性
- public
- 任何地方
- private
- 发起请求的浏览器
- no-cache
- 谁也不缓存
- public
- 到期
- max-age=
- 设置缓存多少秒
- s-maxage=
- 代理服务器设置缓存多少秒
- max-stale
- 缓存过期后依然可以使用缓存的时间
- max-age=
- 重新验证
- must-revalidate
- 缓存过期后必须去原服务端获取缓存
- proxy-revalidate
- 用在缓存服务器中,缓存过期后必须去原服务端获取缓存
- 其他
- no-store
- 本地可以存缓存带必须服务器验证后才能用
- no-transform
- 服务器不要随便改动缓存的内容
- no-store
- must-revalidate
资源验证
- 验证头
- Last-Modified
- Etag
- Last-Modified
- 上次修改时间
- 配合If-Modified-Since或者If-Unmodified-Since使用
- 对比上次时间验证是否需要更新
- Etag
- 数据签名
- 配合If-Match或者If-Non-Match使用、
- 对比资源的签名判断是否使用缓存
Cookie和Session
- Cookie
- 通过Set-Cookie设置
- 下次请求会自动带上
- 键值对,可以设置多个
- Cookie属性
- max-age和expires设置过期时间
- Secure只在https的时候发送
- HttpOnly无法通过document.cookie访问
HTTP长连接
长连接就是请求后一段时间内不会关闭的连接这样下次访问的时候不用进行三次握手
数据协商
请求
返回
- Accept
- Accept
- 我想要的数据类型
- Accept-Encoding
- 我的数据是什么编码方式主要是进行压缩
- Accept-Language
- 我的数据是什么语言(中文英文等)
- User-Agent
- 返回的是移动端还是pc端
- Accept
- Content
- Content-Type
- 实际数据的返回格式对应Accept
- Content-Encoding
- 数据是什么编码格式对应Accept-Encoding
- Content-Language
- 根据你的请求响应语言还是不根据你的请求响应你的语言
- Content-Type
Redirect
更新网络资源当服务器的资源改变路径时使用
csp
- 作用
限制资源获取
报告资源获取
- 限制方式
- default-src限制全局
- 制定资源类型
https
- 加密
- 私钥
- 公钥
- 握手过程
http2
信道复用
分帧传输
Server Push