Web有状态无状态分析
总结
-
Web应用 = http协议 + session、cookies等状态机制 + 其他辅助机制
-
http协议本身是无状态的
分析
1、何为有状态无状态
- 有状态性就是受前面请求应答情况的影响,或者影响着之后的通信过程。
- 无状态性就是每次的请求都是独立的,没有上下文关系。
2、协议有无状态分析
(1)IP是无状态的,只负责将一个IP包发送到指定IP地址,不考虑前后传输的联系。
(2)TCP是有状态的,它是可靠的传输,面向连接,三次握手保证可靠连接。
(3)UDP是无状态的,只是在IP上加了个port,不是可靠传输,面向无连接。
(4)Http是无状态的
,尽管http底层是有状态的TCP实现,但是就http本身而言,两次http协议包之间没有联系。
(5)web应用是有状态的,因为在http协议基础上引入了session、cookies等机制
3、http为何不直接设计为有状态的
- 从历史角度,让http无状态,在web应用还很简单的时候,只是浏览内容,无状态的协议足以,并且减少实现负担。
- 但是随着发展,web应用需要对http提出有状态的要求,不光要浏览内容,还要保存用户信息等
- 按照软件领域的通常做法:保持历史遗留经验(不在http协议本质上做大改动),兼容过去的软件。在http协议上加一层实现有状态,这一层就是session、cookies等有状态机制。并且这样加一层的实现并不麻烦。
信心最重要