Network

HTTP

Get和Post的区别

安全性

幂等性

可缓存性
请求是否可以缓存(get/head)

连接建立断开流程

HTTP特点

  • 无连接(补偿:Http的持久连接)
  • 无状态 (补偿:Cookie/Session)

Http的持久连接
设置请求头部字段:
connection: keep-alive
time: 20
max: 10 (该连接最多能发送的请求数)

判断一个请求是否结束

  • Content-length: 1024
  • chunked, 最后会有一个空的chunked

Charles抓包原理
中间人攻击

HTTPS连接建立流程

会话秘钥 == Random S + Random C + 预主秘钥

TCP/UDP

UDP
无连接
面向报文

功能:

  • 多端口复用分用
  • 差错检测

TCP
特点:面向连接,可靠传输,面向字节流,流量控制,拥塞控制
面向连接
三次握手(规避两次握手时超时重传可能建立不必要的连接)
四次挥手 (存在半关闭状态)
可靠传输

  • 无差错:发生传输错误时候,会超时重传

  • 确认丢失

  • 不重复

  • 按序列到达

面向字节流

流量控制
滑动窗口协议

拥塞控制
慢启动,拥塞避免,快恢复,快重传

DNS解析

域名到IP地址的映射,DNS请求采用UDP数据报,且明文

查询方式

  • 递归查询
    client -> 本地DNS -> 根域DNS -> 顶级DNS -> 权限DNS

  • 迭代查询

DNS解析常见问题

  • DNS劫持问题
  • DNS解析转发问题
  • 如何解决DNS劫持


如何修改cookie?

  • 新cookie覆盖旧cookie
  • 覆盖规则:name、path、domin等需要和原cookie一致

如何删除cookie?

  • 新cookie覆盖旧cookie
  • 覆盖规则:name、path、domin等需要和原cookie一致
  • 设置cookie的expires=过去的一个时间点,或者maxAge=0

如何保证cookie的安全?

  • 对cookie进行加密处理
  • 只在https携带Cookie
  • 设置Cookie为HttpOnly,防止跨站脚本攻击

Session

Session也是用来记录用户状态,区分用户的;状态存放在服务端
Session和Cookie关系是怎样的?

  • session需要依赖于Cookie机制