zoukankan      html  css  js  c++  java
  • 图解http

    一、了解web及网络基础

      1.网络基础TCP/IP

        通常使用的网络包括互联网是在TCP/IP协议族的基础上运作的,HTTP是属于它内部的一个子集,

        不同的硬件,操作系统之间的通信需要一种规则,这种规则称为协议(protocal);

      2.TCP/IP的分层管理

        TCP/IP分为四层:应用层、传输层、网络层、数据链路层

        应用层:决定了向用户提供应用服务时通信的活动;http协议处于该层

        传输层:提供处于网络连接中的两台计算机之间的数据传输(TCP位于该层)

        网络层: 处理在网络上流动的数据包,数据包时网络传输的最小数据单位(IP)

        链路层:用来处理连接网络的硬件部分

        利用TCP/IP协议族进行通信时,会通过分层顺序与对方进行通信,发送端从应用层往下走,接收端从链路层往上走

      3.一次完整的http请求过程

        

    二、简单的HTTP协议

      请求报文组成:请求方法、请求URI、协议版本、可选的请求首部字段、内容实体

      响应报文组成:协议版本、状态码、原因短语、响应首部字段、实体主体

    三、HTTP状态码

      1XX: 接收的请求正在处理

      2XX: 请求正常处理完毕

      3XX: 重定向状态码

      4XX: 客户端错误

      5XX: 服务器错误

      常见状态码:

        200: 请求成功返回内容

        204: 请求成功无内容返回

        206: 范围请求

        301: 永久性重定向

        302: 临时性重定向(会存在网址劫持的问题)

        303: 临时性重定向,但明确表示客户端应采用GET方法获取资源

        304: 缓存

        307: 临时性重定向,会遵照浏览器标准,不会从POST变成GET

        400: 客户端语法错误

        401:请求需要通过HTTP认证

        403: 未获得访问权限

        404: 服务器上无法找到请求的资源

        500: 服务器端执行请求时发生错误

        503: 服务器暂时处于超负载或正在停机维护

    四、HTTP首部

      HTTP报文包括报文首部、空行、主体部分

      请求报文首部:请求行,请求首部字段,通用首部字段,实体首部字段,其他

      响应报文首部: 状态行,响应首部字段,通用首部字段,实体首部字段,其他

    五、确保安全的HTTPS

      HTTP的缺点

        1.通信使用明文(不加密),内容可能会被窃听; 通过加密技术来解决

          通信的加密:HTTP协议中没有加密机制,通过和SSL或TLS组合使用,建立安全通信线路,加密HTTP的通信内容;

          内容的加密:客户端对HTTP报文进行加密处理后再发送请求

        2.不验证通信方的身份,有可能遭遇伪装; 

          使用SSL不仅提供加密处理,还使用了证书的手段确定通信方

        3.无法证明报文的完整性,有可能被篡改

          通过MD5,PGP签名验证

      HTTP+加密+认证+完整性保护=HTTPS

      

      HTTPS:是添加了加密及认证机制的HTTP;HTTP+SSL

      SSL(安全套接层):是为网络通信提供安全及完整性的一种安全协议

      

      常见的加密方法:

        共享秘钥加密: 加密和解密同用一个密钥的方式;

          优缺点:密钥有可能被窃听的风险,处理速度较快

        使用两把密钥的公开秘钥加密: 发送密文的一方使用对方的公开秘钥加密,对方收到被加密的信息后,使用自己的私有秘钥进行解密

          优缺点: 秘钥不会被窃听,但处理速度要慢

        HTTPS采用混合加密机制

        HTTPS存在一些问题:当使用SSL时,处理速度变慢;

                  SSL必须进行加密处理,在服务器和客户端都需要进行加密和解密的运算处理,会更多地消耗服务器和客户端的硬件资源,导致负载增强

                  需要购买证书耗费财力

    六、webSocket

      是什么:webSocket是一个html5的一个新特性,目的是为了在浏览器和服务器之间建立一个双向通信的通道,服务器可以在任意时刻给浏览器发送消息。

      与传统http的不同:http是一个请求-响应协议,必须由客户端发起请求,服务器才能发送数据给浏览器

      请求格式如下:

      GET ws://localhost:3000/ws/chat HTTP/1.1
      Host: localhost
      Upgrade: websocket //协议升级
      Connection: Upgrade
      Origin: http://localhost:3000
      Sec-WebSocket-Key: client-random-string //是用于标识这个连接,并非用于加密数据;
      Sec-WebSocket-Version: 13
      
     创建 WebSocket 对象: 
      var Socket = new WebSocket(url, [protocol] );
     
     webSocket事件:
      Socket.onopen  连接建立时触发
      Socket.onmessage  客户端接收服务端数据时触发
      Socket.onerror  通信发生错误时触发
      Socket.onclose  连接关闭时触发

     
    webSocket方法:
      Socket.send()  使用连接发送数据
      Socket.close()  关闭连接

    七、常见的攻击及加密方式
      xss(跨站脚本攻击):在网站内嵌入恶意脚本,窃取用户的cookie或者用户信息
        攻击方式:在提交表单时攻击或者uri参数传递时攻击
      CSRF(跨站请求伪造):攻击者伪装成已完成认证的用户向第三方平台发送恶意请求
        解决方案:设置cookie为httpOnly,验证token
      SQL注入攻击:通过非法的sql指令来操作数据库
        解决方案:重要信息加密,md5
      DDOS攻击:黑客通过程序控制大量的计算机,然后通过这个计算机群在同一个时间,发送大量的请求到目标服务器,从而达到服务器处理不过来,请求超时的情况
      
     
     
     
  • 相关阅读:
    CSS技巧(二):CSS hack
    CSS技巧(一):清除浮动总洁
    js中apply方法的使用
    call 方法
    正则表达式
    【js事件详解】js事件封装函数,js跨浏览器事件处理机制
    [BZOJ 4300] 绝世好题
    [SPOJ1557] Can you answer these queries II
    [Codeforces 877E] Danil and a Part-time Job
    [Codeforces 914D] Bash and a Tough Math Puzzle
  • 原文地址:https://www.cnblogs.com/wangpeiyuan/p/11840465.html
Copyright © 2011-2022 走看看