zoukankan      html  css  js  c++  java
  • 四.[前端总结]之服务端与⽹络篇

    1. http/https 协议

    1.0 协议缺陷:

     ⽆法复⽤链接,完成即断开,重新慢启动和 TCP 3 次握⼿

    head of line blocking : 线头阻塞,导致请求之间互相影响

    1.1 改进:

     ⻓连接(默 keep-alive ),复⽤

    host 字段指定对应的虚拟站点新增功能:

    断点续传身份认证状态管理

    cache

    Cache-Control Expires

    Last-Modified Etag

    2.0: 

    多路复⽤

    ⼆进制分帧层: 应⽤层和传输层之间

    ⾸部压缩服务端推送

    https: 较为安全的⽹络传输协议

      证书(公钥)

      SSL

      端 443

    TCP:

    三次握⼿

    四次挥⼿

    滑动窗⼝: 流量控制

       慢开始

      拥塞避免

      快速重传

      快速恢复

    缓存策略: 可分为 强缓 协商缓存

    强缓存

      Cache-Control/Expires : 浏览器判断缓存是否过期,未过期时,直接使⽤强缓存,

      Cache-Control max-age 优先级⾼于 Expires

    当缓存已经过期时,使⽤协商缓存

      唯⼀标识⽅案: Etag ( response 携带) & If-None-Match ( request 携带,上⼀次返回 Etag ): 服务器判断资源是否被修改

      最后⼀次修改时间: Last-Modified(response) & If-Modified-Since ( request 上⼀次返回 Last-Modified )

        如果⼀致,则直接返回 304 通知浏览器使⽤缓存

        如不⼀致,则服务端返回新的资源

      Last-Modified 

        周期性修改,但内容未变时,会导致缓存失效   

        最⼩粒度只到 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个阶段

    timer 阶段: 执⾏到期 setTimeout / setInterval 队列回调

    I/O 阶段: 执⾏上轮循环残流 callback

    idle , prepare

    poll : 等待回调

      1. 执⾏回调

      2. 执⾏定时器

        如有到期 setTimeout / setInterval 返回 timer 阶段

        如 setImmediate ,则前往 check 阶段

    check

      执 setImmediate

    close callbacks

    8.跨域

    JSONP : 利⽤ <script> 标签不受跨域限制的特点,缺点是只能⽀持 get 请求

    js

    function jsonp(url, jsonpCallback, success) {
    
      const script = document.createElement('script') script.src = url
    
      script.async = true
    
      script.type = 'text/javascript' window[jsonpCallback] =     
        
         function(data) {
    
            success && success(data)
    
        }
    
        document.body.appendChild(script)
    
    }

    CORS: Access-Control-Allow-Origin:*

    postMessage

    9. 安全

    XSS 攻击: 注⼊恶意代码

      cookie httpOnly

      转义⻚⾯上的输⼊内容和输出内容

    CSRF : 跨站请求伪造,防护:

      get 不修改数据

      不被第三⽅⽹站访问到⽤户的 cookie

      设置⽩名单,不被第三⽅⽹站请求

      请求校验

  • 相关阅读:
    hdu 2553 N皇后问题(dfs)
    hdu 1043 Eight(双向bfs)
    牛人的ACM经验 (转)
    康托和逆康托展开(转)
    hiho Mission Impossible 6(模拟 未提交验证。。)
    数组越界也可以这么巧~~~
    poj 1679 The Unique MST(次小生成树)
    zoj 3204 Connect them(最小生成树)
    hdu 4463 Outlets(最小生成树)
    廖雪峰Java1-2程序基础-8字符和字符串
  • 原文地址:https://www.cnblogs.com/yongbin668/p/12194715.html
Copyright © 2011-2022 走看看