转载自:点击打开链接http://blog.csdn.net/tennysonsky/article/details/44562435

HTTP 是一个属于应用层的面向对象的协议,HTTP 协议一共有五大特点:1、支持客户/服务器模式;2、简单快速;3、灵活;4、无连接;5、无状态

无连接

无连接的含义是限制每次连接只处理一个请求。服务器处理完客户的请求,并收到客户的应答后,即断开连接。采用这种方式可以节省传输时间。

早期这么做的原因是 HTTP 协议产生于互联网,因此服务器需要处理同时面向全世界数十万、上百万客户端的网页访问,但每个客户端(即浏览器)与服务器之间交换数据的间歇性较大(即传输具有突发性、瞬时性),并且网页浏览的联想性、发散性导致两次传送的数据关联性很低,大部分通道实际上会很空闲、无端占用资源。因此 HTTP 的设计者有意利用这种特点将协议设计为请求时建连接、请求完释放连接,以尽快将资源释放出来服务其他客户端

随着时间的推移,网页变得越来越复杂,里面可能嵌入了很多图片,这时候每次访问图片都需要建立一次 TCP 连接就显得很低效。后来,Keep-Alive 被提出用来解决这效率低的问题。

Keep-Alive 功能使客户端到服务器端的连接持续有效,当出现对服务器的后继请求时,Keep-Alive 功能避免了建立或者重新建立连接。市场上的大部分 Web 服务器,包括 iPlanet、IIS 和 Apache,都支持 HTTP Keep-Alive。对于提供静态内容的网站来说,这个功能通常很有用。但是,对于负担较重的网站来说,这里存在另外一个问题:虽然为客户保留打开的连接有一定的好处,但它同样影响了性能,因为在处理暂停期间,本来可以释放的资源仍旧被占用。当Web服务器和应用服务器在同一台机器上运行时,Keep-Alive 功能对资源利用的影响尤其突出。

这样一来,客户端和服务器之间的 HTTP 连接就会被保持,不会断开(超过 Keep-Alive 规定的时间,意外断电等情况除外),当客户端发送另外一个请求时,就使用这条已经建立的连接。

无状态

无状态是指协议对于事务处理没有记忆能力,服务器不知道客户端是什么状态。即我们给服务器发送 HTTP 请求之后,服务器根据请求,会给我们发送数据过来,但是,发送完,不会记录任何信息。

HTTP 是一个无状态协议,这意味着每个请求都是独立的,Keep-Alive 没能改变这个结果。

缺少状态意味着如果后续处理需要前面的信息,则它必须重传,这样可能导致每次连接传送的数据量增大。另一方面,在服务器不需要先前信息时它的应答就较快。

HTTP 协议这种特性有优点也有缺点,优点在于解放了服务器,每一次请求“点到为止”不会造成不必要连接占用,缺点在于每次请求会传输大量重复的内容信息。

客户端与服务器进行动态交互的 Web 应用程序出现之后,HTTP 无状态的特性严重阻碍了这些应用程序的实现,毕竟交互是需要承前启后的,简单的购物车程序也要知道用户到底在之前选择了什么商品。于是,两种用于保持 HTTP 连接状态的技术就应运而生了,一个是 Cookie,而另一个则是 Session。

Cookie可以保持登录信息到用户下次与服务器的会话,换句话说,下次访问同一网站时,用户会发现不必输入用户名和密码就已经登录了(当然,不排除用户手工删除Cookie)。而还有一些Cookie在用户退出会话的时候就被删除了,这样可以有效保护个人隐私。

Cookies 最典型的应用是判定注册用户是否已经登录网站,用户可能会得到提示,是否在下一次进入此网站时保留用户信息以便简化登录手续,这些都是 Cookies 的功用。另一个重要应用场合是“购物车”之类处理。用户可能会在一段时间内在同一家网站的不同页面中选择不同的商品,这些信息都会写入 Cookies,以便在最后付款时提取信息。

与 Cookie 相对的一个解决方案是 Session,它是通过服务器来保持状态的。

当客户端访问服务器时,服务器根据需求设置 Session,将会话信息保存在服务器上,同时将标示 Session 的 SessionId 传递给客户端浏览器,浏览器将这个 SessionId 保存在内存中,我们称之为无过期时间的 Cookie。浏览器关闭后,这个 Cookie 就会被清掉,它不会存在于用户的 Cookie 临时文件。

以后浏览器每次请求都会额外加上这个参数值,服务器会根据这个 SessionId,就能取得客户端的数据信息。

如果客户端浏览器意外关闭,服务器保存的 Session 数据不是立即释放,此时数据还会存在,只要我们知道那个 SessionId,就可以继续通过请求获得此 Session 的信息,因为此时后台的 Session 还存在,当然我们可以设置一个 Session 超时时间,一旦超过规定时间没有客户端请求时,服务器就会清除对应 SessionId 的 Session 信息。

如何理解HTTP协议的 “无连接,无状态” 特点?相关推荐

  1. HTTP协议为什么是无状态的?如何让HTTP“有状态”?

    在面试中被问到HTTP协议是有状态还是无状态的,当场就有点懵,因为不会就没答出来.还是得总结一下啵! 一.HTTP协议的状态 HTTP是一种无状态协议,即服务器不保留与客户交易时的任何状态. 也就是说 ...

  2. HTTP协议是无状态的/无连接的到底指的是什么?

    直观的说,"每次的请求都是独立的,它的执行情况和结果与前面的请求和之后的请求是无直接关系的,它不会受前面的请求应答情况直接影响,也不会直接影响后面的请求应答情况" 要明白,这句话的 ...

  3. HTTP中的无状态、无连接是什么意思呢?超详细

    以前http.https.IP.TCP.UDP.TCP/IP都是靠背的,特别是http中的各种无连接无状态都是死记硬背的,过阵子又忘了,直到看到这篇文章,直接拍手叫好,转载给大家一起看 原为地址:ht ...

  4. 深入理解HTML协议

    http协议学 习系列 1. 基础概念篇 1.1 介绍   HTTP是Hyper Text Transfer Protocol(超文本传输协议)的缩写.它的发展是万维网协会(World Wide We ...

  5. 【Http协议】深入理解HTTP协议

    来源:http://www.blogjava.net/zjusuyong/articles/304788.html 深入理解HTTP协议 1. 基础概念篇 1.1 介绍 HTTP是Hyper Text ...

  6. 深入理解HTTP协议、HTTP协议原理分析【转】

    转自:http://blog.csdn.net/lmh12506/article/details/7794512 版权声明:本文为博主原创文章,未经博主允许不得转载. 目录(?)[-] 基础概念篇 1 ...

  7. http无状态还是web应用无状态

    我们通常说的web应用程序的无状态性的含义是什么呢? 直观的说,"每次的请求都是独立的,它的执行情况和结果与前面的请求和之后的请求是无直接关系的,它不会受前面的请求应答情况直接影响,也不会直 ...

  8. mysql有状态无状态_k8s statefulSet 有状态应用和无状态应用区别

    一.定义: 无状态服务:就是没有特殊状态的服务,各个请求对于服务器来说统一无差别处理,请求自身携带了所有服务端所需要的所有参数(服务端自身不存储跟请求相关的任何数据,不包括数据库存储信息) 有状态服务 ...

  9. 无状态服务(stateless service)

    转载:http://kyfxbl.iteye.com/blog/1831869 一.定义 无状态服务(stateless service)对单次请求的处理,不依赖其他请求,也就是说,处理一次请求所需的 ...

最新文章

  1. mysql某个表被行锁了_MySQL中的锁(表锁、行锁)
  2. macappstore登不上去_武功山观星归来,缆车登顶,不徒步攻略!
  3. 反斜杠转义mysql java_mysql数据库中的反斜杠”\“怎么使用Java进行转义
  4. 森拓品牌邀您参加第15届中国模具之都博览会
  5. phash图像识别应用
  6. Oracle Goldengate在HP平台裸设备文件系统OGG-01028处理
  7. Tomcat启动命令行窗口中文乱码
  8. gaster字体转换器_gautami字体
  9. tp5利用mysql数据库去重
  10. Ubuntu软件包资源官网下载教程(包含所有下载源)
  11. 极小化极大(Minimax)算法原理
  12. 计算机主机重装主机过程,电脑怎么重装系统步骤 超简单的电脑重装系统教程...
  13. 百善孝为先,万恶淫为首
  14. Odoo owl 学习笔记之13—event_handing
  15. rostopic发送cmd_vel指令
  16. 极限等价无穷小量替换笔记
  17. Javaweb上传图片或文件到服务器,Tomcat服务器重新部署项目,会删除原来上传的文件的问题
  18. 202-8-15第八组---MySQL数据库
  19. 重复登录问题解决的方案汇总
  20. linux教程(四)— Xshell常用命令

热门文章

  1. 第四十三期:Wireshark网络分析就这么简单,你一定会喜欢的技巧
  2. java学习(15):巩固练习
  3. Qt模态界面设置setWindowModality禁止其他界面响应
  4. android选择头像弹窗,Android App开发常用功能之用户头像选择-Go语言中文社区
  5. 微信小程序几种常用弹窗提示
  6. CSS3选择器:nth-child和:nth-of-type之间的差异
  7. xyz坐标图_“色觉地图”的建立(二):辐照度与亮度、rgb空间、“颜色图”的混色方式...
  8. 唐山师范学院计算机二级报名,2017年3月唐山师范学院计算机等级考试报名时间(河北)...
  9. 如何下载python模块_Python第三方库(模块)下载和安装(使用pip命令)
  10. jzoj4640. 【GDOI2017模拟7.15】妖怪