zoukankan      html  css  js  c++  java
  • HTTP学习笔记

    1.TCP/IP协议族

      分层:应用层HTTP/DNS/FTP。传输层TCP/UDP。网络层IP/ARP。数据链路层(处理连接网络的硬件部分)

      TCP三次握手:发送端发送SYN,接收端发送SYN/ACK,发送端再发送ACK。

      HTTP通信过程:客户端输入域名,DNS通过域名查找IP地址。HTTP协议生成针对目标WEB服务器的HTTP请求报文。TCP协议将HTTP请求报文分割成报文段,分别添加标记序号和端口号,把每段报文可靠的(三次握手)传给对方。IP协议搜索对方的地址,增加作为通信目的地的MAC地址,一边中转一边传送。服务器端TCP协议将接收到的报文段按序重组成请求报文。HTTP协议对WEB服务器请求的内容进行处理。响应的内容也按相同方式传给客户端。

    2.HTTP协议

      HTTP协议肯定是先从客户端开始建立通信。对于一条通信路线来说,服务器端和客户端的角色是固定的。

      HTTP是无状态协议。

      HTTP可以保持TCP连接状态,在建立一次TCP连接后可进行多次HTTP请求和响应。

      HTTP管线化:下一次请求不需要等待上一次的响应完成就可以进行。

      Cookie进行状态管理:服务器端在响应报文里添加Set-Cookie首部字段,通知客户端保存Cookie,下次客户端往服务器发送请求时,客户端在请求报文添加Cookie首部字段,服务器发现请求报文的Cookie后,检查究竟是哪一个客户端发送来的连接请求,然后对比服务器的记录,最后得到之前的状态信息。

    3.HTTP报文

      报文分请求报文和响应报文。报文由报文首部+空行+报文主体构成。

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

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

      HTTP状态码:1XX信息性状态码,接受的请求正在处理。

                         2XX成功状态码,请求正常处理完毕。200,204(响应不返回资源)

              3XX重定向状态码,需要进行附加操作完成请求。304(服务器资源未改变,可直接使用客户端未过期的缓存)

              4XX客户端错误状态码,服务器无法处理请求。403(不允许访问该资源)404(服务器找不到请求资源)

              5XX服务器错误状态码,服务器处理出错。500(服务器内部出错)503(服务器处于超负荷或者停机维护)

    4.WEB服务器

      代理:位于客户端和服务器之间,进行转发。作用:缓存,访问控制,获取访问日志。

      网关:接收客户端请求时,把自己当作源服务器处理请求。作用:可以使网关与服务器通信提供非HTTP协议服务。

      隧道:对相隔很远的客户端和服务器进行中转,保持双方通信连接。作用:保证安全通信

      缓存:代理服务器或者客户端本地保存的资源副本。减少对源服务器的访问,节省通信流量和时间。在判断缓存过期后,要向源服务器确认缓存的有效性

    5.HTTPS

      HTTP的缺点:通信不加密,可能被窃听。

              通信方身份不验证,可能遭遇伪装。

              无法证明报文完整性,可能被篡改。(中间人攻击)

      解决办法:使用SSL(安全套接层)和TLS(安全传输协议)对通信进行加密

           使用证书查明通信对方的身份

             使用证书证明传输数据的完整。

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

      SSL加密方式:共享密钥加密(加密和解密用同一个密钥),处理速度快,但密钥传递过程不可靠。

               公开密钥加密(公开密钥加密,私有密钥解密),更安全,但处理速度更慢。

             HTTPS使用公开密钥加密方式安全交换稍后共享密钥加密中要使用的密钥,然后使用共享加密方式进行通信。

      使用SSL时,HTTPS的处理速度会变慢:SSL通信要消耗网络资源,同时对通信进行处理,使得通信时间延长。SSL做很多加密解密处理,消耗CPU和内存,导致处理速度变慢。

    6.用户身份验证

      BASIC认证:客户端发送请求,服务器返回状态码401要求认证,客户端发送账号密码。不安全

      DIGEST认证:客户端发送请求,服务器返回401要求认证,并发送质询码,客户端发送质询码计算的响应码。不能防止用户伪装。

      SSL客户端认证:客户端发送事先安装的证书进行验证,通过后领取证书的公开密钥,开始HTTPS通信

      表单认证:通过输入用户ID和密码等登录信息发送至服务端进行验证。

           用户将ID和密码发送至服务端后,服务端进行身份验证,将认证状态和SessionID绑定后记录在服务端,并同时在Cookie中返回SessionID给用户端。客户端接收到SessionID后作为Cookie保存在本地,下次发送请求时,SessionID随着Cookie发送给服务端,服务端可以验证接受的SessionID识别用户和其验证状态。

    7.基于HTTP的其他协议

      WebSocket:使用HTTP建立连接,之后使用专有协议进行通信。

              建立连接的时候发起方还是客户端,一旦连接确立,无论客户端还是服务端,都可以直接向对方发送报文。

              特点:支持由服务器向客户端推送数据,不必等待客户端的请求。一旦建立连接,可以保持连接状态,减少开销。

    8.WEB攻击技术

      针对WEB应用的攻击模式:主动攻击,直接访问WEB应用,传入攻击代码。(SQL注入攻击和OS命令注入攻击)

                   被动攻击,利用圈套策略执行攻击代码。(跨站脚本攻击XSS和跨站点请求伪造CSRF)

      XSS:在有安全漏洞的网站用户的浏览器运行非法的HTML标签或者JS脚本。一般在表单中添加特殊字段

      SQL注入:针对WEB应用使用的数据库通过运行非法的SQL语句。一般在URI的查询字符串中添加特殊字符

      HTTP首部注入攻击(被动):在响应首部字段添加换行添加任意首部字段。

      HTTP响应截断攻击:在响应首部添加两个换行符,往报文主体添加内容,并注释原本内容,达到伪造的目的。

      CSRF:通过其他网站获取当前浏览器针对某一网站的Cookie中的会话ID,让服务端误以为假冒网站就是当前已认证的用户,进行一些非法操作。

      Dos攻击:集中利用访问请求造成资源过载,使服务器停止。

      DDos攻击:利用多台计算机发起Dos攻击。

      

  • 相关阅读:
    一个Java对象到底占用多大内存
    Java 动态代理机制分析及扩展
    JVM内幕:Java虚拟机详解
    深度分析 Java 的 ClassLoader 机制(源码级别)
    Java异常的深入研究与分析
    HashMap的工作原理
    Java枚举常见7种用法
    left join 过滤条件写在on后面和写在where 后面的区别
    mysql left( right ) join使用on 与where 筛选的差异
    SQL索引优化
  • 原文地址:https://www.cnblogs.com/little-jelly/p/5829141.html
Copyright © 2011-2022 走看看