HTTP协议演示_基于 HTTP 的 Web Forms 编程3-5-HTTP 协议概述

来源:互联网 发布:Linux文件的移动 编辑:程序博客网 时间:2024/05/18 02:10

ASP.NETWeb Forms模型的关键是

要有一种好的策略来处理廉价Web交互中的强大而且不断增长的需求。

HTTP内在的简明性是其获得广泛采用并且有效应用的关键,

 

HTTP是网络中使用最为广泛的一种协议,属于应用的层面向对象的协议,

适用于分布式超媒体信息系统,是WWW服务器的基础。

它先后经历了HTTP 0.9HTTP 1.0HTTP 1.1三个版本。

HTTP协议的设计目标是通过网络来支持客户端和服务器端之间的事务处理——

客户端向服务器端发出请求,连接(TCP)成功后,

通过GETPOST访问服务器端的对象(普通网页或动态页面),

服务器端将请求的对象和状态信息返回给客户端,断开连接。

每一个事务都独立地进行处理。当一个事务开始时,就在客户端与服务器端之间建立一个TCP连接,当事务结束时就释放这个TCP连接。

HTTP协议简单灵活快速无连接,尤其它的无状态特性很适合Web应用,但也阻碍了Web的发展,不过可以通过程序来弥补。

 

HTTP协议采用TCP来建立客户端和服务器端的连接。

TCP是面向连接的,而HTTP是无连接的,看似矛盾,其实再合理不过。

这两个协议在网络中所处的层不一样——TCP在传输层,而HTTP在应用层。

HTTP协议产生于互联网,服务器需要同时处理全世界客户端与它的数据交换,网页访问,

这种数据交换是突发的、瞬时的,间歇性较大,

而且客户端浏览网页的联想性、发散性导致两次传送的数据关联性很低。

如果服务器端采用了面向连接去维护进程和句柄,那是完全不可想象的,

因此,

HTTP的设计者将协议设计为

请求时建立连接,完成后完释放,尽快将服务器资源释放,供其他客户端使用。

而选择UDP显然不合适,

UDP虽然不像TCP那样占用资源,但它不能保证数据的完整性、有序性,还没有流量控制。

占用了宝贵的服务器资源,获得了网页或是文件,却错了,无论是人还是机器都无法接受。

 

HTTP协议的无状态特性很重要,应该如何理解?

先想想FTPTelnet这些有状态的协议,有状态的特征之一就是上下文(Context),

FTP服务器必须维护你当前所在目录等信息,

才能够理解你的DELRETR等命令到底是什么,

而其他大多数协议还要把用户验证作为必需的内容。

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

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

择日,女朋友出差了,而我在家上淘宝,在输入各种条件,仔细查看,一顿点击,花了整个下午的时间,终于发现几款不错的情趣内衣,女朋友穿上一定很hot,但我是非常喜欢,可不确定女朋友是否也喜欢,是否能接受。于是,我把网址复制下来发到她QQ上,打算试探一下。她把我发给她的网址直接粘贴到浏览器上,几秒钟后,就可以看到我花了整个下午精心挑选的内衣了。如果是FTP,她还要设置一下ASCII或是Binary;如果是Telnet,那么她要设置Terminal Type、回显等。总之,如果她要看到我希望她看到的东西,估计要经历很多。可正是HTTP协议的无状态才使我能让女朋友直接看到我的最终选择。因为,我的事务和她的事务是独立的。

 

所谓无状态是指

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

 

说了这么多,希望你现在能领会HTTP协议,

领会HTTP协议,会对Web Forms编程有很大的帮助。

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

原创粉丝点击