zoukankan      html  css  js  c++  java
  • HTTP总结

    1、TCP/IP协议族

    HTTP是TCP/IP内部中的一个子集,HTTP是建立TCP协议之上的,当进行HTTP通信时,也可以说进行了TCP通信。具体流程如下图所示:

    图片来源于 图解HTTP

    1.1 TCP协议

      按层次分,TCP位于传输层,提供可靠的字节流服务。所谓的字节流服务是指,为了方便传输,将大块数据分割成以报文段为单位的数据包进行管理。

      为了准确无误地将数据送达目标处,TCP协议采用了三次握手策略,发送端首先发送一个带SYN标志的数据包给对方,接收端收到后,回传一个带有SYS/ACK的数据包以示传达确认信息。最后,发送端再回传一个带ACK标志的数据包,代表“握手”结束。

    图片来源于 图解HTTP

    在断开连接时,经过四次挥手就可以断开连接了。四次挥手最后会经过一个TIME_WAIT阶段,需要等待2MSL时间才能断开,主要是为了防止在最后主动方发送给被动方的确认报文没有发送到,导致被动方超时重传FIN报文。

    1.2 各种协议与HTTP协议的关系

    可以用一下图片来解释它们之间的关系。

    2 HTTP协议

    2.1 通过请求和响应的交换达成通信

    HTTP之间的通信通过请求报文和响应报文来实现,请求报文是由请求方法、请求URI、协议版本、可选的请求首部字段和内容实体构成的。

    响应报文基本上由协议版本、状态码、用以解释状态码的原因短语、可选的响应首部字段以及实体主体构成。

    2.2 HTTP是不保存状态的协议

      HTTP是一种不保存状态,即无状态协议。HTTP协议自身不对请求和响应之间的通信状体进行保存。也就是说在HTTP这个级别,协议对于发送过的请求或响应都不做持久化处理。 这是为了更快处理大量事务,确保协议的可伸缩性,而特意把HTTP协议设计成如此简单的。

      HTTP/1.1虽然是无状体协议,但为了实现期望的保存状体功能,于是引入了Cookie技术。有了Cookie再用HTTP协议通信,就可以管理状体了。

    2.3 使用Cookie的状态管理

      Cookie技术通过在请求和响应报文中写入Cookie信息来控制客户端的状态。Cookie会根据从服务器发送的响应报文内的一个叫Set-Cookie的首部字段信息,通知客户端保存Cookie。下次客户端再往该服务器发送请求时,客户端会自动在请求报文中加入Cookie值后发送出去。

         

    2.4 持久连接节省通信量

      HTTP协议的初始版本中,每进行一次HTTP通信就要断开一次TCP连接。在包含大量图片的情况下就不适用了,每次的请求都会造成无谓的TCP连接建立和断开,增加通信量的开销。

      为了解决上述的TCP连接问题,HTTP/1.1和一部分的HTTP/1.0想出了持久连接的方法。持久连接的特点是,只要任意一端没有明确提出断开的连接,则保持TCP连接状态。持久连接的好处在于减少了TCP连接的重复建立和断开所造成的额外开销,减轻了服务器端的负载。另外,减少开销的那部分时间,使HTTP请求和响应能够更早地结束,这样Web页面的显示速度也就相应提供了。

     2.4.1 管线化

      持久连接使得多数请求以管线化方式发送成为可能。从前发送请求后需等待并收到响应,才能发送下一个请求。管线化技术出现后,不用等待响应亦可直接发送下一个请求。这样就能够做到同时并行发送多个请求,而不需要一个接一个地等待响应了。

    2.5 返回结果的HTTP状态码

    3 HTTPS协议

      使用HTTP协议将存在以下几个主要的缺点

      1、通信使用明文,内容可会被窃听

      2、不验证通信方的身份,因此有可能遭遇伪装

      3、无法证明报文的完整性,所以有可能已遭篡改

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

      HTTPS并非是应用层的一种新协议。只是HTTP通信接口部分用SSL和TLS协议代替而已。通常,HTTP直接和TCP通信,当使用SSL时,则演变成先和SSL通信,在由SSL和TCP通信了。简言之,所谓HTTPS,其实就是身披SSL协议这层外壳的HTTP

    3.1 HTTPS采用混合加密机制

      HTTPS采用共享密钥加密和公开秘钥加密两者并用的混合加密机制。若密钥能够实现安全交换,那么有可能会考虑仅使用公开密钥加密来通信,但是公开密钥加密与共享密钥加密相比,其处理速度要慢。所以应充分利用两者各自的优势,将多种方法组合起来用于通信,在交换密钥环节使用公开密钥加密方式,之后的建立通信交换报文阶段则使用共享密钥加密方式。

  • 相关阅读:
    CRM小结 – Account Management 1
    懂ABAP的好处
    Enhancement in Sales order 销售订单中的增强
    Account Classification
    关于Business Data Toolset
    Account Life Cycle Stage - 客户的生命周期管理
    使用维护Relationship
    Tansaction Variant and Screen Variant
    关于软件测试的认识与学习目标
    《ASP.NET MVC Music Store Tutorial》在Visual Studio 2008简体中文环境下的代码修订
  • 原文地址:https://www.cnblogs.com/xingkongyihao/p/11046336.html
Copyright © 2011-2022 走看看