http是什么协议

http是什么协议,第1张

HTTP协议是在客户端-服务器计算模型中用作请求-响应协议。一个网页浏览器,例如,可

能是客户端,并在计算机上运行的应用程序托管一个网站可能是服务器。客户端向服务器提交

HTTP 请求消息。服务器,该服务器提供的资源,如HTML文件和其他内容,或代表客户机的

执行其它功能,返回一个响应消息给客户端。响应包含有关请求的完成状态信息,还可能在其

消息正文中包含请求的内容。

Web浏览器是用户代理(UA)的示例。其他类型的用户代理包括搜索提供商,语音浏览器,

移动应用程序以及访问,使用或显示网络内容的其他软件所使用的索引软件。

HTTP旨在允许中间网络元素改进或启用客户端和服务器之间的通信。高流量网站通常受益于

代表上游服务器提供内容的Web缓存服务器,以缩短响应时间。Web浏览器缓存先前访问的

Web资源,并在可能的情况下重用它们以减少网络流量。通过使用外部服务器中继消息,专用

网络边界处的HTTP 代理服务器可以在没有全局可路由地址的情况下促进客户端的通信。

HTTP是在Internet协议套件框架内设计的应用程序层协议。它的定义假定底层和可靠传输层协

议和传输控制协议(TCP)是常用的。但是,HTTP可以适用于使用不可靠的协议,例如用户数

据报协议(UDP),例如在HTTPU和简单服务发现协议(SSDP)中。

扩展资料:

与HTTP协议非常相似的一个协议HTTPS协议

安全超文本传输协议(HTTPS)是超文本传输协议(HTTP)的扩展。它用于通过计算机网络

进行安全通信,并在因特网上广泛使用。在HTTPS中,通信协议使用传输层安全性(TLS)或

以前的安全套接字层(SSL)进行加密。因此,该协议通常也称为HTTPoverTLS,或HTTP

overSSL。

HTTPS的主要动机是对所访问网站的身份验证以及在传输过程中保护所交换数据的隐私和完整

性。它可以防止中间人攻击。客户端和服务器之间的通信的双向加密防止了对通信的窃听和篡

改。在实践中,这提供了一个合理的保证,即一个人在不受攻击者干扰的情况下进行通信,而

不是冒名顶替者。

HTTP是一个简单的请求响应协议,它通常运行在TCP之上。

它指定了客户端可能发送给服务器什么样的消息以及得到什么样的响应。请求和响应消息的头以ASCII码形式给出;而消息内容则具有一个类似MIME的格式。这个简单模型是早期Web成功的有功之臣,因为它使得开发和部署是那么的直截了当。

HTTP是应用层协议,同其他应用层协议一样,是为了实现某一类具体应用的协议,并由某一运行在用户空间的应用程序来实现其功能。HTTP是一种协议规范,这种规范记录在文档上,为真正通过HTTP协议进行通信的HTTP的实现程序。

http应用场景

HTTP诞生之初主要是应用于WEB端内容获取,那时候内容还不像现在这样丰富,排版也没那么精美,用户交互的场景几乎没有。对于这种简单的获取网页内容的场景,HTTP表现得还算不错。但随着互联网的发展和WEB2.0的诞生,更多的内容开始被展示(更多的图片文件),排版变得更精美(更多的CSS),更复杂的交互也被引入(更多的jS)。

用户打开一个网站首页所加载的数据总量和请求的个数也在不断增加。今天绝大部分的门户网站首页大小都会超过2M,请求数量可以多达100个。另一个广泛的应用是在移动互联网的客户端APP,不同性质的APP对HTTP的使用差异很大。

对于电商类APP,加载首页的请求也可能多达10多个。对于微信这类IM,HTTP请求可能仅限于语音和图片文件的下载,请求出现的频率并不算高。

1、什么是 Web 应用程序的无状态性?

说基于 http 协议的 web 应用程序是请求——应答模式是无状态的,我们可以这样理解:每次的请求都是独立的,它的执行情况和结果与前面的请求和之后的请求是无直接关系的,它不会受前面的请求应答情况直接影响,也不会直接影响后面的请求应答情况。

2、如何使我们的 web 应用是有状态?

在 http 协议的基础上,web 应用引入 cookies, session,application 来保持 web 应用之间的状态。

注:

cookies,session,application 都不是标准协议,但是各种网络应用提供商,实现语言、web 容器都默认支持它。当然这种支持与对网络标准协议的支持是不同的,标准协议规定的接口,而这种机制只是规定了思想。

其实从我们上面的分析看来,application 不应该被视为这种意义上出现的维护状态的机制。它是决定应用程序的“配制文件”。但是如果你从这种状态维持机制所覆盖的范围来推导,你会发现,application 好像也算得上。

Session 所控制的范围是一个 session。一个会话,会话从第一次访问服务器开始存在,到服务器调用 session.invalidator()(可能是超时,可能是其它原因)。

Cookies 所控制的范围有它自己的定义(与 session 没有直接的关系),可以长可以短。只要服务器放在用户文件系统中的 cookies 没有被删除,至少服务器还识别它。它的控制范围就是还在的。

这个角度上讲,Session 和 Cookies 都可以归为跨页面的状态。但是 session 跨不出一次会话,Cookies 跨不出两端的限制。

Application,则是关联这个网络应用程序的。

举例:

有人将 web 应用中有无状态的情况,比作顾客逛商店的情景。

顾客:浏览器访问方;

商店:web 服务器;

一次购买:一次 http 访问

我们知道,上一次顾客购买,并不代表顾客下一个小时一定会买(当然也不能代表不会)。也就是说同一个顾客的不同购买之间的关系是不定的。所以说实在的,这种情况下,让商店保存所有的顾客购买的信息,等到下一次购买可以知道这个顾客以前购买的内容代价非常大的。所以商店为了避免这个代价,索性就认为每次的购买都是一次独立的新的购买。浅台词:商店不区分对待老顾客和新过客。这就是无状态的。

但是,商店为了提高收益。她是想鼓励顾客购买的。所以告诉你,只要你在一个月内购买了5瓶以上的啤酒,就送你一个酒杯。

我们看看这种情况我们怎么去实现呢?

A, 给顾客发放一个磁卡,里面放有顾客过去的购买信息。

这样商店就可以知道了。这就是 cookie.

B, 给顾客发放一个唯一号码,号码制定的顾客的消费信息,存储在商店的服务器中。这就是 session。

最后,商店可以全局的决定,是5瓶为送酒杯还是 6 瓶。这就是 application。

其实,这些机制都是在无状态的传统购买过程中加入了一点东西,使整个过程变得有状态。Web 应用就是这样的。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/7800448.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-10
下一篇 2023-04-10

发表评论

登录后才能评论

评论列表(0条)

保存