HTTP协议的无状态性
无状态指
每次的请求都是独立的,它的执行情况和结果与前面的请求和之后的请求是无直接关系的,它不会受前面的请求应答情况直接影响,也不会直接影响后面的请求应答情况
web应用是有状态的。所以我们加入了cookies、session等机制去实现由状态的web应用。所以我们可以这么理解:
Web应用=http协议+session、cookies等状态机制+其他辅助的机制。
TCP为一个有状态的传输层通信协议,而UDP则不是;IP是无状态的。要明白这种有状态与否的判定,是指你这一协议栈层次所要实现的功能——是否由上下文决定——来判定的(是否受之前的通信过程直接影响、是否直接影响之后的通信过程)
原因
(1)IP是无状态的,它只负责将一个IP包发送到指定的IP地址上去。它不会考虑这个包与前面已经发送的包和后面的包的联系。(可能是重发包、可能是不连续包,它不管)。
(2)TCP是有状态的,它通过包头中的一些控制字段(序列编码等)来表明各个包之间的关系(前后关系,重包与否等等)。所以,通过这个协议你可以做到一个可靠的传输。那么TCP是面向连接的协议是什么意思呢?其实这里的面向连接其实就是“三次握手”。三次握手,首先可以保证对方的存在,其次握手的所交换的内容是为将来进行有状态的传输做准备。
(3) UDP是无状态的,它仅仅是在IP上加了Port,其他的事情什么也不干。这样它不可能做到可靠的传输,同样也不需要连接。
(4) HTTP是无状态的,它的底层协议是由状态的TCP,但是HTTP的一次完整协议动作,里面是使用有状态的TCP协议来完成的。而每次协议动作之间没有任何关系。例如:第7次请求HTTP协议包,并不知道,这个包是为了什么?它或许是因为上次没有请求成功而重传,或许是上次的后续请求,或许是其他的,这些HTTP自身都不知道。
(5) www应用,很多时候,www应用是需要每个HTTP请求或应答动作之间是有关联的,那就是使应用有状态。这样才能提供给用户最好的用户体验。
转载https://www.cnblogs.com/aspirant/p/5702338.html
HTTP协议的无状态性相关推荐
- http协议是无状态的,无连接的
引子: 最近在好好了解http,发现对介绍http的第一句话[http协议是无状态的,无连接的]就无法理解了:无状态的[状态]到底指的是什么?! 找了很多资料不仅没有发现有一针见血正面回答这个问题的, ...
- 如何理解HTTP协议是无状态的
HTTP协议是无状态的,指的是协议对于事务处理没有记忆能力,服务器不知道客户端是什么状态.
- HTTP协议是无状态协议,怎么理解
详见:http://blog.yemou.net/article/query/info/tytfjhfascvhzxcytp24 HTTP协议是无状态协议,怎么理解? 2010-02-23 09:4 ...
- HTTP协议是无状态的/无连接的到底指的是什么?
直观的说,"每次的请求都是独立的,它的执行情况和结果与前面的请求和之后的请求是无直接关系的,它不会受前面的请求应答情况直接影响,也不会直接影响后面的请求应答情况" 要明白,这句话的 ...
- HTTP 协议是无状态协议,怎么理解
HTTP 是一个属于应用层的面向对象的协议,HTTP 协议一共有五大特点:1.支持客户/服务器模式:2.简单快速:3.灵活:4.无连接:5.无状态. 无连接 无连接的含义是限制每次连接只处理一个请求. ...
- HTTP协议是无状态协议,怎么理解?
2019独角兽企业重金招聘Python工程师标准>>> Http是一个无状态协议,同一个会话的连续两个请求互相不了解,他们由最新实例化的环境进行解析,除了应用本身可能已经存储在全局对 ...
- HTTP协议的无状态和无连接
无连接:指HTTP协议每次连接只处理一个HTTP请求,服务器处理完客户端的请求并且得到客户端的应答后,就会断开连接. 无状态:无状态是指HTTP协议对于事务处理是没有记忆能力的,缺少状态就意味着后续的 ...
- 在web项目中实现会话跟踪(http协议是无状态)
HTTP是"无状态"协议:客户程序每次读取 Web 页面,都打开到 Web 服务器的单独的连接,并且,服务器也不自动维护客户的上下文信息.即使那些支持持续性 HTTP 连接的服务器 ...
- cookie和session之会话机制: http 协议 ---》 无状态协议
设置cookie: 通过response对象: response = make_response() response.set_cookie(key,val ...
最新文章
- 【Android基础】序列化 Serializable vs Parcelable
- rtcp 实时传输控制协议 简介
- iOS 7 新版微信 URL 不支持跳转 App Store 的解决方案
- Redis简介 与Memcache的区别
- 一代不如一代?别轻易给年轻人贴标签
- 利用延迟关联或者子查询优化超多分页场景
- crawler py
- Clojure的引用类型:var,ref,agent和atom
- 自动驾驶 11-4: 优化状态估计 Optimizing State Estimation
- 各版本JQuery文件下载
- 小米9se无法连接adb的问题
- Java程序编写 • 【第4章 程序:随机本周菜品;简易计算器】
- 实测 ubuntu 20.04 使用 lidar_imu_calib 功能包 进行 激光雷达与imu标定
- 虚拟机Ubuntu安装vmtools
- 市场调研报告-全球与中国燃油泄漏检测设备市场现状及未来发展趋势
- 一个小巧,也很nice的“小日历”--一个Android App
- [源码和文档分享]基于java的葫芦娃大战妖精
- 为了甩锅,我写了个牛逼的日志切面!
- steam创建账号一直验证人工操作_绝地求生轻量版即将登陆STEAM:预约送M416皮肤...
- 进阶 Nginx 高手必须跨越的 5 座大山
热门文章
- HIT Software Construction Review Notes(3-1 Data Type and Type Checking)
- XAMPP报错:mysqli::real_connect(): (HY000/1045): Access denied for user ‘pma‘@‘localhost‘
- HTML+CSS+JS实现网页随机点名
- java编程应该要的英语_java编程中常用英语单词
- 别看人家日子过得很轻松的样子,实际都很难,相信吗?
- 有多少人自驾过独库公路?
- 生意场逃不开三个关键词:留存、转化、数据
- 打工好,还是创业好?
- 最近我一个朋友在职场上陷入了迷茫
- 4.2第一个窗口程序