HTTP介绍

HTTP介绍


1. 什么是HTTP协议?

     HTTP全称Hyper Text Transfer Protocol)一般都是叫http,中文名叫超文本传输协议,主要应用WEB端,适用于分布式超媒体信息系统,我们今天通过网站浏览各种精致的网页基本是通过HTTP协议来实现的。
     HTTP是通过TCP协议(以后单独介绍)来进行数据传输,是属于应用层协议。HTTP也是一种协议规范,这种规范记录在文档上,为真正通过HTTP协议进行通信的HTTP的实现程序。* 支持C/S,B/S架构,。一般实现HTTP协议服务端程序有httpd,nginx,tomocat等常见软件,客户端一般都为浏览器。


2. 什么是C/S,B/S架构?

      C/S,B/S是随着互联网发展快速发展而产生的一种网络结构模式,使用非常广泛。

C/S架构
    C/S 全拼就是Client/Server,也就是客户机/服务器模式。也就是大家熟悉的软件系统体系结构。

  • 主要特点:

    优点:交互性强,具有安全的存取模式,网络通信量低,响应速度快,非常适合处理大量数据,
     缺点:需要针对性开发,变更不够灵活,主要是还得下载对应的客户端程序,分布功能弱且兼容性差,不能实现快速部署安装和配置,因此缺少通用性,具有较大的局限性。

B/S架构
     B/S 全拼就是Browser/Server,也就是浏览器/服务器模式,在此模式下,用户只要通过浏览器就可以访问/运行server程序,非常方便。目前此模式已经成为开发的首选目标。

  • 主要特点:

    优点:分布性强、维护方便、开发简单且共享性强、总体拥有成本低
    缺点:数据安全保障低,数据传输没有C/S模式快(一般都会满足用户的需求了),主要是很受浏览器的限制。

C/S与B/S区别

  •  成本

   C/S模式的开发维护成本明显高于B/S。C/S针对不同的平台需要开发不同客户端(得考虑兼容,调试,安装升级等问题)。B/S模式只要对服务器进行操作即可,用户只需要重新登录就可以了。

  •  安全

   C/S模式因为其模式的原因,可以自行研制数据加密系统,对数据进行加密,充分展示了数据安全性,但是B/S模式,只能根据一定的标准去进行数据传输,在安全性方面没有C/S高,但是现在有https协议,这个问题也不大。  


3.HTTP主要特点 

  • 简单快速:客户向服务器请求服务时,只需传送请求方法和路径。请求方法常用的有GET、HEAD、POST。每种方法规定了客户与服务器联系的类型不同。由于HTTP协议简单,使得HTTP服务器的程序规模小,因而通信速度很快。
  • 2、灵活:HTTP允许传输任意类型的数据对象。正在传输的类型由Content-Type加以标记。
  • 3.无连接:无连接的含义是限制每次连接只处理一个请求。服务器处理完客户的请求,并收到客户的应答后,即断开连接。采用这种方式可以节省传输时间。
  • 4.无状态:HTTP是无状态的:在同一个连接中,两个执行成功的请求之间是没有关系的。这就带来了一个问题,用户没有办法在同一个网站中进行连续的交互,比如在一个电商网站里,用户把某个商品加入到购物车,切换一个页面后再次添加了商品,这两次添加商品的请求之间没有关联,浏览器无法知道用户最终选择了哪些商品。而使用HTTP的头部扩展,HTTP Cookies就可以解决这个问题。把Cookies添加到头部中,创建一个会话让每次请求都能共享相同的上下文信息,达成相同的状态。

    注意,HTTP本质是无状态的,使用Cookies可以创建有状态的会话。

    简单来说当服务器处理玩客户端请求,并且与客户端断开连接过程中,不会记录客户端任何信息,当下次客户端发起新的请求的时候,又是新的连接,发送重复的数据。
  • 5、支持B/S及C/S模式。

4.HTTP版本介绍

  • 0.9

    0.9版本是最初的版本在,只支持纯文本模式,并且请求方式只GET,只能访问HTML格式的资源,其他图片,视频都获取不了。

  • 1.0

    1.0版本在0.9版本上新增了一些功能,请求方式支持GET,POST和HEAD,通过content-Type能支持更多的数据格式,支持cache等等。使它更符合大家的需要,在1.0版本处理之后,HTTP/1.0成为最重要的面向事务的应用层协议。

    但是每次在进行TCP连接的时候,只能发送一个请求,当服务器返回响应后才能关闭此连接,开始下一个tcp请求,非常消耗资源,不支持长连接。

  • 1.1

   1.1版本是在1.0版本是版本之上新增多个功能,解决一些1.0版本存在的问题,比如请求方法在1.0版本的基础上新增PUT,PATCH,DELETE等方法,支持keeplive,允许TCP同时连接多个请求,增加并发处理的能力。

   但是也存在一些问题,服务端是按队列顺序的方式处理客户端请求,当一个请求处理时间过长,会导致后边的请求无法处理,造成队头阻塞的问题,还有是http是无状态的连接,每次请求都会添加的重复的字段,降低了带宽的利用率。

   不过HTTP 1.1是当今主流HTTP版本。 

  • 2.0

    2.0版本是全新升级版本,不仅含有1.0和1.1版本的所有功能,还新增了双工模式,解决客户端及服务端之间因请求时间过长,导致队头阻塞的问题。HTTP请求和响应中,状态行和请求/响应头都是些信息字段,并没有真正的数据,因此在2.0版本中将所有的信息字段建立一张表,为表中的每个字段建立索引,客户端和服务端共同使用这个表,他们之间就以索引号来表示信息字段,这样就避免了旧版本的递交重复字段,并以压缩的方式传输,提高利用率。

   另外也增加服务器推送的功能,即不经请求服务端主动向客户端发送数据。


5.HTTP工作方式

  • HTTP通信是由2部分组成分别是由客户端发起的访问请求及服务端响应组成,由此看出,HTTP明显是一个B/S架构,因为HTTP协议是无状态协议,因此HTTP连接不会存在太长时间,在客户端发起请求,返回响应给之后,就会断开连接,这样一个来回也被称为一次事务。 
  • 下面就聊下具体的请求过程:

        1).地址解析           

        2).将HTTP请求进行打包

        将HTTP请求结合本机一些信息进行封装打包,形成一个HTTP请求数据包。

       3).封装成TCP包,与服务端建立tcp连接(TCP连接被用来发送一条或多条请求,以及接受响应消息。)

        上面有说到过HTTP协议是处于TCP/IP协议的应用层(第七层),那么整个TCP协议是有7层协议组成,根据TCP/IP协议自身规则,只有低层建立连接之后才能进行更高层次的连接,但是每层的功能是不一样的,封装的数据也是不一样的,同时在TCP/IP协议中,只有本层的数据才能相互解码,所以就需要进行TCP包封装,这个连接状态就是TCP连接(熟称:三次握手)

      4).当建立TCP连接之后,客户端才真正与服务端实现通信,发起请求(URI,协议版本,客户机信息,MIME等等)

      5).服务端收到客户端发起的请求,对响应进行处理,返回响应的响应内容(分为header信息及响应体),然后与客户端断开TCP连接(四次断开)。因为HTTP协议默认无状态协议,如果想与客户端保持长时间联系,可以在提供web服务的软件配置中加入:keepalive_timeout 60;设置多久后断开连接。

这就是整个浏览器访问服务器获取数据的大致流程。


6 http协议亮点

  • 缓存 
    文档如何缓存能通过HTTP来控制。服务端能告诉代理和客户端哪些文档需要被缓存,缓存多久,而客户端也能够命令中间的缓存代理来忽略存储的文档。
  • 认证
    一些页面能够被保护起来,仅让特定的用户进行访问。基本的认证功能可以直接通过HTTP提供,使用Authenticate相似的头部即可,或用HTTP Cookies来设置指定的会话。
  • 代理和隧道
    通常情况下,服务器和/或客户端是处于内网的,对外网隐藏真实 IP 地址。因此 HTTP 请求就要通过代理越过这个网络屏障。但并非所有的代理都是 HTTP 代理。例如,SOCKS协议的代理就运作在更底层,一些像 FTP 这样的协议也能够被它们处理。
  • 会话 
    使用HTTP Cookies允许你用一个服务端的状态发起请求,这就创建了会话。虽然基本的HTTP是无状态协议。这很有用,不仅是因为这能应用到像购物车这样的电商业务上,更是因为这使得任何网站都能轻松为用户定制展示内容了。把Cookies添加到头部中,创建一个会话让每次请求都能共享相同的上下文信息,达成长的状态。

 

 

 

 

 

 

 

 

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值