网络相关

182 阅读2分钟

1. HTTP协议

超文本传输协议

  • 请求/响应报文
    • 请求

    • 响应

    • 请求方式

      • GET
        • 请求参数以?分割拼接到URL后面
        • 参数长度限制2048个字符
        • 不安全
      • POST
        • 请求参数在Body里面
        • 参数长度没有限制
        • 比较安全

      安全:不应该引起server端的任何状态变化
      幂等性:同一个请求方法执行多次和执行一次的效果完全相同
      可缓存性: 请求是否可以被缓存
      
      • HEAD
      • PUT
      • DELETE
      • OPTIONS
  • 状态码
  • 连接建立流程
  • HTTP的特点
    • 无连接
      • HTTP的持久连接
        • 头部字段
          • Connection : keep-alive
          • time : 20 —— 连接保持多久
          • max : 10 —— 最多可以发送多少次
        • 怎样判断请求结束
          • Content-length : 1024
          • chunked,最后会有一个空的chunked
        • Charles抓包原理
          • 中间人攻击漏洞
    • 无状态
      • Cookie/Session

2. HTTPS与网络安全

  • HTTPS和HTTP的区别
  • HTTPS连接建立流程
  • HTTPS采用的加密手段
    • 非对称加密
    • 对称加密

3. TCP/UDP

  • UDP
    • 特点
      • 无连接
      • 尽最大努力交付
      • 面向报文,既不合并,也不拆分
    • 功能
      • 复用
      • 分用
      • 差错检测
  • TCP
    • 特点
      • 面向连接
        • 数据传输开始之前需要建立连接
          • 三次握手 —— 规避请求超时异常
        • 数据传输结束之后需要释放连接
          • 四次挥手 ——
      • 可靠传输
        • 无差错

        • 不丢失

        • 不重复

        • 按序到达

        • 停止等待协议

          • 无差错情况
          • 超时重传
          • 确认丢失
          • 确认迟到
      • 面向字节流
      • 流量控制
        • 滑动窗口协议
      • 拥塞控制
        • 慢开始、拥塞避免
        • 快恢复、快重传

4. DNS解析

  • DNS解析查询方式
    • 递归查询
    • 迭代查询
  • 常见问题
    • DNS劫持问题
      • 和HTTP没有关系
        • DNS解析发生在HTTP建立连接之前
        • DNS解析请求使用UDP数据报,端口号53
      • 解决
        • httpDNS
        • 长连接
    • DNS解析转发问题

5. Session/Cookie

Cookie
  • HTTP协议无状态特点的补偿
    • 客户端发送的cookie在http请求报文的Cookie首部字段中
    • 服务器端设置http响应报文的Set-Cookie首部字段
  • 修改cookie
    • 新cookie覆盖旧cookie
    • 覆盖规则:name、path、domain等需要与原cookie一致
  • 删除cookie
    • 新cookie覆盖旧cookie
    • 覆盖规则:name、path、domain等需要与原cookie一致
    • 设置cookie的expires=过去的一个时间点,或者maxAge=0
  • 如何保证cookie的安全
    • 加密处理
    • 只在https上携带cookie
    • 设置Cookie为httpOnly,防止跨站脚本攻击
Session