这是我参与「第五届青训营 」伴学笔记创作活动的第 5 天
重点内容:🍊HTTP协议🍋协议分析🍑HTTP2新特性
🍉前言🍉
HTTP协议之前一直听说过,但没有很细致的去了解过,通过本次课程老师的细致讲解,对http协议的理解又加深了许多。
🍊初识HTTP🍊
TCP/IP基础
TCP协议的特点是:
- 面向连接
- 点对点 (一对一)
- 可靠交付
- 面向字节流,就是说把上层协议传递过来的数据当成字节传输。
[]为了实现TCP上述的特点,TCP协议需要解决的是面向连接(建立连接和关闭连接的方式)、可靠传输(错误确认和重传)、流量控制(发送方和接收方的传输速率协调)、拥塞控制四个方面。
在网络模型中,主要关注在应用层中HTTP协议的主要信息。
HTTP特点
- Hyper Text Transfer Protocol超文本传输协议:承载多种体裁,比如html、css、js,以及跟server通信的相关api也可以去做一些相关传输。
- 应用层协议,基于TCP协议:底层是TCP协议。
- 请求 响应:拥有请求和响应两部分。
- 简单可扩展:语义简单,可以自定义一些符合格式规范的请求。
- 无状态:每个请求之间都是独立的,没有记忆能力。
🍎HTTP协议分析🍎
Method
| 方法 | 描述 |
|---|---|
| GET | 请求一个指定资源的表示形式.使用GET的请求应该只被用于获取数据 |
| POST | 用于将实体提交到指定的资源,通常导致在服务器上的状态变化或副作用 |
| PUT | 用请求有效载荷替换目标资源的所有当前表示 |
| DELETE | 删除指定的资源 |
| HEAD | 请求一个与GET请求的响应相同的响应,但没有响应体 |
| CONNECT | 建立一个到由目标资源标识的服务器的隧道。 |
| OPTIONS | 用于描述目标资源的通信选项。 |
| TRACE | 沿着到目标资源的路径执行一个消息环回测试 |
| PATCH | 用于对资源应用部分修改。 |
方法也分为安全的方法和幂等方法
Safe (安全的): 不会修改服务器的数据的方法,比如GET方法、HEAD方法、OPTIONS方法等。
ldempotent(幂等):同样的请求被执行一次与连续执行多次的效果是一样的,服务器的状态也是一样的。 所有safe的方法都是ldempotent的。比如GET、HEAD、OPTIONS、PUT、DELETE等方法。
重点关注GTE、POST、HEAD、OPTIONS
状态码
通常在网络方面的请求中,经常出现的错误一般都4开头的错误,比如404 not found,403 forbidden,等等。通过上表的状态码,可以结合实际遇到的情况大致了解是什么问题导致出现了相应的状态码。
常用请求头
Accept可以帮助声明可接收类型,Cookie可以携带相关验证信息,Referer可以了解来源URL,Origin可以追溯到源头,User-Agent是访问时客户端必要的一些信息,在做UA伪装时经常会使用。
重点关注Accept、Cookie、User-Agent
常用响应头
Conetnt-Type能识别返回的内容类型,Etag注明版本信息,Set-Cookie表示验证信息。
重点关注Content-Type,Etag,Set-Cookie
Cookie
Cookie、Session、Token都用于身份验证的过程中,Cookie 侧重于信息的存储,主要是客户端行为。 Session 和 Token 侧重于身份验证,主要是服务端行为。本次主要理解Cookie相关内容。
Cookie通过键值对的形式来定义各种参数信息,然后将其打包成一个字典后随请求一并发送给服务器。
🥝HTTP2新特性🥝
二进制
HTTP/2通信的最小单位是帧,每个帧都有帧头,至少也标识出当前帧所属的数据流。由于使用的是二进制编码,所以效率更高。
如图,每一帧就是一个
Frame header + Frame body 的形式。
交错发送
消息:与逻辑请求或响应消息对应的完整的一系列帧。
数据流:已建立的连接内的双向字节流可以承载一条或多条消息。
如图,我们把
HEADERS frame + DATA frame 的完整组合称为逻辑上完整的帧。同时一个连接里,可以有很多个双向的字节流去发送,拆分后的帧,不需要按照逻辑顺序去串行执行,而是可以并行发送,这样就提升了传输效率!
流控制
每一个来源或目标地址建立连接以后可以被永久利用,后续有相同地址可以直接使用,而不用再次进行连接。
流控制是阻止浏览器持续向服务器发送大量数据的一种机制,比如说,在看一个视频时,会有大量数据发送,点击暂停后,你去评论区留言或者讨论了。如果浏览器能够智能识别出来暂停了,就可以不继续缓存后续视频,而把资源都用在当前正在处理的事情上,即把资源留给评论等信息处理部分。
🍒总结🍒
这次课程加深了对于网络传输的应用层相关了解,在之前的基础上有了更深的理解,利用好上述提到的一些协议和特性,可以提升传输效率!了解了http协议后,对网页文件也有了新的认识。