| 
                         拥塞处理 
        
        
    
    
    
    缓存策略: 可分为 强缓存 和 协商缓存 
    
        - Cache-Control/Expires: 浏览器判断缓存是否过期,未过期时,直接使用强缓存,Cache-Control的 max-age 优先级高于 Expires
 
        - 
        
当缓存已经过期时,使用协商缓存 
        
         
        - 
        
Last-Modified 缺点: 
        
            - 周期性修改,但内容未变时,会导致缓存失效
 
            - 最小粒度只到 s, s 以内的改动无法检测到
 
         
         
        - Etag 的优先级高于 Last-Modified
 
     
    
2. 常见状态码
    - 1xx: 接受,继续处理
 
    - 200: 成功,并返回数据
 
    - 201: 已创建
 
    - 202: 已接受
 
    - 203: 成为,但未授权
 
    - 204: 成功,无内容
 
    - 205: 成功,重置内容
 
    - 206: 成功,部分内容
 
    - 301: 永久移动,重定向
 
    - 302: 临时移动,可使用原有URI
 
    - 304: 资源未修改,可使用缓存
 
    - 305: 需代理访问
 
    - 400: 请求语法错误
 
    - 401: 要求身份认证
 
    - 403: 拒绝请求
 
    - 404: 资源不存在
 
    - 500: 服务器错误
 
 
3. get / post
    - 
    
get: 缓存、请求长度受限、会被历史保存记录 
    
        - 无副作用(不修改资源),幂等(请求次数与资源无关)的场景
 
     
     
    - post: 安全、大数据、更多编码类型
 
 
两者详细对比如下图: 
4. Websocket
Websocket 是一个 持久化的协议, 基于 http , 服务端可以 主动 push 
    - 
    
兼容: 
    
        - FLASH Socket
 
        - 长轮询: 定时发送 ajax
 
        - long poll: 发送 --> 有消息时再 response
 
     
     
    new WebSocket(url) 
    ws.onerror = fn 
    ws.onclose = fn 
    ws.onopen = fn 
    ws.onmessage = fn 
    ws.send() 
 
5. TCP三次握手
建立连接前,客户端和服务端需要通过握手来确认对方: 
    - 客户端发送 syn(同步序列编号) 请求,进入 syn_send 状态,等待确认
 
    - 服务端接收并确认 syn 包后发送 syn+ack 包,进入 syn_recv 状态
 
    - 客户端接收 syn+ack 包后,发送 ack 包,双方进入 established 状态
 
 
6. TCP四次挥手
    - 客户端 -- FIN --> 服务端, FIN—WAIT
 
    - 服务端 -- ACK --> 客户端, CLOSE-WAIT
 
    - 服务端 -- ACK,FIN --> 客户端, LAST-ACK
 
    - 客户端 -- ACK --> 服务端,CLOSED
 
 
7. Node 的 Event Loop: 6个阶段
 |