zoukankan      html  css  js  c++  java
  • HTTP与HTTPS

    HTTP

    基本知识

    HTTP称为超文本传输协议,由客户端程序和服务器程序实现,通过交换HTTP报文进行通信。

    通常浏览器实现了HTTP的客户端,web服务器实现了HTTP的服务器端。

    Web页面是由对象组成的,一个对象只是一个文件,如HTML文件,JPEG文件,音频,视频等文件,他们通过URL地址寻址,一个URL地址包含主机地址和对象路径地址两部分。

    HTTP使用TCP协议。

    无状态协议

    HTTP客户首先发起一个与服务器的TCP的连接,连接建立后,浏览器与服务器进程就可以通过套接字接口访问TCP

    HTTP服务器不保存关于客户的任何信息,即使某个特定的客户重复请求同一对象,服务器也会重新发送。

    持续连接与持续连接

    非持续

    每个请求/响应是经一个单独的TCP连接发送,每个TCP连接在服务器发送一个对象后关闭。

    请求一个HTML文件的时间

    RTT(TCP三次握手的前两次)+RTT(结合TCP第三次握手和HTTP请求报文)+HTML(传送该文件所需的时间)

    持续连接

    客户端可以一个接一个在同一连接上发送请求,不必等待应答,这就是 流水线。

    HTTP默认采用带流水线的持续连接。

    HTTP报文格式

    Cookie的实现

    实现cookied的四个组件

    1.Http响应的一个cookie首部 2.Http请求的一个cookie首部行 3.用户端系统维护一个cookie文件 4.服务器的后端数据库。

    cookie使得http具有状态

    1.当用户首次与访问某站点时,Web站点产生一个唯一标识码,并用含有Set-cookie:xxx的http报文响应

    2.当客户端(浏览器)收到报文时,在其管理的cookie文件中添加此主机名和对象的cookie识别码。

    3.用户再次请求该站点时,浏览器将其管理的cookie添加到http请求头中。

    4.当服务器收到请求报文,就知道该用户是谁了。

    HTTP 1.1与 1.0

    方法的区别
    HTTP1.1 中新增PUT ,DELETE,OPTIONS,CONNECT,TRACE等请求方法

    HTTP1.0 中只有GET, POST,HEAD方法

    连接方式

    HTTP1.0采用非持续连接

    HTTP1.1使用Connection:Keep-Alive首部行实现长连接,并且支持请求流水线默认,即每个请求的发出无需等待上次请求的结束。

    响应码

    当客户端要向服务器发送较大的请求时,不会直接发送该请求,而是发送一个只含有请求头的报文

    如果服务器拒绝,则返回的响应码401,否则100,然后客户端就可以发送请求了。

    首部行 Host

    http1.0中由于每台服务器都有唯一IP,且tcp连接中含有ip,故不含有host字段

    当在一台服务器上存在多个虚拟主机,或是一个服务器上对应多个站点时,需要Host字段

    web缓存/代理 的需要,当浏览器中配置代理服务器后,对某个对象的请求就被定向到该代理服务器。

    web缓存

    web缓存器

    又叫代理服务器,代表初始Web服务器满足HTTP请求的网络实体。Web缓存器中有自己的磁盘存储空间,并保存最近请求过的对象的副本。

    缓存过程

    当浏览器请求某个对象时,浏览器建立一个到Web缓存器的连接,并向Web缓存器中的一个对象发送HTTP请求

    Web缓存器检查,如果没有,就打开一个与初始对象的初始服务器的TCP连接并请求对象,Web缓存器收到后,储存副本并发送到客户端。

    代理服务器的作用

    减少对客户的响应时间,当初始服务器与客户之间的带宽瓶颈远大于代理服务器与客户间的带宽瓶颈时。

    另外,代理服务器能够减少机构对外部因特网产生的流量。

    HTTPS

     HTTPS

     HTTP协议传输的数据都是未加密的,也就是明文的,因此使用HTTP协议传输隐私信息非常不安全。为了保证这些隐私数据能加密传输,于是网景公司设计了SSL(Secure Sockets Layer)协议用于对HTTP协议传输的数据进行加密,从而就诞生了HTTPS(HTTPS = HTTP + SSL)。 

           1、https协议需要申请证书,一般免费证书较少,因而需要一定费用。

      2、http是超文本传输协议,信息是明文传输,https则是具有安全性的SSL加密传输协议。

      3、http和https端口也不一样,前者是80,后者是443。

      4、http的连接很简单,是无状态的;HTTPS协议是由HTTP+SSL协议构建的可进行加密传输、身份认证的网络协议,比http协议安全。 

    HTTPS的缺点

      虽然说HTTPS有很大的优势,但其相对来说,还是存在不足之处的:

      (1)HTTPS协议握手阶段比较费时,会使页面的加载时间延长近50%,增加10%到20%的耗电;

      (2)HTTPS连接缓存不如HTTP高效,会增加数据开销和功耗,甚至已有的安全措施也会因此而受到影响;

      (3)SSL证书需要钱,功能越强大的证书费用越高,个人网站、小网站没有必要一般不会用。

        (4)SSL证书通常需要绑定IP,不能在同一IP上绑定多个域名,IPv4资源不可能支撑这个消耗。

      (5)HTTPS协议的加密范围也比较有限,在黑客攻击、拒绝服务攻击、服务器劫持等方面几乎起不到什么作用。最关键的,SSL证书的信用链体系并不安全,特别是在某些国家可以控制CA根证书的情况下,中间人攻击一样可行。

  • 相关阅读:
    Ubuntu18.04可执行文件运行提示No such file or directory
    Linux gcc(ar命令)打包库到另一个库中的另外一种方法
    干干净净的grep
    C语言里面和时间有关的函数
    Ubuntu上安装tftp服务
    因为新冠,宅家2周,折腾了一下电视盒子。
    批量处理文件的Python程序
    Windows 10中使用VirtualBox
    重采样Resample 的一些研究记录。
    微信公众号接入第三方服务器,设置自动回复、关键回复、自定义菜单,配置及开发流程
  • 原文地址:https://www.cnblogs.com/lshao/p/9719481.html
Copyright © 2011-2022 走看看