Open MJingv opened 5 years ago
Content-Type
字段来获知请求中的消息主体是用何种方式编码架构
地址
,也可以看成是资源的名称
。自描述性
,需要在形式上给人以直觉上的关联名词
,不能包含动词幂等性
的特性
eg:GET和HEAD请求都是
安全
的, 无论请求多少次,都不会改变服务器状态
。而GET、HEAD、PUT和DELETE请求都是幂等
的,无论对资源操作多少次,结果总是一样的
,后面的请求并不会产生比第一次更多的影响。
get | post | put | delete |
---|---|---|---|
获取表示 | 使用服务端管理的(自动产生)的实例号创建资源 | 用客户端管理的实例号创建一个资源 | 删除资源 |
变更时获取表示(缓存) | 创建子资源 部分更新资源 如果没有被修改,则不过更新资源(乐观锁) | 通过替换 的方式更新资源 如果未被修改,则更新资源(乐观锁) |
|
安全 | 不安全 | 不安全 | 不安全 |
幂等 | 不幂等 | 幂等 | 幂等 |
幂等性idempotent
http中表示发送一个和多个请求引起的边界效应是一致的 【post非幂等】
安全性
仅对数据实现获取,不具有边界效应(side effect) 【get head options 安全方法】
第三次握手是为了防止失效的连接请求到达服务器
,让服务器错误打开连接。
客户端发送了 FIN 连接释放报文之后,服务器端收到了这个报文,就进入了 CLOSE-WAIT 状态。
这个状态是为了让服务器端发送还未传送完毕的数据,传送完毕之后,服务器端会发送 FIN 连接释放报文。
https://coolshell.me/articles/40-picture-4d-long-text-wins-http.html
1989年,lee在论文中提到在互联网构建超链接有3点
hypertext transport protocol 超文本传输协议
http/0.9
http/1.0
http/1.1
http/2
http/3.0
http是无状态、无记忆的,浏览器的cookie来记忆
http网络相关填坑
协议走起
UDP
适用场景
TCP
1. 头部
标识符
URG=1:该字段为一表示本数据报的数据部分包含紧急信息,是一个高优先级数据报文,此时紧急指针有效。紧急数据一定位于当前数据包数据部分的最前面,紧急指针标明了紧急数据的尾部。 ACK=1:该字段为一表示确认号字段有效。此外,TCP 还规定在连接建立后传送的所有报文段都必须把 ACK 置为一。 PSH=1:该字段为一表示接收端应该立即将数据 push 给应用层,而不是等到缓冲区满后再提交。 RST=1:该字段为一表示当前 TCP 连接出现严重问题,可能需要重新建立 TCP 连接,也可以用于拒绝非法的报文段和拒绝连接请求。 SYN=1:当SYN=1,ACK=0时,表示当前报文段是一个连接请求报文。当SYN=1,ACK=1时,表示当前报文段是一个同意建立连接的应答报文。 FIN=1:该字段为一表示此报文段是一个释放连接的请求报文。
2. 状态机
3. 超时重传 ARQ协议
4. 滑动窗口
接收端窗口
Zero 窗口
5. 拥塞处理
拥塞避免
快速重传
快速恢复
总结
拥塞控制四个算法 慢开始、拥塞避免、快速重传、快速恢复
HTTP
请求的内容
get vs post
常见状态码
5xx 服务端错误
HTTPS (HTTP+TLS)
HTTPS 还是通过了 HTTP 来传输信息,但是信息通过 TLS 协议进行了加密
TLS
握手:非对称加密,通信:对称加密
HTTP 2
header头压缩
多路复用
server push
HTTP 3(HTTP-over-QUIC)
问题
QUIC 特性
多路复用
0-RTT
纠错机制