本文内容

  • HTTP 协议的设计目标
  • HTTP 协议的无状态特性

ASP.NET 的 Web Forms 模型的关键是要有一种好的策略来处理廉价 Web 交互中的强大而且不断增长的需求。HTTP 内在的简明性是其获得广泛采用并且有效应用的关键,HTTP 是网络中使用最为广泛的一种协议,属于应用的层面向对象的协议,适用于分布式超媒体信息系统,是 WWW 服务器的基础。它先后经历了 HTTP 0.9、HTTP 1.0、HTTP 1.1 三个版本。

HTTP 协议的设计目标


HTTP 协议的设计目标是通过网络来支持客户端和服务器端之间的事务处理——客户端向服务器端发出请求,连接(TCP)成功后,通过 GET 或 POST 访问服务器端的对象(普通网页或动态页面等资源),服务器端将请求的对象和状态信息返回给客户端,最后断开连接。

每一个事务都独立地进行处理。当一个事务开始时,就在客户端与服务器端之间建立一个 TCP 连接,当事务结束时就释放这个 TCP 连接。HTTP 协议简单、灵活、快速、无连接,尤其它的无状态特性很适合 Web 应用,但也阻碍了 Web 的发展,不过可以通过程序来弥补。

HTTP 协议采用 TCP 来建立客户端和服务器端的连接。TCP 是面向连接的,而 HTTP 是无连接的,看似矛盾,其实再合理不过。这两个协议在网络中所处的层不一样——TCP 在传输层,而 HTTP 在应用层。HTTP 协议产生于互联网,服务器需要同时处理全世界客户端与它的数据交换,网页访问,这种数据交换是突发的、瞬时的,间歇性较大,而且,客户端浏览网页的联想性、发散性导致两次传送的数据关联性很低。如果服务器端采用了面向连接去维护进程和句柄,那是完全不可想象的。因此,HTTP 的设计者将协议设计为请求时建立连接,完成后完释放,尽快将服务器资源释放,供其他客户端使用。而选择 UDP 显然不合适,UDP 虽然不像 TCP 那样占用资源,但它不能保证数据的完整性、有序性,还没有流量控制。占用了宝贵的服务器资源,获得了网页或是文件,却是错误的,无论是人,还是机器都无法接受。

HTTP 协议的无状态特性


HTTP 协议的“无状态”特性很重要,应该如何理解?先想想 FTP、Telnet 这些有状态的协议,“有状态”的特征之一就是上下文(Context)。FTP 服务器必须维护你当前所在目录等信息,才能够理解你的 DEL 或 RETR 等命令到底是什么,而其他大多数协议还要把用户验证作为必需的内容。

那么究竟如何理解 HTTP 的无状态?

比如,某个周末,我和女朋友闲来无事,在家上淘宝,一起挑选内衣。在上边点击类型、品牌、钢圈、杯型、肩带和颜色后,会在下边不断显示令人眼花缭乱的产品。我先是点击“摸胸文胸”,接着点击了“黛安芬”,“粉红色”,“超薄”……因为,HTTP 是无状态的,不会为我保存最近一次点击时,所选择的条件,所以我的每次点击都得重传,重传可能造成较大的数据量。如果我的网速慢或是不稳定,点击又快了,那么下边可能一时半会都显示不出相应的产品。

择日,女朋友出差了,而我在家上淘宝,在输入各种条件,仔细查看,一顿点击,花了整个下午的时间,终于发现几款不错的内衣,女朋友穿上一定很 hot,但我是非常喜欢,可不确定女朋友是否也喜欢,是否能接受。于是,我把网址复制下来发到她 QQ 上,打算试探一下。她把我发给她的网址直接粘贴到浏览器上,就可以看到我花了整个下午精心挑选的内衣了。

可如果是 FTP,她还要设置一下 ASCII 或是 Binary;如果是 Telnet,那么她要设置 Terminal Type、回显等。总之,如果她要看到我希望她看到的东西,估计要经历很多。可正是 HTTP 协议的无状态才使我能让女朋友直接看到我的最终选择。因为,我的事务和她的事务是独立的。

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

说了这么多,希望你现在能领会 HTTP 协议,领会HTTP协议,会对 Web Forms 编程有很大的帮助。

在接下来的文章中,将详细介绍一下 HTTP。

转载于:https://www.cnblogs.com/liuning8023/archive/2012/10/10/2717646.html

HTTP 协议演示——HTTP 协议概述(3-5)相关推荐

  1. http和https的区别 与 SSL/TLS协议运行机制的概述

    http和https的区别 与 SSL/TLS协议运行机制的概述 参考1 1 http 是不使用的SSL/TSL的通信通道 窃听风险:第三方获取通信内容 篡改风险:修改通信内容 冒充风险:冒充他人身份 ...

  2. 【计算机网络】应用层 : 万维网 和 HTTP 协议 ( 万维网概述 | HTTP 协议特点 | HTTP 协议连接方式 | HTTP 协议报文结构 | HTTP 请求报文 | HTTP 响应报文 )

    文章目录 一.万维网概述 ★ 二.HTTP 协议 ( 超文本传输协议 ) ★ 三.HTTP 协议特点 ★ 四.HTTP 连接方式 ★ 五.HTTP 协议报文结构 六.HTTP 请求报文 ★ 七.HTT ...

  3. Cewl命令学习Hydra学习---Hydra windows破解实战各个协议演示

    Cewl命令学习&&Hydra学习-Hyra windows破解实战&&各个协议演示 文章目录 Cewl命令学习&&Hydra学习---Hyra win ...

  4. 网络流媒体协议之——RTP协议概述

    网络流媒体协议系列: 网络流媒体协议之--MPEG-DASH协议简述 网络流媒体协议之--HLS概述 网络流媒体协议之--UDP协议概述 今天来整理一下RTP. RTP(Real-time Trans ...

  5. HTTP协议,HTTPS协议,SSL/TLS协议概述

    HTTP协议,HTTPS协议,SSL/TLS协议概述 1. 什么是HTTP协议   HTTP(Hyper Text Transfer Protocol,HTTP)协议超文本传输协议,是一个基于请求与响 ...

  6. 【1】TCP/IP协议族详解-概述

    声明:本博客参考<TCP/IP详解卷一:协议> 1.背景介绍 TCP/IP起源于6 0年代末美国政府资助的一个分组交换网络研究项目,到 9 0年代已发展成为计算机之间最常应用的组网形式.它 ...

  7. mqtt协议视频教程_MQTT协议教程

    mqtt协议视频教程 MQTT协议是一种广泛用于物联网的机器对机器(M2M)协议. 这是基于消息的协议. 它非常轻巧,因此在物联网生态系统中被采用. 几乎所有的 物联网云平台都支持MQTT协议,以从智 ...

  8. 网络协议 9 - TCP协议(下):聪明反被聪明误

    网络协议 9 - TCP协议(下):聪明反被聪明误 原文:网络协议 9 - TCP协议(下):聪明反被聪明误 网络协议 1 - 概述 网络协议 2 - IP 是怎么来,又是怎么没的? 网络协议 3 - ...

  9. gns3中两个路由器分别连接主机然后分析ip数据转发报文arp协议_TCP/IP协议知识总结...

    总体 首先,展示下总体的思维导图.接下来,按照每个点解释. OSI七层模型 开放式系统互联模型(英语:Open System Interconnection Model,缩写:OSI:简称为OSI模型 ...

最新文章

  1. matlab怎么分析一段音频,Matlab分析音频
  2. stream测试内存_.net core百万设备连接服务和硬件需求测试
  3. C++设计模式实现--策略(Strategy)模式
  4. 虚拟机 centos 6.5 扩展根目录分区大小
  5. CSE 5/7350 – Project
  6. 陕西省铜川市计算机学校,铜川市计算机专业学校怎么样?好不好?
  7. MyBatis(六)SqlSessionTemplate是如何保证线程安全的
  8. 重新修复安装.netframework2.0
  9. leetcode 830. 较大分组的位置
  10. 开发者须知:哪些广告最让用户感到厌烦
  11. Java文件下载中文名不显示乱码
  12. 平纹、斜纹、缎纹是什么?各自有何特点?
  13. ssh无密码登录设置方法以及出现问题 ECDSA host key 和IP地址对应的key不同的解决...
  14. 心电信号去噪(part1)--心电信号简介
  15. java里VO是什么?
  16. java 刘意 2018_2018年刘姓宝宝起名,2018年刘姓宝宝名字大全
  17. python操作word题注样式_Word 有什么技巧,让你相见恨晚?
  18. vitrualbox虚拟机64位安装报错解决
  19. 图像傅里叶变换(快速傅里叶变换FFT)
  20. 小型企业网的搭建(企业网三层架构)

热门文章

  1. 【C++】细说C++中的数组之“静态”数组
  2. 差分隐私与机器学习的综述【笔记】
  3. OpenCV-数字图像处理之中值滤波
  4. php框架例子,php框架中的动态实例化对象详解
  5. 天池-街景字符编码识别2-数据读取与数据扩增
  6. CSU 1573 最多的数字
  7. Python GUI界面编程初步 02 - Tkinter基础
  8. 生产服务器怎么dmp堆栈信息,如何根据程序崩溃时的DMP文件使用WinDbg查找调用堆栈...
  9. win7桌面计算机没了,win7系统桌面的计算机图标没了的解决方法
  10. python静态方法怎么调用_在python中调用静态方法