`
rhodian
  • 浏览: 71469 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

HTTP无状态协议

 
阅读更多

 一开始,对无状态这个定义非常模糊,仔细查阅网上资料,算是对该定义有了一定的了解,这里做下笔记,用作总结。

 

在对HTTP协议的介绍中,明确的说明HTTP协议是无状态协议。

 

“无状态”是指协议对于事务的处理没有记忆能力。意味着,协议本身不会在处理事务的过程中针对【之前】的信息进行存储,如果在处理当前步骤的时候需要【之前】的信息,则必需重传。

 

按照上面的说法,我们可以意识到,这样的做法在需要连续操作的时候,就要重新传递【之前】的信息,会导致每次连接传递的数据量增大,传递速度下降,服务器响应时间延长。反之,如果不需要连续操作,服务器不需要【之前】的信息,数据量小,传递速度快,服务器响应速度快。

 

在客户端可以与服务器进行动态交互的Web程序出现以后,用户与服务的交互是承前启后、没有间断的连续操作,更多的服务开始在乎用户在【之前】做了什么。这时HTTP无状态的特性,使这些程序的实现变的非常困难。

 

有鉴于此,为了在一个无状态的连接协议上存储客户端与服务器之间的交互状态,出现了两种用于保持HTTP连接状态的技术,一个是Cookie,而另一个则是Session。

 

Cookie是通过客户端保持状态的解决方案。Cookie从定义上讲,是由服务器发给客户端的信息,而这些信息以文本文件的方式存放在客户端,然后客户端每次向服务器发送请求的时候都会带上这些信息。

 

打个比方,用户通过浏览器访问一个支持Cookie的网站时,用户会提供用户名在内的个人信息并提交至服务器;服务器在向客户端回传响应的超文本信息时,也会将这些个人信息放进HTTP响应头中,一同回传至客户端。当客户端浏览器接收到来自服务器的响应之后,浏览器会将这些信息存放在一个统一的位置。然后,客户端在向服务器发送请求的时候,都会把相应的Cookie放在Http请求头中,发送到服务器。

 

与Cookie相对的一个解决方案是Session,它是通过服务器来保持状态的。由于Session这个词汇包含的语义很多,因此需要在这里明确一下 Session的含义。首先,我们通常都会把Session翻译成会话,因此我们可以把客户端浏览器与服务器之间一系列交互的动作称为一个 Session。从这个语义出发,我们会提到Session持续的时间,会提到在Session过程中进行了什么操作等等;其次,Session指的是服务器端为客户端所开辟的存储空间,在其中保存的信息就是用于保持状态。从这个语义出发,我们则会提到往Session中存放什么内容,如何根据键值从 Session中获取匹配的内容等。

 

不同语言实现的应用程序有不同创建Session的方法,而在Java中是通过调用HttpServletRequest的getSession方法(使用true作为参数)创建的。在创建了Session的同时,服务器会为该Session生成唯一的Session id,而这个Session id在随后的请求中会被用来重新获得已经创建的Session;在Session被创建之后,就可以调用Session相关的方法往Session中增加内容了,而这些内容只会保存在服务器中,发到客户端的只有Session id;当客户端再次发送请求的时候,会将这个Session id带上,服务器接受到请求之后就会依据Session id找到相应的Session,从而再次使用之。正式这样一个过程,用户的状态也就得以保持了。

 

综上所述,HTTP协议本身是无状态的,但是,我们可以使用Cookie和session存储客户端与服务器的交互状态。

 

该文是学习总结,如有不足之处,烦请指正。

分享到:
评论

相关推荐

    HTTP协议详解 无状态协议

    HTTP协议详解 HTTP协议详解

    03HTTP协议无状态1

    "无状态"和"无连接"是HTTP协议的核心特征,但这两点经常被误解,所以我们需要深入理解它们的含义。 "无状态"意味着HTTP协议自身并不保留任何关于客户端的先前请求或响应的信息。每次客户端向服务器发送请求时,...

    HTTP协议状态码总结

    HTTP协议状态码总结 HTTP STATUS

    http协议状态码的含义及解决方法

    了解HTTP状态代码可以帮助我们更好地分析日志中的访问情况。 1xx 信息响应 * 100:表示已收到请求的一部分,正在继续发送余下部分。 * 101:切换协议。 2xx 成功 * 200:确定。客户端请求已成功。 * 201:已创建...

    HTTP协议状态码

    了解HTTP状态码对于Web开发者来说至关重要,因为它可以帮助快速定位和解决网页访问过程中出现的问题。 HTTP状态码由三位数字组成,第一位数字定义了响应的类别。常见的状态码分类如下: 1. 1XX(临时响应):这些...

    HTTP 20 道面试题及答案.docx

    6. **HTTP无状态协议解决方案**:通过Cookie和Session来跟踪用户状态。Cookie在客户端保存信息,Session在服务器端保存,通过Session ID在两者之间建立关联。 7. **HTTP状态码302**:表示临时重定向,服务器返回新...

    认清http协议本质

    4. 索引与无状态性:HTTP协议本身是无状态的,意味着每次请求都是独立的,服务器不会记住之前请求的信息。为了实现会话跟踪,通常使用Cookie或Session技术。 5. 报文结构:HTTP报文由两部分组成——头部和主体。...

    http协议详解

    5.无状态:HTTP协议是无状态协议。无状态是指协议对于事务处理没有记忆能力。缺少状态意味着如果后续处理需要前面的信息,则它必须重传,这样可能导致每次连接传送的数据量增大。另一方面,在服务器不需要先前信息时...

    HTTP协议.zip_HTTP_HTTP协议

    3. **状态码反馈**: 通过状态码告知客户端操作结果,如201表示资源已创建,204表示无内容。 ### 总结 HTTP协议是互联网通信的核心,理解其工作原理对于开发Web应用至关重要。随着技术的演进,HTTP不断优化以适应更...

    HTTP协议总结.pdf

    HTTP协议是无状态的,即它不对之前发生过的请求和响应状态进行保存。每一条请求都是独立的,客户端与服务器之间没有持久的连接。尽管HTTP无状态,但是服务器可以配置为使用HTTP Cookie来跟踪用户的连接状态。 HTTP...

    HTTP协议详解(真的很经典)[归类].pdf

    5. 无状态:HTTP 协议是无状态协议。无状态是指协议对于事务处理没有记忆能力。 HTTP 协议的 URL 格式为:http://host[":"port][abs_path],其中 http 表示要通过 HTTP 协议来定位网络资源;host 表示合法的 ...

    http协议状态码

    通过以上的详细介绍可以看出,HTTP状态码是客户端与服务器之间通信的重要组成部分,它们不仅有助于客户端了解请求的状态,还能够帮助开发者调试和解决问题。掌握这些状态码对于Web开发人员来说至关重要。

    HTTP协议状态码详解.html

    HTTP协议状态码详解,里面包括了各个状态码对应的状态解析。

    HTTP协议详解_HTTP协议_

    3. 连接管理:HTTP是无状态的,意味着每次请求-响应交互都是独立的,服务器不会记住客户端的任何信息。为了提高效率,HTTP/1.1引入了持久连接,允许在一次TCP连接上发送多个请求和响应,减少了建立和关闭连接的开销...

    HTTP协议详解,http(超文本传输协议)是一个基于请求与响应模式的、无状态的、应用层的协议

    它是一个无状态的协议,意味着每个请求都是独立的,服务器不会记住之前请求的任何信息。 HTTP协议主要特点: 1. 客户/服务器模式:客户端发起请求,服务器提供服务。 2. 简单快速:HTTP请求只需要请求方法和路径,...

    网络协议TCP/IP实验七 HTTP 协议分析实验

    实验选取了常见的HTTP协议作为研究对象,通过对HTTP协议的深入剖析,使学生能够掌握HTTP协议的基本原理、报文格式以及其工作流程。 #### 实验环境配置 - **操作系统**:Windows 7 - **网络平台**:实验室内部...

    http协议中文版(http协议中文版)

    1. **无状态**:HTTP协议自身不维护连接状态,每次请求和响应都是独立的,服务器不会记住之前请求的信息。为了实现状态保持,开发者通常会使用Cookie或Session。 2. **简单快速**:设计时主要考虑快速传输,对数据...

    基于http协议的自定义协议封装

    当HTTP状态码无法满足需求时,可以创建自定义状态码并配合XML响应体中的错误信息一起使用。 5. **安全考虑**:如果自定义协议涉及到敏感数据传输,应考虑采用HTTPS(HTTP over SSL/TLS)以确保通信的安全性。此外,...

    Java_Web总结

    HTTP 无状态协议是指 HTTP 协议不维护客户端和服务器之间的状态信息。每个 HTTP 请求都是独立的,服务器不维护客户端的状态信息。这种设计使得 HTTP 协议变得简单、灵活和高效。 1.5. CGI 与 Servlet CGI(Common ...

Global site tag (gtag.js) - Google Analytics