网络
http/https
- http的6种请求方式
get
post
head
put
delete
options
get:获取资源:幂等、可缓存、安全的。请求参数以?分割拼接到URL后面
post:处理资源:非不幂的、不可缓存、不安全的。请求参数在body里面
(安全指的是不引起server端的任何状态变化,幂等指同一个请求方法执行多次和执行一次的下过完全相同,缓存指大部分代理服务器可缓存)
-
状态码
1xx:
2xx:200响应成功
3xx:301、302网络重定向
4xx:403、404客户端发起的请求可能有问题
5xx:502、501server异常 -
连接建立流程
image.png
- http特点
无连接:可以通过http的持久连接来补偿。持久连接可以提高网络请求效率
无状态:同一个用户多次请求服务器并不能识别,通过cookie/session来识别同一个用户
cookie主要用来记录用户状态,区分用户;状态保存在客户端。
客户端发送的cookie在http请求报文的cookie首部字段中。
服务端设置http响应报文的set-Cookie首部字段
怎样修改cookie?->新cookie覆盖旧cookie。覆盖规则name、path、domain等需要与原cookie一致
怎样删除cookie?->覆盖,设置expirse=过去的一个时间点,或maxAge=0
怎样保证cookie安全?->加密cookie、只在https上携带、设置cookie为httpOnly,防止跨站脚本攻击
session 也是用来记录用户状态,区分用户;状态保存在服务端。
session和cookie关系?session需要依赖于cookie机制
image.png
-
持久连接头部字段
connection:keep-alive //客户端期许持久连接
time:20//持久连接有效持续时间
max:最大发生多少个连接相应对 -
怎样判断一个请求是否结束
Content-length:1024 //通过响应报文头部字段大小来判断到是否结束
chunked //post请求多次响应,最后会有一个空的chunked来判断是否结束 -
Charles抓包原理,利用了中间人攻击漏洞来实现。
client<------中间人------->server -
https和http的区别
https=http+SSL/TLS
image.png
image.png
会话秘钥=随机数random s + random c + 预主秘钥
- https使用了哪些加密
连接过程中使用非对称加密,保证安全,但是耗时。(公钥加密私钥解密/私钥加密公钥解密)
后续通信过程使用对称加密,秘钥在传输过程中可能遇到中间人攻击,不保证绝对安全。(加密解密的秘钥相同)
image.png
image.png
tcp/udp
- UDP:传输层协议,用户数据报协议。
特点:无连接、尽最大努力交付、面向报文(既不合并,也不拆分)。
功能:复用、分用、差错检测
image.png
image.png
- TCP: 传输层协议,传输控制协议。
特点:
1.面向连接:(3次握手4次挥手)
2.可靠传输:(1.保证报文:无差错、不丢失、不重复、按序到达。2.停止等待协议:无差错情况-请求->响应、超时重传、确认丢失、确认重传)。
3.面向字节流:TCP会将发送方的数据拆分或合并后发给接收方
4.流量控制:基于滑动窗口协议来实现的。
5.拥塞控制:(慢开始,拥塞避免。快回复、快重传)
image.png
image.png
DNS
- DNS解析:域名到ip地址的映射,DNS解析请求采用udp数据报,且明文
- 递归查询 “我去给你问一下” Clint<=>本地dns<=>跟域dns<=>顶级dns<=>权限dns
- 迭代查询 “我告诉你谁可能知道”
image.png
image.png
- 常见问题:
1.dns劫持问题。两种解决方法 httpDNS/长连接
2.dns解析转发问题
image.png