今天的笔记是HTTP
以前总在b站上刷到吐槽HTTP难得视频,但是下学期我也要学计算机网络啦哈哈哈(悲),希望不要像我的计算机组成原理一样啥也不会!!
基础定义
HTTP: 全称超文本传输协议,是用于从万维网(WWW:World Wide Web )服务器传输超文本到本地浏览器的传送协议。
HTTP 是一种应用层协议,是基于 TCP/IP 通信协议来传递数据的,其中 HTTP1.0、HTTP1.1、HTTP2.0 均为 TCP 实现,HTTP3.0 基于 UDP 实现。现主流使用 HTTP1.0 和 HTTP3.0
协议: 使数据在网络上从源头到达目的,网络通信的参与方必须遵循相同的规则,这套规则称为协议,它最终体现为在网络上传输的数据包的格式。
特点
- 应用层协议,基于TCP。
- 请求响应 简单可扩展 无状态请求间孤立)
协议分析
method
- 安全方法:不会修改服务器数据,如get head options.
- 幂等方法:同样请求执行一次与连续执行多次是一样的,服务器状态也一样,所有安全方法都是幂等的。如get put delete.
常见方法:
状态码
HTTP状态码是表示网页服务器HTTP响应状态的3位数字代码。它由 RFC2616 规范定义的 ,并得到RFC 2518、RFC 2817、RFC 2295、RFC 2774、RFC 4918等规范扩展。
所有状态码的第一个数字代表了响应的五种状态之一.
- 200OK-客户端请求成功
- 301 -资源(网页等)被永久转移到其它URL
- 302 -临时跳转;
- 401 Unauthorized -请求未经授权
- 404 -请求资源不存在,可能是输入了错误的URL
- 500-服务器内部发生了不可预期的错误
- 504 Gateway Timeout-网关或者代理的服务器无法在规定的时间内获得想要的响应。
缓存
HTTP 缓存策略分为两种: 强缓存 和 协商缓存 ,这两种缓存策略都是服务端设置 HTTP Header来实现的.
- 强缓存:直接从浏览器缓存过的本地进行读取,不会去请求服务器。
- 协商缓存:在使用本地的缓存之前,会先向服务器发一个请求,与服务器协商当前浏览器的缓存是否已经过期。协商缓存主要是解决强缓存资源不能及时更新的问题。
RESTful API
(1)每一个URI代表一种资源
(2)客户端和服务器之间,传递这种资源的某种表现层
(3)客户端通过HTTP method对服务器端资源进行操作,实现表现层状态转化
HTTP2
帧:HTTP2通信最小单位,每个帧包含帧头,标识出当前帧所属数据流
特点:二进制;交错发送,接收方重组质; 连接是永久的,阻止发送方发送大量数据.
HTTPS
特点:采用对称加密、非对称加密的方法
- 对称加密:加密解密使用同一秘钥
- 非对称加密:加密使用公钥,解密使用私钥
场景分析
可以打开浏览器,通过右键-检查或F12进入控制台,切换到network
静态资源方案:缓存+cdn+文件名hash
通过用户就近性和服务器负载判断,CDN确保内容以极高效方式为用户提供的请求服务。
(以优酷官网为例)
查看css
可以自己查看标头,分析浏览器运行
跨域
预请求:获知服务器是否允许该跨源请求
解决跨域问题:CORS/代理服务器/iframe
总结
HTTP课程看了好几次,还去搜了一些讲解的更详细的帖子和视频,怪不得这么多人吐槽真的是内容很多,还是要慢慢学呀!