web协议详解与抓包实战课程笔记
使用 ABNF 操作符来描述HTTP请求头
空白字符:用来分隔定义中的各个元素
- method SP request-target SP HTTP-version CRLF·
/
表示选择- start-line = request-line/status-line
值范围
%c##-##
- OCTAL = “0” / “1” / “2” / “3” ..
序列组合
()
,视为单个元素不定量重复
*
元素表示零个或者是多个*(header-filed CRLF)
1*
表示一个或者更多的元素,2*4
表示两个到四个
可选序列
[]
-[message-body]
1 |
|
评估web框架的关键属性
性能
可修改性
08 没听懂
09如何用network的面板分析HTTP报文
10URI的基本格式以及与RUL的区别
11 为什么要进行URI编码
如何进行转换
12 详解 HTTP的请求行
1 |
|
常见的方法
什么是幂等
具体来说,一个幂等操作满足以下条件:
- 相同输入产生相同结果: 无论执行多少次,给定相同的输入,操作的结果都是相同的。
- 不会引起副作用: 操作的执行不会对系统的状态产生额外的影响。即使多次执行,系统的状态也保持一致。
OPTION的作用,显示服务器对访问的资源支持的方法
1 |
|
13 HTTP中的正确响应码
1XX表示请求已经被服务器正确接受到了,但需要进一步的处理才能完成
2XX表示成功处理
3XX表示重定向
14 HTTP的错误响应码
4XX 表示客户端的错误
1 |
|
5XX表示服务端出现错误
并发连接的限制 503
注意: 若客户端接收到一个再RFC中不存的状态码,会返回一个该状态码的最大整百数,如 接收到277
,返回200
15如何管理跨域代理服务器的长短连接
使用 Connection
来表示长短连接的请求和响应,HTTP/1.1 默认支持 长连接;若需要关闭长连接,使用 Connection: close
为了防止 过老版本的服务器不认识 connection
字段,我们在连接代理服务器时,使用 proxy-connectio
来代替 connction
字段
16HTTP消息在服务端的路由
建立TCP连接
接受请求
寻找虚拟节点
寻找URI的处理代码
处理URI的处理代码
生成HTTP响应
发送HTTP响应
记录日志
17代理服务器转发消息时的相关头部
正向代理和反向代理的区别
- 正向代理(Forward Proxy):
- 作用: 正向代理作为客户端的代理,代表客户端向服务器发起请求。客户端向正向代理发送请求,然后由正向代理将请求转发给目标服务器,最后将响应返回给客户端。客户端对目标服务器是透明的,目标服务器不知道请求的真正发起者是客户端。
- 用途:
- 访问控制: 正向代理可以用于实现访问控制,限制客户端对特定资源的访问。
- 安全性: 可以用于隐藏客户端的真实IP地址,提高安全性。
- 翻墙: 用户可以通过正向代理访问被封锁的内容,从而实现翻墙。
- 部署: 正向代理通常部署在客户端和目标服务器之间。
- 反向代理(Reverse Proxy):
- 作用: 反向代理作为服务器的代理,代表服务器向客户端提供服务。客户端向反向代理发送请求,然后由反向代理将请求转发给后端的真实服务器,最后将后端服务器的响应返回给客户端。客户端对后端服务器是透明的,后端服务器不知道请求的真正发起者是客户端。
- 用途:
- 负载均衡: 反向代理可以分发客户端的请求到多个后端服务器,实现负载均衡,提高性能和可用性。
- 安全性: 可以用于隐藏后端服务器的真实IP地址,提高安全性。
- SSL 加速: 可以用于解密客户端发来的加密请求,将请求以明文形式转发给后端服务器,从而减轻后端服务器的负担。
- 部署: 反向代理通常部署在客户端和后端服务器之间。
总体而言,正向代理和反向代理的主要区别在于代理的对象和作用方向。正向代理代表客户端发起请求,而反向代理代表服务器提供服务。它们在网络架构、安全性、性能优化等方面有不同的应用场景。
18请求与响应的上下文
19内容协商与资源表述
主动式内容协商
响应式内容协商
20HTTP包体的传输方式
定长包体
HTTP的包体格式
不定长包体
没看懂
1 |
|
MIME multipurpose Internet Mail Extensions
22HTML form表单
HTML中的表单元素
multpart 的使用
23断点续传与多线程下载时如何做到的?
- 客户端明确任务:从何处开始下载?
- 本地是否已有部分文件?
- 其中已有的部分文件是否被修改过?
- 使用几个线程并发下载?
- 本地是否已有部分文件?
- 下载文件的指定部分内容
- 下载完毕后拼装成统一的文件
使用range来获取文件的部分数据
range的请求范围
range的条件请求
1 |
|
请求此资源的 0-5
Bytes,并带上 etag
服务器的响应
24Cookie的格式与约束
cookie HTTP State Management Mechanism
set-ccokie 的属性
cookie的问题
25session的工作原理以及第三方cookie的原理
现在不是有JWT嘛,为什么还要使用 session,session不得需要服务端保存用户的数据嘛?
Session 和 JSON Web Token (JWT) 都是在Web开发中用于管理用户状态和身份验证的工具
Session:
- 服务器端存储: Session 数据通常存储在服务器端。服务器为每个会话分配一个唯一的标识符(通常是通过 cookie 发送到客户端),而实际的数据则存储在服务器上。
- 状态管理: Session 适用于需要在服务器端保持状态的情况,例如用户登录状态、购物车内容等。服务器可以灵活管理会话的生命周期和存储方式。
- 简单性: Session 在某些情况下可能更容易实现和管理,特别是对于简单的 Web 应用程序。
JWT:
- 无状态: JWT 是一种无状态的认证机制,信息被包装在令牌中,并由客户端负责存储。服务器无需在其端存储有关令牌的信息,因此可以更容易地进行水平扩展。
- 跨域: JWT 适用于分布式系统和跨域通信,因为令牌本身包含了身份验证和授权信息。客户端在每个请求中携带令牌,而服务器只需验证令牌的签名而无需查询状态。
- 可扩展性: JWT 可以包含任意 JSON 格式的信息,因此具有良好的可扩展性。令牌可以包含有关用户、角色、权限等的信息。
- 前后端分离: JWT 适用于前后端分离的应用程序,因为前端可以存储并发送令牌,而后端只需验证令牌的有效性。
为什么还要使用 Session:
尽管JWT在许多场景中非常有用,但Session仍然具有一些优势:
- 生命周期控制: Session 允许服务器更精细地控制会话的生命周期,可以在用户不活动一段时间后自动过期。
- 撤销和管理: Session 使得撤销用户的访问权限更加容易,因为可以在服务器端集中管理会话状态。
- 传输敏感数据: 有些情况下,特别是在涉及敏感数据传输的情况下,使用服务器端存储的 Session 数据可能更安全。
- 适用于某些 Web 框架: 某些Web框架可能更适合使用Session,而不是JWT。
26浏览器同源策略
CSRF Cross-Site Request Fogery
跨域请求伪造
27 通过CORS实现跨域访问
CORS cross-origin resource sharing
30缓存新鲜度的四种计算方式
35网络爬虫的工作原理
wireShark的使用
捕获过滤器
限定词
显示过滤器
切片操作,但与go中的 slice有所区别
可用函数
可以看看显示过滤器
41webSocket
websocket 用于服务端主动推送资源,实现双向通信
websocket具有良好的兼容性
支持扩展
WebSocket 在需要实现实时、低延迟、双向通信的场景中都可以发挥作用。由于它建立在单个持久的 TCP 连接上,相较于传统的轮询技术,WebSocket 可以减少通信开销,提高效率。
70TLS的工作原理
TLS的设计目的
- 身份验证
- 数据保密
- 完整性约束
71对称加密的工作原理
加密过程
XOR 异或运算,XOR的速度非常快,只需要便利一次即可
明文不一定和密钥的长度一致,这时就需要进行分组加密
其次,若最后一个分组的block不够长时,这时需要进行填充
填充方法
上面是直接将明文分解为多个块,对每个快独立加密,但这存在一个问题: 无法隐藏数据的特征
每一个明文块和前一个密文块进行亦或后,再进行加密
实现串行化
实现消息完整性的校验
sender
- 使用hash对源msg1进行处理得到mac1
- 使用CTR对数据进行加密
receiver
- 使用CTR对加密数据进行解密,得到msg2
- 使用hash对解密msg2进行处理得到mac2
- 对比mac1和mac2
- 若相等,则消息为完整的,可以使用msg2
73AES对称加密算法
AES Advanced Encruption Standard
74非对称加密 RSA
如何将对称加密的密钥传递给双方? 可以使用非对称加密来实现
RSA算法中的公钥私钥的产生
即使 泄露了 公钥,即 (k,n)
若想推导 私钥中的d
,则需要推导 n
,而n
是一个非常大的数字,对一个非常大的数字进行因式分解很难,这也就是为什么难以推导私钥的原因。
非对称加密和解密的过程
使用私钥进行加密,后用公钥进行解密,相当于私钥对明文进行了数字签名
76基于openssl验证RSA算法
77PKI证书体系
基于私钥进行加密,只能使用公钥进行解密,起到身份验证的作用
公钥的管理 public key infrastructure 公钥基础设施
- 由CA数字证书机构将用户个人身份与公开密钥关联在一起
- 公钥数字证书组成
- CA的信息、公钥用户的信息、公钥、权威机构的签名、有效期
- PKI用户
- 向CA注册公钥的用户
- 希望使用已注册公钥的用户
证书类型
77DH密钥交换协议
RSA密钥交换存在问题:若私钥一旦泄露,之前所有的通信内容都可以被解密