图解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攻击:黑客通过程序控制大量的计算机,然后通过这个计算机群在同一个时间,发送大量的请求到目标服务器,从而达到服务器处理不过来,请求超时的情况
  
 
 
 
原文地址:https://www.cnblogs.com/wangpeiyuan/p/11840465.html